Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否保证在客户端智能支付按钮之后会触发webhook。然后()?_Javascript_Paypal_Callback_Webhooks - Fatal编程技术网

Javascript 是否保证在客户端智能支付按钮之后会触发webhook。然后()?

Javascript 是否保证在客户端智能支付按钮之后会触发webhook。然后()?,javascript,paypal,callback,webhooks,Javascript,Paypal,Callback,Webhooks,我正在开发一个集成了PayPal(checkout/RESTAPI)的网站,该网站要求将表单中的数据保存到数据库表中。据我所知,不可能让PayPal将收集的数据以表单形式发送到webhook,以便将其保存到DB。我首先使用orderID保存为pending,然后在webhook中使用相同的orderID更新记录,使其不被挂起 然而,这种方法依赖于这样一个事实,即webhook是在作为挂起保存到数据库之后调用的(在客户端通过AJAX调用)。事实似乎总是如此。我能指望webhook被称为第二个吗 下

我正在开发一个集成了PayPal(checkout/RESTAPI)的网站,该网站要求将表单中的数据保存到数据库表中。据我所知,不可能让PayPal将收集的数据以表单形式发送到webhook,以便将其保存到DB。我首先使用orderID保存为pending,然后在webhook中使用相同的orderID更新记录,使其不被挂起

然而,这种方法依赖于这样一个事实,即webhook是在作为挂起保存到数据库之后调用的(在客户端通过AJAX调用)。事实似乎总是如此。我能指望webhook被称为第二个吗

下面是与我使用的代码等效的JavaScript代码:

paypal.Buttons({
createOrder:函数(数据、操作){
return actions.order.create({
购买单位:[{
金额:{
值:“0.01”
}
}]
});
},
onApprove:功能(数据、操作){
返回actions.order.capture().then(函数(详细信息){
警报('交易由'+详细信息.付款人.名称.给定名称'完成);
//调用服务器以保存事务
返回获取(“/paypal事务完成”{
方法:“post”,
标题:{
“内容类型”:“应用程序/json”
},
正文:JSON.stringify({
orderID:data.orderID
})
});
});
}
}).render(“#贝宝按钮容器”);

在调用webhook之前,
onApprove中的AJAX调用会可靠地发生吗?

通常是的,但我会犹豫说“可靠”,因为在某种程度上,您依赖于客户端行为

另一种解决方案是在付款设置过程中传递“CUSTOM”参数,该参数将在批准后(详细信息中)返回给您,并作为通知webhook的一部分返回给您


另一种替代解决方案是集成服务器端解决方案,例如,此框架演示中的解决方案:。使用此解决方案,在
fetch之后才创建贝宝交易(
XHR),然后服务器必须直接调用paypal的API来捕获v2/订单,并立即收到成功/失败的API响应,然后可以在一个原子操作中将所有必要的数据存储在数据库中。此服务器端解决方案的一个好处是它不以任何方式依赖于异步Webhook。它是最健壮的解决方案。

第一个解决方案与第二个解决方案相比有多健壮?当第二个解决方案成功时,第一个解决方案失败的可能性有多大?webhook是第一个解决方案的依赖项。因此,如果webhook服务出现故障或出现任何问题,这将中断您的处理。我更喜欢依赖较少的解决方案cies和可能出错的事情——但是,如果您已经使用webhooks实现了一些东西,那么现在就不必费心修改它。请您提供一个有关文档的链接,或者解释如何使用自定义参数?我找不到任何引用,这对我目前的工作非常有用正在尝试。对于智能支付按钮使用的v2/orders API,它被记录为
购买单元
数组的
自定义\u id
参数: