Интеграция Django с Paypal Создает завиток заказа

#django #curl #paypal

Вопрос:

Я пытаюсь реализовать PayPal в Django без какого-либо SDK или пакета.

https://developer.paypal.com/docs/business/checkout/server-side-api-calls/create-order/

Хотите переписать этот завиток на Python

  curl -v -X POST https://api-m.sandbox.paypal.com/v2/checkout/orders  
-H "Content-Type: application/json" 
-H "Authorization: Bearer Access-Token" 
-d '{
  "intent": "CAPTURE",
  "purchase_units": [
    {
      "amount": {
        "currency_code": "USD",
        "value": "100.00"
      }
    }
  ]
}'
 

Мой текущий код:

 t = gettoken()
d = {"intent": "CAPTURE","purchase_units": [{"amount": {"currency_code": "USD","value": "100.00"}}]}
h = {"Content-Type: application/json", "Authorization: Bearer " t}
r = requests.post('https://api-m.sandbox.paypal.com/v2/checkout/orders', headers=h, data=d).json()
 

Моя Ошибка:

 Internal Server Error: /createOrder
.....
AttributeError: 'set' object has no attribute 'items'
 

Жетон на предъявителя в порядке.

Есть идеи? Что я упускаю?

Комментарии:

1. Правильный заголовок таков {"Content-Type": "application/json", "Authorization": "Bearer " t} . Текущий, который у вас есть, на самом деле a set , а не a dict , следовательно, ошибка

2. Спасибо. Теперь я получаю ‘{‘имя’: ‘invalid_request в’, ‘сообщение’: ‘запрос не является, синтаксически неправильно, или нарушает схему.’, ‘debug_id’: ‘252e2f9a9587d’, ‘данные’: [{‘местоположение’: ‘тело’, ‘вопрос’: ‘MALFORMED_REQUEST_JSON’, ‘описание’: ‘запрос JSON не правильно сформированным.’}], ‘одной’: [{‘слишком’: ‘ developer.paypal.com/docs/api/orders/v2/… ‘, ‘отн’: ‘information_link’, ‘encType’: ‘приложение/JSON’}]} итак, есть ли ошибка в мой д?

3. Все выглядит нормально. Работает ли это с завитком?

Ответ №1:

  d = {"intent": "CAPTURE","purchase_units": [{"amount": {"currency_code": "USD","value": "100.00"}}]}
 h = {"Content-Type": "application/json", "Authorization": "Bearer " t}
 r = requests.post('https://api-m.sandbox.paypal.com/v2/checkout/orders', headers=h, json=d).json()
 

Работает.