logoPay4SaaS
支付

4 种支付方式的配置

这一页汇总了各支付方式的环境变量命名规则和商品 ID 映射关系。

各渠道需要配置商品 ID 的场景

不同支付方式在不同定价模式下,是否需要在对应平台创建商品并配置环境变量:

定价模式StripeCreemPayPal支付宝
积分(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

其中 BASICPROMAXULTRA 对应 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

其中 BASICPROMAXULTRA 对应 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

其中 STANDARDEXCLUSIVEULTIMATE 对应 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_xxx

PayPal

NEXT_PUBLIC_PAYPAL_CLIENT_ID=xxx
PAYPAL_SECRET=xxx
PAYPAL_WEBHOOK_ID=xxx
PAYPAL_MODE=sandbox          # sandbox 或 live

Creem

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。

On this page