dam*_*anh 12 paypal omnipay payum
我正在为我的网络应用寻找付款解决方案.我看到有像条纹(用于信用卡)或PayPal插件的API可以处理某些付费方法.
然后我看到有些库可以处理各种付费方式,如Payum(https://github.com/Payum/Payum)或Omnipay(https://github.com/thephpleague/omnipay).
如果我理解正确,它们都是相同类型的库:它们都以标准化的方式处理各种方法的付款.然而,我没有找到两者之间的任何比较,但解决了Payum如何包括OmniPay.所以我很困惑.因此我的问题:
Omnipay是否涵盖与Payum相同的目的.如果是,哪一个有什么优势.如果不是,他们正在实施的付款流程的哪些部分.
Mak*_*yar 32
简短的回答是Payum提供与Omnipay相同的功能以及一些额外的功能.
将付款模式与转换操作结合使用时,Payum的效果最佳.该模型不能只是Payum的模型,我鼓励您使用自己的或来自电子商务平台的模型.这个想法很简单:您向Payum发送请求以捕获您的模型.在操作中,您将支付模型转换为网关特定格式,很可能是一个数组.这种方法的优点是你的代码永远不会改变,看起来像这样:
$gateway->execute(new Capture($payment));
Run Code Online (Sandbox Code Playgroud)
所有网关的差异都隐藏在网关内.当然,Payum支持网关特定格式,或支持Payum的支付模式.在Omnipay的情况下,您不能简单地将条带网关替换为PayPal网关,因为它们的行为不同,更重要的是它们需要不同的数据.条纹需要提供信用卡,Paypal不关心它,但希望返回和取消URL设置.您必须在代码中反映这些差异,这是抽象吗?顺便说一句,Payum为您生成取消和返回URL,它们是安全的(我们稍后再谈).
有时,您必须获得有关付款交易或付款人的更多详细信息,或有关错误的更多信息.Payum允许您访问参与代码和支付网关之间通信的所有数据.数据格式是特定于付款的,因此如果您熟悉Paypal协议(例如),您将很容易理解那里发生的事情.另一个很好的例子是Klarna Checkout.它返回送货\帐单地址,性别和出生日期.使用Payum,您可以轻松地将这些付款用于满足您的需求.
Payum为您提供更好的状态处理.Omnipay只提供两种状态成功并失败,但这还不够.例如,由于多币种问题, Paypal有时会返回待处理状态.在这种情况下,omnipay说支付失败了,但实际上并非如此.或者用户可以在Paypal方面取消付款,Omnipay会告诉你它失败了,但事实并非如此.如果您需要默认情况下Payum不提供的状态,您可以轻松添加它.您是否已经拥有付款状态,也许您的电子商务平台提供它们并且您想要重复使用,没有问题可以调整Payum以使用它们.
有时候用户想要欺骗你或者少花钱买东西.作为开发人员,您必须考虑并处理您的数据.你向用户揭示了什么?可能用错了吗?在验证之前,您不能依赖网址中给出的金额.例如,Paypal会向您发送推送通知给您之前发送给他们的通知网址.Payum会为您生成这样的网址,当通知返回时,它会对其进行验证.您可以获得独特的安全网址.付款内部与该网址相关联,一旦您删除\无效,网址用户无法访问其后面的付款.Omnipay不提供任何帮助您解决安全问题的方法.这些安全的网址有一个很好的副作用.一旦不需要,安全URL无效\删除.这很好,例如,用户在浏览器中单击"后退"按钮.由于购买网址不再存在,他将无法再进行第二次付款,相反他会看到404错误.
将信用卡存放在您身边并不是一个好习惯,不是吗?没有理由不小心存放它,或只是几秒钟.Payum有一个敏感的价值对象,确保不会意外地保存任何东西.你仍然能够存储它,但是这样做你就可以自己存储了.
Omnipay仅支持网关,可以重定向到网关端或需要信用卡.但是还有很多其他网关,它们的行为也不同.例如,Klarna Checkout 需要呈现片段(iframe),Stripe.Js 要求在购买页面上执行其javascript.Stripe Checkout 呈现自己的弹出窗口.Payum 支持所有这些,正如我们在开始时所说的那样,您可以在不更改代码的情况下从一个网关切换到另一个网关.Payum本身不支持您需要的网关吗?我不认为重新实现内部的每个网关都是个好主意.这就是Omnipay网关的桥梁存在的原因.它允许您使用Payum方式使用Omnipay网关.
Payum试图规范支付流程.准备,捕获\授权和完成有三个步骤.第一个称为"准备",在此步骤中您必须准备付款,计算总价格,税收,获取用户或运输信息等.完成后,您可以将用户重定向到capture\authorize步骤,从此处可以将用户重定向到网关端或要求提供信用卡或其他内容.这取决于您选择的网关.在"完成"步骤,您必须获得付款状态并根据它采取行动.Omnipay只能部分解决这个问题.
使用网关工厂,您可以轻松地在功能上覆盖\替换网关的任何部分,或添加自定义操作,扩展或api.
Payum对大多数现代框架(如Symfony)进行了官方扩展.Laravel,Silex,Yii, Zend.
最后让我们比较Payum和Omnipay的角石接口.
免责声明:我是Payum的作者
| 归档时间: |
|
| 查看次数: |
3238 次 |
| 最近记录: |