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 上编辑示例