Hallo ! Derzeit übermittelt mir die Zahlungsart sofortüberweisung nur den Kundennamen und die Kundenummer auf den Überweisungsbeleg/Kontoauszug. Für unsere Buchhaltung benötigen wir zusätzlich die Bestellnummer. Mein erster Ansatz wäre die Datei //engine/connectors/sofort/dopayment.php gewesen um in folgendem Bereich die Anpassung zu machen: /\* Projektdaten setzen \*/ $user\_id = $payment-\>user\_id; $project\_id = $payment-\>projectID; $securitykey = $payment-\>secretKey; $bookingId = substr(md5(uniqid(rand())),0,10); /\* Überweisungsbetreff generieren \*/ $userData = $payment-\>sUser; $zweck1 = $userData["billingaddress"]["customernumber"]."-".$userData["billingaddress"]["firstname"]." ".$userData["billingaddress"]["lastname"]; $zweck1 = preg\_replace("/[^a-zA-Z0-9 -]/","",$zweck1); $zweck2 = $bookingId; $language = $payment-\>sSYSTEM-\>sLanguage; $currency = $payment-\>sSYSTEM-\>sCurrency["currency"]; if (empty($currency)) $currency = "EUR"; $subshop = $payment-\>sSYSTEM-\>\_SESSION["sSubShop"]["id"]; $dispatchID = $payment-\>sSYSTEM-\>\_SESSION["sDispatch"]; $custom = session\_id()."|".$bookingId."|".$payment-\>sSYSTEM-\>sLanguage."|".$payment-\>sSYSTEM-\>sCurrency["id"]."|".$payment-\>sSYSTEM-\>\_SESSION["sSubShop"]["id"]."|".$dispatchID; $shop\_url = $payment-\>sSYSTEM-\>sCONFIG['sBASEPATH']; /\* Security-Hash generieren \*/ $data = array( $user\_id, // user\_id $project\_id, // project\_id '', // sender\_holder '', // sender\_account\_number '', // sender\_bank\_code '', // sender\_country\_id" $value, // amount $currency, // currency\_id $zweck1, // reason\_1 $zweck2, // reason\_2 session\_id(), // user\_variable\_0 $bookingId, // user\_variable\_1 $custom, // user\_variable\_2 $shop\_url, // user\_variable\_3 '', // user\_variable\_4 '', // user\_variable\_5 $securitykey // project\_password ); $data\_implode = implode('|', $data); $hash = md5($data\_implode); /\* Weiterleitungs-URL generieren \*/ $url = "?user\_id=".$user\_id."&project\_id=".$project\_id."&amount=".$value."¤cy\_id=".$currency."&reason\_1=".$zweck1."&reason\_2=".$zweck2."&user\_variable\_0=".session\_id()."&user\_variable\_1=$bookingId&user\_variable\_2={$custom}&hash=".$hash; $url .= '&user\_variable\_3='.urlencode($shop\_url); $url .= "&interface\_version=shopware\_v305"; header ("Location: https://www.sofortueberweisung.de/payment/start".$url);
Kann hier wer helfen, was genau umgestellt werden müsste ohne das ich die Schnittstelle zertrümmere… Ich denke die uservariable 4 + 5 ist ja noch frei… Derzeit kommt der Verwendungszweck so am Kontoauszug an: Kundennummer Vorname Nachname Ideal wäre: Kundennummer Vorname Nachname Bestellnummer Muss auch etwas in der Datei //engine/connectors/sofort/form.php angepasst werden ?? lg klaus
Hi Klaus, soweit ich mich erinnern kann, wird die Bestellnummer erst nach der Zahlung, bei erfolgreicher Bestellung generiert und abgespeichert. Evt. kann man die aber vorher schon irgendwie berechnen?
Hi…Danke…ich habe daran nicht mehr gedacht…somit wieder verworfen…muß wohl eine andere Lösung andenken. lg klaus
[quote=“klausm”]muß wohl eine andere Lösung andenken. [/quote] Wenn dir was eingefallen ist, poste es bitte, Bestellnr. auf dem Kontoauszug wär für den Kunden natürlich ideal, und auch für uns wegen der Abrechnung. Gruß, Patrick
Hi, “dieses Problem ist kein Bug sondern ein Feature”, naja, so oder so ähnlich formulieren Programmierer das ja gerne. Es gibt, wie von Patrick richtig geschrieben, das grundlegende Problem im Design von Shopware das die Bestellnummer erst “nach” der erfolgreichen Zahlung generiert wird. Man kann es mögen oder auch hassen, der Gedanke dahinter ist, das die Bestellnummer schön fortlaufend ist. Anders hättest Du unzählige Lücken in der Bestellnummern Reihenfolge. Ich stehe vor dem selben Problem, nur bisher habe ich keine einfache Lösung für dieses Problem gefunden, den die Bestellnummer gibt es erst “nach” der erfolgreichen Zahlung und nachträglich an den Zahlungsanbieter melden geht nur in den seltensten Fällen. Falls die Zahlungsanbieter es anbieten könnte man eine Autorisierung einholen, dann Shopware die Bestellung abschließen lassen und im Anschluß mit der Bestellnummer das Geld tatsächlich abbuchen. Das Ganze dann am besten noch asynchron, damit der Kunde es nicht mitbekommt und mit einem bulletproof failsafe, weil man will ja nicht erfolgreiche Bestellungen ohne Zahlung haben. Naja, soweit die potentielle Lösung umrissen, nur das sprengt den Rahmen des Forums hier deutlich … Falls Shopware so etwas in 4.0 implementieren möchte, würde ich mich drüber freuen, nur ich glaube nicht wirklich dran… mfg, Holger
Hey Holger, für Shopware 4 haben wir das auf der Pipe - du hattest ja ein Ticket dazu im Trac angelegt. Das ist tatsächlich kein triviales Problem, da ja hier eine Lösung her muss, die potentiell mit allen Zahlungsanbietern kompatibel ist und nicht nur mit solchen, die eine vorherige Authorisierung erlauben. Aber irgendwas wird uns schon einfallen
Als Notlösung könnte man doch abfragen, welches die letzte orderID ist und an den Zahlungsanbieter dann die letzte OrderID + 1 übermitteln. Wird die Zahlung ordnungsgemäß durchgeführt wird im Nachhinein vom Shop die orderID erstellt.