4 种支付方式的配置
这一页汇总了各支付方式的环境变量命名规则和商品 ID 映射关系。
各渠道需要配置商品 ID 的场景
不同支付方式在不同定价模式下,是否需要在对应平台创建商品并配置环境变量:
| 定价模式 | Stripe | Creem | PayPal | 支付宝 |
|---|---|---|---|---|
| 积分(credits) | 需要 | 需要 | 不需要 | 不需要 |
| 无限订阅(subscription_unlimited) | 需要 | 需要 | 需要 | 不需要 |
| 配额订阅(subscription_quota) | 需要 | 需要 | 需要 | 不需要 |
| 买断(lifetime) | 需要 | 需要 | 不需要 | 不需要 |
- Stripe / Creem — 所有模式都需要在平台创建商品,并将商品 ID 配置到环境变量
- PayPal — 只有订阅类模式需要创建 Plan,积分和买断走 PayPal 原生订单,不需要预创建商品
- 支付宝 — 所有模式都不需要预创建商品,金额由代码动态传入
环境变量命名规则
所有支付方式的商品 ID 都遵循统一的命名规则,系统会根据 config/payment.ts 中的 key 自动读取对应的环境变量。
订阅类商品
格式:{渠道}_SUB_{计划}_{周期}
# Stripe
STRIPE_SUB_BASIC_MONTHLY=price_xxx
STRIPE_SUB_BASIC_YEARLY=price_xxx
STRIPE_SUB_PRO_MONTHLY=price_xxx
STRIPE_SUB_PRO_YEARLY=price_xxx
# PayPal
PAYPAL_SUB_BASIC_MONTHLY=P-xxx
PAYPAL_SUB_BASIC_YEARLY=P-xxx
PAYPAL_SUB_PRO_MONTHLY=P-xxx
PAYPAL_SUB_PRO_YEARLY=P-xxx
# Creem
CREEM_SUB_BASIC_MONTHLY=prod_xxx
CREEM_SUB_BASIC_YEARLY=prod_xxx
CREEM_SUB_PRO_MONTHLY=prod_xxx
CREEM_SUB_PRO_YEARLY=prod_xxx其中 BASIC、PRO、MAX、ULTRA 对应 SUBSCRIPTION_PLANS 中的固定 key(大写)。按需配置,未启用的计划无需配置。
积分包商品
格式:{渠道}_CREDITS_{类型}
# Stripe
STRIPE_CREDITS_BASIC=price_xxx
STRIPE_CREDITS_PRO=price_xxx
STRIPE_CREDITS_MAX=price_xxx
# Creem
CREEM_CREDITS_BASIC=prod_xxx
CREEM_CREDITS_PRO=prod_xxx
CREEM_CREDITS_MAX=prod_xxx其中 BASIC、PRO、MAX、ULTRA 对应 PACKAGES 中的固定 key(大写)。按需配置。
买断商品
格式:{渠道}_LIFETIME_{计划}
# Stripe
STRIPE_LIFETIME_STANDARD=price_xxx
STRIPE_LIFETIME_EXCLUSIVE=price_xxx
# Creem
CREEM_LIFETIME_STANDARD=prod_xxx
CREEM_LIFETIME_EXCLUSIVE=prod_xxx
# PayPal
PAYPAL_LIFETIME_STANDARD=xxx
PAYPAL_LIFETIME_EXCLUSIVE=xxx其中 STANDARD、EXCLUSIVE、ULTIMATE 对应 LIFETIME_PLANS 中的固定 key(大写)。按需配置。
无试用版本(Creem / PayPal)
Stripe 的试用期由 API 参数控制,不需要额外商品。但 Creem 和 PayPal 不同——试用期是绑定在商品/计划上的,创建商品时就决定了是否包含试用。所以需要为同一个计划创建两个商品:一个带试用、一个不带试用。
系统会自动判断:已经试用过的用户,结账时使用无试用版本的商品 ID,防止重复白嫖。
# Creem 无试用
CREEM_SUB_NOTRIAL_PRO_MONTHLY=prod_xxx
CREEM_SUB_NOTRIAL_PRO_YEARLY=prod_xxx
# PayPal 无试用
PAYPAL_SUB_NOTRIAL_PRO_MONTHLY=P-xxx
PAYPAL_SUB_NOTRIAL_PRO_YEARLY=P-xxx如果未配置无试用版本,会自动回退到带试用的版本。
各渠道基础配置
Stripe
STRIPE_API_KEY=sk_test_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxxPayPal
NEXT_PUBLIC_PAYPAL_CLIENT_ID=xxx
PAYPAL_SECRET=xxx
PAYPAL_WEBHOOK_ID=xxx
PAYPAL_MODE=sandbox # sandbox 或 liveCreem
CREEM_API_KEY=creem_test_xxx # creem_test_ 开头自动走测试环境
CREEM_WEBHOOK_SECRET=xxx支付宝
ALIPAY_APP_ID=xxx
ALIPAY_PRIVATE_KEY=xxx
ALIPAY_APP_CERT=xxx # 应用公钥证书内容
ALIPAY_PUBLIC_CERT=xxx # 支付宝公钥证书内容
ALIPAY_ROOT_CERT=xxx # 支付宝根证书内容
ALIPAY_GATEWAY=https://openapi.alipay.com/gateway.do启用支付方式
NEXT_PUBLIC_PAYMENT_PROVIDERS=paypal,creem,stripe多个渠道用逗号分隔。定价页会自动展示你启用的支付方式。必须手动配置,未配置时不启用任何支付方式。
该启用哪些支付方式? 建议只展示一个主要支付按钮,减少选择负担,提升转化率。有海外公司用 Stripe,没有就用 Creem 作为主力,PayPal 作为备选即可。详见 4 种支付方式展示的最佳方案。
映射关系一览
系统在 lib/payment/config.ts 中自动完成环境变量到商品 ID 的映射。你不需要修改这个文件——只要按命名规则配置好环境变量,系统就能自动找到对应的商品。
config/payment.ts 中的 key → 环境变量 → 支付方式的商品 ID例如:SUBSCRIPTION_PLANS.pro + Stripe + monthly → 读取 STRIPE_SUB_PRO_MONTHLY → 得到 Stripe 的 Price ID。