旧版扩展已废弃
Stripe 应用程序已替代扩展
我们不能再构建新的 Stripe 扩展了。Stripe 应用程序 已替代在 Stripe 上开发的扩展。但是,现有扩展在 2024 年之前继续有效。如果您已经有扩展,建议将它迁移到 Stripe 应用程序。
备注
利用 Stripe Data Pipeline,您现在通过几步点击即可自动将您的 Stripe 数据和报告发送到 Snowflake 或 Amazon Redshift。了解更多。
Stripe 的产品和功能可以让广大公司接受线上付款,但提供集成的理由远不止这些。Baremetrics 和Segment 等公司是在 Stripe 的基础上建立的,为 Stripe 账户提供服务,采用的是 Standard 入驻流程。
在 Stripe 上构建扩展涉及四个步骤:
如果您还没有的话,还需要添加商家详情来激活您的账户。
开始时,进入扩展页面,该页面位于 Stripe 管理平台的开发人员选项卡内。
为您的用户创建 OAuth 链接
Stripe 提供一个标准的 OAuth 2.0 流程来连接 Stripe 账户。使用上一步的 client_id
和 redirect_uri
值,您可以为您的用户创建一个入驻时使用的 OAuth 链接。建议通过一个连接 Stripe 按钮显示该链接,这个按钮会将用户发送到 authorize_url
端点:
https://connect.stripe.com/oauth/authorize?response_type=code&client_id=ca_FkyHCg7X8mlvCUdMDao4mMxagUfhIwXb&scope=read_only
关于如何向用户显示以上链接的方式,可以查看这个例子,同时还有 Stripe 连接按钮:
连接用户点击您的网站上的链接后,我们会将他们重定向到一个页面,以允许或拒绝连接到您的扩展。Stripe 的授权流程会提示他们要么选择一个现有的账户链接您的扩展,要么创建一个新的账户。
当用户向您的扩展连接他们现有的或新创建的账户时,我们会将他们重定向回您为您的扩展的 redirect_uri
设置的 URL。
在 OAuth 流程的结尾,会为您提供用户账户的授权证书:
{ ... "stripe_user_id": "acct_0123456789", ... }
您需要存储 stripe_user_id
,用它来识别用户账户。
代 Connect 子账户使用 API
用户将他们的 Stripe 账户关联到您的应用后,您可以代他们创建 API 请求。要执行 API 请求,您需要用到您的扩展的私钥,以及一个识别您发送请求的账户的 Stripe-Account
头。所有 Stripe 库都支持这类基于每个请求的验证。
获取存储的数据
存储的数据包括诸如收款和客户详情等信息。访问权限为 read_only
时,您可以在 Stripe 的 API 内创建多数 GET
请求。您可以检索单个对象(例如,检索一个 Payment Intent),或对象列表(例如,列出所有 Payment Intents)。
虽然 API 性能很高,但重复获取大量数据集会降低应用程序的响应速度。建议在您这一端存储获取后的数据来进行分析和报告。
侦听实时数据
除了存储的数据外,您还可以通过 Webhooks 访问实时数据。当您定义了您账户内的扩展 Webhook 端点后,Stripe 会向您的每个 Connect 子账户都发送事件通知。事件对象的 account
属性表示发生该事件的账户。
例如,下面的事件显示:acct_0123456789
账户中创建了一个客户。再次说明,我们建议在您这一端存储该数据来进行分析和报告。通过实时监测事件,您的应用程序可更快响应,因此就不需要进行过多的 API 调用。
{ "id": "evt_NgfVg8lM7aCmLj", "livemode": true, "object": "event", "type": "customer.created", "account": "acct_0123456789", "pending_webhooks": 2, "created": 1349654313, "data": {...} }
为您的应用收费
您的扩展的 Stripe 账户可自行处理收款,因此在 read_only
权限时仍可为您的应用程序收费。客户关联了他们的 Stripe 账户后,要求他们提供支付详情,然后在您的 Stripe 账户内为他们创建订阅。一定将创建的客户 ID 与关联的 Stripe 账户的 ID 存储在一起,这样就可以跟踪哪些用户是付费且生效的,哪些不是。
您要创建订阅的话,也可指定一个 application_fee_percent
,作为使用您的应用的费用。这项费用在 Stripe 费用之外收取。阅读订阅文档,了解更多。
断开的账户
用户可随时从您的集成应用断开他们的账户。发生这种情况时,Stripe 会发送一个 account.application.deauthorized
webhook。您可以利用此通知在您这一段触发清理,例如禁用您网站上的用户账户或删除他们的数据。
您也可以从您的集成断开账户,方式是向 OAuth deauthorization 端点发送请求。