Sign in to follow this  
Followers 0
alextrautmann

Zahlungsweise nach Land beschränken

5 posts in this topic

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0