Ошибка при оформлении заказа — WordPress

У меня есть эта чрезвычайно странная ошибка, которая случается только тогда, когда люди пытаются сделать заказ. Гости заходят на наш сайт и добавляют вещи в корзину. Затем они приступают к выезду. На кассе, когда они нажимают перейти к PayPal, они получают следующую ошибку: «Мы не смогли обработать ваш заказ, пожалуйста, попробуйте еще раз».. Однако при перезагрузке страницы ошибка исчезает, когда они пытаются перепроверить. Никакие плагины или темы не конфликтуют, так как я проверил их все.

Я выполнил некоторую отладку и заметил, что причина ошибки заключается в функции: wp_verify_nonce() Я сделал дальнейшую отладку и обнаружил, что в первый раз, когда пользователь пытается оформить заказ, вызывается вышеуказанная функция. И возвращает false, потому что одноразовый номер отличается от того, что хэшируется в данный момент. Однако при второй проверке вышеприведенная функция возвращает true, потому что одноразовый номер является правильным. Это означает, что по какой-то причине мой nonce ошибается с первого раза. Кто-нибудь знает почему?

Я получаю эту проблему на следующую функцию:
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' ) );
}

Я старался изо всех сил, чтобы объяснить мою проблему, но кто-нибудь знает, почему мой одноразовый номер неправильный во время проверки в первый раз?

0

Решение

Проблема на самом деле не с wp_verify_nonce() или код, который вы опубликовали.

Работа wp_nonce похожа на номер очереди, так же, как ваш номер обработки в DMV.

Мое лучшее предположение о том, что происходит, — это дополнительный wp_nonce, создаваемый, когда люди проверяют и wp_verify_nonce() получает другой от того, что ожидалось. У меня нет возможности по-настоящему определить, где это происходит, не глядя на кодовую базу.

Если для этих частей не было никакого пользовательского кода, это действительно означает, что существует тонкий конфликт плагинов с WooCommerce. Это может быть даже конфликт с темой.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]