Expressjs 中的 Paypal REST SDK 集成未在 Sandbox 中显示交易
Posted
技术标签:
【中文标题】Expressjs 中的 Paypal REST SDK 集成未在 Sandbox 中显示交易【英文标题】:Paypal REST SDK integration in Expressjs not showing transactions in Sandbox 【发布时间】:2020-12-08 13:04:30 【问题描述】:我在我的 Expressjs 应用程序中集成了 Paypal REST sdk。我正在将它与 Angular 应用程序连接起来。
这是我写的代码:
router.post('/buy' , ( req , res ) =>
const amt = req.body.quantity*req.body.price
/**
* Paypal payment json to be passed
*/
const payment_json =
"intent": "sale",
"payer":
"payment_method": "paypal"
,
"redirect_urls":
"return_url": "https://localhost:4200/success",
"cancel_url": "https://localhost:4200/err"
,
"transactions": [
"amount":
"total": '' + Math.round((amt)*100)/100,
"currency": "CAD",
"details":
"subtotal": '' + Math.round((amt)*100)/100,
"tax": "0.00",
"shipping": "0.00"
,
"description": "This is payment description.",
"item_list":
"items":[
"quantity": req.body.quantity,
"name": "collection",
"price": '' + req.body.price,
"sku": req.body.collid,
"currency":"CAD"
]
]
/**
* Paypal payment object created
*/
paypal.paypal.payment.create(payment_json, function (error, payment)
if (error)
res.status(500).send(message: error)
else
console.log('payment:', payment)
for(let i=0; i<payment.links.length; i++)
if(payment.links[i].rel === 'approval_url')
res.json(forwardLink: payment.links[i].href);
);
);
在进行交易时,它正在成功交易并将我带到https://localhost:4200/success
页面。但我无法看到sandbox 帐户中的交易。没有扣款,因此不显示任何交易。
我做错了什么?
【问题讨论】:
【参考方案1】:您使用的是旧的、已弃用的 v1 SDK。而且您缺少必需的“执行”API 步骤,该步骤必须在批准后发生并被重定向到 return_url。
您应该切换到与 Checkout-NodeJS-SDK 的当前 v2 集成。您需要的 API 调用是“设置交易”,然后在批准“捕获交易”后,记录在这里:https://developer.paypal.com/docs/checkout/reference/server-integration/
用于批准的最佳 Web 流程在这里:https://developer.paypal.com/demo/checkout/#/pattern/server,因为它不涉及重定向,并且让您的网站在后台加载
【讨论】:
你能给我推荐一个遵循 Express-Angular 应用程序中 v2 的指南吗?我被困在快递方面。我已经关注 v2 的客户端,但不知道如何将其与服务器端集成以上是关于Expressjs 中的 Paypal REST SDK 集成未在 Sandbox 中显示交易的主要内容,如果未能解决你的问题,请参考以下文章
需要帮助使用 PayPal REST API 或 C# 中的任何其他方法获取 PayPal 交易
Google Apps 脚本中的 PayPal REST API 错误 400