Kreditkartenabwicklung im Shop/PCI Zertifizierung

Erfahrungen mit Banken, kostenloses Geschäftskonto, Paypal, Amazon Pay, Adyen, Klarna, Bitcoins
- Diskussionsforum -
Hilfe und Erfahrungen von Händlern zum Thema Zahlungsdienstleister.

Eine sehr wichtige Sache beim E-Commerce ist das Geld und wie es vom Kunden zum Händler gelangt.
In diesem Unterforum geht es um das PayPal Konto und den PayPal Login, Banken, ein kostenloses Geschäftskonto eröffnen,
Erfahrungen mit Amazon Pay, Adyen, Klarna, Bitcoins, allgemeiner Banken Vergleich.

Wenn du z.B. ein PayPal Problem oder Ärger mit SEPA Zahlungen hast, dann gehört es hier in unser Bankenforum.
Gesperrt
Benutzeravatar
navisys*de
Beiträge: 331
Registriert: 7. Okt 2007 18:52
Land: Deutschland
Kontaktdaten:

Kreditkartenabwicklung im Shop/PCI Zertifizierung

Hallo,
hat sich sa schon mal jemand drum gekümmert?
http://www.shopbetreiber-blog.de/2007/1 ... uer-shops/" target="_blank

Ich habe das ganze Wochenende mal die internen Übermittlungswege unseres XT-C Shops bei iPayment/CC-Zahlungen durchgeprüft.
Kann def so nicht bleiben wie XT-C das anbietet. Die KK-Daten werden intern in der Session im Shop 1x weitergereicht bevor sie im Silent-CGI Modus an ipayment gesendet werden. Damit wäre schon die PCI-Zert fällig.
Laut ipayment ist auch OS-C und alles was auf OS-C/XT-C beruht betroffen. Überall das gleiche Schema in der Shopsoftware.

Gruß Thomas


3 Monate gratis Händlerbund
gegangen

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Code: Alles auswählen

Die KK-Daten werden intern in der Session im Shop 1x weitergereicht bevor sie im Silent-CGI Modus an ipayment gesendet werden.
Kannst Du da mal erläutern und auch mal die Stellen nennen, in der die Daten in die Session geschrieben werden?
Damit wäre schon die PCI-Zert fällig.
Hä?
Benutzeravatar
navisys*de
Beiträge: 331
Registriert: 7. Okt 2007 18:52
Land: Deutschland
Kontaktdaten:

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Im Bestellschritt "Zahlungsweise" (checkout_payment.php) werden die KK-Daten eingegeben, dann werden die über die Session auf die Seite "Bestellung aufgeben" (checkout_confirmation.php) weitergegeben und von dort aus erst über das Script ipayment.php abgeschickt.
Das Ganze müsste so umgebaut werden, dass im Schritt "Zahlungsweise" nur noch der Selektions-Button für KK-Zahlung drinnen ist. Wenn der angewählt wirdn müssten im Schritt "Bestellung aufgeben" die Eingabefelder für Name KK-Inhaber, KK-Nummer, Gültig bis und Kartenprüfnummer erscheinen und dann direkt von dort über das ipayment.php an ipayment gesendet werden.
Die Daten dürfen an keiner Stelle im Shop irgendwie "verarbeitet" (also weitergeleitet) oder gespeichert werden, ansonsten muss man die PCI-Zertifizierung für Shop und Server vornehmen lassen was wohl unbezahlbar wäre.

Ich habe jetzt mal Anfragen wegen Umprogrammierung des Zahlungsvorgangs bei 2 Anbietern gestellt. Zusätzlich will ich gleich noch statt über redirect_url die Hidden-Trigger-URL nutzen dann wäre auch das Prob weg dass bei Verbindungsabbrüchen die Zahlung zwar bei ipayment eingeht aber die Bestellung im Shop fehlt.

Gruß Thomas
gegangen

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Da bin ich ja froh, dass die CC-Daten bei mir nicht in der Session gespeichert werden.
Selbst wenn das so wäre, müsste jemand in eine bestehende Session einsteigen. Dazu läuft der Checkout über SSL.

Code: Alles auswählen

Die Daten dürfen an keiner Stelle im Shop irgendwie "verarbeitet" (also weitergeleitet) oder gespeichert werden, ansonsten muss man die PCI-Zertifizierung für Shop und Server vornehmen lassen was wohl unbezahlbar wäre.
Wo steht das, das damit auch Sessions gemeint sind? Seit wann ist weiterleiten=verarbeiten?
dann wäre auch das Prob weg dass bei Verbindungsabbrüchen die Zahlung zwar bei ipayment eingeht aber die Bestellung im Shop fehlt.
Ich habe keine Ahnung, welche Shop-Version Du hast und was ipaymjent da spielt. Bei mir ist es nicht möglich, dass eine CC-Zahlung erfolgt, wenn keine Bestellung vorliegt.

Man sollte die Kirche im Dorf lassen. Ich habe Kunden, die schicken mir CC-Daten per E-Mail.


Ich habe easypay zu dem Thema mal um eine offizielle Stellungnahme gebeten.
Benutzeravatar
navisys*de
Beiträge: 331
Registriert: 7. Okt 2007 18:52
Land: Deutschland
Kontaktdaten:

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Ich hab bischen Kontakt zu ipayment weil ich damals mal "Testobjekt" für die war und habe mich da mit dem Cheffe da auseinandergesetzt.
Es ist tatsächlich so. Sobald du CC-Daten in irgendeiner Art ausserhalb eines PCI-Zert Server verarbeitest bist du dran wenn was passiert.
Les dir den Eintrag im Blog aus dem Link mal genau durch.
Oder hier:
http://www.computerwoche.de/knowledge_c ... ty/528160/" target="_blank
steht auch nochmal einiges drinnen.

Ich weiß nicht worüber du abwickelst. Wenn in der Abwicklung z.B. wie beim PayPal-Modul auf die Abwicklungsseite des Zahlungsanbieters weitergeleitet wird und da erst die Daten eingegeben werden bist du aus allem raus.
Wenn Shopbetreiber die vollständige Kreditkartenzahlung durch einen zertifizierten Partner durchführen lassen und dabei keinen direkten Kontakt mit den Daten haben, gehen die 12 oben genannten Pflichten auf den Zahlungssystemanbieter über.
Wenn in der Shopmaske KK-Daten eingegeben werden, muss man schauen was da im Hintergrund abläuft.
Ich habe keine Ahnung, welche Shop-Version Du hast und was ipaymjent da spielt. Bei mir ist es nicht möglich, dass eine CC-Zahlung erfolgt, wenn keine Bestellung vorliegt.
XT-C 3.04 in der Version von Gambio.
Ist aber egal, XT-C "original" nutzt genau das gleiche Modul und hat den gleichen Ablauf.
Das Prob ist das Zahlungsmodul, das benutzt als Redirct zum Shop die redirect_url , wenn es einen Abbruch gibt (z.B. Browser wird vorzeitig geschlossen) bevor zum Shop zurückgeleitet ist wird die Bestellung nicht abgespeichert. Das Prob ist bekannt, nur gibts noc nirgends einen Bugfix dafür. Es gibt eine Möglichkeit über Hidden Trigger url zu arbeiten, da kann in der Richtung nix mehr passieren.
Man sollte die Kirche im Dorf lassen. Ich habe Kunden, die schicken mir CC-Daten per E-Mail.
Eigendlich ja, ich hab den Shop mit eigenem Cert voll auf SSL laufen, nur kann man das eben im Bestellablauf sehen dass die Daten weitergereicht werden. Da kannst du drauf warten bis irgendjemand da wieder anfängt zu suchen und einem Abmahungen reindrückt oder sonstwas.

Gruß Thomas





Gruß Thomas
Addie
Beiträge: 704
Registriert: 6. Okt 2007 16:40
Land: Deutschland

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Das habt Ihr aber schon gelesen oder:
Wie bereits hier erwähnt, gilt für kleinere Unternehmen die jährlich zwischen 1 bis 6 Millionen Kreditkartentransaktionen durchführen, noch eine Übergangsfrist bis zum 31.12. 2007.
In "Worten": Größer 1.000.000 = EINE MILLION

Und wenn ich das richtig lese, dann geht es nach der Anzahl der Transaktionen und nicht nach dem Umsatz -> gerade noch mal Glück gehabt ! juhu
Servus
gegangen

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Ist aber egal, XT-C "original" nutzt genau das gleiche Modul und hat den gleichen Ablauf.
Das ist absolut nicht egal.
Das Prob ist das Zahlungsmodul,...
Richtig. Bei Dir offenbar.
... das benutzt als Redirct zum Shop die redirect_url , wenn es einen Abbruch gibt (z.B. Browser wird vorzeitig geschlossen) bevor zum Shop zurückgeleitet ist wird die Bestellung nicht abgespeichert.
Das ist nicht unbedingt richtig. Mein easypay-Modul tickt da etwas anders.
Dazu ist bei Dir evtl. eine größere Änderung am Payment-Modul und eine klitzekleine Änderung an der checkout_process.php nötig. Dort muss einfach die Übergabe an den CC-Anbieter nach der Bestellbestätigung erfolgen.

Wenn was passiert, ist eine Bestellung ohne Zahlung da. Das was passiert, ist wohl so wahrscheinlich wie ein Meteoriteneinschlag auf den Server, auf dem der Shop läuft. Bei Bestellabbruch passiert gar nicht.

Ich muss Dir bei dem Abbruchproblem grundsätzlich recht geben. Daher habe ich das Modul für easypay auch komplett überarbeitet.
Benutzeravatar
navisys*de
Beiträge: 331
Registriert: 7. Okt 2007 18:52
Land: Deutschland
Kontaktdaten:

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Dazu ist bei Dir evtl. eine größere Änderung am Payment-Modul und eine klitzekleine Änderung an der checkout_process.php nötig. Dort muss einfach die Übergabe an den CC-Anbieter nach der Bestellbestätigung erfolgen.
Es darf aber die KK-Eingabe nicht mehr in die checkout_payment.php sondern muss in die checkout_process.php. Sonst werden die Daten eben wieder innerhalb des Shops "verarbeitet".
Das ipayment-Modul ist eigendlich soweit OK, es müssen die checkout_payment.php und die checkout_process.php überarbeitet werden. Dem ipayment-Modul dürfte es egal sein wo es dann aufgerufen wird.
Wenn was passiert, ist eine Bestellung ohne Zahlung da. Das was passiert, ist wohl so wahrscheinlich wie ein Meteoriteneinschlag auf den Server, auf dem der Shop läuft. Bei Bestellabbruch passiert gar nicht.

Ich muss Dir bei dem Abbruchproblem grundsätzlich recht geben. Daher habe ich das Modul für easypay auch komplett überarbeitet.
Die Fälle Zahlung ohne Bestellung hatte ich schon, der Ablauf nach Betätigen des Bestellbuttons ist erst KK-Zahlung raus, dann Bestellung abspeichern.
Ich habe mir die checkout_payment.php und die checkout_process.php gestern abend nochmal genau angesehen und mir einen Testshop installiert und dafür einen Testaccount im Simulationsmodus bei ipayment angelegt.
In der Shoipsoftware ist scheinbar eine eigene KK-Datenprüfung drinnen. Vermutlich ist das das Problem. Wenn die Prüfung irgend einen Fehler feststellt der eigendlich nicht besteht wird die Bestellung nicht abeglegt, aber die Zahlung geht trotzdem an ipayment. Dann kommen die Kunden nicht weiter.
Ich hatte das Ganze mit einem Modul "offene Shopping-Card" abgefangen, da konnte ich dann die offenen Warenkörbe sehen und entsprechend ausliefern.
Nur nervt das halt.

Warscheinlich wäre es das Beste die ganze Kiste so umzubauen:
-KK-Eingabe aus der checkout_payment.php raus, nur ein Button KK-Zahlung da drinnen lassen, ein Hinweis darunter "Eingabe der KK-Daten erfolgt im nächsten Bestellschritt"
-Wenn der Kunde in der checkout_payment.php KK-Zahlung wählt dann in der checkout_process.php die KK-Daten Eingabemaske aufrufen, die ganze interne KK-Prüfung deaktivieren und nur noch die Rückmenldung von ipayment verarbeiten, also entweder redirect_url und dann Bestellung ablegen oder eben Error_url und in der checkout_process.php die Fehlermeldung anzeigen damit der Kunde korrigieren kann.
Alternativ halt über Hidden_Trigger arbeiten, das ist wohl die sicherere Lösung um dem Shop zurückzugeben ob die Zahlung erfolgt ist oder nicht.

Mal schauen was die Programmierer die ich angeschrieben habe so sagen, bisher hat sich noch keiner gemeldet.
Ich bin da zwar nciht ganz unbedarft was sowas angeht, aber die Änderung ist mir für mein Hobbywissen zu umfangreich.

Gruß Thomas
gegangen

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Ich glaube, dass Du etwas falsch siehst.

Weder in der checkout_payment noch in der checkout_process ist eine Eingabe möglich.

Die Dateneingabe erfolgt im Zahlungsmodul unter include/modules/payment
checkout_payment.php gilt für alle Zahlungsmodule. Hier wird nur das installiert Modul aufgerufen und für die Ausgabe aufbereitet.

checkout_process.php steuert der ganzen Checkout. Das Ding ist in keinster Weise interaktiv.

In allen Zahlungsmodulen sind namentlich gleiche Klassen definiert, die den Checkout quasi steuern. Dort gibt es Aktionen die vor, während und nach dem Zahlungsmodul aufgerufen werden.
Zum Schluß kommt die Zusammenfassung und die Bestätigung.

Ich habe die checkout_process für die CC-Zahlungen so geändert:

Code: Alles auswählen

$payment_modules->before_process();

require (DIR_WS_CLASSES.'order_total.php');
$order_total_modules = new order_total();

$order_totals = $order_total_modules->process();

if ($_SESSION['payment'] == 'easypay_kk')
	$payment_modules->easypay_process();
Entsprechend habe ich auch das Zahlungsmodul angepasst.
Dadurch erfolgt die Übergabe an easypay erst, wenn die Bestellung bereits abgeschlossen ist.

Ob sich das jetzt easypay oder ipayment nennt, ist m.E. egal. Wichtig ist nur die Reihenfolge der Bearbeitung und die wird in der checkout_process bestimmt. Evtl. muss dafür das Zahlungsmodul angepasst werden.
Benutzeravatar
navisys*de
Beiträge: 331
Registriert: 7. Okt 2007 18:52
Land: Deutschland
Kontaktdaten:

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Das ist klar dass eigendlich die Payment-Module verantwortlich sind.
Das ist wohl der Aufruf in der checkout_payment.php
// load all enabled payment modules
require (DIR_WS_CLASSES.'payment.php');
$payment_modules = new payment;
Das ist die Selektion
$selection = $payment_modules->selection();

$radio_buttons = 0;
for ($i = 0, $n = sizeof($selection); $i < $n; $i ++) {

$selection[$i]['radio_buttons']=$radio_buttons;
if (($selection[$i]['id'] == $payment) || ($n == 1)) {
$selection[$i]['checked'] = 1;
}

if (sizeof($selection) > 1) {
$selection[$i]['selection']= xtc_draw_radio_field('payment', $selection[$i]['id'], ($selection[$i]['id'] == $_SESSION['payment']));
} else {
$selection[$i]['selection']= xtc_draw_hidden_field('payment', $selection[$i]['id']);
}

if (isset ($selection[$i]['error'])) {

} else {

$radio_buttons ++;
}
}
Hier werde in der checkout_process.php die Zahlungsmodule wieder geladen
// load selected payment module
require (DIR_WS_CLASSES.'payment.php');
if (isset ($_SESSION['credit_covers']))
$_SESSION['payment'] = ''; //ICW added for CREDIT CLASS
$payment_modules = new payment($_SESSION['payment']);

// load the selected shipping module
require (DIR_WS_CLASSES.'shipping.php');
$shipping_modules = new shipping($_SESSION['shipping']);

require (DIR_WS_CLASSES.'order.php');
$order = new order();

// load the before_process function from the payment modules
$payment_modules->before_process();
und hier wohl die KK-Nummer(teilweise ge"x"t und die "Geheimzahl" wieder vom Zahlungsmodul ausgegeben
// BMC CC Mod Start
if (strtolower(CC_ENC) == 'true') {
$plain_data = $order->info['cc_number'];
$order->info['cc_number'] = changedatain($plain_data, CC_KEYCHAIN);
D.h. die KK-Daten werden def. zwischengespeichert und nicht sofort und direkt abgeschickt und genau da liegt wohl das Prob bei der PCI-Geschichte.

Wie gesagt, soweit wie ich mitlerweile durchgestiegen bin müsste "einfach" die KK-Daten-Eingabe in die checkout_process.php verlegt werden, dann wäre man auf der sichern Seite.

Gruß Thomas
gegangen

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Hier werde in der checkout_process.php die Zahlungsmodule wieder geladen
Nein, sie werden nicht wieder geladen, sie werden für den Ablauf geladen - ohne wieder.
Was in der checkout_payment.php passiert, betrifft das Formular und die Ausgabe einer Felder.
D.h. die KK-Daten werden def. zwischengespeichert und nicht sofort und direkt abgeschickt
Gespeichert? In Variablen, bzw. einer Klasse, ja, nicht in einer Session. Ohne sowas würde es keine DV geben.
Klar, wenn jemand an die Daten will, braucht er nur mal eben einen Speicherdump zu ziehen.
und hier wohl die KK-Nummer(teilweise ge"x"t und die "Geheimzahl" wieder vom Zahlungsmodul ausgegeben
Das ist nur Spekulation.

Code: Alles auswählen

// BMC CC Mod Start
if (strtolower(CC_ENC) == 'true') {
Ich nehme mal an, dass Du das ipayment-Modul verwendest. CC_ENC existiert nur im Zahlungsmodul cc.php. Ob das noch jemand verwendet, kann ich mir nicht vorstellen.

Bevor Du Dich an der checkout_process.php (nochmal, die gilt für alle Module, selbst für welche aus längst vergangenen Zeiten) aufhängst, solltest Du Dir lieber mal das Zahlungsmodul - und nur das - unter die Lupe nehmen.

Sei mir nicht bös, aber meiner Meinung nach machst Du aus einer Mikrobe einen Walfisch.
Benutzeravatar
navisys*de
Beiträge: 331
Registriert: 7. Okt 2007 18:52
Land: Deutschland
Kontaktdaten:

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Ich glaube ich weiß was ich mache, du hast mich da auf eine Idee gebracht.
Ich haue die Anzeige der KK-Daten aus der checkout_process.php raus.
Mal sehen ob das klappt ohne die Zahlung zu beeinflussen.
Dann steht da halt nur noch Kreditkarte und sonst nix mehr.
Damit gibt es keine "sichbare" Weiterverarbeitung im Shop.
Ich nehme mal an, dass Du das ipayment-Modul verwendest. CC_ENC existiert nur im Zahlungsmodul cc.php. Ob das noch jemand verwendet, kann ich mir nicht vorstellen.
Ja logisch, seltsamerweise funktioniert das ipayment.php nur wenn man zuerst das normale cc-Modul installiert, die gewünschten Einstellungen und welche KK man akzeptiert darin vornimmt, abspeichert und dann wieder deaktiviert (nicht deinstalliert)
Ich habe aber noch ein anderes ipayment-Modul im www gefunden, mal sehen was das macht.

Gruß Thomas
Benutzeravatar
navisys*de
Beiträge: 331
Registriert: 7. Okt 2007 18:52
Land: Deutschland
Kontaktdaten:

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Hi,
die Anzeige der KK-Daten wegnehmen:
Im Template checkout_confirmation.html
Den Teil löschen
{/if}
{if $PAYMENT_INFORMATION!=''}
<strong>{#text_payment_info#}</strong>
<table width="100%" border="0" cellspacing="0" cellpadding="4">
<tr>
<td style="border: 1px solid; border-color: #cccccc;" class="main">{$PAYMENT_INFORMATION}</td>
</tr>
</table>
Dann bleibt oben drüber noch ein Hinweis mit der Zahlungsart stehen, das reicht ja.

Was hast du denn noch im Zahlungsmodul angepasst um die Zahlung hinter das Abspeichern der Bestellung zu verlegen ?
Wird bei dir die Auftragsnummer mit an die CC-Abwicklung übergeben ? Das habe ich auch schon mal versucht aber nicht hinbekommen.
Hieß damals das ginge nicht weil die Auftragsnummer erst mit dem Abspeichern der Bestellung generiert wird.
Wenn man das "umdreht" müsste es dann ja hinzubekommen sein.

Gruß Thomas
gegangen

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

$PAYMENT_INFORMATION gebe ich grundsätzlich nicht aus.
Bei Vorkasse stehen die Bankdaten drin. Da hatte ich schon einige Zahlungseingänge ohne Bestellung.
Die Kreditkartendaten sind nirgendwo ersichtlich. Lediglich die Kartenart kommt als Info.

Ich kann nur sagen, wie das mit easypay aussieht. Dort habe ich Algorithmen für Plausibilitätsprüfungen nach der Eingabe.
Die Übertragung der Daten an easypay erfolgt erst nach der Bestellbestätigung. Dazu hab ich das Modul etwas umstricken müssen und den Aufruf der Übertragung explizit in die checkout_process.php eingebaut.
Dort kann jetzt folgendes passieren:
- Die Daten werden von easypay als korrekt bestätigt. Damit ist die Bestellung abgeschlossen.
- Der Kunde bricht ab. Damit liegt bei 3.04SP2.1 max. eine temporäre Bestellung vor (hatte ich noch nie).
- Die Daten können nicht bestätigt werden (Karte gesperrt, etc.). Dann kommt der Kunde in die checkout_payment zurück.

Die Auftragsnummer spielt bei easypay keine Rolle. Dort wird aus Datum und Uhrzeit eine Transaktionsnummer generiert, die als Kreditkarteninhaber in der Datenbank steht. Diese Nummer übertrage ich (noch) an Afterbuy ins Memofeld. Darüber kann ich im Onlinesystem von easypay die Buchungen abrufen und in Afterbuy auch danach suchen.

Was ich im einzelnen am Zahlungsmodul gemacht habe, weiß ich nicht mehr genau. Ist zulange her.
Benutzeravatar
navisys*de
Beiträge: 331
Registriert: 7. Okt 2007 18:52
Land: Deutschland
Kontaktdaten:

Re: Kreditkartenabwicklung im Shop/PCI Zertifizierung

Eine generierte Transaktionsnummer gibt es bei ipayment auch.
Die Auftragsnummer mit zu ipayment zu übertragen hätte aber den Vorteil dass man es in der Buchhaltung einfacher hätte die Zahlungen zuzuordnen.
Mal schauen wie ich das noch hinbekomme.

Gruß Thomas
Gesperrt

Zurück zu „Zahlungssysteme / Banken / Paypal & Co.“

  • Information