我已经在我的网上商店实施了WooCommerce,并连接了一个CorvusPay网关进行在线支付。
现在我们遇到的问题是Corvus要求我的订单号包含字符(大写和小写)以及数字。
我已经看过并尝试了很多关于如何在Wordpress中更改订单号的插件和过滤器,但在处理订单并将其发送到Corvus时,该号码仍然是旧邮政ID。
我知道WooCommerce使用Wordpress帖子ID来创建初始订单号,但我该如何更改?
如何修改WooCommerce以便它使用特定的订单号生成方法,即我希望订单号是例如"氪12345"和不" 12345"。
我需要一种方法来改变它的数字生成方法,而不是使用顺序订单号这样的插件,因为这只会改变我的Wordpress页面中的数字。
答案 0 :(得分:0)
您可以使用woocommerce_order_number
挂钩来根据需要过滤值。 This guide解释了如何使用它来简单地添加前缀和后缀。
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_order_id的格式进行必要的调整。
要记住的另一件事是,如果您使用的是PayPal for WooCommerce这样的插件,则可以选择设置内置的发票前缀。
答案 1 :(得分:0)
这看起来像网关开发人员没有正确实现网关的另一种情况。对于我的回答,我假设您正在使用CorvusPay WooCommerce Integration。
如果你在 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))
);
}
这意味着无论你尝试什么技巧,如果不修改此函数,你将无法克服这个问题,因为插件总是发送错误的信息(或者至少以错误的格式)。
对此有很多修正:
-
/**
* 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
是您的前缀。
幸