Woocommerce订单密钥未传递给" order_pay"功能。错误消息抱歉,此订单无效且无法付款

时间:2017-12-01 04:58:43

标签: wordpress woocommerce payment-gateway razorpay

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'];

任何解决方案,可能是什么问题?

1 个答案:

答案 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;
}