Пример кода Paypal express, возвращающий ошибку 400 при ИСПРАВЛЕНИИ

#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"