#django #curl #opayo
Вопрос:
Я пытаюсь интегрировать Opayo (SagePay) с Django, и у меня возникли проблемы с генерацией ключа сеанса торговца (MSK).
Из документов sagepays они говорят, что нужно использовать приведенный ниже запрос curl и что я должен получить ключ в ответе
curl https://pi-test.sagepay.com/api/v1/merchant-session-keys
-H "Authorization: Basic aEpZeHN3N0hMYmo0MGNCOHVkRVM4Q0RSRkxodUo4RzU0TzZyRHBVWHZFNmhZRHJyaWE6bzJpSFNyRnliWU1acG1XT1FNdWhzWFA1MlY0ZkJ0cHVTRHNocktEU1dzQlkxT2lONmh3ZDlLYjEyejRqNVVzNXU="
-H "Content-type: application/json"
-X POST
-d '{
"vendorName": "sandbox"
}'
Я попытался реализовать это в своем представлении Django со следующим кодом, но получил ответ 422 (Необработанный ответ сущности).
import requests
def BasketView(request):
headers = {
"Authorization": "Basic aEpZeHN3N0hMYmo0MGNCOHVkRVM4Q0RSRkxodUo4RzU0TzZyRHBVWHZFNmhZRHJyaWE6bzJpSFNyRnliWU1acG1XT1FNdWhzWFA1MlY0ZkJ0cHVTRHNocktEU1dzQlkxT2lONmh3ZDlLYjEyejRqNVVzNXU=",
"Content-type": "application/json",
}
data = {"vendorName": "sandbox"}
r = requests.post("https://pi-test.sagepay.com/api/v1/merchant-session-keys", headers=headers, params=data)
print(r)
Есть какие-нибудь идеи, где я могу ошибаться в этом?
Ответ №1:
Вы передаете неправильный параметр requests.post()
, который следует использовать json
вместо params
:
r = requests.post(
"https://pi-test.sagepay.com/api/v1/merchant-session-keys",
headers=headers,
json=data
)
При этом нет необходимости указывать Content-Type
заголовок, он добавляется автоматически.
Комментарии:
1. Большое тебе спасибо, Том, это сработало идеально. Я потратил половину дня, пытаясь решить эту проблему!