用 Python 实现 Paypal REST API
Posted
技术标签:
【中文标题】用 Python 实现 Paypal REST API【英文标题】:Implementation of Paypal REST API in Python 【发布时间】:2013-12-25 06:23:14 【问题描述】:我一直在关注 PayPal directions 在 Python 中实现其 REST API,但我缺少一些关键部分,我不知道在哪里可以找到它们。到目前为止,我有以下代码开始处理付款:
api = paypalrestsdk.set_config(
mode="sandbox",
client_id="XXX",
client_secret="XXX")
api.get_token()
payment = paypalrestsdk.Payment(
"intent": "sale",
"payer": "payment_method": "paypal" ,
"redirect_urls":
"return_url": "https://XXX",
"cancel_url": "https://XXX" ,
"transactions": [
"amount":
"total": "50",
"currency": "USD" ,
"description": "creating a payment"
]
)
payment.create()
到目前为止,一切都很好(虽然我不知道如何处理我得到的令牌......)。
这里开始我的问题(或缺乏或知识)。首先,我需要approval url
。然后,在接下来的步骤中,我不知道如何获取处理付款执行所需的信息:payment id
和 payer id
payment = paypalrestsdk.Payment.find("XXX")
payment.execute("payer_id": "XXX")
最后两行是使交易发生的关键。我从哪里得到他们的论点?
提前感谢您的帮助!
【问题讨论】:
【参考方案1】:首先,在创建付款后获取付款 id 并将其保存在用户会话中,如下所示:
if payment.create():
print('Payment success!')
request.session["payment_id"] = payment.id
else:
print(payment.error)
之后编写函数执行支付并从返回的 url 中获取“Payer id”:
def execute(request):
success = False
payment_id = request.session["payment_id"]
payment = paypalrestsdk.Payment.find(payment_id)
if payment.execute('payer_id':request.POST.get("payerID")):
print('Execute success!')
success = True
else:
print(payment.error)
谢谢
【讨论】:
【参考方案2】:也许这会有所帮助:
当用户批准付款时,PayPal 会将用户重定向到在创建付款时指定的 return_url。 payer Id 和 payment Id 附加到返回 URL,作为 PayerID 和 paymentId:
http://return_url?paymentId=PAY-6RV70583SB702805EKEYSZ6Y&token=EC-60U79048BN7719609&PayerID=7E7MGXCWTTKK2
来自https://developer.paypal.com/webapps/developer/docs/integration/web/accept-paypal-payment/
【讨论】:
【参考方案3】:创建payment.create()
后,您必须获取payment.id
并将其保存在用户会话中。
并重定向用户以批准 url。使用以下代码获取批准网址:
for link in payment.links:
if link.method == "REDIRECT":
redirect_url = link.href
print("Redirect for approval: %s"%(redirect_url))
使用来自用户会话的payment.id
和来自return_url
的PayerID
执行付款。
样品:
create payment execute payment【讨论】:
西迪克,谢谢您的回答。我现在很清楚你在哪里得到approval url
和payment id
。但是,您从哪里获得payer id
?谢谢。
PayerID
将在完成批准过程后位于return_url
中。示例返回网址:https://XXX/?PayerID=DUFRQ8GWYMJXC
以上是关于用 Python 实现 Paypal REST API的主要内容,如果未能解决你的问题,请参考以下文章
使用 PayPal REST SDK 和 PayPal-Python-SDK 时未发送或接收资金
使用 python Paypal REST SDK 在 django 中动态获取付款和付款人 ID
贝宝 sdk '类 'PayPal\Rest\ApiContext' 未找到'