2016-06-29 5 views
0

私はこの非常に奇妙なエラーが発生するのは、ユーザーが注文しようとしたときだけです。ゲストは私達のサイトに来て、カートにものを追加します。その後、彼らはチェックアウトに行きます。チェックアウト時にクリックしてpaypalに進むと、次のエラーが表示されます。"注文を処理できませんでした。もう一度お試しください。"。しかし、ページを再ロードすると、再チェックアウトしようとするとエラーが消えてしまいます。私はすべてをチェックしたので、プラグインやテーマが矛盾していません。チェックアウト時のエラー - Wordpress

私はいくつかのデバッグを行いましたが、エラーがスローされる理由は関数のためです:wp_verify_nonce()私はいくつかのデバッグを行い、ユーザーが上記の機能を呼び出すことをチェックアウトしようとしました。 nonceは現在ハッシュされているものと比較して異なるため、falseを返します。しかし、2番目のチェックアウトでは、上記の関数はノンスが正しいので真を返します。これは何らかの理由で私のノンスが初めて間違っていることを意味します。なぜ誰が知っていますか?

私は次の関数でこの問題を取得しています。次のコマンドを実行すると process_checkout()

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

は、私は私の問題を説明するために全力を試みたが、私のnonceがチェックアウト時に間違っている理由は誰もが知っています初めて?

答えて

0

問題は実際にwp_verify_nonce()または投稿したコードではありません。

wp_nonceの仕組みは、DMVの処理番号と同様に、キュー番号に似ています。

何が起こっているのか、私の最高の推測では、人々のチェックアウト時に余分なwp_nonceが作成され、wp_verify_nonce()は予想外のものを受信して​​います。コードベースを見なくてもどこで起きているのかを本当に特定する方法はありません。

これらの部分に対してカスタムコードが実行されていない場合は、実際にはWooCommerceとの微妙なプラグイン競合があることを意味します。それはテーマとの矛盾でさえあり得る。

+0

私のテーマかもしれません。私はおそらく何か探しているはずですか? woocomerceに関連する唯一の他のプラグインは、woocheckoutです。 – Danny

+0

一時的にプラグインを無効にして、問題が解決しないかどうかを確認したいと思います。また、問題の原因を特定するために、別のテーマを一時的に使用しようとしています。 –

+0

また、 'wp_nonce'が多くの目的で使用されているので、問題を引き起こしているWooCommerceを処理するプラグインはありません。 –

関連する問題