当前位置: 首页 > 知识库问答 >
问题:

Expressjs中的Paypal REST SDK集成不在沙箱中显示事务

封瑞
2023-03-14
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});
                }
            }
        }
    });
}); 

我做错了什么?

共有1个答案

欧镜
2023-03-14

您使用的是旧的、不推荐使用的v1 SDK。并且缺少必需的“execute”API步骤,该步骤必须在批准后发生,并被重定向到return_url。

您应该切换到使用checkout-nodejs-sdk的当前v2集成。您需要的API调用是“set Up transaction”,然后是批准后的“capture transaction”(捕获transaction),文档记录在这里:https://developer.paypal.com/docs/checkout/reference/server-integration/

用于审批的最佳web流如下:https://developer.paypal.com/demo/checkout/#/patter/server,因为它不涉及重定向,并且将站点加载到后台

 类似资料:
  • 捕获支付(http://paypal.github.io/paypal-php-sdk/sample/doc/payments/ordercapture.html)。 所有步骤都是成功的,我没有抓到任何例外,并且支付和订单状态良好(订单为“完成”,支付为“批准”)。 交易正在发生,我可以看到钱是转移之间的测试买家帐户和卖家在沙盒帐户设置。 您向我的业务提交了金额为X.XX的订单 而且上面清楚地写着

  • 问题内容: 我想创建一个Web应用程序,该应用程序将允许用户上传一些C代码,并查看其执行结果(该代码将在服务器上编译)。用户不受信任,这显然会带来巨大的安全隐患。 因此,我需要为应用创建某种沙箱。在最基本的级别上,我想将对文件系统的访问限制在某些指定的目录中。我无法直接使用chroot jails,因为Web应用程序未以特权用户身份运行。我想设置监狱的suid可执行文件是一个选择。 上载的程序会很

  • 我们在PayPal沙箱上测试我们的应用程序。我能够通过一个账户(ewa)付款。tkacz@zoho.com)另一个(ewa.tkacz)-facilitator@mmigroup.pl),并且此付款的状态在付款人帐户(付款ID 3F335538TV000622E)上已完成,但在收款人业务帐户上,我无法看到此付款,也无法通过API获取它。 这个问题是贝宝的,正如你在Stackoverflow论坛上建

  • docker-compose 沙箱可以让你在不同的环境上来测试Envoy的功能。我们会根据大家的兴趣,将会添加更多的沙箱来展示不同的功能。以下开箱即用: 前端代理 Zipkin跟踪 Jaeger跟踪 gRPC桥接 构建Envoy Docker镜像

  • 这个文档描述了Mac OS X上的进程沙箱机制。 背景 沙箱将进程视为一种恶劣的环境,因为进程任何时候都可能被一个恶意攻击者借由缓冲区溢出或者其他这样的攻击方式所影响。一旦进程被影响,我们的目标就变成了,让这个有问题的进程能访问的用户机器的资源越少越好,并尽量避免在标准文件系统访问控制以外,以及内核执行的用户/组进程控制相关的行为。 查看概述文档了解目标与整体架构图表。 实现 在Mac OS X上

  • 安全是Chromium最重要的目标之一。安全的关键在于理解下面这点:在我们完整地理解了系统在所有可能的输入组合下表现出的行为之后,我们才能够真的保证系统安全。对于像Chromium这样庞大而多样化的代码库,推理它的各个部分可能的行为的组合几乎是不可能的。沙箱的目标是提供这样一种保证:不论输入什么,保证一段代码最终能或不能做的事情。 沙盒利用操作系统提供的安全性,允许不能对计算机做出持久性改变或者访