Jump to content
xt:Commerce Community Forum

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.

Link to comment
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.

Link to comment
Share on other sites

  • 1 year later...

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?

Link to comment
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...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...