itinerisltd/gf-worldpay

Gravity Forms WorldPay 扩展插件

安装次数: 1,079

依赖项: 0

推荐者: 0

安全: 0

星标: 1

关注者: 11

分支: 0

开放问题: 0

类型:wordpress-plugin

0.2.5 2019-02-18 10:17 UTC

This package is auto-updated.

Last update: 2024-09-24 00:02:13 UTC


README

Packagist Version PHP from Packagist Packagist Downloads GitHub License Hire Itineris

WorldPay Gravity Forms 扩展插件。

最低要求

  • PHP v7.2
  • php-curl
  • WordPress v4.9.8
  • Gravity Forms v2.3.3.2

安装

$ composer require itinerisltd/gf-worldpay

设置

支付响应(重定向)使用 MD5 提高安全性是必须的。

在您的安装的集成设置中使用商家界面 > 安装选项

  1. 启用 启用购物者响应
  2. 启用 支付响应启用?
  3. <wpdisplay item=MC_callback> 作为 支付响应 URL 输入
  4. 输入一个25字符的随机密码作为 支付响应密码
  5. 输入一个30字符的随机密码作为 MD5 交易密钥
  6. 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_worldpaygf_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

用例:使用"使用确认查询字符串基于另一个提交填充表单"

  1. 用户填写表单A
  2. 用户完成WorldPay结账表单
  3. 用户返回并点击CallbackHandler
  4. CallbackHandler根据确认设置将用户发送到表单B
  5. 用户到达带有合并查询字符串的表单B URL

如果用户在完成表单B之前退出,可以使用ConfirmationHandler::buildUrlFor为用户生成一个一次性、短寿命的URL,以便用户继续填写表单B。

注意

  • URL继续Gravity Forms的确认
  • 获得URL的人将继续确认,不进行身份验证
  • 确认将使用数据库中的最新字段值,这些值可能已更改
  • 不检查支付状态

重定向 URL 获取失败处理

在表单提交后,此插件将订单信息发送到WorldPay,以换取一个重定向URL(WorldPay托管结账表单URL)。

默认情况下,当重定向URL检索失败时

  1. 将条目支付状态标记为失败
  2. 记录错误
  3. 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都处于生产模式(即:不在测试模式)
  • 无法禁用
  • 没有可用的配置选项

编码

必读清单

在开发之前请阅读以下内容

Gravity Forms

Gravity Forms有未记录的隐藏魔法,请阅读其源代码。

作者信息

gf-worldpay是由Itineris Limited创建的项目,由Tang Rufus创建。

完整的贡献者列表可以在这里找到。

反馈

请提供反馈!我们希望尽可能多地在项目中使用这个库。请提交一个问题,指出您喜欢和不喜欢的功能,或者分叉项目并提出建议。没有问题太小。

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

许可

gf-worldpayMIT许可证下发布。