Hallo Community.
Es gibt in diesem Forum einige Threads wo moniert wird, daß nach Abschluß einer Bestellung per
PayPal Kaufabwicklung (Modul
paypal)
oder
PayPal Express (Modul
paypalexpress)
und erfolgreicher Zahlung (
payment_status in DB-Tabelle
paypal 'complete')
der
order_status in der DB-Tabelle
orders nicht gesetzt wird welcher im Backend unter
Erweiterte Konfiguration => Partner => PayPalbei "Bestellstatus OK" (Konfigurations-Konstante
PAYPAL_ORDER_STATUS_SUCCESS_ID) gesetzt ist.
Eine Lösung des Problems wurde nirgends wirklich gegeben.
Nun habe ich mir aus aktuellem Anlass mal die zuständigen Dateien angesehen.
In
/includes/classes/paypal_checkout.php gibt es die Funktion
write_status_history() welche den
orders_status in der DB-Tabelle
orders setzt.
Aufgerufen wird die Funktion jeweils in den Modulen selbst in der Funktion
after_process().
In der Funktion
write_status_history() gibt es folgendes Konstrukt:
if($ack=="SUCCESS" || $ack=="SUCCESSWITHWARNING") {
$o_status = PAYPAL_ORDER_STATUS_PENDING_ID;
} else {
$o_status = PAYPAL_ORDER_STATUS_REJECTED_ID;
}
Dieses müsste, ohne alle Vorgänge und allen Code genauestens analysiert zu haben, nach meiner Meinung so lauten:
if($ack=="SUCCESS" || $ack=="SUCCESSWITHWARNING") {
$o_status = PAYPAL_ORDER_STATUS_SUCCESS_ID; //set right status, noRiddle
} else {
$o_status = PAYPAL_ORDER_STATUS_REJECTED_ID;
}
Zumindest aber müsste weiter unterteilt werden, möchte man z.B. bei
$ack=="SUCCESSWITHWARNING" einen anderen Status setzen als bei
$ack=="SUCCESS".
Fazit:
Der Status den man im Backend bei "Bestellstatus OK" (s.o.) bestimmt hat kann mit dem bisherigen Code gar nicht korrekt gesetzt werden.
Irre ich ?, übersehe ich etwas ?
Vielen Dank für Feedback, zumindest von einigen Wissenden und Fähigen hier im Forum.
Gruß,
noRiddle
Linkback: https://www.modified-shop.org/forum/index.php?topic=32740.0