细化标题和内容

PayPal 提供了实现自动订阅的详细流程,分为五个主要步骤。为了确保顺利集成,开发者还需要处理支付结果和订阅管理等额外功能。以下是实现自动续费的核心步骤:

  1. 创建并激活订阅计划;
  2. 用户创建订阅并跳转到 PayPal 网站进行同意;
  3. 用户同意后,跳转回网站并执行订阅;
  4. 获取用户账单,包括每次扣款结果通知或主动查询支付结果;
  5. 处理用户取消订阅等通知。

使用 PayPal SDK 集成

要开始使用 PayPal SDK,首先需要通过 Composer 安装:

bash
composer require paypal/rest-api-sdk-php

PayPal 提供了完整的 SDK 示例,可以参考进行集成。

你还可以通过 PayPal Sandbox 进行调试,确保在开发过程中一切顺利。

创建并激活订阅计划

  • 订阅计划(Billing Plan)相当于产品,需要为每个商品创建不同价格的计划。对于不同的用户,可以在创建协议时调整;
  • 如果使用 TRIAL 类型支付,还必须同时存在 REGULAR 类型支付。TRIAL 并不能自动判断是否为新用户,首次优惠需要通过业务代码实现;
  • 由于创建订阅协议时,协议生效时间需在当前时间24小时之后,因此首次扣款无法立即进行,通常需要设置 MerchantPreferencessetSetupFee 来指定首次扣款金额;
  • PayPal SDK 会出现 NotifyUrl 为空的错误,这是 PayPal 服务器的问题,官方尚未修复,可以参考 GitHub 解决方案

创建订阅

用户可以为同一订阅计划创建多个订阅协议(Billing Agreement),创建完成后会跳转到 PayPal 网站等待用户同意。以下是实现步骤:

  • 由于协议的 start_date 最早为当前时间24小时后,实际设置的是第二次扣款时间。如果设置为按月支付,start_date 应设置为一个月后,并通过 setSetupFee 设置首次扣款;
  • 创建订阅后,Agreement.id 尚未生成。需要从跳转链接中提取 token,以便与用户同意后的回调信息对应。

php
$link = $agreement->getApprovalLink();
parse_str(parse_url($link, PHP_URL_QUERY), $params);
$token = $params['token'];

订阅管理

  • 同一用户可以多次订阅同一计划,因此在创建新协议时,可能需要手动取消之前的订阅;
  • PayPal 的扣款时间通常会有所延迟,建议提前一天设置扣款时间,确保扣款的连续性;
  • 可以在 PayPal 开发者中心 设置 webhook,监听 PAYMENT.SALE.COMPLETED 事件,每次扣款成功时会收到通知,帮助匹配已创建的订阅与付款协议。

每次执行 AgreementDetail 查询时,返回的 next 参数指示下次扣款时间。需要注意的是,实际扣款可能会延迟,建议多次重试查询。

👉 野卡 | 一分钟注册,轻松订阅海外线上服务

(0)
上一篇 2025年5月14日
下一篇 2025年5月14日

相关推荐