Authorize.net ARB 问题

Posted

技术标签:

【中文标题】Authorize.net ARB 问题【英文标题】:Authorize.net ARB Questions 【发布时间】:2011-06-14 15:14:25 【问题描述】:

我正在开发一个提供 30 天试用期的应用程序,然后可以选择按月或按年订阅(两种不同的价格)。

我在他的网站上使用了 John Conde 提供的大量信息(感谢 John),但我想确保我对这一切的工作原理有正确的认识 - 我第一次使用 Authorize 做任何事情。网络或订阅...

因此,如果我有 30 天的试用期,并且有人决定他们今天要付款,则不应向他们收取 60 天的费用。我将开始日期提前了 60 天,但我是否应该在 Authorize.net 中看到任何类型的费用显示它处于待处理状态?

接下来,是它“监视”续订的 ARB 服务的一部分,或者我应该做些什么来定期触发检查。我很确定这就是 ARB,而且我不需要 cron 每天检查,但我宁愿现在问一个愚蠢的问题,也不愿以后有一堆遗漏的费用。

最后,您建议我将哪些信息存储在我的本地数据库中,以及我应该让 ARB 服务捕获哪些信息。目前,我正在存储订阅项目是什么,付款人是谁(通过 id),卡上的姓名,卡的最后四位数字以防他们想要参考使用的内容,到期卡的日期,因此我可以查找未决的到期日期(除非这也是 ARB 的一部分)以及订阅开始、结束的日期。

感谢您提供任何其他信息。

【问题讨论】:

【参考方案1】:

如果我有 30 天的试用期,并且 有人决定要付款 今天,他们不应该被收费 60 天。我将开始日期提前 60 天,但我应该看到任何类型的 在 Authorize.net 中收费显示它是 待处理?

使用 AIM API 收取他们的初始付款,然后在 ARB 中将开始日期设置为 60 天(当他们首次付款时)。您不会收到订阅处于“待处理”状态的任何通知,但如果 ARB API 向您返回订阅 ID,则可以安全地假设将在 60 天内尝试首次付款。

接下来,是 ARB 服务的一部分 它“监视”更新,或者我是 应该做点什么来触发 定期检查。我是 很确定这就是 ARB,我 不需要cron每天检查,但是 我现在宁愿问一个愚蠢的问题 而不是有一堆失踪 稍后收费。

你不需要做任何事情。 ARB 中的“A”代表自动化,它是完全自动化的。安排付款后,它将自动运行,直到订阅结束、您取消订阅或他们的卡过期并且您没有在下一个预定账单日期之前更新它。

最后,你会得到什么信息 建议我存储在本地数据库中并 我应该让 ARB 服务做什么 捕获。目前,我正在存储什么 订阅项目是,谁 付款的人是(由 id),卡上的名字,最后一个 卡的四位数字以防万一 想要参考使用过的东西, 卡的有效期,所以我可以 寻找未决的到期时间(除非 这也是 ARB 的一部分)和 订阅开始、结束的日期。

尽可能多地向 ARB API 发送信息。它使在 Authnet 控制面板中研究交易变得更加容易,因为您可以将捕获的内容与他们在交易历史中显示的内容进行比较。

听起来您正在存储对您有用的信息。如果您的数据库被黑客入侵,我会加密任何与信用卡相关的内容,以使其变得不那么有用。您存储了足够多的信息,黑客可以使用它来说服您的客户他们知道他们的信用卡号码,然后事情变得非常糟糕。

【讨论】:

谢谢约翰。我尝试先进行 AIM 检查,但收到以下错误: 注意:未定义变量:第 169 行 /path/AuthnetAIM.class.php 中的超时 注意:未定义索引:在线 /path/AuthnetAIM.class.php 中的 ch 147 我昨天通过您的联系表向您发送了一条消息,其中包含一些具体问题,如果您有空的话。 看起来您的代码版本稍旧。不过,这些通知不会影响脚本的功能。如果你想再试一次,你的消息没有进入我的收件箱。这样,如果您愿意,我可以向您发送更新的脚本。 谢谢。我刚刚通过您网站上的表单向您发送了一条消息。【参考方案2】:

嗯,一般来说,您应该避免存储 CC 信息(出于安全原因),因此将所有内容保存在 ARB 会更好。

您应该在用户注册时安排付款,并将 SOAP 调用中的 startDate 设置为 60 天后。存储交易密钥或他们调用的任何方式,以便您可以随时在 ARB 取消订阅。如果你这样做,你可以完全避免处理付款,你只需要处理订阅和取消订阅。

【讨论】:

由于购买时没有付款到期(因为他们正在试用中),将开始日期设置为试用期结束不合适吗?如果这就是我要存储的全部内容,还有“最后四个”,从 PCI 角度来看这会很糟糕吗?我总是看到一些东西(比如亚马逊),他们向我展示了这些信息。我认为这将有助于那些已经付款的人知道他们使用的是哪张卡......如果这不是这样做的方法,请告诉我。谢谢! 存储最后四位数字是可以的,除非您有非常严格的安全和代码审查政策,否则不要存储完整的卡号。提前 2 个月设置 startDate 将使试用期免费。 API手册说:“startDate:订阅开始的日期(也是初始计费发生的日期)”。如果客户取消订阅,您将取消预定的付款并且不会产生任何费用。

以上是关于Authorize.net ARB 问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 authorize.net ARB 的通知 URL

Authorize.net ARB 问题

authorize.net 是不是提供 webhook 来处理 ARB 失败的付款?

使用 Active Merchant 从 Authorize.net 获取 ARB 订阅信息?

Authorize.Net ARB API 获取定期付款的状态

在 Authorize.NET ARB 中获取每个定期计费的交易