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

如何安全地将WordPress Gravity Forms中的价格值传递到PHP代码?

安全传递Gravity Forms价格至支付平台的解决方案

我完全懂你的顾虑——直接从前端表单字段取价格确实太容易被篡改了,用户随便用浏览器开发者工具就能改HTML里的字段值,这绝对是个安全漏洞。咱们得换个思路:彻底抛弃前端传递的价格,从Gravity Forms后台计算的可靠数据里取真实金额,这样就能从根源上解决篡改问题。

下面给你两个靠谱的方案,都是基于后端验证的:

方案1:直接用Gravity Forms内置的订单总价

Gravity Forms本身会自动计算订单的最终金额(包含产品价格、优惠券折扣、税费等),这个值会存在提交的$entry对象里,而且是后台生成的,前端用户根本碰不到。你可以直接用这个值:

add_action('gform_after_submission', 'link_to_payment', 10, 2);
function link_to_payment($entry, $form) {
    // 取出后台计算好的订单总金额,这个值绝对安全
    $total_price = $entry['payment_amount'];
    
    // 先做个基础验证:金额不能为负或者零
    if ($total_price <= 0) {
        wp_die('无效的订单金额,请重新提交');
    }
    
    // 用WordPress官方的wp_redirect跳转,比原生header更稳妥
    $payment_url = add_query_arg('price', $total_price, 'http://www.******.***/test.php');
    wp_redirect($payment_url);
    exit();
}

这里的payment_amount是Gravity Forms的标准字段,只要你的表单里有产品/价格字段,提交后这个值就会自动生成,完全不需要依赖前端提交的任何价格数据。

方案2:手动重新计算价格(双重验证)

如果你的表单有自定义的价格逻辑,或者你想更严谨一点,可以在后端重新计算一遍价格,和Gravity Forms生成的金额做对比,确保没有被篡改:

add_action('gform_after_submission', 'link_to_payment', 10, 2);
function link_to_payment($entry, $form) {
    // 假设你的表单里,6.1是数量字段,单价你可以从设置或产品字段里取
    $quantity = rgar($entry, '6.1');
    $unit_price = 150; // 比如你的商品单价是150元
    
    // 手动计算总金额
    $calculated_total = $quantity * $unit_price;
    
    // 和Gravity Forms生成的payment_amount对比,不一致就拦截
    if ($calculated_total != $entry['payment_amount']) {
        wp_die('订单金额验证失败,可能存在篡改行为');
    }
    
    // 跳转至支付页面
    $payment_url = add_query_arg('price', $calculated_total, 'http://www.******.***/test.php');
    wp_redirect($payment_url);
    exit();
}

这个方案相当于做了双重验证,就算有意外情况,也能确保传递的价格是正确的。

额外的安全小贴士

  • 尽量不要用URL参数传递价格,最好用POST请求把金额传到支付页面,或者在支付页面通过订单ID从数据库里取真实金额(更安全)
  • 别忘了在支付平台的回调接口里再次验证金额!这是最后一道防线,确保用户实际支付的金额和订单金额完全一致
  • 用wp_redirect代替原生的header函数,因为它会处理WordPress的输出缓冲,避免出现“headers already sent”的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:17:40