【发布时间】:2018-10-19 11:51:01
【问题描述】:
目前我尝试整合亚马逊支付。 我想显示使用以下功能创建的按钮:
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);
即使我之前选择了一种付款方式,我也会在 responseObject 中获得“PaymentPlanNotSet”。 同样的错误,当我尝试确认 orderReference 时
$responseObject2 = $client->confirmOrderReference($params);
在我集成 AdressWidget 之前,我可以进行付款。 你能看出我做错了什么吗?
【问题讨论】:
-
Payment Plan是否与Payment Method相同?对我来说,它们意味着两种不同的东西 -
是的,亚马逊的错误代码是“PaymentPlanNotSet”。但正如消息文本所说,它们意味着缺少付款方式。
-
所以,消息实际上是说“他们的意思是缺少付款方式”?
-
错误代码“PaymentPlanNotSet”的定义是:“买家没有为给定的订单参考设置付款方式。”亚马逊描述的解决方案是:“向买家展示亚马逊钱包小部件以收集付款信息。”但是我显示了 Wallet 小部件,买家可以选择他的付款方式。所以我的 Wallet 小部件的实现一定有问题。
标签: javascript php amazon-pay