如何捕获PayPal网络挂钩? [英] How to capture paypal webhook?
本文介绍了如何捕获PayPal网络挂钩?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经在我的网站中集成了PayPal智能按钮,createOrder
和Capture
都是在服务器端处理的,当支付完成后,可以在商业沙盒账户上进行交易,webhook
事件会在Webhooks事件页面中注册。
webhook
POST
URL在仪表板中订阅了所有事件,为了在localhost
中测试它,我使用webhookrelay。
问题是,只有当事件来自WebHook模拟器而不是来自智能按钮的实际付款时,我才会调用webhook
。
所以我的服务器只接收来自模拟器的WebHook调用,并且不是从智能按钮支付触发的。
我处于沙箱模式,所有支付和智能按钮都处于沙箱模式。
以下是我的智能按钮代码:
paypal
.Buttons({
style: {
shape: "rect",
color: "gold",
layout: "horizontal",
label: "paypal",
tagline: false,
height: 52,
},
createOrder: async function () {
const res = await fetch(
"https://www.example.it/payment/paypal/order/create/" + orderID,
{
method: "post",
headers: {
"content-type": "application/json",
},
credentials: "include",
}
);
const data = await res.json();
return data.id;
},
onApprove: async function (data) {
const res = await fetch(
"https://www.example.it/payment/paypal/" +
data.orderID +
"/capture/",
{
method: "post",
headers: {
"content-type": "application/json",
},
credentials: "include",
}
);
const details = await res.json();
if (localStorage.STBOrder) {
localStorage.removeItem("STBOrder");
}
$("#modalPayments").modal("hide");
$("#modalSuccess").modal("show");
},
onCancel: function (data) {},
})
.render("#paypal-button-container");
推荐答案
- 因为您是在服务器端捕获,所以没有使用WebHook的真正动机。用于执行捕获的API调用的响应已具有权威性;Web挂钩不提供任何有用的附加信息
- 如果您出于某种原因坚持要实现WebHook,则需要为您想要接收的事件注册监听器。有一个用于管理WebHook注册的API:https://developer.paypal.com/docs/api/webhooks/v1/#webhooks_post,或者您可以尝试本指南https://developer.paypal.com/docs/api-basics/notifications/webhooks/rest/#subscribe-to-events 中的步骤
- 同样,如果您已经在服务器上实现了同步捕获API调用,则完全不需要实现异步Web挂钩。
这篇关于如何捕获PayPal网络挂钩?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文