我已经使用react.js在我的网站上集成了PayPal按钮,每次用户使用我网站上的PayPal按键付款时,我都想收到一封电子邮件,我该如何实现?
p.S:我正在使用PayPal沙盒
我想做以下事情:
useEffect(() => {
window.paypal.Buttons({
createOrder: (data, actions, err) => {
return actions.order.create({
intent: "CAPTURE",
purchase_units: [
{
amount: { currency_code: "CAD", value: 50 },
},],
});
}, onApprove: async (data, actions) => {
setPaid(true);
setCompleted(true);
// *THEN SEND ME AN EMAIL THAT A PAYMENT HAS BEEN DONE*
},
onError: (err) => {
setCompleted(true);
console.log(err);
},
})
.render(paypal.current)
}, []);
实际的电子邮件应该从后端发送。
按照PayPal Checkout集成指南,在您的后端创建两条路线,一条用于"创建订单",另一个用于"捕获订单"。这两个路由都应该只返回JSON数据(不返回HTML或文本(。在第二条路线中,当捕获API成功时,您可以将其生成的付款详细信息存储在您的数据库中(特别是purchase_units[0].payments.captures[0].id
,即PayPal交易ID(,并在将返回的JSON转发给前端呼叫者之前立即执行任何必要的业务逻辑(如发送电子邮件或预订产品((这将在您的情况下做出反应(。
对于前端审批流,请考虑官方的@paypal/request paypal js,而不是您自己的问题中的useEffect
实现。给它createOrder和onApprove函数参数,这些参数调用您的后端(可能使用fetch
(。有关此类函数的示例,请参阅集成指南中的完整堆栈示例或https://developer.paypal.com/demo/checkout/#/pattern/server(目前后一个是最好的,因为它展示了如何处理捕获响应的3种不同情况(