woocommerce - 结帐 fails/doesn 不工作

woocommerce - checkout fails/doesn't work

我的 woocommerce 结帐正在显示,直到今天早上都运行良好。但是现在,当我尝试提交表单时,我收到了这条消息:"We were unable to process your order, please try again"。我没有更改设置或插件中的任何内容。我最近将 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' ) );
}

这位于 woocommerce/includes/class-wc-checkout.php 的第 351 行。

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

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

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

不知何故,我的子主题中删除了这一行。

作为替代修复,如果您在暂存中使用自签名 SSL 证书(或者如果您的 SSL 已过期)并且您选择在结帐视图中强制使用 https,这将导致 PayPal 失败并出现此问题相当无用的消息。

你会知道你遇到了这个问题,因为 WordPress 会不断地让你从管理员中注销,并在 secure/insecure 切换发生时强制你重新进行身份验证。

@SPS 如果你真的在使用 woocommerce 2.3.5,应该有文件 payment.php wp-content/plugins/woocommerce/templates/checkout/

同时,在我自己的案例中,这不是真正的罪魁祸首; (因为已经有

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

有) 事实上,在我的支付插件的 process_payment(){} 函数中,我返回了:

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

而不是

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

检查您的代码以更改它,问题就会消失。 :)