PaymentResponse: shippingOption 属性

安全上下文:此功能仅在 安全上下文(HTTPS)中可用,在某些或所有 支持的浏览器 中可用。

已弃用:此功能不再推荐使用。虽然一些浏览器可能仍然支持它,但它可能已被从相关 Web 标准中删除,可能正在被删除,或者可能仅出于兼容性目的而保留。避免使用它,并尽可能更新现有代码;请参阅此页面底部的 兼容性表 来指导您的决定。请注意,此功能可能随时停止工作。

非标准:此功能是非标准的,并且不在标准化轨道上。不要在面向 Web 的生产网站上使用它:它不会对每个用户都有效。实现之间也可能存在很大差异,并且行为可能会在将来发生变化。

shippingOptionPaymentRequest 接口的只读属性,它返回用户选择的配送方式的 ID 属性。此选项仅在将 options 对象传递给 PaymentRequest 构造函数时,将 requestShipping 选项设置为 true 时存在。

一个字符串。

示例

在下面的示例中,调用了 shippingoptionchange 事件。它调用 updateDetails() 来在“标准”和“快递”之间切换配送方式。

js
// Initialization of PaymentRequest arguments are excerpted for brevity.
const payment = new PaymentRequest(supportedInstruments, details, options);

request.addEventListener("shippingoptionchange", (evt) => {
  evt.updateWith(
    new Promise((resolve, reject) => {
      updateDetails(details, request.shippingOption, resolve, reject);
    }),
  );
});

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, shippingOption, resolve, reject) {
  let selectedShippingOption;
  let otherShippingOption;
  if (shippingOption === "standard") {
    selectedShippingOption = details.shippingOptions[0];
    otherShippingOption = details.shippingOptions[1];
    details.total.amount.value = "55.00";
  } else if (shippingOption === "express") {
    selectedShippingOption = details.shippingOptions[1];
    otherShippingOption = details.shippingOptions[0];
    details.total.amount.value = "67.00";
  } else {
    reject(`Unknown shipping option '${shippingOption}'`);
    return;
  }
  selectedShippingOption.selected = true;
  otherShippingOption.selected = false;
  details.displayItems.splice(2, 1, selectedShippingOption);
  resolve(details);
}

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。