如何使用 PayPal 实现循环扣款(订阅)功能?

概述

在业务需求中,集成 PayPal 以实现循环扣款功能是一个常见需求。然而,相关的开发教程并不容易找到。本文将详细介绍如何通过 PayPal 的 API 实现这一功能,帮助你快速上手。

PayPal 的支付接口

PayPal 提供了多套支付接口:

  1. Braintree:支持 Express Checkout,提供信用卡、客户信息等管理功能。
  2. REST API:主流接口方式,支持 OAuth 2.0 认证。
  3. NVP/SOAP API:旧接口,不推荐使用。

Braintree 接口

Braintree 是 PayPal 收购的一家公司,除了支持 PayPal 支付外,还提供升级计划、信用卡、客户信息等全套管理功能。由于其在国内不支持,因此不推荐使用。

REST API

REST API 是 PayPal 主流的接口方式,支持 OAuth 2.0 认证和 RESTful 风格的 API 调用。

旧接口

除非 REST API 无法满足需求,否则不推荐使用旧接口。

REST API 介绍

PayPal 的官方 API 参考文档详细介绍了其 API 和使用方式。为了快速完成业务需求,建议直接安装官方提供的 PayPal-PHP-SDK,并通过其 Wiki 作为起点。

在开始之前,请确保你已准备好以下内容:

  • Sandbox 账号
  • Client ID
  • Client Secret
  • Webhook API(必须为 HTTPS 开头且为 443 端口)
  • Return URL

接口分类

  • Payments:一次性支付接口,不支持循环扣款。
  • Payouts:未使用,忽略。
  • Authorization and Capture:通过 PayPal 账号登录网站并获取相关信息。
  • Sale:与商城有关,未使用,忽略。
  • Order:与商城有关,未使用,忽略。
  • Billing Plan & Agreements:实现循环扣款必须使用的功能。
  • Vault:存储信用卡信息。
  • Payment Experience:未使用,忽略。
  • Notifications:处理 Webhook 信息,重要但非本文关注内容。
  • Invoice:票据处理。
  • Identity:认证处理,实现 OAuth 2.0 登录。

实现循环扣款的步骤

1. 创建升级计划并激活

升级计划对应 Plan 类,创建后需将状态修改为 ACTIVE 才能正常使用。Plan 包含 PaymentDefinitionMerchantPreferences 两个对象,均不能为空。

2. 创建订阅并跳转到 PayPal 网站等待用户同意

创建 Agreement 时,需注意 setSetupFee 方法设置的是首次扣款费用,而 Agreement 的循环扣款方法设置的是第 2 次开始的费用。

3. 用户同意后执行订阅

用户同意后,需执行 Agreementexecute 方法才算完成订阅。完成后,扣款可能会有几分钟的延迟。

4. 获取扣款账单

订阅后,可能不会立刻产生交易记录。如果为空,则过几分钟再次尝试。

注意事项

  1. 国内连接慢:在国内使用 Sandbox 测试时,连接速度较慢,需考虑用户关闭页面的情况。
  2. 实现 Webhook:用户取消订阅时,网站应能收到通知。
  3. 订阅生效时间:订阅一旦产生,除非主动取消,否则将一直生效。
  4. 原子操作:在用户切换升级计划时,应取消前一个计划并完成新计划的签约,此过程应为原子操作并放入队列中执行。

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

参考文档

上一篇 15小时前
下一篇 12小时前

相关推荐