Как выставить счет киви по 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 шт):

Автор решения: insolor
'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"

→ Ссылка