catharsisjelly/omnipay-worldpay-cg-hosted

为Omnipay支付处理库提供的WorldPay托管企业网关驱动程序

2.0.0 2019-01-16 09:55 UTC

README

Build Status

为Omnipay PHP支付处理库提供的WorldPay托管驱动程序

此项目是从 comicrelief/omnipay-worldpay-cg-hosted 分支出来的,该分支现在不再维护。 @catharsisjelly 曾表示愿意接管库并继续开发,但至今尚未成功。有关实施更改的更多信息,请参阅 变更日志

Omnipay 是一个与框架无关的多网关支付处理库,适用于PHP 7.1+。此软件包实现了Omnipay对WorldPay XML企业网关托管的支持。此实现遵循WorldPay提供的文档

安装

此库最好通过 Composer 安装,例如。

composer require catharsisjelly/omnipay-worldpay-cg-hosted

基本用法

此软件包提供以下网关

  • WorldPay企业网关托管

有关一般用法说明,请参阅主要的 Omnipay 仓库。

订单描述

我们目前默认将订单描述设置为“商品”。

要设置另一个值,请使用 PurchaseRequest::setDescription()

通知设置

此库旨在能够为 isValid()isAuthorised()isPending()isCancelled() 提供合理的答案,如果您在此屏幕上选择几乎每种可能类型

Notification setup

通常最好勾选所有可勾选的选项,以免错过您可能关心的通知。

然而,我们不得不 不勾选 SENT_FOR_AUTHORISATION,因为WorldPay的一个明显错误会导致在选中此选项时发送两个 AUTHORISED 通知,而不是发送额外的类型。

我们尚未收到Worldpay关于此是否会影响生产网关或是否将得到修复的确认,因此现在不启用此通知更安全。

通知验证

Worldpay建议您采取以下措施来接收通知并检查它们是否来自他们

  1. 使用服务器SSL - 这应该是任何支付应用程序的标准!
  2. 检查IP的反向DNS记录 - 这实际上并不非常安全,可以被欺骗,但在此库中作为第一道防线实现。在无法执行公共反向DNS查找的环境中,已知Worldpay子网有一个IP回退。
  3. 要求他们发送,并在您的服务器上验证他们的客户端TLS证书。

不幸的是,在此库中实现客户端TLS验证(第3点)没有简单的方法,并且对于我们的当前基础设施来说并不可行。一些工作通常位于您的Web服务器上,而不是在这个库中。

我们还考虑了额外的措施,即查询请求,但正如本文件所述,它们默认未启用,且也远非实时(大约5分钟延迟)。这意味着除非您将它们排队并接受更长的延迟,否则它们不适用于检查通知的有效性。

这意味着,目前您不应将在此库中显示为“有效”的通知视为绝对有效,也就是说,不要在没有后续检查的情况下根据此发货,使用查询请求或Worldpay UI,它提供匹配的结果。

如果您有任何想法或贡献认为可能会改善这种情况,我们将非常欢迎!

支持

如果您在使用Omnipay时遇到一般问题,我们建议在Stack Overflow上发布。确保添加omnipay标签,以便可以轻松找到。

如果您想了解发布公告、讨论项目想法或提出更详细的问题,还有一个邮件列表,您可以通过它订阅。

如果您认为您发现了bug,请使用问题跟踪器报告它,或者更好的是,分叉库并提交一个pull request。