【问题标题】:Getting trxId from PayPal buttons API when sending the request发送请求时从 PayPal 按钮 API 获取 trxId
【发布时间】:2021-02-19 16:51:26
【问题描述】:

我正在使用Smart Payment Buttons 与 PayPal 集成,我需要捕获用户按下“Pay With PayPal”时生成的 trxId,当我在控制台上打印信息时,我可以看到我需要的值,但是在调试或尝试获取 var 的值时,我总是不确定,我错过了什么?

下面有一张图片可以解释问题

到目前为止,我唯一的猜测是存在某种安全措施阻止获取此值?

【问题讨论】:

    标签: javascript paypal


    【解决方案1】:

    调用 createOrder 时没有事务。买家当时甚至还没有登录,更不用说得到他们的批准,更不用说成功捕获了。

    只有在成功捕获后才会创建事务。

                onApprove: function(data, actions) {
                    return actions.order.capture().then(function(details) {
                        console.log(details); //Transaction's ID will be within this object
                    });
                }
    

    以上在客户端捕获——但您不应该在客户端捕获然后将数据发送到服务器。

    如果您需要对事务 ID 执行任何重要操作(例如将其存储在数据库中),则应该使用服务器端集成。为此创建两条路线,一条用于“创建订单”,一条用于“捕获订单”,documented here。这些路由应该返回 JSON 数据。

    将您的两条路线与以下批准流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server


    不过,再次阅读您的问题时,您提到了“在单击按钮时”的 ID,因此您的意思可能是询问 订单 ID 而不是交易 ID。知道订单 ID 的最明显和最好的方法是直接在您自己的服务器上创建它。

    【讨论】:

    • 我对此感到困惑,检查这篇帖子stackoverflow.com/questions/17546953/… 现在我明白实际对象和控制台日志之间可能存在差异,但为什么它显示的值与我在后面得到的值相同回应..?
    • 大声笑刚刚阅读了您的更新,尽管您澄清了我的大部分疑问,但我仍然没有得到一件事,正如您在我的示例中看到的那样,我打印了它在对象内部的代码,并且调试时,在函数调用期间实际调用了 PayPal API,它返回此 id,这与我在后端调用确认操作时相同
    • JavaScript Promise 在您立即记录它时没有值,因为此时创建订单的请求尚未完成。当您稍后检查它时,它确实有一个值。
    • 如果你真的想在客户端创建后做某事,它需要在 .then() 中——但同样,你应该只是从服务器上做这一切
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2018-04-27
    • 2021-11-06
    • 1970-01-01
    • 2023-02-01
    • 2021-01-02
    相关资源
    最近更新 更多