【问题标题】:Integrating Sagepay (Opayo) with Django - How to create a merchant session key将 Sagepay (Opayo) 与 Django 集成 - 如何创建商家会话密钥
【发布时间】:2021-08-18 18:19:13
【问题描述】:

我正在尝试将 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)

有什么想法我可能会出错吗?

【问题讨论】:

    标签: django curl opayo


    【解决方案1】:

    您将错误的参数传递给requests.post(),您应该使用json而不是params

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

    这样就不需要指定Content-Type 头了,它是自动添加的。

    【讨论】:

    • 非常感谢 Thom,效果很好。我花了半天时间试图解决这个问题!
    猜你喜欢
    • 1970-01-01
    • 2023-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多