EtherDaler
@EtherDaler
3k MMR

Ошибка при запросе к API Тинькофф Кассы?

Пишу платежную систему для сайта на Django. Прочитал документацию по платежке Тинькофф, делаю все как там написано.
#...
data = {
            "TerminalKey": "111111111",
            "Amount": amount,
            "OrderId": str(order_id),
            "Description": description,
            "DATA": {
                "Email": user.email
            },
            "Receipt": {
                "Email": "example@example.ru",
                "Taxation": "patent",
                "Items": [item]
            }
        }
        token = self.generate_token(data)
        data["Token"] = token
        headers = {
            "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106",
            "Upgrade-Insecure-Requests": "1",
            "Accept-Encoding": "gzip, deflate, br",
            "content-type": "application/json",
            "Access-Control-Allow-Origin": "*",
            "X-Requested-With": "XMLHttpRequest",
            "Accept": "*/*"
        }
        data_json = json.dumps(data, ensure_ascii=False, indent=4)
        headers["Content-Length"] = str(sys.getsizeof(data))
        response = requests.post("https://securepay.tinkoff.ru/v2/Init", data=data_json, headers=headers)
#...


Возвращается ответ 400 от сервера, когда принтую
print(response.text)
print(response.content)

там ничего нет. При этом когда отправляю запрос на сервер Тинькофф напрямую через Postman, то все работает корректно и приходит нужный ответ от сервера. Я не понимаю в чем проблема, что только уже не перепробовал, добавлял различные хедеры, сконвертировал dict к json, но все бестолку, а через Postman все как работало, так работает.
Запрос в Postman выглядит так
66042051845d2773462978.png
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
а через Postman все как работало, так работает

Но запрос из постмена Вы конечно же не покажите, чтобы сравнить ;)

Попробуйте так:
# response = requests.post("https://securepay.tinkoff.ru/v2/Init", data=data_json, headers=headers)
response = requests.post("https://securepay.tinkoff.ru/v2/Init", json=data, headers=headers)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы