我首先要求用户提供用户名和电子邮件地址,在提交该表单后,用户将能够单击 PayPal 按钮之一。然后,用户进行付款并被重定向回确认页面。我的问题是如何验证付款。我知道无法获取购买者的电子邮件地址,是否有其他方法可以验证付款?这是显示 PayPal 按钮的代码。
<!DOCTYPE html>
<html>
<head>
<script src="https://www.paypal.com/sdk/js?client-id={MY-CLIENT-ID}¤cy=USD"></script>
</head>
<body>
<div id="paypal-button-container"></div>
<script>
paypal.Buttons({
createOrder: function(data, actions) {
// Set up order details
return actions.order.create({
intent: 'CAPTURE',
application_context: {
shipping_preference: 'NO_SHIPPING' // Adjust as needed
},
purchase_units: [{
amount: {
value: 1.00, // Replace with your product price
currency: 'USD'
}
}]
});
},
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
// Handle successful payment (e.g., redirect to confirmation page)
window.location.href = 'https://www.example.com/paidregistrations/confirm?paymentId=' + details.id;
});
},
onError: function(err) {
console.error('Error:', err);
}
}).render('#paypal-button-container');
</script>
</body>
</html>
actions.order.create 和 actions.order.capture 已弃用,不应在任何新集成中使用
相反,从后端服务器创建和捕获订单(不是 JavaScript,除非您使用的是 Node.js)
请参阅标准集成指南以获取文档和示例,这些文档和示例确实使用了node.js作为后端路由,但这只是一个示例。
对于如何验证支付的问题,捕获API响应可以立即验证支付是否成功。根据捕获响应,向付款人显示成功/失败消息并触发您需要的任何其他业务逻辑,包括存储捕获交易 ID(与订单 ID 不同)等。