我正在看这个tutorial https://www.patchesoft.com/paypal-api-subscription-php创建我自己的贝宝订阅网关,我以前从未对 API 如此困惑和迷失过。
因此,当我们创建计划时,我们会设置商家偏好,特别是返回 URL
$merchantPreferences->setReturnUrl("mysite.com/subscription?success=true")
然后在教程结束时,当用户支付服务费用后,它会将用户重定向到mysite.com/subscription?success=true
.
然后是获取最重要的东西的代码,即来自返回 URL 的令牌$token = $_GET['token'];
这使我们能够使用以下方式获取协议 ID$agreement->execute($token, $apiContext);
。我的问题是,用户很有可能支付订阅费用,然后关闭其选项卡并且不会被重定向。那时,我的系统尚未识别他们的付款并在我这边激活了他们的订阅,即使他们已经支付了订阅费用。
我是否错了,误解了 Paypal API 中发生的事情,或者 Paypal 系统是否有缺陷?
该教程使用了已弃用的 SDK,该 SDK 仅适用于早期版本的 PayPal 订阅。不要遵循该教程中的任何内容,这是没有好处的。
对于当前版本贝宝订阅 https://developer.paypal.com/docs/subscriptions/,那里描述的按钮将激活客户端的订阅。
您可以改为设置按钮并使用 REST API 调用从您的服务器激活订阅 https://stackoverflow.com/questions/63899329/paypal-smart-subscribe-server-side批准后立即。从服务器激活会向您提供可靠的服务器端通知,表明订阅已开始。这些调用没有 SDK,您必须首先获取 API 访问令牌并通过 HTTPS 自行执行调用。
但实际情况需另行通知payments 表示订阅 - 通常在第二天开始并重复其周期 - 您需要一个用于该事件的 Webhook 侦听器付款.销售.完成 https://developer.paypal.com/docs/api-basics/notifications/webhooks/event-names/#subscriptions。没有支持 Webhooks 的 SDK,因此您必须设置自己的侦听代码,并对自己收到的 Webhooks 消息执行任何所需的验证(可以通过检查签名或 API 回调至 PayPal 来完成验证)
如果您需要在订阅开始时(而不是第二天)收到付款,请使用setup_fee
以及常规计费周期开始之前的一个周期试用期。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)