收款
制作支付表单或使用预构建的结账页面来开始接收线上付款。
通过在您的网站上嵌入用户界面组件,使用 Stripe Element 来构建自定义的支付集成应用。看看这个集成应用与 Stripe 的其他集成类型的对比情况。
客户端侧面和服务器端代码构建接受各种支付方式的结账表单。
想了解如何使用 Stripe Tax、折扣、配送或货币兑换?
我们正在开发一个 Payment Element 集成应用,用于管理税收、折扣、配送和货币兑换。阅读构建结账页面的指南,了解更多信息。
创建 PaymentIntent服务器端
备注
如果您想在创建 PaymentIntent 之前先呈现 Payment Element,请参阅收集支付详情后再创建 Intent。
PaymentIntent 对象用来表示您从客户收款的意图,跟踪扣款尝试及整个过程中的状态变化情况。
创建 PaymentIntent
在您的服务器上创建 PaymentIntent,设置好金额 和货币。在最新版的 API 中,可以选择性指定 automatic_payment_methods
参数,因为 Stripe 会默认开启其功能。您可以从管理平台管理支付方式。Stripe 根据交易金额、货币和支付流程等因素处理符合条件的支付方式的退货。
Stripe 使用您的支付方式设置显示您启用的支付方式。要查看您如何向客户显示支付方式,请在管理平台中输入交易 ID 或设置订单金额和货币。要覆盖支付方式,用 payment_method_types 属性手动列出您想要启用的支付方式。
在最新版的 API 中,可以选择性指定 automatic_payment_methods
参数,因为 Stripe 会默认开启其功能。
备注
始终在服务器端决定扣款金额,这是一个可信的环境,客户端不行。这样可防止客户自己选择价格。
检索客户端私钥
PaymentIntent 中包含的是一个客户端私钥,用于在客户端安全地完成支付流程。有不同的方法可以将客户端私钥传递到客户端。
收集付款详情客户端
用 Payment Element 在客户端收集支付信息。Payment Element 是一个预构建的用户界面组件,它简化了为各种支付方式收集支付信息的过程。
Payment Element 中包含一个 iframe,它通过一个 HTTPS 连接安全地将支付信息发送到 Stripe。避免将 Payment Element 放在另一个 iframe 中,因为有些支付方式需要重定向到另一个页面进行付款确认。
If you do choose to use an iframe and want to accept Apple Pay or Google Pay, the iframe must have the allow attribute set to equal "payment *"
.
结账页面上的地址也必须以 https://
开头,不能是 http://
,否则您的集成不能工作。您可以在不使用 HTTPS 的情况下测试您的集成,准备好进行真实收款时将它启用。
Payment Element 呈现一个动态表单,您的客户可在这里选择一个支付方式。对于每个支付方式,表单会自动请求客户填写必要的支付详情。
自定义外观
自定义 Payment Element,使其匹配您的网站设计风格,方法是在创建 Elements
提供程序时向 options
传递外观对象。
收集地址
默认情况下,Payment Element 仅收集必要的账单地址信息。收集客户完整的账单地址(例如,计算数字商品和服务的税额)或收货地址时,使用 Address Element。
申请 Apple Pay 商家令牌
如果您已经对您的集成应用进行了配置来接受 Apple Pay 付款,那么我们建议将 Apple Pay 接口配置为返回商家令牌,以支持商家发起的交易 (MIT)。在 Payment Element 中申请相关的商家令牌类型。
向 Stripe 提交付款客户端
使用 stripe.confirmPayment,用来自 Payment Element 的详情完成付款。为该函数提供一个 return_url,告诉 Stripe 在用户完成付款后将他们重定向到哪里。您的用户可能会先被重定向到一个中间站点,如银行授权页面,然后才被重定向到 return_url
。付款成功时,银行卡付款将立即重定向到 return_url
。
如果您不想在完成付款后对银行卡付款重定向,可以将 redirect 设置到 if_required
。这样就会只对使用基于重定向支付方式的客户进行重定向。
确保 return_url
对应于您网站上显示付款状态的一个页面。Stripe 将客户重定向到 return_url
时,我们会提供以下 URL 查询参数。
参数 | 描述 |
---|---|
payment_intent | PaymentIntent 的唯一标识符。 |
payment_intent_client_secret | PaymentIntent 对象的客户端私钥。 |
注意
如果您有可以用来跟踪客户浏览器会话的工具,那么您可能需要将 stripe.com
域名添加到推荐人列表。重定向会导致一些工具创建新的会话,从而阻止您跟踪完整的会话。
用以下某个查询参数检索 PaymentIntent。检查 PaymentIntent 的状态,以决定向客户显示的内容。您还可以在提供 return_url
时附加自己的查询参数,它们会在重定向过程中持续存在。
处理付款后事件服务器端
付款完成时,Stripe 会发送一个 payment_intent.succeeded 事件。使用管理平台 Webhook 工具,或按照 Webhook 指南来接收这些事件并运行操作,例如,向客户发送订单确认邮件、在数据库中记录销售情况,或启动配送流程。
侦听这些事件,而不是等待客户端回调。在客户端,客户可能会在执行回调之前关闭浏览器窗口或退出应用程序,并且恶意客户端可能会操纵响应。设置您的集成应用来侦听异步事件,这样才能用单一集成用用接受不同类型的支付方式。
除了处理 payment_intent.succeeded
事件外,建议在使用 Payment Element 收款时也处理其他的这些事件:
事件 | 描述 | 操作 |
---|---|---|
payment_intent.succeeded | 客户成功完成付款时发送。 | 向客户发送订单确认通知,并履行他们的订单。 |
payment_intent.processing | 当客户成功发起付款但并未完成时发送。当客户发起银行借记时,通常会发送此事件。之后将会出现 payment_intent.succeeded 或 payment_intent.payment_failed 事件。 | 向客户发送订单确认,告知他们的付款正等待处理。对于数字商品,您可能想先履行订单,然后再等付款完成。 |
payment_intent.payment_failed | 在客户尝试付款但付款失败时发送。 | 如果一笔付款从 processing 变为 payment_failed ,则让客户再尝试一次。 |
向您的客户披露 Stripe
Stripe 收集有关客户与 Elements 互动的信息,以向您提供服务、防范欺诈并改进其服务。这包括使用 Cookie 和 IP 地址来识别客户在单次结账会话中看到的 Elements。您有责任披露并获得 Stripe 以这些方式使用数据所需的所有权利和许可。有关更多信息,请访问我们的隐私中心。