# Paypal 实现自动订阅详细教程 **Published by:** [chuntian](https://paragraph.com/@chuntian/) **Published on:** 2025-01-17 **URL:** https://paragraph.com/@chuntian/paypal ## Content 随着在线支付和订阅服务的普及,Paypal 已成为全球范围内广泛使用的支付工具之一。本文将为您提供关于如何使用 Paypal 实现自动订阅的详细教程,包括创建订阅计划、处理支付结果及订阅管理等关键步骤。自动续费的五个步骤根据官方文档,Paypal 提供了实现自动续费的五个步骤,实际开发中还需要处理支付结果和订阅管理:事先创建并激活订阅计划;用户创建订阅并跳转到 Paypal 网站等待用户同意;用户同意后,跳转回网站并执行订阅;获取用户账单,包括每次扣款结果的通知或主动查询支付结果;处理用户取消订阅等通知。使用 Paypal SDK要实现自动订阅,首先需要通过 Composer 安装 Paypal SDK:composer require paypal/rest-api-sdk-php 官方提供了完整的 Samples,可以帮助您快速入门。还可以通过 Paypal Sandbox 进行调试,方便模拟支付环境。创建并激活订阅计划订阅计划(Billing Plan) 相当于一个产品,需要为不同的商品创建不同的价格计划。如果有不同的用户需求,可以在创建协议时进行调整。创建支付时,如果使用 TRIAL 类型,必须有 REGULAR 类型的支付,TRIAL 类型并不能自动判断新用户等条件,所以首次的优惠需要由业务代码实现。首次扣款: 由于协议生效时间要求必须在当前时间24小时之后,循环扣款将无法立刻进行,最早也需要24小时。如果需要立即扣款,可以通过设置 MerchantPreferences 的 setSetupFee 参数来完成首次扣款。遇到 "NotifyUrl" value is NULL 错误时,通常是 Paypal 服务端的错误,官方尚未修复,解决方法可参考 Github Issue。创建订阅创建订阅协议时,用户可以针对同一订阅计划创建多个订阅协议。创建后,跳转到 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 | 一分钟注册,轻松订阅海外线上服务支持微信、支付宝支付,无需复杂操作。可轻松开通包括 ChatGPT、Claude、Google Play、Apple Store、OpenAI 等海外平台的订阅服务。使用邀请码:ACCPAY,享受消费 0 手续费和免开卡费优惠。小贴士确认充值账户信息:不同平台的充值点数不通用,确保充值账户与使用平台一致。保留支付凭证:在支付完成后,务必保留相关凭证以备查询。以上是关于 Paypal 自动订阅的详细教程。如果您有任何疑问,欢迎随时联系我们。我们将持续优化支付流程,为您提供更好的服务体验。 ## Publication Information - [chuntian](https://paragraph.com/@chuntian/): Publication homepage - [All Posts](https://paragraph.com/@chuntian/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@chuntian): Subscribe to updates