Вызов API, выполненный с использованием запросов в Python 3, возвращает HTML, а не JSON. - PullRequest
0 голосов
/ 24 февраля 2019

Я использую Python 3.7 и запрашиваю 2.21.0 для интеграции платежного шлюза.

У меня есть следующий пример песочницы формы, которая работает как положено (возвращает JSON):

curl -X POST https://secure.snd.payu.com/api/v2_1/orders \
-H "Content-Type: application/json" \
-H "Authorization: Bearer d9a4536e-62ba-4f60-8017-6053211d3f47" \
-d '{
    "notifyUrl": "https://your.eshop.com/notify",
    "customerIp": "127.0.0.1",
    "merchantPosId": "300746",
    "description": "RTV market",
    "currencyCode": "PLN",
    "totalAmount": "21000",
    "buyer": {
        "email": "john.doe@example.com",
        "phone": "654111654",
        "firstName": "John",
        "lastName": "Doe",
        "language": "pl"
    },
    "settings":{
        "invoiceDisabled":"true"
    },
    "products": [
        {
            "name": "Wireless Mouse for Laptop",
            "unitPrice": "15000",
            "quantity": "1"
        },
        {
            "name": "HDMI cable",
            "unitPrice": "6000",
            "quantity": "1"
        }
    ]
}'

С другой стороны, у меня есть следующий код Python

import requests
import json

url = "https://secure.snd.payu.com/api/v2_1/orders"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer d9a4536e-62ba-4f60-8017-6053211d3f47"
}
data = {
    "notifyUrl": "https://your.eshop.com/notify",
    "customerIp": "127.0.0.1",
    "merchantPosId": "300746",
    "description": "RTV market",
    "currencyCode": "PLN",
    "totalAmount": "21000",
    "buyer": {
        "email": "john.doe@example.com",
        "phone": "654111654",
        "firstName": "John",
        "lastName": "Doe",
        "language": "pl"
    },
    "settings":{
        "invoiceDisabled":"true"
    },
    "products": [
        {
            "name": "Wireless Mouse for Laptop",
            "unitPrice": "15000",
            "quantity": "1"
        },
        {
            "name": "HDMI cable",
            "unitPrice": "6000",
            "quantity": "1"
        }
    ]
}

response = requests.post(url, data=json.dumps(data), headers=headers)

Однако вместо ответа JSON я получаю HTML.Есть идеи почему?При использовании Python 2.7 я использовал urllib, и это работало, но использование urllib для вызова в Python 3.7 дает точно такой же эффект, то есть HTML вместо JSON.

Ответ должен выглядеть следующим образом

{ 
   "status":{ 
      "statusCode":"SUCCESS",
   },
   "redirectUri":"{payment_summary_redirection_url}",
   "orderId":"WZHF5FFDRJ140731GUEST000P01",
   "extOrderId":"{YOUR_EXT_ORDER_ID}",
}

1 Ответ

0 голосов
/ 24 февраля 2019

Достаточно было добавить allow_redirects=False.

...