Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: PayPal order_status automatisch setzen Problem

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    PayPal order_status automatisch setzen Problem
    am: 18. April 2015, 16:17:55
    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 => PayPal
    bei "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:
    Code: PHP  [Auswählen]
    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:
    Code: PHP  [Auswählen]
    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

    webald

    • modified Team
    • Beiträge: 2.795
    Re: PayPal order_status automatisch setzen Problem
    Antwort #1 am: 18. April 2015, 16:59:56
    Wenn ich die Codestelle ansehe, wäre ich Deinre Meinung, aber ... kannst Du mal in einer Problem-DB nachsehen welche Werte in der Tabelle configuration für PAYPAL_ORDER_STATUS_SUCCESS_ID und PAYPAL_ORDER_STATUS_PENDING_ID eingetragen sind?

    includes/modules/payment/paypal.php:
    Code: PHP  [Auswählen]
                    $new_config[] = array('','PAYPAL_ORDER_STATUS_SUCCESS_ID', (($PAYPAL_INST_ORDER_STATUS_SUCCESS_ID) ? $PAYPAL_INST_ORDER_STATUS_SUCCESS_ID : '2'), 111125, 10, 'xtc_get_order_status_name', 'xtc_cfg_pull_down_order_statuses(');
                    $new_config[] = array('','PAYPAL_ORDER_STATUS_PENDING_ID', (($PAYPAL_INST_ORDER_STATUS_PENDING_ID) ? $PAYPAL_INST_ORDER_STATUS_PENDING_ID : '5'), 111125, 11, 'xtc_get_order_status_name', 'xtc_cfg_pull_down_order_statuses(');
     

    In meiner DB stehen da nämlich andere Werte. PAYPAL_ORDER_STATUS_SUCCESS_ID = 5 und PAYPAL_ORDER_STATUS_PENDING_ID = 6.

    Ohne da weiter im Code nachgesehen zu haben, würde ich sagen das sieht komisch aus.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    Re: PayPal order_status automatisch setzen Problem
    Antwort #2 am: 19. April 2015, 18:16:28
    Der Code den du zitierst wird ausgeführt wenn das Modul neu installiert wird.
    Ist es installiert stehen die gesetzten Werte in der DB.
    Die PAYPAL_ORDER_STATUS_SUCCESS_ID ist korrekt gesetzt wie in Erweiterte Konfiguration => Partner => PayPal bei "Bestellstatus OK" bestimmt (was man ja auch im Backend an besagter Stelle sieht, ohne in die DB zu schauen, da der richtige Wert im Dropdown auf selected="selected" steht).

    Du denkst also auch, daß in der Funktion write_status_history() ein Fehler ist ?

    Gruß,
    noRiddle

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.181
    • Geschlecht:
    Re: PayPal order_status automatisch setzen Problem
    Antwort #3 am: 19. April 2015, 22:58:12
    Ich habe das mal in Ticket #462 aufgenommen.

    Grüße

    Torsten

    webald

    • modified Team
    • Beiträge: 2.795
    Re: PayPal order_status automatisch setzen Problem
    Antwort #4 am: 20. April 2015, 09:00:21
    @noRiddle
    wie gesagt ich bin da auch nicht in die Tiefe gegangen, aber so ganz erschließt sich mir diese Codestelle auch nicht. Ich habe jetzt mal den ein oder anderen xt-Clone angesehen, und da sieht das auch so aus. Die Müßten dann doch eigentlich die gleichen Probleme haben.

    Anbei mal die ipn.php für callback/paypal/ipn.php. Mit dieser Version werden die von Paypal zurückgelieferten Daten in ein Logfile geschrieben. Bitte vorher ein Verzeichnis shoproot/paypaltest anlegen. Evtl. bringt das brauchbare Daten.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    Re: PayPal order_status automatisch setzen Problem
    Antwort #5 am: 20. April 2015, 12:14:02
    @Tomcraft
    Merci.

    Ich habe mir mal die entsprechende Code-Stelle aus der /includes/classes/paypal_checkout.php in Gambio-Versionen angeschaut (und da funktioniert die orders_status-Änderung).
    Dort ist die Codestelle anders formuliert aber im Endeffekt so wie ich vermute wie es sein soll:
    Code: PHP  [Auswählen]
    $ack = strtoupper($_SESSION['reshash']['ACK']);
    if($ack != 'SUCCESS') {
        $o_status = PAYPAL_ORDER_STATUS_REJECTED_ID;
    } else {
        $o_status = PAYPAL_ORDER_STATUS_SUCCESS_ID; // <= das ist das Entscheidende, noRiddle
    }

    @webald
    Momentan habe ich leider nicht die Zeit und auch keine wirkliche Testumgebung um zu Logs zu testen, vielleicht jemand anders ?

    Gruß,
    noRiddle

    Bonner

    • Fördermitglied
    • Beiträge: 848
    • Geschlecht:
    Re: PayPal order_status automatisch setzen Problem
    Antwort #6 am: 20. April 2015, 13:14:13
    Hallo,

    ich bau es mal ein..sobald Ergebnisse da sind, melde ich mich.

    Bonner

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    Re: PayPal order_status automatisch setzen Problem
    Antwort #7 am: 20. April 2015, 13:16:42
    Hallo Stadt-Kollege ;-).
    Bitte beachten:
    • Nimm nicht die Gambio-Version sondern die Version aus meinem ersten Post !
    • Der Test macht natürlich nur Sinn wenn du bislang auch keine Order-Status-Änderungen hattest.

    Danke für's Testen.

    Gruß,
    noRiddle

    webald

    • modified Team
    • Beiträge: 2.795
    Re: PayPal order_status automatisch setzen Problem
    Antwort #8 am: 20. April 2015, 14:55:06
    Gerhard hat das wohl schon gelöst und das Ticket geschlossen.

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.181
    • Geschlecht:
    Re: PayPal order_status automatisch setzen Problem
    Antwort #9 am: 20. April 2015, 14:57:38
    Ist in r8166 wie folgt korrigiert worden:

    Code: PHP  [Auswählen]
          $ack = strtoupper($_SESSION['reshash']["ACK"]);
          if ($ack=="SUCCESS") {
            $o_status = PAYPAL_ORDER_STATUS_SUCCESS_ID;
          } elseif ($ack=="SUCCESSWITHWARNING") {
            $o_status = PAYPAL_ORDER_STATUS_PENDING_ID;
          } else {
            $o_status = PAYPAL_ORDER_STATUS_REJECTED_ID;
          }

    Grüße

    Torsten

    Bonner

    • Fördermitglied
    • Beiträge: 848
    • Geschlecht:
    Re: PayPal order_status automatisch setzen Problem
    Antwort #10 am: 20. April 2015, 15:11:15
    @webald
    Das funktioniert nicht..hat bei mir jedoch nix reingeschrieben.

    @noRiddle
    Manchmal neige ich ja zu Leichtsinn und habe das dann einfach mal direkt im Livebetrieb eingebaut.
    ..und bei der kurz darauf erfolgten Bestellung hat das auch funktioniert. Ich schau mal, wie sich das weiterentwickelt, insbesondere bei Abbruch bzw. Ablehnung (was allerdings noch nie vorgekommen ist!).

    Screenshots anbei.
    Grüße auf die andere Rheinseite!

    Bonner

    Bonner

    • Fördermitglied
    • Beiträge: 848
    • Geschlecht:
    Re: PayPal order_status automatisch setzen Problem
    Antwort #11 am: 20. April 2015, 15:13:58
    manchmal ist es wirklich so: gut Ding will Weile haben!  :-D

    Das Problem wird in diversen Threads angesprochen und keiner hat ne Lösung. Und dann klappt alles in 24 Stunden! Cool!
    :thx: an alle!

    Bonner

    webald

    • modified Team
    • Beiträge: 2.795
    Re: PayPal order_status automatisch setzen Problem
    Antwort #12 am: 20. April 2015, 15:28:52
    weil sich einer wie noRiddle hingesetzt und den Code durchsucht hat und dabei eine Idee hatte....

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    Re: PayPal order_status automatisch setzen Problem
    Antwort #13 am: 20. April 2015, 16:27:28
    Naja, ein noRiddle hat sich nicht hingesetzt und den Code durchsucht, zumindest nicht einfach so :-D.
    Du weißt ja wie das ist. Man hat es schon oft gelesen/gehört, will immer mal danach schauen und kommt jedoch zeitlich nicht dazu.
    Dann hat ein Kunde das Problem, man schaut mal genauer und schwupps haben alle etwas davon.

    @Team
    Danke für's schnelle Prüfen und Fixen.

    @Bonner
    Merci für deine Tests.
    Grüße zurück auf die andere (richtige ? :-D) Rheinseite.

    Gruß,
    noRiddle

    Bonner

    • Fördermitglied
    • Beiträge: 848
    • Geschlecht:
    Re: PayPal order_status automatisch setzen Problem
    Antwort #14 am: 20. April 2015, 17:42:15
    Ja, so geht das. Wenn ich auf meine ToDo Liste schaue  :wohow:..aber ich bin ja nicht Dr. Kimble und auf der Flucht!  :-D

    @noRiddle
    Grüße auf die andere Rheinseite (gibt es eigentlich eine richtige?  :mhhh:)..aber ich als Ruhrpottler sehe das sowieso entspannt  ;-)

    Bonner
    7 Antworten
    4164 Aufrufe
    19. November 2014, 16:32:54 von masternr1
    0 Antworten
    2082 Aufrufe
    06. Juli 2011, 19:06:30 von hechicero
    56 Antworten
    3171 Aufrufe
    04. April 2024, 08:29:40 von HaldOn
    34 Antworten
    31895 Aufrufe
    10. März 2020, 12:13:10 von Viper