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, {
...

现在可以了:)