PayPal 智能按钮:是不是有任何方式 onApprove 在付款未完成的情况下运行?

Posted

技术标签:

【中文标题】PayPal 智能按钮:是不是有任何方式 onApprove 在付款未完成的情况下运行?【英文标题】:PayPal Smart Buttons: Is there any way onApprove runs without the payment having completed?PayPal 智能按钮:是否有任何方式 onApprove 在付款未完成的情况下运行? 【发布时间】:2020-06-24 21:05:13 【问题描述】:

所以我有一个使用 PayPal 智能按钮的网站,并且我有一个代码,可以在买家购买产品时向他发送产品。它使用 php 文件来发送产品。

我有在 onApprove 函数运行时调用 PHP 的 javascript 代码。

我知道这不是最安全的方法,但我发现使用 API 真的很困难,而且要花很多时间,所以我决定这样做。

但是当我在 PayPal 上没有收到钱,但程序将产品发送给他们时,我遇到了问题。它有时有效,有时无效。

我确信 PHP 代码只有在 onApprove 运行时才能运行,所以这不是问题。

onApprove 有没有在付款未完成的情况下运行的方法?

【问题讨论】:

【参考方案1】:

是的,当然。只要客户批准付款,onApprove 就会运行,这意味着他们点击了最终批准操作,通常表述为“立即付款”。这意味着付款已被捕获/完成,从而导致 PayPal 交易。

通常在onApprove 中,您会执行类似调用actions.capture() 的操作,因此如果成功(并且仅在成功的情况下)您会想要触发您的PHP 代码。更安全的实现是调用您的 PHP 代码并让它在服务器端执行 v2/订单捕获 API 调用,但这取决于您。下面是这种服务器端集成模式的演示:https://developer.paypal.com/demo/checkout/#/pattern/server

或者,您也可以尝试定义一个 onComplete 函数来调用您的 PHP 代码。

【讨论】:

您好,感谢您的回复。所以我的代码中有一个actions.capture()。这是我的代码:onApprove: function(data, actions) return actions.order.capture().then(function(details) //This is where i send the product ); , 您在发送产品之前是否检查捕获是否成功? 我已经发送了我的代码,这就是它所做或检查的全部内容。你能给我一个例子来说明你的意思吗? 如果您不明白我在说什么,请尝试改用onCompleted 您能否发送另一个答案,例如我应该在代码中更改什么或应该输入什么?我已经发送了我的代码。我应该改变什么?我也搜索了 OnCompleted ,但我找不到任何关于它的作用或我应该如何实现它的信息。你能发一个例子吗,我将不胜感激。

以上是关于PayPal 智能按钮:是不是有任何方式 onApprove 在付款未完成的情况下运行?的主要内容,如果未能解决你的问题,请参考以下文章

没有智能按钮的 Vue/Laravel PayPal 集成

Paypal 智能按钮无法正确呈现

PayPal 可变价格智能按钮在没有用户输入的情况下无法执行?

Paypal 智能按钮元数据 - Webhook

使用 Paypal 智能按钮上线

使用 Ruby on Rails form_for 和控制器/方法绑定 PayPal 智能按钮?