我的woocommerce结帐正在显示, 直到今天早上工作正常。但是现在当我尝试提交表单时, 我收到以下消息:”我们无法处理你的订单, 请重试”。我没有更改设置或插件中的任何内容。我最近将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行。
#1
我找到了解决方案。随着WooCommerce 2.3.5更新, 添加了两个新文件:payment.php和payment-method.php。在payment.php中, 有以下行:
<?php wp_nonce_field( 'woocommerce-process_checkout' ); ?>
不知何故, 此行在我的孩子主题中被删除了。
#2
有人提到他们在Woocommerce中使用GoogleRECAPTCHA插件时遇到了这个问题。他们禁用了它, 问题就消失了。 🙂
#3
@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' ))))
);
检查你的代码也进行更改, 该问题将消失。 🙂
#4
作为备用解决方案, 如果你在登台中使用自签名SSL证书(或SSL过期)并且选择在结帐视图中强制使用https, 则它将导致PayPal失败, 并显示此相当无益的消息。
你会知道你遇到了这个问题, 因为WordPress会不断将你从管理员中注销, 并在发生安全/不安全交接时强制你重新进行身份验证。
评论前必须登录!
注册