Интеграция платежей Amazon с Javascript и PHP - PaymentPlanNotSet - PullRequest
0 голосов
/ 19 октября 2018

В настоящее время я пытаюсь интегрировать оплату Amazon.Я хочу отобразить кнопку, созданную с помощью функции:

OffAmazonPayments.Button("AmazonPayButton", myAmznMerchantID

, и после того, как пользователь войдет в систему, я хочу отобразить виджет AdressBook и виджет платежей на одной странице.Кнопка и виджеты отображаются правильно, но когда я пытаюсь подтвердить платеж, я получаю сообщение об ошибке:

PaymentPlanNotSet Покупатель не смог выбрать способ оплаты дляуказанная ссылка на заказ.

Но был выбран платеж.

Я надеюсь, что вы можете мне помочь, чтобы найти мою ошибку в этом коде Javascript:

window.onAmazonLoginReady = function () {
    amazon.Login.setClientId(myAmznClientID);
};
window.onAmazonPaymentsReady = function() {
    var __accessToken       = 0;
    var __orderReferenceId  = 0;

    show_amazon_Button();

    function show_amazon_Button() {
        OffAmazonPayments.Button("AmazonPayButton", ibuiAmazonPaymentsInfos.ibAmznMerchantID, {
            type: "PwA",
            color: "Gold",
            size: "small", // "medium",
            language: "de-DE",
            authorization: function () {
                loginOptions = { scope: "profile:user_id", popup: true };
                authRequest = amazon.Login.authorize(loginOptions, function(response) {
                    if (response.error) {
                        //show Error
                        return;
                    } else {
                        __accessToken = response.access_token;
                        show_Adress_Widget();
                    }
                });
            },
            onError: function(error) {
                //handleError
            }
        }); 
    }

    function show_Adress_Widget() {
        new OffAmazonPayments.Widgets.AddressBook({
            sellerId: ibuiAmazonPaymentsInfos.ibAmznMerchantID,
            onOrderReferenceCreate: function (orderReference) {
                __orderReferenceId = orderReference.getAmazonOrderReferenceId();
                //do Stuff
            },
            onAddressSelect: function (orderReference) { 
                show_Amazon_Wallet();
            },
            design: {
                designMode: 'responsive'
            },
            onError: function (error) {
                //handle Error
            }
        }).bind("readOnlyAddressBookWidgetDiv");                
    }

    function show_Amazon_Wallet() {
        new OffAmazonPayments.Widgets.Wallet({
            sellerId: myAmznMerchantID,
            onOrderReferenceCreate: function(orderReference) {
                //do Stuff
            },
            design: {
                designMode: 'responsive'
            },
            onPaymentSelect: function(orderReference) {
                //activate buy button
            },
            onError: function(error) {
                //handle error
            }
        }).bind('AmazonWalletWidgetDiv');               
    }
} //onAmazonPaymentsReady

В PHP я создаю OrderReference поверх:

$params = array(
    'order_reference_id' => $orderReferenceId,
    'amount'            => $amount,
    'seller_order_id'   => $buchungsKopf->getBuchung_nr(),
);
$responseObject = $client->setOrderReferenceDetails($params);

И даже если раньше я выбрал способ оплаты, я получаю «PaymentPlanNotSet» в responseObject.Та же ошибка, когда я пытаюсь подтвердить заказ. Ссылка

$responseObject2    = $client->confirmOrderReference($params);

До того, как я интегрировал AdressWidget, я смог сделать платеж.Ты видишь, что я делаю не так?

1 Ответ

0 голосов
/ 22 октября 2018

Кажется, я нашел свою ошибку.Когда я хочу отобразить оба виджета (адрес и кошелек) на одной странице, я не могу использовать метод onOrderReferenceCreate в методе OffAmazonPayments.Widget.Wallet.Похоже, тогда создается новая ссылка на заказ, которая не совпадает с ссылкой на заказ, созданной виджетом AdressBook.

Теперь я удалил эту часть виджета Wallet, и все, кажется, работает нормально.

...