Я пытаюсь купить товар у внешний веб-сайт, используя их частный API и модуль запросов python. Проблема в том, что для данных формы запроса он хочет, чтобы элементы корзины, которые я создаю вручную, были точно такими же, как корзина, они точно такие же, насколько я могу судить. Когда я отправляю запрос, я получаю сообщение об ошибке от сервера о том, что он не получает никаких элементов корзины.
Я пытался сопоставить кодировку заголовков (исходный запрос использует application/x-www-form-urlencoded), используя запросы JSON kwarg вместо данных, а также добавляя элементы в корзину вручную, извлекая их и затем отправляя их. Я думаю, может быть, мне нужно сначала их закодировать, но я понятия не имею, что.
Вот код
login_data = {'email': 'email', 'password': 'password123'}
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/74.0.3729.157 Safari/537.36',
'Content-type': 'application/x-www-form-urlencoded'}
s = requests.Session()
login_response = s.post(url, data=login_data, headers=headers) # login
data_charge = {'cartItems':[cartItems], # This is a list of dicts
'key': 'licensing',
'nonce': credit_card_token, # I have to get the card token which works fine
'cardholder': 'John Smith'}
purchase_response = s.post(url_charge, data=data_charge, headers=headers)
Содержимое Purchase_response.json() возвращает "content":[{"error":"Элементы корзины не отправлены."}]. Он должен ответить с номерами заказов и всеми предметами, которые были приобретены.
Дайте мне знать, если я упущу какие-либо важные детали. Спасибо!
Попробуйте заменить:
purchase_response = s.post(url_charge, data=data_charge, headers=headers)
С участием:
purchase_response = s.post(url_charge, json=data_charge, headers=headers)
надеюсь это поможет