嗨,我已经成功集成了PayPal Checkout智能支付按钮,我正在使用自定义收款人参考https://developer.paypal.com/docs/checkout/integration-features/custom-payee/
我的观点是,如果自定义收款人电子邮件无效,付款仍然完成,资金进入API凭证所有者的账户。但我不想那样。如果自定义收款人的电子邮件是错误的,付款不应该成功,它必须抛出一个错误和正确的消息,这样我才能捕捉到错误。
我没有从贝宝文档中得到任何解决方案。
如果自定义收款人电子邮件无效,则付款仍然完成,资金进入API凭证所有者的帐户
"无效"是什么意思?请具体说明你的意思。
如果电子邮件与现有PayPal帐户不关联,则付款将处于挂起状态。所有者有30天的时间使用该电子邮件创建一个PayPal帐户(或将其添加到现有的PayPal账户(,并接受待定付款。如果他们在30天内没有这样做,付款将自动退还。在这种情况下,"资金进入API凭证所有者的账户"的情况是而不是。这并没有发生。
现在,如果您试图在付款设置时传递带有空白/空字符串email_address
的payee
对象,那么它将被忽略,付款将按照正常付款处理(不包括自定义收款人(传递给API凭据所有者。
因此,您需要自己进行验证,以确保收款人字段不是空白的。您可以简单地检查它是否为非空字符串。
或者,做得更好,并实际检查它是否是有效格式的电子邮件地址:
function isEmail(y) {
var re = /^(([^<>()[]\.,;:s@"]+(.[^<>()[]\.,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;
return re.test(String(y).toLowerCase());
}
如果它无效,您不应该允许使用无效的自定义收款人继续创建订单,因为它显然不会创建您想要的交易。相反,您应该显示一个错误,即此用户/收件人/收款人的结账设置不正确。
<script src="https://www.paypal.com/sdk/js?client-id=XXXXXXXXXX"></script>
paypal.Buttons({
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: '1.00'
},
payee: {
email_address: 'someemail@somedomain.com'
}
}]
});
},
onApprove: function(data, actions) {
// This function captures the funds from the transaction.
return actions.order.capture().then(function(details) {
//success
},
onCancel: function (data) {
//cancel payment
}
}).render('#paypal-button-container');
这里的收款人电子邮件不存在,资金流向api所有者