Paypal onShippingChange / исправление работает не так, как ожидалось

#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. Ничего. Я предполагаю, но мне не на чем основывать свое предположение.