Интеграция Sagepay (Opayo) с Django - Как создать ключ сессии торговца

Давний пользователь stackoverflow, впервые задающий вопрос. Я пытаюсь интегрировать 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 (Unprocessable Entity response).

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)

Есть идеи, где я могу ошибиться? Спасибо

Вы передаете неправильный параметр в requests.post() Вы должны использовать json вместо params:

r = requests.post(
    "https://pi-test.sagepay.com/api/v1/merchant-session-keys",
    headers=headers,
    json=data
)

При этом нет необходимости указывать заголовок Content-Type, он добавляется автоматически.

Вернуться на верх