1

使用 python 和 django,我正在尝试使用 REST API 帐户支付资源在贝宝上创建支付。当我使用 curl 时一切正常。在 Django 视图中,我得到了令牌,但是当我尝试使用它进行付款时,我收到“HTTP Error 401: Unauthorized”错误。

这是我的卷曲有效:

curl -v https://api.sandbox.paypal.com/v1/payments/payment -H 'Content-Type:application/json' -H 'Authorization:Bearer ***my_token***' -d '{ "intent":"sale", "redirect_urls":{ "return_url":"http://www.myurl.com", "cancel_url":"http://www.myurl.com"}, "payer":{ "payment_method":"paypal" },"transactions":[{"amount":{ "total":"0.10", "currency":"USD"},"description":"This is the Test payment transaction description."}]}'

这是我的 Django 视图,在以下情况下出现问题:

import urllib2, base64

token = "***my_token***"
values = {
          "intent":"sale",
          "redirect_urls":{
            "return_url":"http://www.myurl.com",
            "cancel_url":"http://www.myurl.com"
          },
          "payer":{
            "payment_method":"paypal"
          },
          "transactions":[
            {
              "amount":{
                "total":"0.10",
                "currency":"USD"
              },
              "description":"This is the Test payment transaction description."
            }
          ]}

data = urllib.urlencode(values)

request1 = urllib2.Request("https://api.sandbox.paypal.com/v1/payments/payment")
base64string = base64.encodestring('%s' % token).replace('\n', '')
request1.add_header("Content-Type", "application/json")
request1.add_header("Authorization", "Bearer %s" % base64string) 

result1 = urllib2.urlopen(request1 , data)
response = result1.read()

换句话说,我试图让 curl 在我看来工作。

谢谢。

4

2 回答 2

0

不确定您是否遇到与我相同的情况,但我试图为我未正确请求许可的第三方贝宝帐户创建付款。原来我需要使用 Permissions API 来请求适当的权限。

请参阅此链接:https ://developer.paypal.com/webapps/developer/docs/classic/permissions-service/integration-guide/PermissionsAbout/

于 2013-10-03T05:33:46.380 回答
-2

首先https://api.sandbox.paypal.com/v1/oauth2/token使用基本身份验证请求获取 Bearer 令牌,然后使用 Bearer 令牌进行 REST 调用(https://api.sandbox.paypal.com/v1/payments/payment)。

https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/

使用 PayPal SDK paypalrestsdk来简化您的 Python 代码。

  1. https://github.com/paypal/rest-api-sdk-python - 自述文件
  2. https://github.com/paypal/rest-api-sdk-python/tree/master/samples - 样本
于 2013-03-16T04:17:19.260 回答