javascript - 亚马逊支付与 Javascript 和 PHP 的集成 - PaymentPlanNotSet

标签 javascript php amazon-pay

目前我尝试整合亚马逊支付。 我想显示使用以下功能创建的按钮:

OffAmazonPayments.Button("AmazonPayButton", myAmznMerchantID

用户登录后,我想在同一页面上显示 AdressBook 小部件和付款小部件。 按钮和小部件显示正确,但是当我尝试确认付款时,我收到错误约束消息:

PaymentPlanNotSet The buyer has not been able to select a Payment method for the given Order Reference.

但是付款已被选择。

我希望你能帮助我,找到我在这段 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);

即使我之前选择了付款方式,我也会在responseObject 中收到“PaymentPlanNotSet”。 当我尝试确认 orderReference 时出现同样的错误

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

在集成 AdressWidget 之前,我可以进行付款。 你能看出我做错了什么吗?

最佳答案

看来我发现了自己的失败。 当我想在同一页面上显示两个小部件(地址和钱包)时,我无法使用 OffAmazonPayments.Widget.Wallet 中的 onOrderReferenceCreate-Method 。 看起来它创建了一个新的订单引用,它与 AdressBook Widget 创建的订单引用不同。

现在我已经删除了钱包小部件的这一部分,一切似乎都工作正常。

关于javascript - 亚马逊支付与 Javascript 和 PHP 的集成 - PaymentPlanNotSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52891791/

相关文章:

javascript - Angular JS - 点击加载 Controller 功能

javascript - 如何使不可扩展的对象成为可扩展的?

PHP 字符串比较。正则表达式

paypal - 是否可以将任何个人对个人支付服务整合到我的市场中,从而我也可以为自己收取一定比例的费用?

php - __autoload() 没有被调用?

javascript - 如何在 Angular 4中的扩展数据管道中设置区域设置?

javascript - 导入 LOCAL .obj 以使用 React 使用 Three.js OBJLoader 加载

php - 如何编写查询以检查列值是否在可能为空的 PHP 数组中

php - 获取 mp4 文件标签