Woocommerce订单失败并显示错误消息,并使用razorpay支付gatway。
很抱歉,此订单无效且无法付款。
下订单时,生成pay_url,如下所示
https://dev-xyz.pantheonsite.io/checkout/order-pay/6339/?key=wc_order_5b421123a4g1r
但是在" order_pay"功能在" WC_Shortcode_Checkout "抛出错误如下
很抱歉,此订单无效且无法付款。
来自例外
throw new Exception( __( 'Sorry, this order is invalid and cannot be paid for.', 'woocommerce' ) );
深入研究这个问题,woocommerce期待来自 $ _ GET 的订单密钥
$order_key = $_GET['key'];
任何解决方案,可能是什么问题?
答案 0 :(得分:1)
作为解决方案解决方案:
if($order_key === ''){
$order_key = get_post_meta( $order_id, '_order_key', true);
}
如果无法从$ _GET中获取上面附加代码中的值,该代码是 D:\ MAMP \ htdocs \ webiste \ wp-content \ plugins中类WC_Shortcode_Checkout 的一部分\ woocommerce \ includes \ shortcodes \ class-wc-shortcode-checkout.php 将解决这个问题。
} catch ( Exception $e ) {
wc_add_notice( $e->getMessage(), 'error' );
}
} elseif ( $order_id ) {
// Pay for order after checkout step
$order_key = isset( $_GET['key'] ) ? wc_clean( $_GET['key'] ) : '';
$order = wc_get_order( $order_id );
if($order_key === ''){
$order_key = get_post_meta( $order_id, '_order_key', true);
}
if ( $order && $order->get_id() === $order_id && $order->get_order_key() === $order_key ) {
另一个可能的根本原因,问题可以在Nginx配置上。默认情况下,NGINX配置中可能会遗漏查询sting,这也可能导致在$ _GET中发送值时出现问题
location / {
try_files $uri $uri/ /index.php?$query_string;
}