将 Sagepay (Opayo) 与 Django 集成——如何创建商家会话密钥
Integrating Sagepay (Opayo) with Django - How to create a merchant session key
我正在尝试将 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)
有什么我可能会出错的想法吗?
您将错误的参数传递给 requests.post()
您应该使用 json
而不是 params
:
r = requests.post(
"https://pi-test.sagepay.com/api/v1/merchant-session-keys",
headers=headers,
json=data
)
这样做,就不需要指定Content-Type
header,它会自动添加。
我正在尝试将 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)
有什么我可能会出错的想法吗?
您将错误的参数传递给 requests.post()
您应该使用 json
而不是 params
:
r = requests.post(
"https://pi-test.sagepay.com/api/v1/merchant-session-keys",
headers=headers,
json=data
)
这样做,就不需要指定Content-Type
header,它会自动添加。