我正在运行下面的代码,它将用户带到PayPal进行支付,然后按预期将它们返回到return_url
。但是代码不再执行,也不执行付款。在
我的代码基于https://github.com/paypal/rest-api-sdk-python:
class PayPalHandler(tornado.web.RequestHandler):
def get(self):
logging.basicConfig(level=logging.INFO)
paypal.configure({
"mode": PAYPAL_MODE,
"client_id": PAYPAL_CLIENT_ID,
"client_secret": PAYPAL_CLIENT_SECRET})
payment = paypal.Payment({
"intent": "sale",
"payer": {
"payment_method": "paypal" },
"redirect_urls": {
"return_url": "http://127.0.0.1:8000/ty",
"cancel_url": "http://127.0.0.1:8000/" },
"transactions": [ {
"item_list": {
"items": [{
"name": "membership",
"price": "2.00",
"currency": "GBP",
"quantity": 1 }]},
"amount": {
"total": "2.00",
"currency": "GBP" },
"description": "One of membership fee." } ] } )
redirect_url = ""
if payment.create():
print("Payment[%s] created successfully"%(payment.id))
for link in payment.links:
if link.method == "REDIRECT":
redirect_url = link.href
print("Redirect for approval: %s"%(redirect_url))
return self.redirect(redirect_url)
else:
print("Error while creating payment.")
print(payment.error)
response = payment.to_dict()
print response
payment = paypal.Payment.find(payment.id)
if payment.execute({"payer_id": response['payer_id']}):
print ("Payment executed successfully")
else:
print(payment.error) # Error Hash
print payment.to_dict()
print userData
所以在https://devtools-paypal.com/guide/pay_paypal/python?success=true&token=EC-8JL96732FP068791F&PayerID=QQGSRNHDACTLJ的例子中。步骤5没有发生,贝宝也没有回复?在
为什么使用
我想你可以用
^{pr2}$我从来没有在龙卷风处理程序中看到过返回声明。在
您需要其他url,papypal重定向支付成功时,您将收到代币和PayerID。在该GET方法中,可以将这部分代码(伪代码)放入:
您需要在两次通话之间保存付款密码。在
我是贝宝的阿维。我对Tornado不是很熟悉,但是当代码中出现
return self.redirect(redirect_url)
行,并将用户返回返回返回的url之后,payment.execute({"payer_id": response['payer_id']})
中的付款人id是否正确?Payer_id作为http://<return_url>?token=EC-60U79048BN7719609&PayerID=7E7MGXCWTTKK2
格式的参数之一返回到返回的url后面。另外,执行payment = paypal.Payment.find(payment.id)
后付款的状态是什么。另一个建议是看看print payment.error
是否打印出有用的调试消息和调试id,paypal商家的技术服务部门可以使用它来查看问题。在相关问题 更多 >
编程相关推荐