AMP
  • 网站

AMP 中的支付

简介

通过 amp-iframeallowpaymentrequest 属性,AMP 页面可以直接从浏览器请求支付信息。PaymentRequest API 是一个 开放的 W3C 规范,得到了大多数主流浏览器的支持。此示例不会详细介绍该 API,但您可以在 这篇深入分析文章中获取更多信息。

此示例演示如何嵌入一个仅包含“立即购买”按钮的 iframe。所有实际的支付逻辑都包含在 iframe src 本身中。

设置

此示例唯一需要的额外组件是 amp-iframe。

<script async custom-element="amp-iframe" src="https://cdn.ampproject.org/v0/amp-iframe-0.1.js"></script>

配置 Iframe

在基本情况下,AMP 页面会将所有 PaymentRequest 逻辑交给 iframe 来完成单个商品的购买。

关键是,iframe 会执行两项操作

  1. 设置 allowpaymentrequest 属性,该属性授予 iframe 源调用 PaymentRequest.show() 的权限。
  2. 通过查询字符串传递相关的产品标识符,允许 iframe 检索此产品的适当产品信息。
<amp-iframe title="Buy Now button to retrieve product information" width="130" height="42" sandbox="allow-scripts allow-same-origin allow-top-navigation" allowpaymentrequest frameborder="0" noloading src="/static/samples/files/iframe/payments.html?productId=1">
   <button placeholder disabled>Buy Now</button>
</amp-iframe>

我们向 amp-iframe 添加一个 placeholder 元素,以确保可以在顶部视口中加载它。占位符会显示一个禁用按钮,直到加载 iframe。我们还使用 CSS 禁用默认加载动画

但是,由于 AMP 不允许 javascript,因此 iframe 源还必须处理 PaymentRequest 不可用的情况。虽然当前不在本示例的范围内,但可能的选项包括

  1. 将“立即购买”按钮替换为“添加到购物车”按钮。
  2. 重定向到标准结帐表单。
  3. 完全隐藏“立即购买”按钮,并使用单独的基于 AMP 的“添加到购物车”按钮(请参阅产品页面演示
需要进一步解释?

如果本页上的说明未涵盖您的所有问题,请随时与其他 AMP 用户联系以讨论您的确切用例。

转到 Stack Overflow
无法解释的功能?

AMP 项目强烈鼓励您的参与和贡献!我们希望您成为我们开源社区的长期参与者,但我们也欢迎您对您特别关注的问题进行一次性贡献。

在 GitHub 上编辑示例