Beantwortet

Shopware 6 überträgt falsche Zahlungsart zu Xentral

  • 11 March 2024
  • 6 Antworten
  • 133 Ansichten

Benutzerebene 2
Abzeichen +1

Hallo!

Wir haben Probleme beim Import von Aufträgen, wenn der Kunde nachträglich seine Zahlungsart wechselt.

Hier an einem Beispiel verdeutlicht:
Ein Kunde befindet sich im Check-out und wählt die Zahlungsart “Kauf auf Rechnung”. Aus irgendeinem Grund schlägt der Bezahlvorgang fehl (z. B. schlechte Bonität).
Die Bestellung wird jedoch mit der Zahlart „Kauf auf Rechnung" und dem Status “fehlgeschlagen” in die Shopware Administration übertragen.

In Xentral in den Schnittstelleneinstellungen (Onlineshops) sind die Bezahlstatus „open;paid;authorized“ für den Auftragsimport freigegeben. Das passt auch alles so weit.

In der Administration von Shopware ist bei jeder Zahlungsart die Option „Zahlartwechsel nach Bestellabschluss erlauben“ aktiviert. D. h. der Kunde kann den Check-out mit einer anderen Zahlart abschließen. Ändert der Kunde jetzt die Zahlungsart auf z. B. Vorkasse, wird die ursprüngliche Bestellung überschrieben. In Shopware passt alles. Der Auftrag ist mit der richtigen Zahlart und dem richtigen Status gespeichert.
Die Bestellung wird nach dem Zahlartwechsel zu Xentral übertragen, allerdings nicht mit der geänderten, sondern mit der ursprünglichen fehlgeschlagenen Zahlungsart.

Im Importprotokoll des Auftrags steht auch Kauf auf Rechnung.

Daraus ergeben sich falsche Versandprozesse, da Kauf auf Rechnung direkt als bezahlt in Xentral landet und versendet wird. Vorkasse jedoch wird als offen importiert und erst versendet, wenn der Zahlungseingang verknüpft wurde.
Hat jemand ähnliche Probleme und hat das irgendwie in den Griff bekommen?

icon

Beste Antwort von Christian H von digitalXL 12 March 2024, 09:14

Original anzeigen

6 Antworten

Benutzerebene 7
Abzeichen +3

@AxVDB das ist in meinen Augen ein alter bekannter Bug. Führt vor allem wenn man mit Sammel Debitoren zu erheblichen Problemen. Ich würde dir dringend empfehlen, ein Ticket bei xentral zu eröffnen. Der Grund ist, dass in der order xml zwei Zahlungsweisen übermittelt werden. Die Erste, die nicht geklappt hat und die Zweite, die geklappt hat. 

Benutzerebene 5
Abzeichen +1

Ich bin gespannt, ob sas bei der neuen Schnittstelle behoben wurde. 

Benutzerebene 2
Abzeichen +1

@Christian Vielen Dank für deinen Hinweis. Sollte ich stichhaltige Informationen von Xentral bekommen, gebe ich hier ein Update.

Benutzerebene 2
Abzeichen +1

Also laut Xentral soll das Feature im neuen Shopimporter berücksichtigt werden.

Da andere Kunden das über ein Smarty-Template im Shopimporter lösen, war Xentral so nett und hat mir folgende Infos zur Verfügung gestellt:


“Da wir hier in diesem Fall schon eine Vorlage haben, kann ich diese gerne zur Verfügung stellen, bitte aber um Verständnis, das wir hier nicht in voller Tiefe unterstützen können.
 
Um das Snippet zu aktivieren, in deinem SW6 Shopimporter füge es im Reiter Smarty hinzu, füge alle paymentMethodIDs in das ifStatement hinzu und aktiviere es im Anschluss über “Warenkorb transformieren aktiv”, speichern.
 
Die PaymentMethodIds findest du in deinem SW6 Shop bei deinen Zahlungsarten oben in der URL, wenn du diese in Shopware6 geöffnet hast.”

?name=image.png

 

<?xml version="1.0" encoding="UTF-8"?><xml>
{assign var=transactions value=$cart->transaction_data->data}
{Save all transactions with dates in array}
{foreach key=transKey item=pmethod from=$transactions}
{append var=trans value=$pmethod->attributes->paymentMethodId index=$pmethod->attributes->createdAt|substr:0:19}
{/foreach}
{Test output for debugging - please remove in production environment}
{$trans|@print_r}
{Sort the dates and save the latest one}
{$temp=''}
{foreach key=tkey item=titem from=$trans}
{if !empty($temp)}
{if $tkey > $temp}
{$temp = $tkey}
{/if}
{else}
{$temp = $tkey}
{/if}
{/foreach}
{Set the correct paymentMethodID}
{You need to add all PaymentMethodIDs from your Shopware 6 Shop to the IF-Statement}
{$zahlmethode=''}
{foreach key=transKey item=pmethod from=$transactions}
{if $pmethod->attributes->createdAt|substr:0:19 == $temp}
{if $pmethod->attributes->paymentMethodId == 8cd9c945dc9b4c5f98a5169431096e58}
{$zahlmethode='Rechnung'}
{elseif $pmethod->attributes->paymentMethodId == 814d55e34d3a4e5ebec15ec7cb538271}
{$zahlmethode='Vorkasse'}
{elseif $pmethod->attributes->paymentMethodId == 4ee5eef452dc4e858b4673c425ec1c2a}
{$zahlmethode='Nachnahme'}
{elseif $pmethod->attributes->paymentMethodId == b0ba273819d346e09eb5531f93030a67}
{$zahlmethode='PayPal'}
{/if}
{/if}
{/foreach}
<zahlungsweise>{$zahlmethode}</zahlungsweise>
</xml>
 

Wir haben das noch nicht implementiert, weil wir das lieber sauber von unserer Partneragentur machen lassen. Ich halte euch aber auf dem Laufenden, wenn es so weit ist und es funktioniert hat.

Hallo!

kann ich fragen wie haben Sie dieses Problem gelöst?

Also laut Xentral soll das Feature im neuen Shopimporter berücksichtigt werden.

Da andere Kunden das über ein Smarty-Template im Shopimporter lösen, war Xentral so nett und hat mir folgende Infos zur Verfügung gestellt:


“Da wir hier in diesem Fall schon eine Vorlage haben, kann ich diese gerne zur Verfügung stellen, bitte aber um Verständnis, das wir hier nicht in voller Tiefe unterstützen können.
 
Um das Snippet zu aktivieren, in deinem SW6 Shopimporter füge es im Reiter Smarty hinzu, füge alle paymentMethodIDs in das ifStatement hinzu und aktiviere es im Anschluss über “Warenkorb transformieren aktiv”, speichern.
 
Die PaymentMethodIds findest du in deinem SW6 Shop bei deinen Zahlungsarten oben in der URL, wenn du diese in Shopware6 geöffnet hast.”

?name=image.png

 

<?xml version="1.0" encoding="UTF-8"?><xml>
{assign var=transactions value=$cart->transaction_data->data}
{Save all transactions with dates in array}
{foreach key=transKey item=pmethod from=$transactions}
{append var=trans value=$pmethod->attributes->paymentMethodId index=$pmethod->attributes->createdAt|substr:0:19}
{/foreach}
{Test output for debugging - please remove in production environment}
{$trans|@print_r}
{Sort the dates and save the latest one}
{$temp=''}
{foreach key=tkey item=titem from=$trans}
{if !empty($temp)}
{if $tkey > $temp}
{$temp = $tkey}
{/if}
{else}
{$temp = $tkey}
{/if}
{/foreach}
{Set the correct paymentMethodID}
{You need to add all PaymentMethodIDs from your Shopware 6 Shop to the IF-Statement}
{$zahlmethode=''}
{foreach key=transKey item=pmethod from=$transactions}
{if $pmethod->attributes->createdAt|substr:0:19 == $temp}
{if $pmethod->attributes->paymentMethodId == 8cd9c945dc9b4c5f98a5169431096e58}
{$zahlmethode='Rechnung'}
{elseif $pmethod->attributes->paymentMethodId == 814d55e34d3a4e5ebec15ec7cb538271}
{$zahlmethode='Vorkasse'}
{elseif $pmethod->attributes->paymentMethodId == 4ee5eef452dc4e858b4673c425ec1c2a}
{$zahlmethode='Nachnahme'}
{elseif $pmethod->attributes->paymentMethodId == b0ba273819d346e09eb5531f93030a67}
{$zahlmethode='PayPal'}
{/if}
{/if}
{/foreach}
<zahlungsweise>{$zahlmethode}</zahlungsweise>
</xml>
 

Wir haben das noch nicht implementiert, weil wir das lieber sauber von unserer Partneragentur machen lassen. Ich halte euch aber auf dem Laufenden, wenn es so weit ist und es funktioniert hat.

 

Benutzerebene 7
Abzeichen +2

Hallo @KrissU ,

gerne stellen wir auch euch das Template zur Verfügung! Wende dich dazu gerne an mich/ accm@digitalxl.de.

Vielen Dank im Voraus und viele Grüße,

Matthias von digitalXL

Antworten