2016-06-29 12 views
0

Ich habe diesen extrem seltsamen Fehler, der nur passiert, wenn Leute versuchen zu bestellen. Gäste kommen auf unsere Seite und fügen Sachen in ihren Warenkorb hinzu. Dann gehen sie zur Kasse. Beim Checkout, wenn sie auf Paypal klicken, erhalten sie den folgenden Fehler: "Wir konnten Ihre Bestellung nicht verarbeiten, bitte versuchen Sie es erneut.". Beim erneuten Laden der Seite ist der Fehler jedoch verschwunden, wenn sie versuchen, erneut zu prüfen. Keine Plugins oder Themen sind widersprüchlich, da ich alle überprüft habe.Fehler beim Auschecken - Wordpress

Ich habe einige Debugging und ich bemerkte, dass der Grund, warum der Fehler ausgelöst wird, ist wegen der Funktion: wp_verify_nonce() Ich habe einige weitere Debugging und fand heraus, dass während der ersten Zeit der Benutzer versucht, die oben genannte Funktion ausprobiert wird aufgerufen. Und gibt false zurück, weil die Nonce im Vergleich zum aktuellen Hashwert anders ist. Bei der zweiten Überprüfung gibt die obige Funktion jedoch wahr zurück, weil die Nonce korrekt ist. Dies bedeutet, dass mein Nonce beim ersten Mal falsch ist. Weiß jemand warum?

Ich erhalte dieses Problem auf die folgende Funktion: process_checkout() Wenn der folgende Befehl ausgeführt wird:

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

ich mein Bestes versucht, mein Problem zu erklären, aber nicht jeder wissen, warum meine nonce während der Prüfung falsch ist zum ersten Mal?

Antwort

0

Das Problem ist nicht wirklich mit wp_verify_nonce() oder den Code, den Sie gebucht haben.

Der Weg wp_nonce funktioniert wie eine Warteschlangennummer, genau wie Ihre Bearbeitungsnummer am DMV.

Meine beste Vermutung auf, was passiert, ist ein extra wp_nonce erstellt wird, wenn Menschen Kasse und wp_verify_nonce() erhält einen anderen als erwartet. Es gibt keine Möglichkeit für mich, wirklich zu erkennen, wo es passiert, ohne auf die Codebasis zu schauen.

Wenn kein benutzerdefinierter Code für diese Teile erstellt wurde, bedeutet das, dass es einen subtilen Plugin-Konflikt mit WooCommerce gibt. Es könnte sogar ein Konflikt mit dem Thema sein.

+0

Könnte möglicherweise mein Thema sein. Alles was ich suchen sollte? Das einzige andere Plugin, das wir verwenden, das mit woocomerce verwandt ist, ist woocheckout. – Danny

+0

Ich würde versuchen, das Plugin vorübergehend zu deaktivieren und festzustellen, ob das Problem weiterhin besteht. Auch würde ich versuchen, ein anderes Thema vorübergehend zu verwenden, um zu identifizieren, was das Problem verursacht. –

+0

Beachten Sie auch: Es könnte Plugins sein, die nichts mit WooCommerce zu tun haben, die das Problem verursachen, weil 'wp_nonce' für viele Zwecke verwendet werden. –

Verwandte Themen