用 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 idpayer 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 Idpayment 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_urlPayerID 执行付款。

样品:

create payment execute payment

【讨论】:

西迪克,谢谢您的回答。我现在很清楚你在哪里得到approval urlpayment 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' 未找到'

PayPal REST SDK 已弃用

Paypal Rest API - 如何获取客户端 ID 和密码?

PayPal 从 IPN 到 REST API 的过渡