# Paypal 实现自动订阅详细教程

By [chuntian](https://paragraph.com/@chuntian) · 2025-01-17

---

随着在线支付和订阅服务的普及，Paypal 已成为全球范围内广泛使用的支付工具之一。本文将为您提供关于如何使用 Paypal 实现自动订阅的详细教程，包括创建订阅计划、处理支付结果及订阅管理等关键步骤。

自动续费的五个步骤
---------

根据官方文档，Paypal 提供了实现自动续费的五个步骤，实际开发中还需要处理支付结果和订阅管理：

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

使用 Paypal SDK
-------------

要实现自动订阅，首先需要通过 Composer 安装 Paypal SDK：

    composer require paypal/rest-api-sdk-php
    

官方提供了完整的 [Samples](https://paypal.github.io/PayPal-PHP-SDK/sample/#billing)，可以帮助您快速入门。还可以通过 [Paypal Sandbox](https://www.sandbox.paypal.com/) 进行调试，方便模拟支付环境。

创建并激活订阅计划
---------

1.  **订阅计划（Billing Plan）** 相当于一个产品，需要为不同的商品创建不同的价格计划。如果有不同的用户需求，可以在创建协议时进行调整。
    
2.  创建支付时，如果使用 **TRIAL** 类型，必须有 **REGULAR** 类型的支付，TRIAL 类型并不能自动判断新用户等条件，所以首次的优惠需要由业务代码实现。
    
3.  **首次扣款**: 由于协议生效时间要求必须在当前时间24小时之后，循环扣款将无法立刻进行，最早也需要24小时。如果需要立即扣款，可以通过设置 **MerchantPreferences** 的 **setSetupFee** 参数来完成首次扣款。
    
4.  遇到 **"NotifyUrl" value is NULL** 错误时，通常是 Paypal 服务端的错误，官方尚未修复，解决方法可参考 [Github Issue](https://github.com/paypal/PayPal-PHP-SDK/pull/1152/files)。
    

创建订阅
----

创建订阅协议时，用户可以针对同一订阅计划创建多个订阅协议。创建后，跳转到 Paypal 网站等待用户同意协议。以下是创建订阅的代码示例：

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

*   订阅计划可以被同一用户多次订阅，如果需要新订阅时，记得取消之前的协议。
    
*   由于实际扣款时间通常会有延迟，可以提前一天进行扣款以确保支付的连贯性。
    

设置 Webhook 通知
-------------

可以在 **My Apps -> REST API apps -> WEBHOOKS** 设置 **webhook** 通知，当每次循环扣款成功时，Paypal 会发送 **PAYMENT.SALE.COMPLETED** 事件通知。可以通过 **billing\_agreement\_id** 字段将通知与对应的订阅协议匹配。

支付方式与管理
-------

如果您遇到支付失败问题，可能是因为没有选择合适的支付方式。Paypal 支持多种支付方式，包括：

*   **信用卡支付**：通过输入信用卡信息进行支付；
    
*   **TORACOIN 支付**：当账户余额不足时，可以通过 TORACOIN 充值；
    
*   **银行汇款与便利店支付**：根据平台指引完成操作。
    

推荐服务：WildCard 一站式支付解决方案
-----------------------

为了帮助用户轻松完成全球范围内的支付，推荐使用 WildCard 提供的一站式服务。

☞ [WildCard | 一分钟注册，轻松订阅海外线上服务](https://bit.ly/bewildcard)

*   支持微信、支付宝支付，无需复杂操作。
    
*   可轻松开通包括 ChatGPT、Claude、Google Play、Apple Store、OpenAI 等海外平台的订阅服务。
    
*   使用邀请码：**ACCPAY**，享受消费 0 手续费和免开卡费优惠。
    

小贴士
---

1.  **确认充值账户信息**：不同平台的充值点数不通用，确保充值账户与使用平台一致。
    
2.  **保留支付凭证**：在支付完成后，务必保留相关凭证以备查询。
    

以上是关于 Paypal 自动订阅的详细教程。如果您有任何疑问，欢迎随时联系我们。我们将持续优化支付流程，为您提供更好的服务体验。

---

*Originally published on [chuntian](https://paragraph.com/@chuntian/paypal)*
