logoPay4SaaS
支付

PayPal 配置

注册开发者账号,https://developer.paypal.com,进入看板,https://developer.paypal.com/dashboard

一、环境变量配置

在根目录.env.local里需要配置的几个项目,如下。

1. PAYPAL_MODE

测试环境选择这个,.env.local写入这个,PAYPAL_MODE=sandbox

生产环境选择这个,.env.local写入这个,PAYPAL_MODE=live

2. NEXT_PUBLIC_PAYPAL_CLIENT_IDPAYPAL_SECRET

往下走,找到“API & credentials”这个菜单。

这里以测试环境来说,生产环境一样的,点击 create。

填写名称。

然后就能看到 ID 和 secret 了,分别填写到根目录 .env.local 文件的NEXT_PUBLIC_PAYPAL_CLIENT_IDPAYPAL_SECRET

features 里面的这 2 项,要不要选?

Log in with PayPal 不用选,因为咱们已经做了 Google + Supabase Auth。

至于 Transaction search,如果你想在自己的管理后台显示所有 PayPal 交易,不用登录 PayPal 网站就能查看交易记录、做对账系统,就需要用到。

所以这个可以选,勾选了也不影响,以后可能用得上;不选也没关系,反正后面能修改。

3. PAYPAL_WEBHOOK_ID

Webhook ID 的核心作用就一个,验签,防伪造。没有它你就没法安全地处理支付回调,也就没法可靠地给用户开通会员、记录扣款记录。

怎么获取?回到这里,https://developer.paypal.com/dashboard/applications,edit。

点 add 。 开发环境的url 就填写 https://yourdomain.com/api/webhooks/paypal

然后,事件上,订阅就盯着 Billing subscription + Payments,一次性购买就盯着 Checkout + Payments,争议处理都加上 Customer dispute。 保存后,就看到webhook ID 了,填入一下。

4. 创建订阅产品,获取产品 ID

如果你的定价模式是积分制或者买断制,这步就不需要了。

如果你做的是按月/按年的,那 Paypal 创建订阅产品,有些特殊,它不像 Creem 那样能填写。需要用接口请求的方式来做,但我做成了一个网页工具https://www.pay4saas.com/tools/paypal-manager,你可以直接来用。一共以下几步。

1、拿着第一步获取到的 CLIENTID 和 Secret 获取 Access Token(数据库不存这些数据)。

2、填写 Product Name ,点击 create 。默认会拿着 token,创建产品,后续所有 Plan 都绑定到这个产品上。

3、批量创建 Plan 产品,填入名称,选择周期,填入价格,有试用填写试用天数,点击 create all。每个计划需要创建月付和年付两个 Plan,成对出现。

4、创建成功后,查询一下,看看创建的对不对,每个 Plan 都会有对应的 product_id,把返回的所有 id 记录下来,写入到.env.production文件里,就可以了。

# 订阅 subscription_unlimited/subscription_quota

PAYPAL_SUB_BASIC_MONTHLY=xxx
PAYPAL_SUB_BASIC_YEARLY=
PAYPAL_SUB_PRO_MONTHLY=
PAYPAL_SUB_PRO_YEARLY=
PAYPAL_SUB_MAX_MONTHLY=
PAYPAL_SUB_MAX_YEARLY=
PAYPAL_SUB_NOTRIAL_PRO_MONTHLY=

这里面我特别说明的是无限订阅里面的PAYPAL_SUB_NOTRIAL_PRO_MONTHLY字段,务必要设置,否则就会造成用户一直可以免费试用。具体看这篇文章PayPal & Creem 试用期最佳实践,所以呢,就要给试用过的用户,用无试用的产品,这也是符合逻辑,给用户最佳体验的。

而配额订阅不存在试用,因为它主要是订阅+积分制。

最终订阅付费的效果如下图,新开一个页面。

credits 模式和 lifetime 模式的效果如下图,是在当前页面打开付费窗口。

测试时候,也仔细看看金额是否设置对了。

二、测试账户金额修改

地址:https://developer.paypal.com/dashboard/accounts/

第一行是商家的,第二个是个人的,够用。

再看看测试账户里面,默认有 5000 美元,可以加到 1 万,用完了再从这里编辑就好。

On this page