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: MODUL: SOFORT.com Zahlungsmodul für modified eCommerce Shopsoftware

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.147
    • Geschlecht:
    und was ist, wenn jemand den Shop ohne customers_cid betreibt? Oder die customers_cid erst einträgt, wenn der Kunde in der Wawi angelegt ist und somit auch eine Kundennummer existiert? Der default is so völlig korrekt, weil er nämlich immer funktioniert.

    Angeal

    • Fördermitglied
    • Beiträge: 411
    • Geschlecht:
    Alternativ könnte man die Variable customers_cid auch für den Verwendungszweck 2 zur Verfügung stellen. ;-)

    hstdiddi

    • Fördermitglied
    • Beiträge: 16
    Alternativ könnte man die Variable customers_cid auch für den Verwendungszweck 2 zur Verfügung stellen. ;-)

    Hallo,

    auch ich brauche die cid. Ein optionale Auswahl währe da prima.
    Das Modul hat ja eine große Auswahl, nur keine cid.

    Verwendungszweck Zeile 2
    Im Verwendungszweck (maximal 27 Zeichen) werden folgende Platzhalter ersetzt:
    {{order_id}}
    {{order_date}}
    {{customer_id}}
    {{customer_name}}
    {{customer_company}}
    {{customer_email}}

    noch nen schönen Abend an euch.

    awids

    • Experte
    • Beiträge: 3.790
    • Geschlecht:
    Die Variablen können (zumindest bei den Modulen in der Shopversion 2.0) in der

    /includes/external/sofort/classes/SofortLibPayment.php

    ab ca. Zeile 309 erweitert werden:

    Code: PHP  [Auswählen]
        // reason 2
        $this->data['reason_2'] = str_replace(array('{{order_id}}',
                                                    '{{customer_id}}',
                                                    '{{order_date}}',
                                                    '{{customer_name}}',
                                                    '{{customer_company}}',
                                                    '{{customer_email}}'
                                                    ),
                                              array($insert_id,
                                                    $_SESSION['customer_id'],
                                                    strftime(DATE_FORMAT_SHORT),
                                                    $order->customer['firstname'] . ' ' . $order->customer['lastname'],
                                                    $order->customer['company'],
                                                    $order->customer['email_address']
                                                    ),
                                              constant('MODULE_PAYMENT_'.strtoupper($this->code).'_REASON_2'));

    Der Grund, warum die customers_cid nicht als Variable zur Verfügung steht ist der, dass Gästen keine Kundennummer zugewiesen wird. Folglich wird die Variable dann auch nicht gefüllt.

    awids

    • Experte
    • Beiträge: 3.790
    • Geschlecht:
    Sinnig fände ich hier eine direkte Abfrage im Array mit Sprachkonstanten zur Unterscheidung (Code beispielhaft zu Anschauungszwecken und nicht auf Richtigkeit oder Funktionalität überprüft):

    Vorschlag 1: Automatisch im Modul
    Code: PHP  [Auswählen]
    (($_SESSION['customer_cid'] != '') ? 'KONSTANTE_KUNDENNUMMER' . $_SESSION['customer_cid'] : 'KONSTANTE_KUNDEN_ID' . $_SESSION['customer_id'])

    Also:
    Code: PHP  [Auswählen]
        // reason 2
        $this->data['reason_2'] = str_replace(array('{{order_id}}',
                                                    '{{customer_id}}',
                                                    '{{order_date}}',
                                                    '{{customer_name}}',
                                                    '{{customer_company}}',
                                                    '{{customer_email}}'
                                                    ),
                                              array($insert_id,
                                                    (($_SESSION['customer_cid'] != '') ? 'KONSTANTE_KUNDENNUMMER' . $_SESSION['customer_cid'] : 'KONSTANTE_KUNDEN_ID' . $_SESSION['customer_id']),
                                                    strftime(DATE_FORMAT_SHORT),
                                                    $order->customer['firstname'] . ' ' . $order->customer['lastname'],
                                                    $order->customer['company'],
                                                    $order->customer['email_address']
                                                    ),
                                              constant('MODULE_PAYMENT_'.strtoupper($this->code).'_REASON_2'));

    Vorschlag 2: Aktivierbare Option
    Code: PHP  [Auswählen]
    ((SOFORT_USE_CID_INSTEAD == 'true') ? 'KONSTANTE_KUNDENNUMMER' . $_SESSION['customer_cid'] : 'KONSTANTE_KUNDEN_ID' . $_SESSION['customer_id'])

    Also:

    Code: PHP  [Auswählen]
        // reason 2
        $this->data['reason_2'] = str_replace(array('{{order_id}}',
                                                    '{{customer_id}}',
                                                    '{{order_date}}',
                                                    '{{customer_name}}',
                                                    '{{customer_company}}',
                                                    '{{customer_email}}'
                                                    ),
                                              array($insert_id,
                                                    ((SOFORT_USE_CID_INSTEAD == 'true') ? 'KONSTANTE_KUNDENNUMMER' . $_SESSION['customer_cid'] : 'KONSTANTE_KUNDEN_ID' . $_SESSION['customer_id']),
                                                    strftime(DATE_FORMAT_SHORT),
                                                    $order->customer['firstname'] . ' ' . $order->customer['lastname'],
                                                    $order->customer['company'],
                                                    $order->customer['email_address']
                                                    ),
                                              constant('MODULE_PAYMENT_'.strtoupper($this->code).'_REASON_2'));

    Lösung 1 bietet zumindest einen Fallback auf die Kunden-ID, während die Variable in Lösung 2 dann wieder ungefüllt bleibt.

    Nur so als Ansatz. :)

    hstdiddi

    • Fördermitglied
    • Beiträge: 16
    Hallo,

    schönen Dank.
    Ich hatte diese Datei nicht gefunden.
    Ich werde jetzt mal sehen wie ich das umsetzen kann, werde erst mal die customer_id in customer_cid umbenennen.
    Für den die vorgeschlagenen großen Änderungen hab ich nicht genug Ahnung.

    awids

    • Experte
    • Beiträge: 3.790
    • Geschlecht:
    Nichts zu danken. :-) Ich wurschtel gerade für diverse Kunden in so vielen Modul-Dateien rum, weil denen da immer Möglichkeiten fehlen, dass es nicht schwer war, auf die richtige Stelle zu verweisen. (Denn die Datei hatte ich zufällig auch gerade auf.) ;-)

    Wäre lieb, wenn du uns hier mal berichtest, ob und wie es mit deiner Lösung klappt.

    HaldOn

    • Fördermitglied
    • Beiträge: 485
    Mir ist heute (erst) ein Fehler aufgefallen.
    Die "order_id" wird beim Verwendungszweck nicht mit übertragen sondern nur die "customer_id"
    Ergebnis im Verwendungszweck der Zahlung --> "Nr. Kd-Nr. 123456".

    Dies führte bei mir zu unschönen Problemen mit einer Zahlung ...

    - Gateway Version
    - Shop v1.06 rev 4642 SP2
    - Einstellung "Verwendungszweck Zeile 1" "Nr. {{order_id}} Kd-Nr. {{customer_id}}" ausgewählt

    Ist dieser Fehler bereits bekannt?

    HaldOn

    • Fördermitglied
    • Beiträge: 485
    [...]
    Die "order_id" wird beim Verwendungszweck nicht mit übertragen sondern nur die "customer_id"
    Ergebnis im Verwendungszweck der Zahlung --> "Nr. Kd-Nr. 123456".
    [...]

    Es wäre schön, wenn es sich mal jemand von den Erstellern des Moduls ansehen würde, da es hierdurch bei mir zu einem Zahlungsausfall gekommen ist.

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    habe den aktellen Shop v2.0.2.2 rev 10690 mit installiertem Sofortüberweisungsmodul (Classic) laufen. Das schien mir bis heute auch gut zu funktionieren. Da kam jetzt eine Bestellung von einer Kundin rein, die das Gleiche schon vorgestern bestellt hatte + einen weiteren Artikel und das Ganze dieses mal per offener Rechnung. Nach Rücksprache mit ihr, ob sie das gerne alles wirklich 2x haben möchte teilte sie mir mit, dass sie das nicht wolle - die Artikel wären halt noch alle von der letzten Bestellung so im Warenkorb/Checkout gewesen ... .

    Ich habe das jetzt nochmal auf Testbetrieb umgestellt und eine Testbestellung gemacht - und ja, der Artikel war nach erfolgreicher Zahlung und Rückleitung noch im Warenkorb!! Hilfe! Temporäre Bestellung steht im Admin auf JA. Auf NEIN auch getestet und das macht keinen Unterschied. Der Warenkorb bleibt gefüllt.

    Jetzt meine Frage - sollte der Warenkorb nicht leer sein nach erfolgreicher Bestellung/Zahlung per Sofortüberweisung?? Ich denke doch - aber was läuft da falsch? Hat das jemand noch so?

    Buggyboy

    • Fördermitglied
    • Beiträge: 968
    • Geschlecht:
    Hallo!

    In einem andern Post wird das Sofortüberweisung_gateway empfohlen, weil es wohl solche Fehler dort nicht gibt.
    Vielleicht mal ausprobieren.

    LG
    Peter

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    Hallo Peter, das gateway wäre (und war nun auch) mein nächster Schritt gewesen. Ich habe das Modul jetzt getestet und tatsächlich ist der Warenkorb nun endlich leer nach Rückleitung in den Shop. Was mich aber etwas irritiert ist die Rückleitungs-URL. Ist das so richtig mit einer MODsid drin??

    /checkout_payment.php?MODsid=506c1adef798fd0548035db4b32d967a&payment_error=sofort_sofortueberweisung_gateway

    cooler

    • Mitglied
    • Beiträge: 190
    • Geschlecht:
    Order Status steht bei mir auf 0 was muss man machen das es den Status automatisch umstellt?

    Viol

    • Fördermitglied
    • Beiträge: 2.271
    Hallo,
    ich nutze den Shop v2.0.2.2 und das Gateway Modul von Sofort.
    Heute rief mich eine Kundin etwas entvervt an, dass sie gestern mit Sofortüberweisung bestellen wollte, der Vorgang aber abgebrochen wurde (sinngemäß: Bezahlung zur Zeit nicht möglich)..
    Dennoch hat sie aber vom Shop eine Bestellbestätigung erhalten und war nun verständlicher Weise irritiert.

    Warum verschickt der Shop eine Bestätigung, wenn die Zahlung nicht durchgegangen ist?
    In der Log Datei wird auf einen Timeout verwiesen,wenn ich das richtig sehe:

    Code: XML  [Auswählen]
    [2017-07-23 12:50:41]  Request -> <?xml version="1.0" encoding="UTF-8" ?>
    <multipay version="1.0"><su><customer_protection>0</customer_protection></su><amount>20.39</amount><currency_code>EUR</currency_code><reasons><reason>Nr. 9099 Kd-Nr. 7005</reason><reason>MeineDomain Saiten und Z</reason></reasons><success_url>https://www.MeineDomain.com/checkout_process.php?MODsid=abcdefghik12345678</success_url><success_link_redirect>1</success_link_redirect><user_variables><user_variable>https://www.MeineDomain.com/checkout_process.php?MODsid=abcdefghik12345678</user_variable></user_variables><abort_url>https://www.MeineDomain.com/checkout_payment.php?MODsid=abcdefghik12345678&amp;payment_error=sofort_sofortueberweisung_gateway</abort_url><timeout_url>https://www.MeineDomain.com/checkout_payment.php?MODsid=abcdefghik12345678&amp;payment_error=sofort_sofortueberweisung_gateway</timeout_url><notification_urls><notification_url>https://www.MeineDomain.com/callback/sofort/sofort_sofortueberweisung_gateway.php</notification_url></notification_urls><interface_version>modified_MOD_2.0.2.2_v1.00</interface_version><timeout>1140</timeout><project_id>331355</project_id></multipay>
    [2017-07-23 12:50:41]  Response -> <?xml version="1.0" encoding="UTF-8" ?>
    <new_transaction><transaction>146015-331355-59747F81-F78C</transaction><payment_url>https://www.sofort.com/payment/go/12314561231456123456123</payment_url></new_transaction>
    [2017-07-23 12:52:19]  Request -> <?xml version="1.0" encoding="UTF-8" ?>
    <multipay version="1.0"><su><customer_protection>0</customer_protection></su><amount>20.39</amount><currency_code>EUR</currency_code><reasons><reason>Nr. 9100 Kd-Nr. 7005</reason><reason>MeineDomain Saiten und Z</reason></reasons><success_url>https://www.MeineDomain.com/checkout_process.php?MODsid=abcdefghik12345678</success_url><success_link_redirect>1</success_link_redirect><user_variables><user_variable>https://www.MeineDomain.com/checkout_process.php?MODsid=abcdefghik12345678</user_variable></user_variables><abort_url>https://www.MeineDomain.com/checkout_payment.php?MODsid=abcdefghik12345678&amp;payment_error=sofort_sofortueberweisung_gateway</abort_url><timeout_url>https://www.MeineDomain.com/checkout_payment.php?MODsid=abcdefghik12345678&amp;payment_error=sofort_sofortueberweisung_gateway</timeout_url><notification_urls><notification_url>https://www.MeineDomain.com/callback/sofort/sofort_sofortueberweisung_gateway.php</notification_url></notification_urls><interface_version>modified_MOD_2.0.2.2_v1.00</interface_version><timeout>1140</timeout><project_id>331355</project_id></multipay>
    [2017-07-23 12:52:19]  Response -> <?xml version="1.0" encoding="UTF-8" ?>
    <new_transaction><transaction>146015-331355-59747FE3-B46E</transaction><payment_url>https://www.sofort.com/payment/go/1234567894561230</payment_url></new_transaction>

    Nur, warum schickt der Shop eine Bestätigung? Kann ich das ändern?

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.195
    • Geschlecht:
    Re: MODUL: SOFORT.com Zahlungsmodul für modified eCommerce Shopsoftware
    Antwort #104 am: 05. September 2017, 13:20:14
    Das Modul aus Beitrag 1 wurde aktualisiert wegen der Klarna Namens-/Logo-Aktualisierung.

    Grüße

    Torsten