#javascript #express #paypal #patch
#javascript #экспресс #paypal #исправление
Вопрос:
Я использую код руководства Paypal для создания простой кнопки Paypal Express, кажется, все работает, пока я не добавлю код onshippingchange (который снова находится в их руководстве) — когда он пытается исправить заказ, чтобы добавить стоимость доставки, Paypal возвращает ошибку 400.
Код работает, если нет попытки исправить заказ, платеж завершен и т.д. Связался со службой поддержки Paypal, но им требуется вечность, чтобы ответить, и до сих пор, к сожалению, не было никакой пользы
<script>
const baseOrderAmount = '15.00';
const addFloats = (...floats) => floats.reduce((v, t) => parseFloat(t) parseFloat(v), 0).toFixed(2);
paypal.Buttons({
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: '0.01'
}
}]
});
},
onApprove: function(data, actions) {
// Capture the funds from the transaction
return actions.order.capture().then(function(details) {
// Show a success message to your buyer
alert('Transaction completed by ' details.payer.name.given_name);
});
}
onShippingChange: function(data, actions) {
// Patch the shipping amount
const shippingAmount = '20.00';
return actions.order.patch([
{
op: 'replace',
path: '/purchase_units/@reference_id==default/amount',
value: {
currency_code: 'USD',
value: addFloats(baseOrderAmount, shippingAmount),
breakdown: {
item_total: {
currency_code: 'USD',
value: baseOrderAmount
},
shipping: {
currency_code: 'USD',
value: shippingAmount
}
}
}
}
]);
}
}).render('#paypal-button-container');
Я ожидаю, что заказ Paypal будет обновлен до 15,00 товаров плюс 20,00 доставки, однако окно paypal возвращает ошибку «что-то пошло не так», а консоль показывает ошибку 400
Комментарии:
1. Значение базового порядка не определено?
2. baseOrderAmount определяется как константа, равная 15, в верхней части скрипта
3. Правильно ли выглядит отправляемый запрос на исправление на вкладке сеть ваших инструментов разработки? Всплывает ли addFloats? Все требуемые поля установлены?
4. Получаете ли вы что-нибудь еще, кроме 400? Я был бы очень удивлен, если бы у него не было какого-либо сообщения об ошибке.
5. Служба поддержки PayPal сообщила, что, по-видимому, проблема заключается в том, что я отправляю команду исправления по неправильному URL. Однако я не вижу, где бы я мог указать, что команда исправления должна была быть отправлена на другой URL?
Ответ №1:
В настоящее время в примере кода на веб-сайте Paypal обнаружена ошибка.
Ссылка: https://developer.paypal.com/docs/checkout/integration-features/shipping-callback /
В настоящее время Paypal предоставляет этот код в своем примере:
path: '/purchase_units/@reference_id=='default'/amount'
Ваш код (похоже, вы удалили кавычки, как я сделал сначала):
path: '/purchase_units/@reference_id==default/amount',
Однако, похоже, это требуемый правильный код:
path: "/purchase_units/@reference_id=='default'/amount"