You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Authorize.net遗留支付表单添加Captcha验证

给遗留支付表单添加Captcha验证的PHP实现

情况1:使用Google reCAPTCHA v2(常见第三方Captcha)

在authorize_sim_send.php的最开头插入以下代码,确保支付逻辑执行前先完成Captcha验证:

// 1. 获取前端提交的Captcha响应值
$captchaResponse = $_POST['g-recaptcha-response'] ?? '';

// 2. 调用验证接口校验有效性
$secretKey = '你的reCAPTCHA密钥'; // 替换为你在Google后台获取的密钥
$verifyData = http_build_query([
    'secret' => $secretKey,
    'response' => $captchaResponse,
    'remoteip' => $_SERVER['REMOTE_ADDR']
]);

$verifyResult = file_get_contents(
    'https://www.google.com/recaptcha/api/siteverify',
    false,
    stream_context_create([
        'http' => [
            'method' => 'POST',
            'header' => 'Content-type: application/x-www-form-urlencoded',
            'content' => $verifyData
        ]
    ])
);

$verifyResult = json_decode($verifyResult, true);

// 3. 验证失败则终止流程
if (!$verifyResult['success']) {
    die('验证码验证失败,请返回重试。');
    // 也可跳转回表单页面:
    // header('Location: 表单页面地址.php?error=captcha');
    // exit;
}

注意:替换$secretKey为你实际的reCAPTCHA密钥,前端已能显示Captcha的话,这部分无需额外调整。

情况2:使用自定义本地图片验证码

如果是自己开发的图片验证码,验证逻辑为对比用户输入与Session存储的验证码:

// 1. 获取用户输入和Session中的验证码(统一转小写避免大小写问题)
$userInput = strtolower(trim($_POST['captcha_input'] ?? ''));
$sessionCode = strtolower($_SESSION['captcha_code'] ?? '');

// 2. 校验一致性,验证后销毁Session中的验证码防止重复使用
if (empty($userInput) || $userInput !== $sessionCode) {
    unset($_SESSION['captcha_code']);
    die('验证码错误,请重新输入。');
    // 或跳转回表单:
    // header('Location: 表单页面地址.php?error=captcha');
    // exit;
}

// 验证通过后销毁Session验证码
unset($_SESSION['captcha_code']);

注意:确保你的验证码生成脚本已将正确值存入$_SESSION['captcha_code'],且前端输入框的name属性与$_POST['captcha_input']一致。

核心注意点

  • 验证逻辑必须放在所有支付处理代码之前,拦截无效请求
  • 终止脚本时记得用exit或die,避免后续代码继续执行
  • 错误提示尽量简洁明确,帮助用户快速修正问题

内容的提问来源于stack exchange,提问作者CJ Catalano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 04:22:29