Как выставить счет киви по time = datetime.now() + timedelta(minutes=5)
Как выставить счет киви по time = datetime.now() + timedelta(minutes=5) Просто если писать чисто time, то пишет неверный запрос
billid = 'cc961e8dd4d64f02b7372297e51fb48e'
headers = {
'accept': 'application/json',
'Authorization': 'Bearer ' + QIWI_SECRET_KEY,
'content-type': 'application/json'
}
params = {
'amount': {
'currency': 'RUB',
'value': '1.00'
},
'expirationDateTime': '2021-03-28T08:44:07+03:00' - time = datetime.now() + timedelta(minutes=5) # (не работает
}
url = f'https://api.qiwi.com/partner/bill/v1/bills/{billid}'
resp = requests.put(url, json=params, headers=headers)
print(resp.text)
Ответы (1 шт):
'expirationDateTime': '2021-03-28T08:44:07+03:00' - time = datetime.now() + timedelta(minutes=5) # не работает
Конечно не работает, вы из даты представленной в виде строки пытаетесь вычесть переменную, значение которой тут же пытаетесь присвоить. Вынесите переменную time до формирования словаря, само полученное время нужно преобразовать в строку с помощью метода .isoformat() (судя по виду даты-времени в вопросе, это тот формат, который вам нужен):
time = datetime.now() + timedelta(minutes=5)
params = {
'amount': {
'currency': 'RUB',
'value': '1.00'
},
'expirationDateTime': time.isoformat()
}
Будет подставлена строка вида "2022-07-27T08:04:34.784236".
Если нужен часовой пояс, как +03:00 в строке '2021-03-28T08:44:07+03:00', то импортируйте еще timezone из timedelta, указывайте часовой пояс при получении текущего времени:
from datetime import datetime, timedelta, timezone
time = datetime.now(timezone(timedelta(hours=3))) + timedelta(minutes=5)
Либо добавьте к datetime.now() вызов метода .astimezone(), тогда в дату-время добавится информация о часовом поясе, настроенном на вашем компьютере:
time = datetime.now().astimezone() + timedelta(minutes=5)
В итоге подставится время вида "2022-07-27T08:10:53.988247+03:00"