【问题标题】:Implementation of Paypal REST API in Python用 Python 实现 Paypal REST API
【发布时间】: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"})

最后两行是使交易发生的关键。我从哪里得到他们的论点?

提前感谢您的帮助!

【问题讨论】:

    标签: python rest paypal


    【解决方案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 执行付款。

        样品:

        【讨论】:

        • 西迪克,谢谢您的回答。我现在很清楚你在哪里得到approval urlpayment id。但是,您从哪里获得payer id?谢谢。
        • PayerID 将在完成批准过程后位于return_url 中。示例返回网址:https://XXX/?PayerID=DUFRQ8GWYMJXC
        猜你喜欢
        • 2020-11-08
        • 2017-09-05
        • 1970-01-01
        • 2014-06-10
        • 1970-01-01
        • 2020-10-13
        • 1970-01-01
        • 1970-01-01
        • 2014-07-02
        相关资源
        最近更新 更多