【问题标题】:Money is not being sent or received when using PayPal REST SDK and PayPal-Python-SDK使用 PayPal REST SDK 和 PayPal-Python-SDK 时未发送或接收资金
【发布时间】:2016-08-11 02:55:18
【问题描述】:

我已使用PayPal-Python-SDK 以下列方式集成了 PayPal 付款流程。

  1. 在我们的网站上订购。至此,我知道要向访客收取多少费用。
  2. 我通过将mode 参数传递为live(不是sandbox)、客户端ID 和live 设置的客户端密码来配置paypalrestsdk 模块。
  3. 我使用paypalrestsdk.Payment 创建了一个付款,我向其中传递了大量参数,包括return_urlcancel_urlpricecurrencyquantity 和其他一些参数。
  4. 如果付款创建没有错误,我会从创建的付款中获得redirect_url
  5. 用户点击链接将他重定向到redirect_url,这是他填写PayPal详细信息或信用卡详细信息的PayPal页面。
  6. 用户支付了相应金额并被重定向回我们的网站。
  7. 作为最后一步,我检查 DB 中是否有一条记录带有来自 GET 或 POST 参数的付款 ID,如果 DB 中有一条记录,我将其标记为 paid

现在,问题是整个过程运行良好且符合预期,但资金并未从用于付款的 PayPal 账户中流出。钱也不会从信用卡中流出。当然,用于收款的帐户不会收到钱。

这是生成付款的代码:

# Configure SDK.
paypalrestsdk.configure({
    'mode': settings.PAYPAL_MODE, # This one is set to 'live'.
    'client_id': settings.PAYPAL_CLIENT_ID,
    'client_secret': settings.PAYPAL_SECRET,
})

# Create a payment.
payment = paypalrestsdk.Payment({
    "intent": "sale",
    "payer": {
        "payment_method": "paypal"
    },
    "redirect_urls": {
        "return_url": '...', # Here's the return URL.
        "cancel_url": '...', # Here's the cancel URL.
    },
    "transactions": [{
        "item_list": {
            "items": [{
                "name": "Invoice Payment #1",
                "sku": "item",
                "price": "1.00", # This is set to 1 for testing only.
                "currency": "AUD",
                "quantity": 1
            }]
        },
        "amount": {
            "total": "1.00", # Same as above.
            "currency": "AUD"
        },
        "description": "Invoice Payment #1"
    }]
})

# Get the payment URL if successful.
if payment.create():
    for link in payment.links:
        if link.method == "REDIRECT":
            redirect_url = str(link.href)
            "..."
            # Pass this variable to the HTML template context.
else:
    "..."
    # Handle the error.

所以,我将redirect_url 传递给用户。用户发起支付。付款得到了正确处理,但钱没有被转移或收到。

我是不是做错了什么?

PS:这是我刚刚发现的一个类似问题——“Paypal App does not receive money via REST”。

【问题讨论】:

    标签: python rest paypal payment


    【解决方案1】:

    回答我自己的问题。

    在 PayPal 将您重定向回您的重定向网址后,您的 GET 或 POST 参数中有“paymentId”和“PayerID”。

    之后,您使用它们即可成功付款。

    payment_id = request.GET.get('paymentId', None) or request.POST.get('paymentId', None)
    payer_id = request.GET.get('PayerID', None) or request.POST.get('PayerID', None)
    payment = paypalrestsdk.Payment.find(payment_id)
    

    然后你需要执行付款。

    payment_response = payment.execute({'payer_id': payer_id})
    

    然后,如果付款成功执行,请执行您需要的其余工作:

    if payment_response:
        # Payment successful.
        ...
    else:
        # Something went wrong.
        ...
    

    【讨论】:

      猜你喜欢
      • 2017-02-05
      • 2020-06-28
      • 1970-01-01
      • 2020-08-18
      • 2014-06-20
      • 2020-10-08
      • 2020-12-11
      • 2015-02-05
      相关资源
      最近更新 更多