Hallo, ich hatte das Problem mit einer Anfrage über ein fertiges PLugin schon in Plugins/Erweiterungen gestellt und habe mich jetzt bis zu diesem Punkt durchgearbeietet da ich mir das Plugin selber „gebastelt“ habe. Es sind im Prinzip 3 dateien und 2 Datenbankeinträge die geändert werden müssen und es klappt mit der neuen Zahlungsart. Hatte mir diesbezüglich auch schon andere Forumseinträge durchgelesen bzw. Anleitungen probiert. Es geht um die Anbindung eines Zahlungsanbieters für Kreditkarten im iframe auf der letzten Seite nach der checkout-Seite. Die Weiterleitung zur richtigen Seite klappt alles und Testzahlungen mit einem festen Betrag den ich in die php.Datei in Zeile 4 eintrage klappt auch. Mein einziges Problem ist nun > Ich bekomme einfach den Gesamtbetrag nicht übergeben. Ich benötige den Rechnungsbetrag in Zeile 4 zwischen die beiden „.“ Wenn ich dort eine Zahl (z.B. 5,85) eintrage wird dieser Betrag auch angezeigt und auf der Test Visa-Karte gebucht… 1 // AMOUNT // 2 // e.g. 1,23 // 3 4 $amount = „getAmount()“; 5 6 $requestFingerprintOrder .= „amount,“; // add to fingerprint 7 $requestFingerprintSeed .= $amount; // add to fingerprint Ich habe jetzt schon folgende Werte dort eingesetzt. getAmount() (wie oben) Amount Amount() $Amount $getAmount $sPayment->getAmount() sPayment->getAmount() $sPayment und so weiter. Alles was ich irgendwo gefunden habe, stand schon zwischen den beiden „.“ Fehlt mir da in der php.Datei ein Befehl, der erst mal sagt was übergeben wird bzw. woher. Ansonsten klappt die Schnittstelle mit Qpay aber eben ohne Rechnungsbetrag. http://www.alarmprofi.de/shopware ist meine Testshop, wo ich das ganze ausprobiere und Testdaten eingegeben habe. Wenn man jetzt auf „Zahlung durchführen“ klickt, kommt die Fehlerseite, weil kein Betrag angegeben ist. Sobald ich einen festen Betrag reinschreibe, klappt es. MfG. Ronald
Hey, stell mal das komplette Script hier ein - welches in das iFrame geladen wird. Oder schau dir mal die ipayment/silent_form_cc.php an - dort stehen oben in der Datei ja ein Code-Block der die Zahlungsdaten initialisiert - dann kann man z.B. via $sPayment-\>getAmount()
auf den Bestellbetrag zurückgreifen.
Alles klar. Mache ich gleich. Ich habe mal den Betrag jetzt fest mit 6,66 EUR eingestellt. So kannst du mal einen Bestellvorgang durchführen. Es werden nun allerdings die 6,66 EUR angezeigt und nicht der Gesamtbetrag. Habe im Testshop nur 2 Artikel gelistet.
Hier die komplette PHP welche aufgerufen wird. Secretkey und Kundennummer sind schon eingetragen und für Testzwecke frei geschaltet. Damit kann keine echte Buchung mit einer Kreditkarte durchgeführt werden. Es geht nur noch um die Zeile Amount wo ich jetzt 6,66 eingetragen habe. Was dort als Wert bzw. Variable drin steht, wird an Wirecard übergeben. //--------------------------------------------------------------------------------// // // // QPAY Example CHECKOUT / PHP // // // // QENTA paymentsolutions Beratungs und Informations GmbH // // © Copyright 2009 // // // //--------------------------------------------------------------------------------// // Please read the installation guide before modifying this file // //--------------------------------------------------------------------------------// $requestFingerprintOrder = “”; // initalize FingerprintOrder $requestFingerprintSeed = “”; // initalize FingerprintSeed //--------------------------------------------------------------------------------// // QPAYURL QPAY-INITURL (https://secure.wirecard-cee.com/qpay/init.php) // $qpayURL = “Wirecard Checkout Page - Initiation - Wirecard CEE”; //--------------------------------------------------------------------------------// // MERCHANT SPECIFIC PARAMETERS // //--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------// // SECRET pre-shared key, used to sign the posted data // // e.g. B8AKTPWBRMNBV455FG6M2DANE99WU2 // $secret = “B8AKTPWBRMNBV455FG6M2DANE99WU2”; $requestFingerprintOrder .= “secret,”; // add to fingerprint $requestFingerprintSeed .= $secret; // add to fingerprint //--------------------------------------------------------------------------------// // CUSTOMERID // // e.g. D200001 // $customerId = “D200005”; $requestFingerprintOrder .= “customerId,”; // add to fingerprint $requestFingerprintSeed .= $customerId; // add to fingerprint //--------------------------------------------------------------------------------// // SHOPID sublicence-identifier (ONLY USED, IF ENABLED BY QENTA) // // $shopId = “Alarmprofi Onlineshop”; // $requestFingerprintOrder .= “shopId,”; // add to fingerprint // $requestFingerprintSeed .= $shopId; // add to fingerprint //--------------------------------------------------------------------------------// // PAYMENT SPECIFIC PARAMETERS // //--------------------------------------------------------------------------------// // Please care about, these parameters are taken from datebase or session! // // Do not take this values from a POST or a GET method request // //--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------// // AMOUNT // // e.g. 1,23 // $amount = “6,66”; $requestFingerprintOrder .= “amount,”; // add to fingerprint $requestFingerprintSeed .= $amount; // add to fingerprint //--------------------------------------------------------------------------------// // CURRENCY // // e.g. EUR // $currency = “EUR”; $requestFingerprintOrder .= “currency,”; // add to fingerprint $requestFingerprintSeed .= $currency; // add to fingerprint //--------------------------------------------------------------------------------// // LANGUAGE // // e.g. de // $language = “DE”; $requestFingerprintOrder .= “language,”; // add to fingerprint $requestFingerprintSeed .= $language; // add to fingerprint //--------------------------------------------------------------------------------// // ORDERDESCRIPTION max. 255 Char // // should be something unique for one order // // e.g. Max Mustermann, Bestell-Nr 4578977 // $orderDescription = “Bestellung bei Alarmprofi”; $requestFingerprintOrder .= “orderDescription,”; // add to fingerprint $requestFingerprintSeed .= $orderDescription; // add to fingerprint //--------------------------------------------------------------------------------// // DISPLAYTEXT // // e.g. Danke für Ihren Einkauf, besuchen Sie uns bald wieder. // $displayText = “Danke für Ihren Kauf im Alramprofi Onlineshop”; $requestFingerprintOrder .= “displayText,”; // add to fingerprint $requestFingerprintSeed .= $displayText; // add to fingerprint //--------------------------------------------------------------------------------// // URL SPECIFIC PARAMETERS // // Settings needed for QPAY and redirection back to your system // //--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------// // REDIRECT URLS // // Note: only SUCCESSURL is mandatory in requestFingerprint // // e.g. https://www.yourdomain.com/shop/returnedfrompayment.php // $successURL = “http://alarmprofi.de/shopware/engine/connectors/ipayment/danke.htm”; $cancelURL = “http://alarmprofi.de/shopware/engine/connectors/ipayment/return.php”; $failureURL = “http://alarmprofi.de/shopware/engine/connectors/ipayment/fehler.htm”; $serviceURL = “http://alarmprofi.de/shopware”; $requestFingerprintOrder .= “successURL,”; // add to fingerprint $requestFingerprintSeed .= $successURL; // add to fingerprint //--------------------------------------------------------------------------------// // IMAGE URL // // Note: Must be accessible over the internet. // // no password-protection, no intranet-servers, no host aliases, // // no local paths // // e.g. http://www.mydomain.com/mylogo.gif // $imageURL = “http://www.alarmprofi.de/templates/_default/frontend/_resources/images/logo.jpg”; //--------------------------------------------------------------------------------// // CONFIRM URL // // Note: CONFIRMURL is mandatory in requestFingerprint // // e.g. https://www.yourdomain.com/shop/s2s_qpay_payment.php // // $confirmURL = “SET UP YOUR CONFIRMURL”; // $requestFingerprintOrder .= “confirmURL,”; // add to fingerprint // $requestFingerprintSeed .= $confirmURL; // add to fingerprint //--------------------------------------------------------------------------------// // DUPLICATEREQUESTCHECK yes|no // // $duplicateRequestCheck = “no”; // $requestFingerprintOrder .= “duplicateRequestCheck,”; // add to fingerprint // $requestFingerprintSeed .= $duplicateRequestCheck; // add to fingerprint //--------------------------------------------------------------------------------// // MERCHANT DEFINED PARAMETERS // // You are allowed to add self-defined parameters // //--------------------------------------------------------------------------------// $customField1 = “shopValue1”; $customField2 = “shopValue2”; $requestFingerprintOrder .= “customField1,”; // add 1st customfield to fingerprint $requestFingerprintSeed .= $customField1; // add 1st customfield to fingerprint //--------------------------------------------------------------------------------// // GENERATING REQUEST FINGERPRINT // $requestFingerprintOrder .= “requestFingerprintOrder”; // add requestFingerprintOrder to itself $requestFingerprintSeed .= $requestFingerprintOrder; // add requestFingerprintOrder to fingerprint $requestFingerprint = md5($requestFingerprintSeed); ?>
Kartenzahlung # Kreditkarten-Zahlung Testdaten| | | Durch Click auf die Schaltfläche “Zahlung durchführen” gelangen Sie auf die Bezahlseite. |
Betrag | = $amount ?> = $currency ?> |
Beschreibung | = $orderDescription ?> |
Zahlungsmittel | |
| Unten sehen Sie eine Liste der gesetzten Parameter und deren aktueller Wert. Damit das Beispiel auch funktioniert, füllen Sie bitte die Parameter mit den für Sie zutreffenden Angaben bzw. bei optionalen Parametern einen Leerwert. Die Erklärung zu den einzelnen Parametern finden Sie im Installationsleitfaden für QPAY. Dort finden Sie auch weitere Parameter, die Sie an QPAY übergeben können. |
| customerId | = $customerId ?> |
| language | = $language ?> |
| amount | = $amount ?> |
| currency | = $currency ?> |
| orderDescription | = $orderDescription ?> |
| displayText | = $displayText ?> |
| successURL | = $successURL ?> |
| cancelURL | = $cancelURL ?> |
| failureURL | = $failureURL ?> |
| serviceURL | = $serviceURL ?> |
| imageUrl | = $imageURL ?> |
| requestFingerprintOrder | = $requestFingerprintOrder ?> |
| requestFingerprint | = $requestFingerprint ?> |
Moin, hast du denn eine Klasse dafür angelegt? Also irgendwo unter engine/connectors muss es ja einen Ordner für das Plugin geben - also gehen wir mal davon aus, dass du z.B. eine Datei qpayment.class.php angelegt hast - Klassenname qpayment - (Vorbild iPayment) Dann müsste am Anfang deiner Datei folgendes stehen: (Datei liegt im selben ordner, also z.B. connectors/qpayment/form.php) <?php $path = "../";
include("qpayment.class.php");
$sPayment = new qpayment("/dev/null","../");
$sPayment->verbose = true; $sPayment-\>catchErrors(); $sPayment-\>initUser(); $choosenPaymentMean = $sPayment-\>sUser["additional"]["payment"]["name"]; $userData = $sPayment-\>sUser; // ... sonstiger Code // ?\>
Dann kannst du deine Zeile unten mit = $sPayment->getAmount(); befüttern - wenn der Währungsbetrag mit einem “,” übergeben werden muss - machst du ein str_replace auf das Ergebnis und ersetzt “.” mit “,” - fertig! Das ist übrigens der “Old way” um Zahlungsschnittstellen zu bauen - also pre 3.5 - der neue Weg, via Plugin, wird von mir noch dokumentiert - eventuell schickst du mir deine qPay Schnittstelle wenn du fertig bist. Dann kann ich das auf der Basis ja evtl. als Standard-Plugin umsetzen und gleich ein Tutorial dazu liefern. Das wird wohl erst Anfang Februar was.
Nein, die habe ich nicht angelegt. Ich habe meine 3 Dateien im Ordner Ipayment eingefügt, und in der Datenbank den Link von ipayment/silent_form_cc.php auf ipayment/checkoutneu.php umgeändert. Als Zahlungsart „Ipayment“ gewählt und die Bezeichnung geändert. Somit ruft er jetzt meine neue Datei auf. Ich gehe mal von aus, er greift jetzt auf die class.php von Ipayment zurück. Deshalb hatte ich mir alle möglichen Einträge aus der Ipayment.php vorgenommen und dann dort bei Betrag eingesetzt. Wäre es nicht einfacher, einfach oben in der checkoutneu.php die class.php von Ipayment zu hinterlegen ? Gruß Ronald
Das müsste auch gehen … Also zumindest an den Bestellbetrag solltest du so kommen - allerdings ist der Workflow insgesamt komplizierter - z.B. gibt es noch die Notify.php - diese wird vom Zahlungsanbieter direkt aufgerufen um eine erfolgreiche Zahlung zu bestätigen (Damit der Kunde nicht OHNE Bezahlung die Bestellung abschließen kann) - dieses Script erwartet nun mehr verschiedene Parameter, wie z.B. die Transaktionsnummer der Zahlung und einen Secretkey um die korrekte BEstellung aus der DB auszulesen - ich weiß nicht, ob du das berücksichtigt hast bzw. da so problemlos dann weiter kommst. In Sachen Zahlbetrag sollten dir die Infos aber erst einmal weiterhelfen!
Das mit dem Post zurück ist nicht weiter wichtig. Qpay unterstützt zwar die Zahlungsbestätigung zurck. Aber das wird mir dann viel zu kompliziert. Mein Vertrag läuft noch bis Feb.2012. Wenn bis dahin keine Lösung von Wirecard/Qpay angeboten wird, wechsle ich einfach zu einem anderen Anbieter, welcher das Plugin von Shopware hat. Solange mache ich es mit der Notlösung über Ipayment als Umweg. Habe die obere Datei in meine checkoutneu.php eingefügt. Musste noch was ändern: qpayment > ipayment ändern new qpayment > new ipaymentPayment<?php $path = „…/“;
include(„ipayment.class.php“);
$sPayment = new ipaymentPayment("/dev/null","…/");
$sPayment->verbose = true; $sPayment->catchErrors(); $sPayment->initUser(); $choosenPaymentMean = $sPayment->sUser[„additional“][„payment“][„name“]; $userData = $sPayment->sUser; // … sonstiger Code // ?> Und $sPayment->getAmount() darf nicht in „.“ stehen. Jetzt wird der Endbetrag übergeben. Werde dann Montag meinen Secretkey anfordern und die 3 Dateien in mein Hauptverzeichis laden. Damit sollte KK-Zahlung klappen. Ein Problem ist noch. Ich und der Kunde bekommen keine Email über die Bestellung. Kann ich das irgendwo so einstellen, das man eine Mail bei Zahlungsart Kreditkarte (bei mir somit Ipayment) bekommt sobald man auf den Button „Zur Kasse gehen“ klickt - egal ob KK-Zahlung erfolgreich oder nicht. Wenn es nicht klappt, bekommt der Kunde die Fehlermeldung, das es nicht geklappt hat. Und ich von Wirecard die Mail, das ein Kunde es erfolglos versucht hat. Somit kann ich den Kunden dann kontaktieren, ob er es noch einmal probieren möchte, oder die daten falsch eingegeben wurden. Vielen Dank.
Wird die Bestellung denn im Backend erfolgreicha abgeschlossen? Taucht die dort also überhaupt unter Bestellungen auf? Ansonsten führe mal eine Bestellung per Vorkasse durch und nimm die URL der Success-Seite oben - diese dann als Success-URL bei qPay einstellen.
[quote=“Stefan Hamann”]Wird die Bestellung denn im Backend erfolgreich abgeschlossen? Taucht die dort also überhaupt unter Bestellungen auf?[/quote] Nein, leider nicht. Es wird zur Bezahlseite übergeben > Zahlung wird durchgeführt > Dann auf die Success-Seite (gleiche URL wie bei Zahlung mit Vorkasse) weiter geleitet. Somit klappt es mit der Zahlung aber der Artikel ist noch oben im Warenkorb zu finden. Im Backend wird nichts gespeichert und keine Mail verschickt. Kann ich das nicht so machen, das ich einfach mit Klick auf den Zahlung durchführen Button eine Zeile einfüge, wo der Warenkorb geleert und eine Mail geschickt wird. …
| |
… Stelle ich mir das etwas einfach vor oder ist doch mehr Aufwand notwendig ? Ich habe mal die komplette Datei von Qpay an dich geschickt und meine neue checkout.php welche jetzt angesprochen wird. MfG. Ronald
Hallo zusammen, wir sind auch gerade dabei QPay zu integrieren, gibt es schon Fortschritte mit dem oben genannten vorhaben das in ein Plugin zu packen, bzw. kann mir jemand mit der Integration weiterhelfen? Danke und viele Grüße, Christoph