当前位置: 首页 > 知识库问答 >
问题:

Woocommerce for Wordpress:如何修改订单号/id?

施越彬
2023-03-14

我已经将WooCommerce应用到我的网店,并连接了一个CorvusPay网关进行在线支付。

现在我们遇到的问题是,Corvus要求我的订单号包含字符(大写和小写)以及数字。

我在Wordpress中看到并尝试了许多插件和过滤器,了解如何更改我的订单号,但在订单处理并发送到Corvus的过程中,订单号仍然是原来的post ID。

我知道WooCommerce使用Wordpress帖子ID来创建初始订单号,但是我如何改变这个?

如何修改WooCommerce,使其使用特定的订单号生成方法,即我希望订单号为“Kr-12345”,而不是“12345”。

我需要一种方法来改变它的数字生成方法,而不是使用像顺序数字这样的插件,因为这只会改变我Wordpress页面中的数字。

共有2个答案

萧和同
2023-03-14

这看起来像是网关开发人员未正确实现网关的另一种情况。对于我的回答,我假设您使用的是CorvusPay WooCommerce集成。

如果您使用classes.php中的process_payment()函数,您将看到插件每次都将订单的实际post_id发送到网关:

/**
 *  This method accepts payment request initiated by user, and redirects
 *  him to CorvusPay IPG.
 * @param int $order_id
 * @return array
 */
public function process_payment($order_id) {
    // Load options
    $options = $this->_getOptions();
    $checkout_page_id = $options[CpsiKeys::OPTION_CHECKOUT_PAGE_ID];

    return array(
        'result' => 'success',
        'redirect' => add_query_arg('order_id', $order_id, get_permalink($checkout_page_id))
    );
}

这意味着无论你尝试什么技巧,如果没有修改这个函数,你都无法克服这个问题,因为插件总是发送错误的信息(或者至少是错误的格式)。

对此,有许多修复程序:

  1. (推荐)请插件开发人员在结帐的设置页面中添加一个字段,让用户可以选择发送带前缀的订单id。

-

/**
 *  This method accepts payment request initiated by user, and redirects
 *  him to CorvusPay IPG.
 * @param int $order_id
 * @return array
 */
public function process_payment($order_id) {
    // Load options
    $options = $this->_getOptions();
    $checkout_page_id = $options[CpsiKeys::OPTION_CHECKOUT_PAGE_ID];

    return array(
        'result' => 'success',
        'redirect' => add_query_arg('order_id', 'ABx' . $order_id, get_permalink($checkout_page_id))
    );
}

其中ABx是您的前缀。

科达

宇文迪
2023-03-14

您可以使用woocmerce\u order\u numberhook来过滤您想要的值。本指南介绍如何使用它简单地添加前缀和后缀。

add_filter( 'woocommerce_order_number', 'change_woocommerce_order_number' );

function change_woocommerce_order_number( $order_id ) {
    $prefix = 'VK/';
    $suffix = '/TS';
    $new_order_id = $prefix . $order_id . $suffix;
    return $new_order_id;
}

看来这能满足你的要求。如果不需要,您可以删除后缀,或者对$new\u order\u id的格式进行任何必要的调整。

另一件需要记住的事情是,如果您使用PayPal for WooCommerce之类的插件,它可以选择内置发票前缀。

 类似资料:
  • 说明 此消息用于确认或取消一个预订单 请求地址 http://api.dc78.cn/Api/bk_state 请求方式 GET 请求参数 参数 参数名称 必填 描述 范例 id 预订单编号 state 状态 目前取值有两个:1,确认预定,-1,取消预订 op 操作员 可选 table 预订桌台 可选 返回 status:1-成功,0-失败 请求方式 INI 请求参数 [action] 描述 ac

  • 登录企业管理-订阅号-找到要编辑的订阅号进行相应操作

  • 问题内容: 我想让我的PHP应用程序标有它使用的修订号,但是我不想使用CruiseControl或更新文件并每次都上传它。我该怎么办? 问题答案: SVN关键字不是一个好的解决方案。正如其他人指出的那样,在文件中添加$ Revision $仅会影响 特定文件 ,该 文件 可能不会长时间更改。 记住在每次提交之前“编辑”文件(通过添加或删除空白行)是没有意义的。您也可以手动输入修订。 做到这一点的一

  • 我正在尝试将svn修订号添加到清单文件中。我的根pom里有这个。xml: 我试图在我的耳朵里加入svn修订版pom.xml: 我没有得到任何版本的MANIFEST文件。知道我做错了什么吗?

  • 我有一个项目,我在模型中使用SQLAlchemy,并尝试集成Alembic进行迁移。当我更改模型时,一切都按预期进行,Alembic看到模型已经更改- 但是当我没有改变模型中的任何东西并且我使用相同的命令时: 修订版给我“空”修订版文件,如下所示: 这个文件的目的是什么?当alembic revision--autogenerate看不到任何更改时,我可以阻止创建这个“空文件”吗?要比较使用Dja

  • 我需要将Woocommerce订单号从4位改为5位。我知道我可以用这个来做前缀或后缀 但是我怎样才能更改位数呢?