PaymentResponse: shippingAddress 属性
已弃用:不再推荐使用此功能。虽然某些浏览器可能仍然支持它,但它可能已经从相关的 Web 标准中删除,可能正在被删除,或者可能仅出于兼容性目的保留。避免使用它,并尽可能更新现有代码;请参阅此页面底部的 兼容性表格 来指导您的决定。请注意,此功能可能随时停止工作。
非标准:此功能是非标准的,并且不在标准化轨道上。不要在面向 Web 的生产网站上使用它:它不会为所有用户工作。实现之间也可能存在较大的不兼容性,并且行为将来可能会发生变化。
shippingAddress
是 PaymentRequest
接口的只读属性,它返回一个包含用户提供的送货地址的 PaymentAddress
对象。
值
一个包含用户提供的送货地址详细信息的 PaymentAddress
对象。
示例
通常,用户代理会为您填充 shippingAddress
属性。您可以通过在调用 PaymentRequest
构造函数时将 options.requestShipping
设置为 true
来触发此操作。
在下面的示例中,送货成本随地理位置而异。当 shippingaddresschange
事件被触发并捕获时,updateDetails()
被调用来更新 PaymentRequest
的详细信息,使用 shippingAddress
设置正确的送货成本。
js
// Initialization of PaymentRequest arguments are excerpted for brevity.
const payment = new PaymentRequest(supportedInstruments, details, options);
request.addEventListener("shippingaddresschange", (evt) => {
evt.updateWith(
new Promise((resolve) => {
updateDetails(details, request.shippingAddress, resolve);
}),
);
});
payment
.show()
.then((paymentResponse) => {
// Processing of paymentResponse excerpted for the same of brevity.
})
.catch((err) => {
console.error("Uh oh, something bad happened", err.message);
});
function updateDetails(details, shippingAddress, resolve) {
if (shippingAddress.country === "US") {
const shippingOption = {
id: "",
label: "",
amount: { currency: "USD", value: "0.00" },
selected: true,
};
if (shippingAddress.region === "MO") {
shippingOption.id = "mo";
shippingOption.label = "Free shipping in Missouri";
details.total.amount.value = "55.00";
} else {
shippingOption.id = "us";
shippingOption.label = "Standard shipping in US";
shippingOption.amount.value = "5.00";
details.total.amount.value = "60.00";
}
details.displayItems.splice(2, 1, shippingOption);
details.shippingOptions = [shippingOption];
} else {
delete details.shippingOptions;
}
resolve(details);
}
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。