【问题标题】:How do you know if a user has paid for a subscription您如何知道用户是否为订阅付费
【发布时间】:2021-03-16 04:47:44
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: php paypal paypal-sandbox paypal-rest-sdk paypal-subscriptions


    【解决方案1】:

    该教程使用已弃用的 SDK,该 SDK 仅适用于以前版本的 PayPal 订阅。不要按照该教程中的任何内容进行操作,这是不好的。


    对于当前版本的PayPal Subscriptions,那里描述的按钮将激活客户端的订阅。

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

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

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

    【讨论】:

    • 您能否提供您的基本身份验证代码的要点?设置身份验证逻辑似乎有点令人生畏,不确定您是否利用了任何其他 3rd 方代码。此外,我已经在沙箱中进行了测试,确认后,在没有通过 API 请求确认订阅的情况下,我的沙箱用户被订阅了。不是说不需要激活订阅吗?对此有点困惑
    • 访问令牌的有效期通常为 9 小时,但简单的 REST API 集成不会持久化它们,只需在每次 API 调用之前请求访问令牌
    • 好的,很高兴知道,这就是简单的逻辑。我认为它会有一些刷新令牌逻辑等。 TY
    • 不,如果你坚持它,简单的“刷新”逻辑就是检查一个已经过期的错误响应并请求一个新的响应并在这种情况下重复 API 调用
    猜你喜欢
    • 2013-02-26
    • 2021-03-16
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 2020-02-05
    • 1970-01-01
    相关资源
    最近更新 更多