woocommerce - 结帐失败/不工作

时间:2015-02-24 10:58:16

标签: php wordpress wordpress-plugin woocommerce wordpress-theming

我的woocommerce结帐正在显示,直到今天早上工作正常。但是现在当我尝试提交表单时,我收到了这条消息:"我们无法处理您的订单,请再试一次#34;。我没有改变设置或插件中的任何内容。我最近更新了woocommerce到2.3.5。但是,在那之后一切都很完美。我真的不知道这里发生了什么。我希望有人可以帮助我。

谢谢!

PS:即使我打开结算字段,我也会收到所有内容的错误消息...

_____编辑______

我找到了抛出错误的函数:

if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'woocommerce-process_checkout' ) ) {
    WC()->session->set( 'refresh_totals', true );
    throw new Exception( __( 'We were unable to process your order, please try again.', 'woocommerce' ) );
}

位于351号线的woocommerce / includes / class-wc-checkout.php。

4 个答案:

答案 0 :(得分:4)

我得到了解决方案。随着WooCommerce 2.3.5更新,添加了两个新文件:payment.php&付款method.php。在payment.php中有这一行:

<?php wp_nonce_field( 'woocommerce-process_checkout' ); ?>

不知何故,这条线在我的孩子主题中删除了。

答案 1 :(得分:1)

有人提到他们在使用Woocommerce的GoogleRECAPTCHA插件时遇到了这个问题。他们禁用了它,问题就消失了。 :)

答案 2 :(得分:1)

@SPS if you really are on woocommerce 2.3.5, there should be the file payment.php wp-content/plugins/woocommerce/templates/checkout/

Meanwhile, that's not the actual culprit in my own case; (as there was already

<?php wp_nonce_field( 'woocommerce-process_checkout' );  ?>

there ) It's rather the fact that inside, the process_payment(){} function of my payment plugin, i was returning:

array
(
'result'    => 'success',
'redirect'  => add_query_arg('order', $order->id, add_query_arg('key', $order->order_key, get_permalink(get_option('woocommerce_pay_page_id'))))
);

instead of

array
(
'result'    => 'success',
'redirect'  => add_query_arg('order',$order->id, add_query_arg('key', $order->order_key, get_permalink(woocommerce_get_page_id('pay' ))))
);

Check your code to change that too, and the problem will dissapear. :)

答案 3 :(得分:0)

作为备用修补程序,如果您在暂存中使用自签名SSL证书(或者您的SSL已过期)并且您已选择在结帐视图中强制使用https,则会导致PayPal失败,而这无助于此消息。

你会知道你有这个问题,因为WordPress会不断地让你退出管理员,并强迫你在安全/不安全的手牌发生时重新进行身份验证。