When I patch the order Total is right, but Shipping is still holding old shipping price (4.50)
For example i've try to patch it with 24.60
This is my code for onShippingChange
onShippingChange: function (data, actions) {
data.action = "changeShippingCost";
return new Promise((resolve) => {
$.ajax({
url: window.location.protocol + "//" + window.location.hostname + '/paypalExpress/request',
type: "POST",
data: JSON.stringify(data),
dataType: "json",
headers: {
'content-type': 'application/json'
},
success: function (data) {
resolve(data);
}
});
}).then(function (res) {
if (res.accept) {
shippingAmount = (res.shipping);
baseOrderAmount = (res.value);
itemsTotal = (res.itemsTotal);
return actions.order.patch([
{
op: 'replace',
path: '/purchase_units/@reference_id==\'default\'/amount',
value: {
currency_code: 'EUR',
value: (parseFloat(baseOrderAmount)).toFixed(2),
breakdown: {
item_total: {
currency_code: 'EUR',
value: (parseFloat(itemsTotal)).toFixed(2)
},
shipping: {
currency_code: 'EUR',
value: (parseFloat(shippingAmount)).toFixed(2)
}
}
}
}
]);
}
return actions.reject();
});
},
I've managed to create a minimal reproducible example without the server side here
UPDATE: After contacting PayPal Suport they send me
Thank you for contacting Merchant Technical Support.
Based on the information provided in the ticket, it is my understanding that you are inquiring about patching the shipping costs into your smart payment buttons. I worked with some of my peers on this and I have included the suggested code for what you are looking to accomplish here
and this attachment
So I need to change the tax_total to change a shipping or what ?
Testing the minimal reproducible example without the server side, shipping was immediately changed to 24.60 ...
Therefore the issue would appear to be with the server side (perhaps it is still returning 4.50?). You should console.log() the res.shipping
and debug from there