PDA

Shop Support News Archive - Shopbetreiber News -> Forum : xt eCommerce Templates Module SEO Support: Shop - Probleme Mit Der Send.php


useeme2ce
17.08.2006, 01:13
Hallo liebes Forum,

hatte schon mal einen account hier - aber er ist jetzt weg... egal ;-)

Meine Frage:
Ich will für meinen Shop das Sparkassen-Payment-Modul verwenden. Das klappt auch ganz gut, allerdings will ich es auch mehrsprachig machen. Dazu brauch ich im "Rattenschwanz" am Infos, die an die Sparkasse gesendet werden, auch eine Übergabe der Sprache (also german oder english).

Leider wird die Language-Variable nur bis zur "checkout-confirmation.php" mitgeschleift... dann ist sie weg, und lässt sich auch in der send.php nicht mehr aufrufen.

Hat jemand eine Idee, wo die Sprach-Variable in der Zwischenzeit "geblieben" ist, bzw. wie ich sie in der send.php wieder aus der SessID rausbekomme, damit ich sie an den Server der Spaßkasse übergeben kann??

Jede Hilfe ist willkommen ;-)

Gruß, und Danke,
Manuel

TechWay
17.08.2006, 01:21
Moin Manuel

$_SESSION['languages_id']

geht dies nicht?

Gruß
Steffen

useeme2ce
17.08.2006, 01:39
Naja, das Problem ist, wie gesagt, dass in der send.php einige Variablen nicht mehr "ankommen". z.B.:
----------------------------
$basket = $_SESSION['customer_id'];
$order = date("YmdHis");
----------------------------
gibt nix mehr aus (scheint aber nicht zu stören) g

In der checkout_confirmation.php wird die Sprache nochmal so reingeholt:
----------------------------
$smarty->assign('language', $_SESSION['language']);
----------------------------

Wenn ich also o.g. in die send.php eintrage, passiert nix. Meine Vermutung - irgendeine Datei ist zwischen checkout und send "zwischengeschaltet", wo ich die Lösung finde. Aber welche ist das... ich find sie einfach nicht ;-((

Hier meine send.php, viellenicht hilft das?

//<?
// $basket = $_SESSION['customer_id'];
// $order = date("YmdHis");
// $amount = number_format($total,'2',',','');
// $mac_data = $amount.$basket.'sslform'.'EUR'.$order.$paymentmet hod.'handelwwsslpreauthorization';
// function hmac ($key, $data) {
// $b = 64; // byte length for SHA-1
// if the key has more than 64 bytes, hash it
// if (strlen($key) > $b) {
// $key = pack("H ",sha1($key));
//}
// $key = str_pad($key, $b, chr(0x00));
// $ipad = str_pad('', $b, chr(0x36));
// $opad = str_pad('', $b, chr(0x5c));
// $k_ipad = $key ^ $ipad ;
// $k_opad = $key ^ $opad;
// return sha1($k_opad . pack("H ",sha1($k_ipad . $data)));
// }
// $mac = hmac("xxx",$mac_data);
// header //("Location:https://testsystem.sparkassen-internetkasse.de/vbv/mpi_legacy?
//amount=$amount&basketid=$basket&command=sslform&currency=EUR&orderid=
//$order&paymentmethod=$paymentmethod&sslmerchant=handelwwssl&transactiontype=
// preauthorization&mac=$mac");
// echo $mac_data;
// ?>

(natürlich ohne // - aber hier zur Sicherheit eingefügt)

dazze
17.08.2006, 09:18
''>ZITAT(useeme2ce @ Aug 17 2006, 1:39) 8987
//<?
// $basket = $_SESSION['customer_id'];
[/b]

Hi,

nur zum Verständnis ... wird deine send.php von einer anderen PHP Datei included?
Falls nicht musst du natürlich erst die application_top.php am anfang deiner send.php per require oder include reinholen.

grüsse

dazze

TechWay
17.08.2006, 11:19
Ich glaube das Stichwort hier wäre checkout_process.php da musst du dein Code am besten einfügen! den in der Datei wird die Bestellung in die Datenbank aufgenommen und die Produkt-Menge in der DB aktualisiert!

Gruß
TechWay

useeme2ce
18.08.2006, 13:12
@ all: vielen Dank für Eure Tipps!

Es lag an was anderem, bzw. durch Zufall bin ich drauf gestoßen.

Falls nochmal jemand nach einer Lösung sucht (für die B/S übrigens 200 Euro haben wollte...) hier der work-around.

Problem: Übergabe der language-variable an das Sparkassen-Payment-Modul.

Lösungsweg:
1.
In der /includes/modules/payment/sinternetkasse_ccfs.php (und in der sinternetkasse_elvfs.php beim Lastschriftverfahren) folgende Zeile suchen:

''>ZITAT</div>if (is_object($order)) $this->update_status();
$this->form_action_url = MODULE_PAYMENT_SINTERNETKASSE_CCFS_URL;
}[/b]

und folgendes ergänzen:
''>ZITAT</div> if (is_object($order)) $this->update_status();
$this->form_action_url = MODULE_PAYMENT_SINTERNETKASSE_CCFS_URL. Anwalt Hamm"?lng=".$_SESSION['language'];
}[/b]

(eine neue Variable namens "lng" eingefügt und mit dem Inhalt aus der Session gefüttert. Da steht dann jetzt die Shopsprache "german" oder "english")

2.
In der send.php (Shop-Hauptverzeichnis) folgendes ergänzen:

nach:
''>ZITAT</div>$basket = $_SESSION['customer_id'];
$order = date("YmdHis"); [/b]

folgendes ergänzen:
''>ZITAT</div>
if ($lng=='german') {
$locale='de';
} else {
$locale='en';
}[/b]

(als Sicherheitsabfrage, falls die Daten unterwegs "verloren" gehen, damit wenigstens eine Sprache - in diesem Fall englisch - verwendet werden kann) Ausserdem muss das Ergebnis "german/english" in die konforme Variable des Sparkassen-Moduls (de/en) übersetzt werden.

dann noch folgendes in der send.php ergänzen:
''>ZITAT</div>$mac_data = $amount.$basket.'sslform'.'EUR'.$locale.$order.$pa ymentmethod.'handelwwsslpreauthorization'; [/b]
...damit fügen wir die Variable "locale" in die MAC-Verschlüsselung mit ein. Vergisst man das, kriegt man spätestens auf dem Sparkassen-Server eine Fehlermeldung ;-)

und zu guter Letzt:
''>ZITAT</div>("Location:https://system.sparkassen-internetkasse.de/vbv/mpi_legacy?amount=$amount&basketid=$basket&command=sslform&currency=EUR&orderid=$order&paymentmethod=$paymentmethod&sslmerchant=handelwwssl&transactiontype=preauthorization&mac=$mac");[/b]

ersetzen durch:

''>ZITAT</div>("Location:https://system.sparkassen-internetkasse.de/vbv/mpi_legacy?amount=$amount&basketid=$basket&command=sslform&currency=EUR&locale=$locale&orderid=$order&paymentmethod=$paymentmethod&sslmerchant=handelwwssl&transactiontype=preauthorization&mac=$mac");[/b]

das wars!

budda
26.05.2007, 16:41
Hallo,
kannst du mir sagen wo du das Sparkassen-Payment-Modul her hast. Suche dieses Modul seit einiger Zeit, leider ohne Erfolg.

Über eine kurze Antwort würde ich mich freuen
SB

OHMEC
09.12.2008, 11:54
''>ZITAT(budda @ May 26 2007, 15:41) 26807
Hallo,
kannst du mir sagen wo du das Sparkassen-Payment-Modul her hast. Suche dieses Modul seit einiger Zeit, leider ohne Erfolg.

Über eine kurze Antwort würde ich mich freuen
SB
[/b]

Hi,

das Modul kannst Du bei Deiner Sparkasse bzw. bei B+S Card Service GmbH, Lyoner Str. 9, 60528
Frankfurt. Wenn Du aber mehere Shops betreibst so wie ich so bist Du dann auf andere angewiesen
die die das ein und andere umschreiben.