如何将Paypal订阅API与Django集成

时间:2020-05-29 09:03:33

标签: django api paypal

我试图将Paypal订阅支付系统与django应用程序集成。但是从后端调用API时存在一些问题。

选项1:

url = "https://api.sandbox.paypal.com/v1/billing/subscriptions/I-VL5K5767RB6S" 
headers = {'Authorization': 'Bearer Ae2UGxdThO9xMgFCSJihnhqDrv7zqTSngh6ILNc3imd6RrOM-GovHN_R0jFVL80Qm5oKhDi6rg715G9_', 'Content-Type': 'application/json'}  
response = requests.get(url, headers=headers)

响应#1:

headers  {'Cache-Control': 'max-age=0, no-cache, no-store, must-revalidate', 'Content-Length': '83', 'Content-Type': 'application/json', 'Date': 'Fri, 29 May 2020 08:57:14 GMT', 'Paypal-Debug-Id': '50867574d2a79'}
status_code  401
response text {"error":"invalid_token","error_description":"Token signature verification failed"}

选项2:

url = "https://api.sandbox.paypal.com/v1/billing/subscriptions/I-VL5K5767RB6S" 
headers = {'Authorization': 'Ae2UGxdThO9xMgFCSJihnhqDrv7zqTSngh6ILNc3imd6RrOM-GovHN_R0jFVL80Qm5oKhDi6rg715G9_', 'Content-Type': 'application/json'}  
response = requests.get(url, headers=headers)

响应#2:

  {'Cache-Control': 'max-age=0, no-cache, no-store, must-revalidate', 'Content-Length': '244', 'Content-Type': 'application/json', 'Date': 'Fri, 29 May 2020 08:58:50 GMT', 'Paypal-Debug-Id': '3e1641470db08'}
status_code  401
response text {"name":"AUTHENTICATION_FAILURE","message":"Authentication failed due to invalid authentication credentials or a missing Authorization header.","links":[{"href":"https://developer.paypal.com/docs/api/overview/#error","rel":"information_link"}]}

如何获得成功的答复?

1 个答案:

答案 0 :(得分:0)

选项1是Oauth2承载令牌调用的正确格式。但是,这:

Ae2UGxdThO9xMgFCSJihnhqDrv7zqTSngh6ILNc3imd6RrOM-GovHN_R0jFVL80Qm5oKhDi6rg715G9_

不是是Oauth2访问令牌。相反,它是一个PayPal REST App客户端ID,大概是沙盒模式,这是您首先需要使用以获得适当的access_token的条件之一。

有关如何传递那些Oauth 2.0凭据并获得所需的access_token的信息,请参见PayPal's REST API documentation

请注意,access_tokens通常有效期为9个小时,并且过期一次后,您将需要使用相同的调用生成一个新的令牌。