【问题标题】:PayPal Subscriptions: validating success on a server贝宝订阅:在服务器上验证成功
【发布时间】:2021-04-06 09:13:54
【问题描述】:

我提前为这个问题道歉,因为它可能相当愚蠢,但我真的无法在其他地方找到任何答案。

我目前的目标是将订阅集成到我的网站,允许用户访问网站的某些部分。

我看过一些关于它的视频,但它让我留下了一些问题。

PayPal 允许您在https://www.paypal.com/billing/plans 手动创建订阅计划。当您在此处创建计划时,它会为您提供让 pay pal 子按钮显示在页面上所需的代码。然后用户可以使用它们来创建订阅。这很棒。但是,我现在找到了验证交易结果的方法。我的目标是,如果用户成功,我将能够通过 API 检索数据,这表明它成功,然后我可以将信息存储在我的数据库中,并授予他们访问权限。有谁知道如何从手动创建的 facebook 计划中获取数据?

我确实观看了一段视频,该视频让您在您的网站上执行所有操作(您在自己的代码中创建所有内容),但最终结果通过 URL 中的 $_GET 变量发送了所有内容。我觉得暴露这些数据可能会导致订阅被操纵,并将其授予未成功创建订阅的用户。

完成所有编码以完成这项工作我没有问题,但我真的想确保我以最好的方式做到这一点。

【问题讨论】:

标签: paypal paypal-subscriptions


【解决方案1】:

有几种方法可以做到这一点。通过设置webhook 并收听贝宝成功通知并对其做出反应。通过使用贝宝订阅API。或两者兼而有之。

当您使用 paypal 按钮时,您将拥有 onApprove 功能,该功能将在用户确认订阅时触发。您可以通过以下方式查询订阅数据:

onApprove={async (data: any, actions: any) => {
      const detailedSubscriptionData = await actions.subscription.get()

      // activate subscription on your side by sending it to your backend
      ...

      // etc.
    }}

在您上面查询的数据中,将有一个对每笔交易都是唯一的 paypal 交易 id (I-....) 以及您的产品 id (plan_id)。您现在可以在后端执行以下验证:

  1. 检查您是否已经有使用该 paypal 交易 ID 的订阅(来自其他客户)
  2. 检查plan_id
  3. 通过paypal交易id查询APISubscription Details,检查状态等,匹配plan_id

请记住,要使用 API,您必须查询 access-token,这反过来又要求您在这些 steps 之后进行开发者应用设置。

【讨论】:

    猜你喜欢
    • 2021-01-02
    • 2019-12-02
    • 2021-05-14
    • 2013-09-19
    • 2019-08-11
    • 2019-08-04
    相关资源
    最近更新 更多