Jump to content
xt:Commerce Community Forum
Sign in to follow this  
alextrautmann

Zahlungsweise nach Land beschränken

Recommended Posts

Hallo,

Ich möchte Zahlungsweisen je nach Land verfügbar oder nicht verfügbar haben.

Beispiel: Ich möchte Nachnahme nur für Kunden mit Adresse in Deutschland anbieten. Oder: Ich möchte, daß Billpay auch nur für Kunden in Deutschland angeboten wird.

Im XTC Webshop 3 war das kein Problem. Aber mir scheint, im Veyton sind Beschränkungen der Zahlungsweise nach Land nicht einzustellen.

Danke für Deine Hilfe! Liebe Grüße.

Share this post


Link to post
Share on other sites

Kein Problem: Bei der Zahlungsweise gibt es Zahlungs-Gebühren, die nach Zonen (Afrika, EU,.. ) und Ländern getrennt eingerichtet werden können. In der Zahlungsgebühr gibts dann die Auswahl "Zahlungsmodul aktiv".

Ist ein wenig versteckt, funktioniert so aber auch in komplexen Umgebungen.

Die einzige Einschränkung besteht darin, dass die Auswahl grundsätzlich immer nach der Rechnungsadresse getroffen wird - wir brauchten das nach der Lieferadresse, da wurde es dann tricky.

Share this post


Link to post
Share on other sites

Ich muss diesen Thread mal wieder ausbuddeln, da ich genau hiermit grad ein Problem habe.

Folgendes:

Ich habe für die Zahlungsart "Nachnahme" Gebühren derfiniert und zwar so, dass von 0 bis 80.99€ der Aufschlag 8€ beträgt - ab 81€ beträgt er 0€, was soweit auch klappt.

Ich möchte nun allerdings den Zuschlag für Österreich von 0 bis 50.99€ auf 4.20€ setzen und ab 51€ auf 0€, diese Einstellung wird allerdings komplett ignoriert. Bei "Beschränkung auf Zone" habe ich beide Varianten probiert ("EU" und "Keine Zone"), jedoch ohne Erfolg.

Wenn ich aus meiner Konfiguration die EU komplett rausnehme, dann wird die Zahlungsart gar nicht angezeigt, obwohl Österreich alleine definiert ist. Natürlich habe ich als Adresse im Shop Österreich ausgewählt...

Wo liegt das Problem?

Share this post


Link to post
Share on other sites

Wir haben uns nun selbst geholfen und sind der Meinung, dass es sich hierbei um einen Bug in der class.payment.php handelt. Unserer Ansicht nach greift unter Umständen der Filter für die Länder (Funktion: _filterCountry) nicht korrekt, so dass nach dem Filter im Daten-Array immer noch Gebühren-Einträge zur Zone und zum Land vorhanden sind.

Unseren "Bugfix" haben wir nun als Plugin im Hook "class.payment.php:_buildData_filter" eingebaut und zwar mit folgendem Code:


$countryCodeActive = false;
$newCosts = Array();
while(list($key1,$value1) = each($value['costs'])){
if($value1['payment_country_code']!='NULL' && $value1['payment_country_code']!='' && $value1['payment_country_code']!='0'){
$countryCodeActive = true;
$newCosts[] = $value1;
}
}
if($countryCodeActive){
$value['costs'] = $newCosts;
}
[/PHP]

Somit wird dafür gesorgt - sollte eine Gebühr für ein Land angegeben sein - dass die entsprechende Gebühr für die Zone in der sich das Land befindet, entfernt wird und somit nicht mehr greifen kann, wie es ggf. der Fall war.

Ich hoffe, wir haben da nun keinen Denkfehler drin, aber in unseren ersten Tests funktionierte es so wunderbar wie gewünscht/gewollt.

Eine kleine Anmerkung noch:

Unser Ansatz funktioniert natürlich nur, wenn man ihn nach den vorherigen Filtern einbaut. Sollte er direkt in _filterCountry integriert werden, gibt es vermutlich ungewollte Nebeneffekte...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...