【问题标题】:Paypal REST SDK integration in Expressjs not showing transactions in SandboxExpressjs 中的 Paypal REST SDK 集成未在 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 帐户中的交易。没有扣款,因此不显示任何交易。

我做错了什么?

【问题讨论】:

    标签: javascript node.js angular paypal paypal-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 的客户端,但不知道如何将其与服务器端集成
    猜你喜欢
    • 2014-04-02
    • 2014-04-08
    • 2014-10-05
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 2013-06-10
    相关资源
    最近更新 更多