Habe fast das gleiche Problem mit PayPal. Und zwar:
Ich möchte vor der Veröffentlichung der Subseite
subpage_success.html und nachdem der Kunde bei PayPal etwas gemacht hat, den Bestellstatus überprüfen und falls der Kunde wirklich bezahlt hat (PayPal-Status "Completed"), ihm die Gegenleistung auf der Seite
subpage_success.html bringen. Auf der Seite
checkout.success.php, die kurz vor der Seite
subpage_success.html ausgeführt wird, habe ich durch meinen eigenen Plugin
(eben hier 'module_checkout.php:success') Bestellstatusüberprüfung eingebaut (
38 - bei mir bedeutet Completed, $success_order - Object von der Subseite
checkout.success.php).
PHP-Code:
function check() {
global $success_order;
//38 - bei mir bedeutet Completed
if ($success_order->order_data['orders_status_id'] == 38) {
...
}
}
Obwohl die Bezahlung erfolgreich war, bekomme ich an der Stelle folgendes Ergebnis: $success_order->order_data['orders_status_id'] =
16, das heißt, Bestellstatus scheint zu diesem Moment den Wert "Offen" zu haben. Field "orders_status" aus der Tabelle "xt_orders" von der Datenbank zum Moment der Status-
Prüfung bringt das gleiche Resultat.
Am Ende des Vorgangs, wenn die Seite
subpage_success.html schon veröffentlicht war, steht in der Datenbank richtig
38. Wenn ich die Bestellstatusabfrage durch "Aktualisieren" des Browsers widerhole, bringt $success_order->order_data['orders_status_id'] auch richtig
38.
Anscheinend benutze ich falsche Variable für die Statusabfrage. Profis, bitte, Hilfe!
P.S. Moneybookers hat im Shop fast den gleichen Programmablauf (Programmstruktur), aber funktioniert reibungslos.