跳转到主要内容
InsForge Payments 让您的应用使用您自己的 Stripe 或 Razorpay 账户收取费用。两个提供商使用不同的支付模型,所以文档按提供商拆分,而不是描述一个通用支付流。
InsForge 付款仪表板
Stripe 或 Razorpay 仍然是费用、发票、退款、争议、税款和账户级财务操作的真实来源。InsForge 不是支付处理器或商户,不替代提供商仪表板。

选择提供商

Stripe Payments

使用 Stripe Checkout、Products、Prices、Subscriptions 和 Billing Portal。

Razorpay Payments

使用 Razorpay Orders、Items、Plans、Subscriptions 和 Razorpay Checkout。

架构

提供商原生表保持提供商概念完整:
提供商运行时表目录表订阅表
Stripepayments.stripe_checkout_sessionspayments.stripe_customer_portal_sessionspayments.stripe_productspayments.stripe_pricespayments.stripe_subscriptionspayments.stripe_subscription_items
Razorpaypayments.razorpay_orderspayments.razorpay_itemspayments.razorpay_planspayments.razorpay_subscriptions
共享表仅用于持久形状在提供商中有用的地方:
目的
payments.provider_connectionsproviderenvironment 的提供商密钥、账户、同步和 webhook 设置状态。
payments.customer_mappings应用计费主体到提供商客户 ID 映射。
payments.customers仪表板可见性的管理员/客户镜像。
payments.webhook_events已验证的提供商 webhook 事件账本。用于持久履行触发器。
payments.transactionsInsForge 仪表板/报告投影,用于成功、失败和退款的支付活动。
payments.transactions 不是履行契约。它是从提供商事件和同步构建的投影。对于业务逻辑,创建应用拥有的表,如 public.orderspublic.credit_ledgerpublic.team_entitlements,然后从 payments.webhook_events 中的已验证行填充它们。

履行

不要仅从 Stripe 成功 URL 或 Razorpay Checkout 回调履行。这些是用户体验信号。持久履行应从已验证的提供商 webhook 事件运行。
如果您的应用接受多个提供商,请保持触发器幂等,并在 NEW.providerNEW.event_type 上分支。使用您自己的 RLS 策略保护应用拥有的履行表。 Webhook 事件独立处理,提供商不提供事件间排序保证。派生自事件的行在该事件标记为 processed 之前提交,但由其他事件拥有的行(如 payments.customer_mappings(结账完成创建))在触发器触发时可能不存在。首先从事件有效负载解析计费主体,将其他表的查找视为备用。有关订阅履行示例,请参阅提供商指南。
较旧的仅限 Stripe 的 payments.payment_history 行迁移到 payments.transactions 用于仪表板和报告。payment_history 上的触发器不会自动重写。将履行逻辑移至 payments.webhook_events

使用它进行构建

TypeScript payments guide

为应用代码选择 Stripe 或 Razorpay 提供商模块。

REST patterns

查看特定于提供商的 Payments API 路由和 webhook 路由。

下一步

  • 如果您使用 Stripe Checkout 或 Billing Portal,请阅读 Stripe Payments
  • 如果您使用 Razorpay Orders 或 Subscriptions,请阅读 Razorpay Payments
  • 在 Dashboard -> Payments -> Settings 中配置提供商密钥。
  • 为计费主体添加特定于应用的 RLS 或服务器端成员资格检查。
  • payments.webhook_events 添加触发器支持的履行。