Paypal Checkout onShippingChange 不适用于 Ajax-Call
Paypal Checkout onShippingChange won't work with Ajax-Call
当客户在 paypal 结账时更改送货地址时,我正在使用“onShippingChange”获取它。但是,当我检查给定的地址并拒绝它或需要更新运费时,它不会起作用。
没有 ajax 调用的工作示例:
paypal.Buttons({
...
onShippingChange: function(data, actions) {
if(data.shipping_address.country_code == 'ES'){
return actions.reject();
}
return actions.resolve();
...
});
一旦我将其更改为以下内容,它将不起作用:
paypal.Buttons({
...
onShippingChange: function(data, actions) {
fetch(ajax, {
method: 'post',
body: new URLSearchParams({
'do':'getShippingPricePaypalCheckout',
'country':data.shipping_address.country_code,
'id':data.orderID
}),
headers: {
'Accept': 'application/json',
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
}).then(function(res) {
return res.json();
}).then(function(_data) {
if(!_data || _data == 'false' || _data == false){
console.log("Value of data: "+data);
return actions.reject();
}else
return actions.resolve();
});
}
...
});
在调试模式下,调用 actions.reject()。但是在paypal结账时,不会显示不支持发货国家的错误信息。
console.log 的打印结果是正确的,并显示“数据值:false”,因此正在调用 actions.resolve(),但 Paypal 没有得到它。
有什么想法吗?
好的,我发现了我的错误。
我需要 return 才能获取:
...
onShippingChange: function(data, actions) {
return fetch(ajax, {
...
现在可以了:)
当客户在 paypal 结账时更改送货地址时,我正在使用“onShippingChange”获取它。但是,当我检查给定的地址并拒绝它或需要更新运费时,它不会起作用。
没有 ajax 调用的工作示例:
paypal.Buttons({
...
onShippingChange: function(data, actions) {
if(data.shipping_address.country_code == 'ES'){
return actions.reject();
}
return actions.resolve();
...
});
一旦我将其更改为以下内容,它将不起作用:
paypal.Buttons({
...
onShippingChange: function(data, actions) {
fetch(ajax, {
method: 'post',
body: new URLSearchParams({
'do':'getShippingPricePaypalCheckout',
'country':data.shipping_address.country_code,
'id':data.orderID
}),
headers: {
'Accept': 'application/json',
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
}).then(function(res) {
return res.json();
}).then(function(_data) {
if(!_data || _data == 'false' || _data == false){
console.log("Value of data: "+data);
return actions.reject();
}else
return actions.resolve();
});
}
...
});
在调试模式下,调用 actions.reject()。但是在paypal结账时,不会显示不支持发货国家的错误信息。
console.log 的打印结果是正确的,并显示“数据值:false”,因此正在调用 actions.resolve(),但 Paypal 没有得到它。
有什么想法吗?
好的,我发现了我的错误。
我需要 return 才能获取:
...
onShippingChange: function(data, actions) {
return fetch(ajax, {
...
现在可以了:)