【问题标题】:Authentication Error with Paypal Sandbox and Google App EnginePaypal Sandbox 和 Google App Engine 的身份验证错误
【发布时间】:2012-07-18 21:59:39
【问题描述】:

我无法让 Paypal Adaptive Payments API 与 GAE 一起使用 - 我将专门使用 Implicit Payments。

返回的错误是我的 api 凭据不正确,但从我读过的内容来看,我也应该怀疑标题格式。

这是代码的 sn-p - 我在 GAE 中使用 urlfetch 模块:

headers = {
        "X-PAYPAL-USERID"               : "xxxx_123456789_biz_api1.xxxx.com",
        "X-PAYPAL-SECURITY-PASSWORD"    : "1234567890",
        "X-PAYPAL-SECURITY-SIGNATURE"   : "Ahg-XXXXXXXXXXXXXXXXXXXXXX",
        "X-PAYPAL-REQUEST-DATA-FORMAT"  : "JSON",
        "X-PAYPAL-RESPONSE-DATA-FORMAT" : "JSON",
        "X-PAYPAL-APPLICATION-ID"       : "APP-80W284485P519543T"
    }

request_body = {
        "actionType"                        : "PAY",
        "senderEmail"                       : "xxxx_123456789_biz_api1@xxxx.com",
        "receiverList.receiver(0).email"    : "xxxx_123456789_per@xxxx.com",
        "receiverList.receiver(0).amount"   : 100.00,
        "currencyCode"                      : "USD",
        "cancelUrl"                         : "some_url.com",
        "returnUrl"                         : "some_url.com",
        "requestEnvelope.errorLanguage"     : "en_US"

    }

url = "https://svcs.sandbox.paypal.com/AdaptivePayments/Pay"

result = urlfetch.fetch(url=url,payload=request_body,headers=headers)

我已经删除了一些值,但我使用的所有内容都来自沙盒“API 凭据”部分。

标题格式有问题吗?我是否使用了错误的凭据集?我什至可以使用沙盒来测试隐式付款吗?

非常感谢任何帮助。 谢谢!

对于任何有类似问题的人,请按照此处的优秀教程进行操作: Awesome Paypal Adaptive Payments Tutorial 如果格式不正确,标头确实会导致身份验证错误。我离得很远:)

【问题讨论】:

    标签: python google-app-engine paypal paypal-adaptive-payments


    【解决方案1】:

    转到您的标题,然后像这样进行更改

    钥匙

    'X-PAYPAL-USERID'

    应该变成

    'X-PAYPAL-SECURITY-USERID'。

    【讨论】:

      【解决方案2】:

      您忘记在urlfetch.fetch 调用中设置POST 方法;没有它,the payload data is ignored

      result = urlfetch.fetch(url=url, 
                              payload=request_body, 
                              method=urlfetch.POST, 
                              headers=headers)
      

      教程中使用的urllib2.Request 代替switches automatically 在设置请求数据时从GET 到POST。

      req = urllib2.Request(self.request_url,paypal_request_data,header_data)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-25
        • 1970-01-01
        相关资源
        最近更新 更多