调至内容部分
创建账户
或
登录
Stripe 文档徽标
/
询问人工智能
创建账户
登录
开始
付款
Revenue
平台和交易市场
资金管理
开发人员工具
概览
关于 Stripe 支付
升级您的集成
支付分析
线上付款
概览查找您的用例Managed Payments
使用 Payment Link
构建结账页面
    概览
    快速开始
    自定义外观样式
    收集额外信息
    收税
    动态更新结账流程
    管理产品目录
    订阅
    管理支付方式
    让客户用本地货币支付
    添加折扣、追加销售和可选商品
    设置未来付款
    支付过程中保存付款详情
      访客
    在您的服务器上手动批准支付
    付款后
    具有 Checkout Sessions API Beta 更改日志的 Element
    从传统 Checkout 迁移
    迁移 Checkout 来使用 Prices
构建高级集成
构建应用内集成
支付方式
添加支付方式
管理支付方式
用 Link 更快结账
支付接口
Payment Links
结账
Web Elements
应用内 Element
支付场景
自定义支付流程
灵活收单
编排
线下支付
Terminal
其他 Stripe 产品
Financial Connections
加密货币
Climate
首页付款Build a checkout page

支付过程中保存付款详情

了解如何接受付款并保存客户的付款详情以备将来购物时使用。

复制页面

注意

通过 Elements 和 Checkout Sessions API 支持的已保存支付方式仅限银行卡。不支持其他已保存的支付方式,例如银行账户。

启用保存的支付方式

要允许客户保存其支付方式以供将来使用,请在创建 Checkout Session 时指定 saved_payment_method_options.payment_method_save 参数。

保存支付方式时提供 Customer。传递现有的 customer,或者新建客户,将 Checkout Session 的 customer_creation 设置为 always。

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=2 \ -d mode=payment \ -d ui_mode=custom \ -d customer_creation=always \ -d "saved_payment_method_options[payment_method_save]"=enabled

创建 Checkout Session 后,使用响应中返回的客户端私钥来构建结账页面。

收集许可

注意

全球隐私法复杂而微妙。在实施存储客户支付方式详情的功能之前,请与您的法律团队合作,确保其符合您的隐私和合规性框架。

在大多数情况下,您必须先征得客户的许可,然后才能保存他们的支付方式。以下示例演示如何使用复选框获取许可。

index.html
<label> <input type="checkbox" id="save-payment-method-checkbox" /> Save my payment information for future purchases </label> <button id="pay-button">Pay</button> <div id="confirm-errors"></div>

通过传递 savePaymentMethod 参数来指示 Stripe 客户在调用 confirm 时是否已提供许可。当保存客户的付款详情时,您有责任遵守所有适用的法律、法规和卡组织规则。

checkout.js
stripe.initCheckout({fetchClientSecret}).then((checkout) => { const button = document.getElementById('pay-button'); const errors = document.getElementById('confirm-errors'); const checkbox = document.getElementById('save-payment-method-checkbox'); button.addEventListener('click', () => { // Clear any validation errors errors.textContent = ''; const savePaymentMethod = checkbox.checked; checkout.confirm({savePaymentMethod}).then((result) => { if (result.type === 'error') { errors.textContent = result.error.message; } }); }); });

复用以前保存的支付方式

您可以重新显示以前保存的支付方式,供客户在结账时使用。

识别客户

每个保存的支付方式都关联到一个 Customer 对象。在创建 Checkout Session 之前,请对您的客户进行身份验证,并将相应的 Customer ID 传递到 Checkout Session。

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=2 \ -d mode=payment \ -d ui_mode=custom \ -d customer=
{{CUSTOMER_ID}}

呈现保存的支付方式

在前端使用 savedPaymentMethods 数组来呈现客户可使用的支付方式。

注意

该 savedPaymentMethods 数组仅包含已allow_redisplay设置为 always 的支付方式。按照这些步骤收集客户许可,以确保 allow_redisplay 正确设置。

index.html
<div id="saved-payment-methods"></div>
checkout.js
stripe.initCheckout({fetchClientSecret}).then((checkout) => { const container = document.getElementById('saved-payment-methods'); checkout.session().savedPaymentMethods.forEach((pm) => { const label = document.createElement('label'); const radio = document.createElement('input'); radio.type = 'radio'; radio.value = pm.id; label.appendChild(radio); label.appendChild(document.createTextNode(`Card ending in ${pm.card.last4}`)); container.appendChild(label); }); });

用保存的支付方式进行确认

当客户选择保存的支付方式并准备完成结账时,调用 confirm,传入 paymentMethod ID。

index.html
<button id="pay-button">Pay</button>
checkout.js
stripe.initCheckout({fetchClientSecret}).then((checkout) => { const button = document.getElementById('pay-button'); button.addEventListener('click', () => { checkout.confirm({paymentMethod: selectedPaymentMethod}).then((result) => { if (result.error) { // Confirmation failed. Display the error message. } }); }); });
此页面的内容有帮助吗?
是否
需要帮助?联系支持。
加入我们的早期使用计划。
查看我们的更改日志。
有问题?联系销售。
LLM? Read llms.txt.
Powered by Markdoc