Paypal 订阅 IPN - 用户多次订阅的问题

2024-03-01

我正在使用 PayPal 订阅和即时付款通知 (IPN) 来处理我网站上的订阅者。

在大多数情况下,它运行良好,但我偶尔遇到一个问题。

通常,如果用户取消订阅,我会等待“期限结束”(subscr_eot) 通知,然后再禁用对我的网站的访问。

因此,如果他们预付整个月的费用,然后立即取消,他们仍然可以使用该月剩余的时间(理应如此)。

但有些用户遇到了这个问题:

  1. 取消他们的订阅
  2. 在“期限结束”之前,他们决定重新订阅
  3. 当他们的第一次订阅达到“期限结束”时,我的应用程序会收到通知并向用户发送一封电子邮件,内容类似于“您的帐户已被禁用,如果您想再次注册,可以重新-点击此处订阅”。
  4. 这让他们感到困惑,因为他们在想……这很奇怪,我以为我一周前就订阅了(他们确实订阅了)。所以他们又去订阅了。现在他们对我的网站有两个并发运行的订阅,我在一两个月内收到一封支持电子邮件(“wtf,你这个月向我收取了两次费用,混蛋!!”)

所以我还没有找到好的方法来解决这个问题。我想最好的解决方案是在收到“期限结束”通知时进行额外的 API 调用,该通知会询问 paypal“嘿,这个人已经重新订阅了吗?”。如果是这样,则无需关闭该电子邮件。但我还没有找到任何方法来执行此 API 调用。

另一个解决方案是在他们取消时立即禁用他们的帐户(“subscr_cancel”通知),但随后我收到不同的愤怒的支持电子邮件“嘿,我预付了整个月,为什么我的帐户已经被禁用了!”。

还有其他人解决了这个问题吗?


我知道这是一个旧线程,但我还没有看到这个问题的实际答案,所以如果有人碰巧像我一样想知道这个问题,这里有一个解决方案。

如果有人在学期结束(subscr_eot)之前取消他们的帐户(subscr_cancel),我会在我的数据库中设置它来处理它。例如,如果数据库中有一个“Users”表,只需添加一个新的“int”字段并将其命名为“Term”。默认情况下,该字段应设置为“0”。然后,在 IPN 内部进行设置,以便如果用户在期限结束之前取消订阅,则会将该用户的“期限”字段设置为“1”。如果该用户返回并重新订阅您的服务,请让 IPN 将该用户的“期限”字段更新回“0”。

然后,在您的邮件脚本内,让它在学期结束时检查该用户的“学期”字段。如果它设置为“0”,则不发送电子邮件。如果它设置为“1”,则发送电子邮件说“再见!”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Paypal 订阅 IPN - 用户多次订阅的问题 的相关文章

  • 如何自定义 Mailboxer 电子邮件的模板?

    它会自动发送电子邮件 其中写着 You have a new message subject You have received a new message Body Visit http example com and go to you
  • rvm编译安装ruby 2.5.0出错

    我正在尝试使用 rvm 安装 ruby 2 5 0 但出现错误 我在 Ubuntu 18 16 和现在的 Linux Mint Cinnamon 上尝试过 基本上我在运行安装 ruby 的代码之前所做的是 打开 GPG 密钥https rv
  • Mongoid - 同一外域的两个域的逆

    我试图让以下 Mongoid 关系发挥作用 但每个团队的游戏字段都是一个空数组 这不是一个有效的关系模型吗 我是否需要分开比赛 即主场比赛和客场比赛 class Team include Mongoid Document has many
  • 在 Rails 6 上定义 Secret_key_base 的正确方法是什么?

    正确的定义方式是什么secret key base既然我们已经有了每个环境的凭据 就可以在 Rails 6 上使用了吗 我的环境有变量SECRET KEY BASE但 Rails 并没有接受它 我尝试定义secret key base in
  • 我应该使用哪个 PayPal API 向关联公司发送付款

    我在一家网站公司工作 该公司向向我们网站发送流量的合作伙伴支付佣金 目前 我们跟踪从附属机构引向我们网站的流量 然后通过 PayPal 进行繁琐的手动付款过程 这是我们当前流程的要点 1 Review affiliate commissio
  • ApplicationController 的未定义方法“helper_method”,Rails 5

    我正在尝试使用doorkeeper 将oAuth2 0 集成到我的仅rails api 应用程序中 但我不断收到此错误 ApplicationController 的未定义方法 helper method 但无法找到解决该问题的明确解决方案
  • Rails 中的 PDF 导出

    我需要将包含一些图表的 HTML 页面导出为 PDF 有哪些好的 gem 可以做到这一点 PDFKit http railscasts com episodes 220 pdfkit http railscasts com episodes
  • 忽略 git 中的本地配置文件

    Rails 应用程序中有一些本地文件 属于我们存储库的一部分 我希望 git 忽略它们 基本上 我希望 git 忽略我对 config environments 目录和 config application rb 文件中的任何内容所做的所有
  • 从 url 导入 CSV Errno::ENAMETOOLONG: 文件名太长

    我正在尝试从 url 导入 CSV 文件 但我得到了Errno ENAMETOOLONG file name too long 我按如下方式处理该文件 require open uri url http de65 grepolis com
  • 如何在 Rails 控制器中调用通道方法?

    我有一个订阅用户的 ActionCable 方法 如果启动新的 convo 我也希望用户订阅新频道 我无法找出在控制器中调用通道方法的正确语法 更新 问题是消息在发送时附加到聊天框 但是当发送第一条消息时 Websocket 连接尚未建立
  • 在私有控制器方法中返回redirect_to

    前言 我正在使用设备进行身份验证 我试图阻止未经授权的用户查看 编辑或更新其他用户的信息 我最关心的是用户将 DOM 中的表单修改为另一个用户的 ID 填写表单 然后单击更新 我已经专门阅读过 像下面这样的东西应该有效 但事实并非如此 SO
  • git push heroku master 权限被拒绝

    我正在关注 ruby railstutorial 我运行命令 git push heroku master 它吐出了这个错误 Permission denied publickey fatal Could not read from rem
  • Capistrano 和 XSendFile 配置

    我正在尝试使用 Apache 2 2 Passenger 4 0 59 和 XSendFile 0 12 配置 Rails 生产服务器 应用程序通过 Capistrano 部署 部署的应用程序生成 可能很大 PDF Rails root t
  • Rubymine 6 更新/刷新 Rails 项目中可用的方法和路径?

    这是一个例子 假设我更新路线resources foo这给我带来了一些新的道路 例如 new foo session当我开始在 ERB 视图中输入路径时 我希望它向我显示 建议自动完成与路径匹配的名称 当我输入 new foo 我会得到所有
  • Rails 控制台无法运行

    rbenv 红宝石版本 2 6 6 导轨版本 5 1 4 我正在较旧的代码库中工作 ruby 2 6 6 rails 5 4 1 这是我每天使用的代码库 我必须通过 rbenv 下载一个新的 ruby 版本作为单独的存储库 这样做在我的旧代
  • Rails 3 在 Ruby 1.9.2 上初始化非常慢

    我使用 RVM 来管理环境 安装了 Ruby 1 9 2 p136 我认为是最新版本 和 Rails 3 创建了 gemset 并运行捆绑器 到目前为止一切正常 但 Rails 在运行命令 即生成 销毁 rake 等 时初始化速度非常慢 完
  • Rails、REST 架构和 HTML 5:带有预检请求的跨域请求

    在致力于使我们的网站 HTML 5 友好的项目时 我们渴望采用跨域请求的新方法 不再通过隐藏的 iframe 发布 使用访问控制 http www w3 org TR access control 根据规范 我们开始设置一些测试来验证各种浏
  • Ruby on Rails:如何使用 TCP 套接字连接 GPS 设备

    ruby 2 3 0p0 2015 12 25 修订版 53290 x86 64 linux 轨道 4 2 4 我正在使用 cloud9 IDE 和 webrick 服务器 我的项目是实时跟踪GPS 我想使用TCP连接与GPS跟踪设备进行通
  • 如何使用 Rspec 测试具有嵌套路由的控制器?

    我有 2 个使用轨道脚手架生成器创建的控制器 我希望它们嵌套在一个名为 demo 的文件夹中 所以运行 rails g scaffold demo flows rails g scaffold demo nodes 然后我决定将节点嵌套在流
  • 我在 Rails 中使用了保留字吗?

    这是我的模型 class Record lt ActiveRecord Base belongs to user belongs to directory end class Directory lt ActiveRecord Base h

随机推荐