如何在codeigniter中实现payeezy的定期付款?

时间:2016-09-20 17:27:29

标签: codeigniter payment recurring payeezy

我想在codeigniter中使用Payeezy集成定期付款。我已经使用curl实现单次付款,现在我希望通过确认重复付款以更新我的数据库。

2 个答案:

答案 0 :(得分:0)

我为Payeezy创建了一个WordPress插件,它也可以处理重复播放。您应该能够使用CodeIgniter的底层PHP代码。

Fluid

答案 1 :(得分:0)

我可以解释一下可以帮助您解决PCI合规问题最少的流程,以及基于令牌的API。

1。以付款方式生成令牌

因此,基本上您将使用Javascript API生成授权令牌。授权令牌不会对卡充电。它用于验证卡并返回令牌以获得更好的PCI兼容性。此API源代码和说明如下:

https://github.com/payeezy/payeezy_js

2。将表单发布到服务器以获取对第一个数据的卷曲调用

然后,一旦您拥有此令牌,就会使用标准表单帖子将其发回给您的控制器文件,但删除信用卡号和信用卡CVC字段上的name属性,以便这些不要发布到您的服务器。请注意,您需要存储此数据(但不包括卡号和CVC),因为在退款(和订阅取消)时,您需要回复最后一个购买令牌,持卡人姓名,卡类型,卡到期日,支出金额和货币代码。您可能想知道为什么FirstData / PayEezy要求您存储持卡人姓名,卡类型和卡有效期。嗯,这是一个非常好的解释。您的呼叫中心可能需要该详细信息,以便通过电话与客户解决问题。此外,您还需要退款。而且,最重要的是,如果您正在进行定期付费,您的代码需要在收费之前提前查看到期日期,因为如果卡过期,API调用将失败。最后,由于您未存储信用卡号和信用卡验证(CVC)代码,因此您将更加符合PCI标准。

从那里开始,由于您已经熟悉单次购买的卷曲流程,因此只需进行一次小的单一字段更改(transaction_type即可“重复”#);卷曲做反复出现。对于不熟悉卷曲过程的人,请在此处解释:

https://developer.payeezy.com/payeezy-api/apis/post/transactions-4

此外,对于那些不熟悉的人,您需要了解FirstData / PayEezy希望您如何使用包含Content-Type的特殊标头发送Curl请求:application / json,apikey,token,授权,现时和时间戳。您可以在此处查看有关详细信息:

https://github.com/payeezy/payeezy_direct_API/blob/master/payeezy_php/example/src/Payeezy.php

(我所做的使得代码更简单的是拦截从该脚本到日志文件的Curl调用,这样我就可以在单个函数中使它更直接,而不是将其分解为所有这些小函数。它更容易理解发生了什么。)

3。切换定期付款的卷曲呼叫

因此,正如您在Curl电话中发现的那样,您通过将transaction_type设置为'购买'来了解如何进行一次性购买。要进行重复操作,请将transaction_type设置为'重复发生'。你必须从一开始就这样做。因此,如果我每月以29.99美元的价格销售产品,那么第一个月的费用仍然需要设置为“反复发生”,以及随后的任何一个月。

4。您对经常性付款的责任

现在,除非您查看PayEezy开发人员支持论坛,否则每个人都会被挂断,因为它的记录很差。对于订阅,PayEezy没有一个系统来设置具有不同持续时间的付款计划,也没有为您设置自动(设置并忘记)订阅。 (我想我读到他们在Apple Pay上有一些实验性的东西,但还没有别的东西。)所以,为了达到这个目的,你有两个选择:

  1. 使用Chargify.com。不幸的是,这会增加您的产品或服务的每次转化费用(CPA)。如果你想使用它,你必须考虑到这一点。这基本上是您发送交易的SaaS服务,他们针对FirstData / PayEezy处理自动订阅计划。

  2. 推出自己的cron作业解决方案。为此,您基本上采用单个交易的Curl代码,并从“购买”中更改交易类型。经常性的#39; (从一开始就这样做 - 不要以经常性费用开始购买。)从那里开始,用你自己的cron工作来检查产品或者服务到期条款,然后将API调用发送回FirstData / PayEezy,以便通过“重复”来重新为该卡充电。 TRANSACTION_TYPE。

  3. 在其中任何一个选项中,客户永远不会被要求在第一时间之后输入信用卡数据,除非他们的卡过期或除非您对该卡有问题(如资金不足)。

    当然,为经常性付款做自己的cron工作路线会产生影响,您需要做好以下准备:

    • 添加一些故障安全代码,以防止出现重复事务的可能性,例如数据库字段。

    • 添加一些故障安全代码,如果您取消订阅,则不会再次收取费用。

    • 添加一些故障安全代码,这样如果他们取消订阅,但稍后再次以订阅的方式再次购买,则您会再次向他们收取费用,并且不会将其从其他故障安全代码中阻止。

    • 在您的产品或服务上添加某种宽限期,即使您"说"该术语已过期,您需要2天的宽限期,以便您的API有机会续订。

    • 在续订期间给客户发送电子邮件可能是一个好主意,这样他们就可以确保他们在帐户中有钱并且有办法取消这笔费用(比如打电话给你的办公室或打电话)中心,或者有一个链接点击你提供取消方式的地方。)

    • 如果他们的卡在续订前已过期,并且您在续订前的警告电子邮件中发现了该卡,那么您想让他们知道这一点。

    • 如果他们的卡在续订时因任何原因被拒绝,那么您想让他们知道这一点并给他们一个链接以再次通过购物车再次购买,或者在代码中保存该事务的其他方法。

    如何进行订阅取消/停止定期付款

    要停止定期付款,您将其视为单次购买的退款,但使用上次购买的交易ID。这个Curl示例在此处记录:

    https://developer.payeezy.com/payeezy-api/apis/post/transactions/%7Bid%7D-0

    了解"退款"并选择令牌。