woocommerce-结帐失败/不起作用



我的wooccommerce结账正在显示,直到今天早上,一切都很好。但现在,当我试图提交表格时,我收到了这样的消息:"我们无法处理您的订单,请再试一次"。我没有更改任何设置或插件。我最近已将wooccommerce更新为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' ) );
}

这位于wooccommerce/included/class-wc-checkout.php中的第351行。

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

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

不知怎的,这句话在我的儿童主题中被删除了。

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

@SPS如果你真的在wooccommerce 2.3.5上,应该有文件payment.phpwp-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' ))))
);

检查你的代码也可以更改,问题就会消失。:)

作为另一种修复方法,如果您在暂存中使用自签名SSL证书(或者您的SSL已过期),并且您选择在结账视图中强制使用https,则会导致PayPal失败,并显示此消息。

你会知道你有这个问题,因为WordPress会不断地将你从管理员中注销,并在任何安全/不安全的切换发生时迫使你重新进行身份验证。

相关内容

最新更新