首页 文章

使用PayPal REST SDK和PayPal-Python-SDK时,不会发送或接收资金

提问于
浏览
0

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

  • 订单在我们的网站上进行 . 在这一点上,我知道向访客收取多少费用 .

  • 我通过将 mode 参数作为 live (不是 sandbox ),客户端ID和 live 设置的客户端密钥传递来配置 paypalrestsdk 模块 .

  • 我使用 paypalrestsdk.Payment 创建付款,我传递了大量参数,包括 return_urlcancel_urlpricecurrencyquantity 和其他一些参数 .

  • 如果创建的付款没有错误,我会从创建的付款中获得 redirect_url .

  • 用户点击将他重定向到 redirect_url 的链接,这是PayPal页面,他填写了PayPal详细信息或信用卡详细信息 .

  • 用户支付了金额,并被重定向回我们的网站 .

  • 作为最后一步,我检查数据库中是否有记录,其中包含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:这里发现's a similar question I' - “Paypal App does not receive money via REST” .

1 回答

  • 0

    回答我自己的问题 .

    在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.
        ...
    

相关问题