支付

支付

支付模块通过 paymentService 使用统一接口,生成时可以选择 Creem 或 Stripe。 产品页面和积分逻辑只处理统一的 checkout、订阅和 webhook 事件。

先确认选择

查看 nextdevtpl.generated.jsonadapters.payment

选择变量Webhook 签名头
payment:creemCREEM_API_KEYCREEM_WEBHOOK_SECRETcreem-signature
payment:stripeSTRIPE_SECRET_KEYSTRIPE_WEBHOOK_SECRETstripe-signature

两者统一使用:

https://your-domain.com/api/webhooks/payment

主要代码

路径作用
src/core/services/payment.ts支付统一类型和能力接口
src/adapters/paymentCreem 或 Stripe 实现
src/services/payment.ts当前项目的支付实例
src/features/payment/actions.tsCheckout Server Actions
src/app/api/webhooks/payment/route.ts统一验签和事件处理
src/config/payment.ts产品和价格 ID
src/config/subscription-plan.ts套餐权益

上线步骤

  1. 在供应商后台创建产品和价格。
  2. 把价格 ID 写入 NEXT_PUBLIC_PRICE_* 变量与套餐配置。
  3. 配置 API Key 和 webhook secret。
  4. 把 webhook 指向 /api/webhooks/payment
  5. 用测试环境完成订阅、取消、续费和一次性购买。
  6. 确认重复 webhook 不会重复发放积分。
pnpm test:run -- src/test/adapters/payment.test.ts
pnpm test:run -- src/test/payment

积分账本和过期逻辑见积分系统。供应商切换步骤见 服务适配器

本页目录