Попытка купить товар с внешнего сайта с помощью почтового запроса - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь купить товар на внешнем веб-сайте , используя их частный 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 ":" Элементы корзины не отправлены. "}].Он должен ответить номерами заказов и всеми предметами, которые были приобретены.

Дайте мне знать, если я упускаю какие-либо важные детали.Спасибо!

1 Ответ

0 голосов
/ 27 мая 2019

Попробуйте заменить:

purchase_response = s.post(url_charge, data=data_charge, headers=headers)

На:

purchase_response = s.post(url_charge, json=data_charge, headers=headers)

надеюсь, это поможет

...