WooCommerce防止重复订单

您所在位置:

有时,客户不小心提交了两次相同的订单,或者 WooCommerce 支付网关出现临时问题或插件冲突。

这可能导致重复收费、退款、扣款、管理成本和糟糕的用户体验。

通过检查同一客户是否在过去 2 分钟内下了相同的已付款订单,我们可以阻止第二次尝试,并显示帮助信息。

如果你也遇到过类似的情况,或者想主动预防,这里有一个快速代码段,你可以添加到你的网站,以避免重复的 WooCommerce 订单。

WooCommerce: 防止重复订单 (1)
WooCommerce: 防止重复订单 (1)

PHP 码段: 如果相同订单在 <2 钟前提交则返回错误 @ WooCommerce Checkout

此代码段使用 woocommerce_checkout_process 与 WooCommerce 结账流程挂钩。目的是防止客户在短时间内意外下达重复订单。

在该函数中,我们首先定义一组参数来查询最近的订单。我们会使用当前结账的账单电子邮件($_POST[‘billing_email’]),查找同一客户最多下过的一个订单(‘limit’ => 1)。

我们还会检查订单是否在最近 2 分钟内创建。我们使用’date_created’ => ‘>’ . ( time() – 2 * MINUTE_IN_SECONDS ) 进行检查,这样就能过滤掉较早的订单。

接下来,我们使用 wc_get_is_paid_statuses(),只考虑已付款状态的订单。这样可以确保我们不会与失败或挂起的订单进行比较。

然后,我们将当前购物车的总金额与订单总金额进行匹配(‘total’ => WC()->cart->get_total( ‘edit’ ) ),以确认这是一个相同的订单。

最后,‘return’ => ‘ids’ 参数只检索订单 ID,从而提高了查询效率。

如果找到匹配的订单,我们会使用 wc_add_notice() 阻止结账并显示错误信息,建议客户等待后再重试。

add_action( 'woocommerce_checkout_process', 'bb_prevent_duplicate_orders' );
 
function bb_prevent_duplicate_orders() {
    $args = [
        'limit' => 1,
        'customer' => $_POST['billing_email'],
        'date_created' => '>' . ( time() - 2 * MINUTE_IN_SECONDS ),
        'status' => wc_get_is_paid_statuses(),
        'total' => WC()->cart->get_total( 'edit' ),
        'return' => 'ids',
    ];
    $orders = wc_get_orders( $args );
    if ( $orders ) {
      wc_add_notice( __( 'It looks like you already placed this order recently. Please wait a minute before trying again.' ), 'error' );
    }
}

在哪里添加自定义代码?

您应将自定义 PHP 代码放在子主题的 functions.php 中,将自定义 CSS 代码放在 style.css 中。

除非您另有报告,否则这些代码仍然有效。要排除冲突,请暂时切换到 Storefront 主题,禁用除 WooCommerce 以外的所有插件,然后再次测试该代码段.

在领英上分享这篇文章
本篇文章内容
    Add a header to begin generating the table of contents

    联系我们

    郑州白帽子网络科技有限公司是一家专业做外贸网站建设,谷歌SEO优化、谷歌SEM推广公司。
    郑州白帽子网络科技微信图
    添加请说明需求
    郑州白帽子

    郑州白帽子

    郑州白帽子是一家提供外贸网站定制和白帽谷歌SEO优化的公司,我们会不定期的分享关于外贸的一些知识,以及如何进行外贸建站和谷歌SEO优化推广。我们的核心价值观是给客户提供价值,通过我们专业的服务让客户获得更多的询盘!了解更多关于外贸、外贸建站谷歌SEO优化推广的细节,欢迎联系我们!

    发表评论

    您的邮箱地址不会被公开。 必填项已用 * 标注

    更多文章
    WooCommerce: 简化免费结账 (1)
    外贸建站

    WooCommerce简化免费结账

    您所在位置:Home外贸建站WooCommerce简化免费结账如果您的 WooCommerce 商店偶尔会提供

    寻找并锁定合适的关键词 1
    外贸建站

    如何优化网站以SEO优化效果

    当您根据当前情况采取战略性方法时,优化网站以提升搜索引擎优化(SEO)的效果会显著提升。。。。

    滚动至顶部

    登陆

    注册