我使用PayPal-Python-SDK以下列方式集成了PayPal付款流程 .
-
订单在我们的网站上进行 . 在这一点上,我知道向访客收取多少费用 .
-
我通过将
mode
参数作为live
(不是sandbox
),客户端ID和live
设置的客户端密钥传递来配置paypalrestsdk
模块 . -
我使用
paypalrestsdk.Payment
创建付款,我传递了大量参数,包括return_url
,cancel_url
,price
,currency
,quantity
和其他一些参数 . -
如果创建的付款没有错误,我会从创建的付款中获得
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 回答
回答我自己的问题 .
在PayPal将您重定向回您的重定向网址后,您的GET或POST参数中会显示“paymentId”和“PayerID” .
之后,您使用它们来获得成功的付款 .
然后你需要执行付款 .
然后,如果付款成功执行,请完成您需要的其他内容: