个性化阅读
专注于IT技术分析

woocommerce-结帐失败/不起作用

我的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会不断将你从管理员中注销, 并在发生安全/不安全交接时强制你重新进行身份验证。

赞(0) 打赏
未经允许不得转载:srcmini » woocommerce-结帐失败/不起作用
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏