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 中显示交易的主要内容,如果未能解决你的问题,请参考以下文章

REST api 中的 Paypal 自适应支付

需要帮助使用 PayPal REST API 或 C# 中的任何其他方法获取 PayPal 交易

移除 PayPal REST API 中的配送选项

Google Apps 脚本中的 PayPal REST API 错误 400

使用 paypal/rest-api-sdk-php 的 laravel paypal 集成错误

ColdFusion Paypal REST API oAuth