itinerisltd / gf-worldpay
Gravity Forms WorldPay 扩展插件
Requires
- php: ^7.2
- ext-curl: *
- league/omnipay: ^3.0
- omnipay/worldpay: ^3.0
Requires (Dev)
- automattic/vipwpcs: ^0.3.0
- itinerisltd/preflight-command: ^0.6.1
- roave/security-advisories: dev-master
- wp-coding-standards/wpcs: ^1.0
This package is auto-updated.
Last update: 2024-09-24 00:02:13 UTC
README
WorldPay Gravity Forms 扩展插件。
- 最低要求
- 安装
- 设置
- 关于 WorldPay HTML API 的安全顾虑
- 非问题
- 功能
- 不支持 / 未实现
- 最佳实践
- 测试沙盒
- 常见问题解答
- 公共 API
- 预检
- 编码
- 作者信息
- 反馈
- 变更日志
- 许可
最低要求
- PHP v7.2
- php-curl
- WordPress v4.9.8
- Gravity Forms v2.3.3.2
安装
$ composer require itinerisltd/gf-worldpay
设置
支付响应(重定向)和使用 MD5 提高安全性是必须的。
在您的安装的集成设置中使用商家界面 > 安装选项
- 启用 启用购物者响应
- 启用 支付响应启用?
- 将
<wpdisplay item=MC_callback>
作为 支付响应 URL 输入 - 输入一个25字符的随机密码作为 支付响应密码
- 输入一个30字符的随机密码作为 MD5 交易密钥
- 将
instId:amount:currency:cartId
作为 签名字段 输入
注意,WorldPay 在没有通知的情况下截断长的 支付响应密码!
关于 WorldPay HTML API 的安全顾虑
- 泄露 MD5 交易密钥
- 允许邪恶黑客设置虚假结账页面,冒充商家
- WorldPay 会接受这些结账并收取信用卡费用
- 钱会进入商家的账户
- 泄露 支付响应密码
- 允许邪恶黑客冒充 WorldPay
- WordPress 会接受邪恶黑客的支付回调并更改条目的支付状态
非问题
如果 支付响应密码(也称为callbackPW
)不正确,将抛出 InvalidResponseException
以 停止一切。在这种情况下,信用卡持有人将看到白色的死亡屏幕或卡在“等待重定向”页面中。
功能
不支持 / 未实现
- 发货地址
- 根据欺诈检查结果拒绝
- 令牌支付
- 周期性支付
- 退款
- 作废
最佳实践
始终使用 HTTPS
尽管 WorldPay 接受不安全的 HTTP 站点,但您应始终使用 HTTPS 来保护所有通信。
支付状态
始终在 WorldPay 商家界面中双检查询支付状态。
测试沙盒
使用此测试信用卡。
常见问题解答
表单设置中缺少 GF WorldPay
Gravity Forms在多用户网站上的功能表现不同,其文档不完整。如果表单设置中缺少GF WorldPay,请为自己授予gf_worldpay
和gf_worldpay_uninstall
权限。见:https://docs.gravityforms.com/role-management-guide/
公共 API
为继续确认构建 URL
ConfirmationHandler::buildUrlFor(Entry $entry, int $ttlInSeconds = 3600): string
用法
<?php $entryId = 123; $rawEntry = GFAPI::get_entry($entryId); if (is_wp_error($rawEntry)) { wp_die('Entry not found'); } $url = ConfirmationHandler::buildUrlFor( new Entry($rawEntry), 86400 // expires in 24 hours (24*3600=86400) ); echo $url; // https://example.com?entry=123&gf-worldpay-token=XXXXXXXXXXXX
- 用户填写表单A
- 用户完成WorldPay结账表单
- 用户返回并点击
CallbackHandler
CallbackHandler
根据确认设置将用户发送到表单B- 用户到达带有合并查询字符串的表单B URL
如果用户在完成表单B之前退出,可以使用ConfirmationHandler::buildUrlFor
为用户生成一个一次性、短寿命的URL,以便用户继续填写表单B。
注意
- URL继续Gravity Forms的确认
- 获得URL的人将继续确认,不进行身份验证
- 确认将使用数据库中的最新字段值,这些值可能已更改
- 不检查支付状态
重定向 URL 获取失败处理
在表单提交后,此插件将订单信息发送到WorldPay,以换取一个重定向URL(WorldPay托管结账表单URL)。
默认情况下,当重定向URL检索失败时
- 将条目支付状态标记为
失败
- 记录错误
wp_die
立即
常见失败原因
- 错误的供应商代码
- 服务器IP未列入白名单
提示:检查日志。
您可以使用'gf_worldpay_redirect_url_failure_wp_die'
过滤器来
- 继续Gravity Forms的feed和确认流程
- 执行额外操作
- 重定向到不同的错误页面
重要:如果此过滤器返回false
,则正常继续Gravity Forms的feed和确认流程。不正确的设置可能导致灾难。
示例
add_filter('gf_worldpay_redirect_url_failure_wp_die', function(bool $shouldWpDie, ServerAuthorizeResponse $response, Entry $entry, GFPaymentAddOn $addOn): bool { // Do something. return true; // Do `wp_die` return false; // Don't `wp_die`, continue normal flow return $shouldWpDie; // Undecisive }, 10, 4);
预检
此插件提供了对preflight-command的内置支持。无需额外的设置步骤。
检查器ID:gf-worldpay-production-mode
- 确保所有gf-worldpay feed都处于生产模式(即:不在测试模式)
- 无法禁用
- 没有可用的配置选项
编码
必读清单
在开发之前请阅读以下内容
- WorldPay HTML API
- Gravity Forms: GFPaymentAddOn
- Gravity Forms: Entry Object
- Omnipay: WorldPay
- thephpleague/omnipay#255 (评论)
Gravity Forms
Gravity Forms有未记录的隐藏魔法,请阅读其源代码。
作者信息
gf-worldpay是由Itineris Limited创建的项目,由Tang Rufus创建。
完整的贡献者列表可以在这里找到。
反馈
请提供反馈!我们希望尽可能多地在项目中使用这个库。请提交一个问题,指出您喜欢和不喜欢的功能,或者分叉项目并提出建议。没有问题太小。
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
许可
gf-worldpay在MIT许可证下发布。