#paypal #paypal-sandbox
#paypal #paypal-песочница
Вопрос:
Я обнаружил, что в Интернете очень мало помощи Paypal, когда дела идут плохо, и у меня возникли некоторые проблемы с onShippingChange()
и actions.order.patch
редактированием. Когда я запускаю следующий код с новыми кнопками Paypal, return actions.order.patch()
похоже, он не работает должным образом.
Мой код приведен ниже:
<script src="https://www.paypal.com/sdk/js?commit=falseamp;client-id={sandbox-merchant-id}amp;disable-funding=paylateramp;currency=USD"></script>
<script>
paypal.Buttons({
createOrder: function(data, actions) {
return actions.order.create({
"purchase_units": [{
"description": "Sporting Goods",
"amount": {
"currency_code": "USD",
"value": 12,
"breakdown": {
"item_total": {
"currency_code": "USD",
"value": 12
},
"shipping": {
"currency_code": "USD",
"value": 0
}
}
},
"items": [{
"name": "Arizona Christmas",
"sku": "sku01",
"quantity": "1",
"unit_amount": {
"currency_code": "USD",
"value": 12
}
}]
}]
});
},
onShippingChange: function(data, actions) {
const baseOrderAmount = '12.00';
if (data.shipping_address.state == "AZ") {
const shippingAmount = data.shipping_address.state === 'AZ' ? '50.00' : '60.00';
return actions.order.patch([{
op: 'replace',
path: '/purchase_units/@reference_id=='default'/amount',
value: {
currency_code: 'USD',
value: (parseFloat(baseOrderAmount) parseFloat(shippingAmount)).toFixed(2),
breakdown: {
item_total: {
currency_code: 'USD',
value: baseOrderAmount
},
shipping: {
currency_code: 'USD',
value: shippingAmount
}
}
}
}]);
}
}
}).render('#paypal-button-container');
</script>
С помощью приведенного выше кода, когда я меняю адрес по умолчанию в Калифорнии на адрес в Аризоне (чтобы вызвать изменение стоимости доставки), onShippingChange(...)
событие срабатывает немедленно, затем в окне Paypal отображается загрузчик «обработка», а затем в правом верхнем углу отображается новая сумма. Само окно Paypal показывает 62 доллара (как и ожидалось), но когда я расширяю общую разбивку цен, оно показывает 0 долларов за доставку. Кроме того, console.log(data)
ничего не обновляется… все исходные значения в долларах. Таким образом, похоже, что детали .patch
не применяются полностью.
Но потом я замечаю одну странную вещь. Если я нажму F5
, чтобы обновить окно Paypal, оно, конечно, обновится. Общая стоимость и разбивка становятся правильными (показывает правильную сумму, доставку и т. Д.), И console.log(data)
Отображается правильная разбивка, Но затем адрес возвращается к исходному адресу (адресу в Калифорнии; это адрес по умолчанию для личной учетной записи sandbox).
Итак… Я не уверен, что с этим делать. Я делаю что-то не так с приведенным выше кодом? Или система Paypal просто недостаточно усовершенствована, чтобы использовать новые кнопки, основанные только на Javascript (по сравнению с решением на стороне сервера)? Я не могу использовать решение на стороне сервера, поэтому я надеюсь заставить это работать должным образом, используя обычную реализацию javascript sdk.
Комментарии:
1. я имею дело с тем, что выглядит как одна и та же проблема. песочница, разбивка отправки, и она не отображается в окне paypal. что заставляет вас думать, что на стороне сервера есть потенциал для решения этой проблемы?
2. Ничего. Я предполагаю, но мне не на чем основывать свое предположение.