首页 > 解决方案 > 您如何知道用户是否已支付订阅费用

问题描述

我正在查看本教程来创建我自己的贝宝订阅网关,我以前从未对 API 如此困惑和迷失过。

因此,当我们创建计划时,我们会设置商家偏好,特别是返回 URL

$merchantPreferences->setReturnUrl("mysite.com/subscription?success=true")

然后在教程结束时,当用户为服务付费时,它会将用户重定向到mysite.com/subscription?success=true.

然后是获取最重要的东西的代码,即来自返回 URL 的令牌,$token = $_GET['token'];它允许我们使用$agreement->execute($token, $apiContext);. 我的问题是,用户支付订阅费用然后关闭他们的标签并且没有被重定向的可能性很大。那时,即使他们已经支付了订阅费用,我的系统也没有识别他们的付款并在我端激活他们的订阅。

我在这里错了,误解了 Paypal API 中发生的事情,还是 Paypal 系统有缺陷?

标签: phppaypalpaypal-sandboxpaypal-rest-sdkpaypal-subscriptions

解决方案


该教程使用已弃用的 SDK,该 SDK 仅适用于以前版本的 PayPal 订阅。不要遵循该教程中的任何内容,这是不好的。


对于当前版本的PayPal 订阅,此处描述的按钮将在客户端激活订阅。

相反,您可以设置您的按钮并使用 REST API 调用在批准后立即从您的服务器激活订阅。从服务器激活可为您提供订阅已启动的可靠服务器端通知。这些调用没有 SDK,您必须首先获取 API 访问令牌并通过 HTTPS 自己执行调用。

但是,要收到订阅的实际付款通知(通常在第二天开始并在其周期内重复),您需要一个 Webhook 监听器来监听PAYMENT.SALE.COMPLETED事件。webhook 没有受支持的 SDK,因此您必须设置自己的侦听代码并对自己收到的 webhook 消息执行任何所需的验证(可以通过检查签名或 API 回调来完成验证)

如果您需要在订阅开始时(而不是次日)收到付款,请setup_fee在常规计费周期开始之前为其配置一个和一个周期试用期。


推荐阅读