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

支付过程中保存付款详情

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

复制页面

用 Stripe Checkout 进行快速、低代码集成,让客户保存他们的支付信息,用于未来购物时使用。

设置 Stripe
服务器端

首先,注册一个 Stripe 账户。

用我们的官方库从您的应用程序访问 Stripe API:

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

创建客户
服务器端

要为将来的付款设置银行卡,就必须将它绑定到 Customer。当客户在您的公司创建账户时,创建 Customer 对象。Customer 对象允许重复使用支付方式并跟踪多笔付款。

Command Line
cURL
curl https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d name="Jenny Rosen" \ --data-urlencode email="jennyrosen@example.com"

成功创建后会返回 Customer 对象。您可以检查客户 id 的对象,并将它的值存储在您的数据库中以供以后检索。

您可以在管理平台的客户页面中找到这些客户。

创建一个 Checkout Session
客户端
服务器端

在您的网站上添加一个结账按钮,调用一个服务器端点来创建 Checkout Session。

您还可以为现有客户创建 Checkout Session,从而用已知联系信息预填 Checkout 字段,并统一该客户的购买记录。

checkout.html
<html> <head> <title>Buy cool new product</title> </head> <body> <!-- Use action="/create-checkout-session.php" if your server is PHP based. --> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>

Checkout Session 是客户被重定向到支付表单时所看到的内容的程序化展示。可通过多种选项对它进行配置,例如:

  • 要扣款的 Line items
  • 可用货币

您必须在 success_url 填充您的网站上某个页面的 URL 值(Checkout 在客户完成付款后会将其返回到此页面)。还可以选择提供您网站上某个页面的 cancel_url 值(如果客户在完成前终止付款流程,Checkout 会将其返回到此页面)。

注意

Checkout Sessions 默认在创建后 24 小时后过期。

创建完 Checkout Session 后,将您的客户重定向到响应中返回的 URL。

Ruby
# This example sets up an endpoint using the Sinatra framework. require 'json' require 'sinatra' require 'stripe' # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
post '/create-checkout-session' do session = Stripe::Checkout::Session.create({ line_items: [{ price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, unit_amount: 2000, }, quantity: 1, }], mode: 'payment', # These placeholder URLs will be replaced in a following step. success_url: 'https://example.com/success', cancel_url: 'https://example.com/cancel', }) redirect session.url, 303 end

支付方式

默认情况下,Stripe 支持银行卡及其他主流支付方式。您可以在 Stripe 管理平台中开启或关闭个别支付方式。在 Checkout 中,Stripe 评估货币和任何限制,然后动态向客户显示支持的支付方式。

要查看您如何向客户显示支付方式,请在管理平台中输入交易 ID 或设置订单金额和货币。

您可以在您的支付方式设置中启用 Apple Pay 和 Google Pay。默认情况下,Apple Pay 处于启用状态,Google Pay 处于禁用状态。但在某些情况下,即使已启用这些功能,Stripe 仍会将其过滤。如果您启用自动计税但未收集收货地址,我们将过滤 Google Pay。

Checkout 的 Stripe 托管页面不需要修改集成即可启用 Apple Pay 或 Google Pay。Stripe 处理这些付款的方式与处理其他银行卡付款的方式完全一样。

确认您的端点

启动您的网页服务器(例如 localhost:4242)并运行下列指令,以确认您的端点:

Command Line
curl -X POST -is "http://localhost:4242/create-checkout-session" -d ""

在您的终端应该会看到类似于下面的响应:

Command Line
HTTP/1.1 303 See Other Location: https://checkout.stripe.com/c/pay/cs_test_... ...

测试

现在,您的结账按钮应该可以使用了,能够将客户重定向到 Stripe Checkout。

  1. 点击结账按钮。
  2. 您会被重定向到 Stripe Checkout 支付表单。

如果您的集成不能用:

  1. 打开浏览器开发人员工具上的 Network 面板。
  2. 点击结账按钮,确认它向您的服务器端点 (POST /create-checkout-session) 发送了 XHR 请求。
  3. 验证该请求是否返回状态码 200。
  4. 用按钮点击监听器内的 console.log(session) 确认返回的数据是否正确。

有关配置和测试您的托管 Checkout 集成应用的更多信息,请查看接受付款。

保存支付方式
服务器端

设置完您的托管 Checkout 集成应用后,为您的集成应用选择一个配置,以保存客户所用的支付方式。

默认情况下,用 Checkout 进行一次性付款时所使用的支付方式将来不能再使用。

保存支付方式,以在会话外扣款

通过传递 payment_intent_data.setup_future_usage 实参可以对 Checkout 进行设置,使其保存用于进行一次性付款的支付方式。在您需要捕捉填写的支付方式以便收取滞后费用时(例如取消或未到场费用),这样做非常有帮助。

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer_creation=always \ -d "line_items[0][price_data][currency]"=usd \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][quantity]"=1 \ -d mode=payment \ --data-urlencode success_url="https://example.com/success.html" \ --data-urlencode cancel_url="https://example.com/cancel.html" \ -d "payment_intent_data[setup_future_usage]"=off_session

如果您在 subscription 模式下使用 Checkout, Stripe 会自动保存该支付方式,用来完成今后的付款。使用 setup_future_usage 或 subscription 模式为客户保存的银行卡支付方式在复购时不会在 Checkout 中显示(详见下文)。建议使用自定义文本链接到有关使用保存的支付信息的任何相关条款。

注意

全球隐私法非常复杂、微妙。建议在实施 setup_future_usage 之前咨询您的法律和隐私团队,因为这可能会影响您的隐私合规框架。参考欧洲数据保护委员会发布的指导意见,了解有关保存支付详情的更多信息。

保存支付方式,以在 Checkout 中预先填充

默认情况下,Checkout 使用 Link 为您的客户提供安全地保存和重复使用其支付信息的选项。如果您更喜欢自己管理支付方式,请在创建 Checkout Session 时使用 saved_payment_method_options.payment_method_save,让客户保存他们的支付方式,以备将来购物时在 Checkout 中使用。

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer_creation=always \ -d "line_items[0][price_data][currency]"=usd \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][quantity]"=1 \ -d mode=payment \ --data-urlencode success_url="https://example.com/success.html" \ --data-urlencode cancel_url="https://example.com/cancel.html" \ -d "saved_payment_method_options[payment_method_save]"=enabled

在 payment 或 subscription 模式下传递此参数会显示一个可选复选框,让客户显式保存其支付方式以备将来购买时使用。当客户选中此复选框时,Checkout 会使用 allow_redisplay: always 保存支付方式。Checkout 使用该参数来确定将来的购物中是否可以预先填充支付方式。使用 saved_payment_method_options.payment_method_save 时,您无需传入 setup_future_usage 来保存支付方式。

使用 saved_payment_method_options.payment_method_save 时要求提供 Customer。要保存新客户,请将 Checkout Session 的 customer_creation 设置为 always。否则,会话过程中不会保存客户或支付方式。

如果未传入 payment_method_save 或客户不同意保存支付方式,Checkout 仍会保存在 subscription 模式下或使用 setup_future_usage 创建的支付方式。这些支付方式的 allow_redisplay 值为 limited,这可以防止在退货时预先填充它们,并使您遵守卡组织的规则和数据保护法规。了解如何更改这些模式启用的默认行为以及如何更改或覆盖 allow_redisplay 行为。

注意

您可以使用 Checkout 保存银行卡和其他支付方式来进行会话外收款,但 Checkout 仅预填充已保存的银行卡信息。了解如何预填充保存的银行卡信息。要在不进行初始付款的情况下保存支付方式,请在设置模式下使用 Checkout。

此页面的内容有帮助吗?
是否
需要帮助?联系支持。
加入我们的早期使用计划。
查看我们的更改日志。
有问题?联系销售。
LLM? Read llms.txt.
Powered by Markdoc