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

如何检测并自动拦截Origin为Unknown的WooCommerce订单?

解决方案:拦截WooCommerce中Origin为Unknown的订单

一、核心实现逻辑

不用依赖webhooks(webhooks是订单生成后触发,无法提前阻止扣款),直接利用WooCommerce的结账钩子,在订单提交后、支付确认前拦截标记疑似诈骗订单。

二、具体代码实现

将以下代码添加到主题的functions.php文件,或使用Code Snippets这类代码片段插件(避免主题更新丢失代码):

add_action('woocommerce_checkout_process', 'block_unknown_origin_orders');

function block_unknown_origin_orders() {
    // 获取当前会话中的订单Origin信息
    $order_origin = WC()->session->get('order_origin');
    
    // 匹配Unknown Origin的订单
    if ($order_origin === 'Unknown') {
        // 抛出错误提示,阻止订单提交
        wc_add_notice('抱歉,您的订单无法完成提交,请联系客服处理。', 'error');
        
        // 若已生成待支付临时订单,直接标记为失败
        if (isset(WC()->session->order_awaiting_payment)) {
            $order = wc_get_order(WC()->session->order_awaiting_payment);
            if ($order) {
                $order->update_status('failed', '订单Origin为Unknown,判定为疑似诈骗订单,自动拦截');
                WC()->session->__unset('order_awaiting_payment');
            }
        }
    }
}

三、适配说明

如果你的WooCommerce版本中order_origin存储在订单元数据里,可改用woocommerce_checkout_order_created钩子,代码调整如下:

add_action('woocommerce_checkout_order_created', 'mark_unknown_origin_order_as_failed');

function mark_unknown_origin_order_as_failed($order) {
    $order_origin = $order->get_meta('_order_origin');
    if ($order_origin === 'Unknown') {
        $order->update_status('failed', '订单Origin为Unknown,判定为疑似诈骗订单,自动拦截');
        // 阻止支付流程继续
        wc_add_notice('抱歉,您的订单无法完成提交,请联系客服处理。', 'error');
        wp_redirect(wc_get_checkout_url());
        exit;
    }
    return $order;
}

四、额外防护建议

  • 搭配WooCommerce内置的防欺诈规则,对小额订单强制启用邮箱/手机号验证;
  • 定期导出失败订单数据,统计诈骗订单的共性特征(比如IP段、支付卡地区),补充到拦截逻辑中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:19:55