2010-06-08 7 views
5

Ich habe bereits eine Express-Kasse mit meiner Codeigniter-Anwendung integriert. Jetzt möchte ich nahtlosen Paypal integrieren, wo ich die CC Informationen sammle und sie an Paypal überbringe (über Backend) und sobald alles genehmigt ist, zeigt meine Anwendung das dem Benutzer an. All dies ohne auf die Website von Paypal zu gehen.Paypal Payflow Pro-Bibliothek

Ich weiß, dass Paypal eine Menge Beispielcode gibt, aber sie haben so viele verschiedene Produkte, die dasselbe tun.

Gibt es Wrapper-Bibliothek in PHP, die ich für die Handhabung all dies verwenden kann?

Welche Art von Designentscheidung ist bei der Migration zu einem solchen System beteiligt? Benötige ich dafür SSL-Zertifikate?

Antwort

2

Ich baute eine E-Commerce-Website in CodeIgniter, auch nahtlose Paypal-Integration.

Es schien keine suzuuper-hübschen objektorientierten Wrapper da draußen zu geben, als ich meine Jagd machte, aber ich habe einige gute Versuche bemerkt.

Meine Lösung endete ein bisschen langweilig. Ich habe die PHP API von hier: https://cms.paypal.com/cms_content/US/en_US/files/developer/PP_PHP_NVP_Samples.zip

ich die CallerService.php Datei als application/helpers/paypal_helper.php gespeichert und hinzugefügt, um es zu application/config/autoload.php es in die App zu ziehen.

Jetzt CallerService.php erfordert constants.php, so dass Sie entweder kopieren und einfügen müssen, oder enthalten Sie die constants.php Datei in Ihrem Helfer-Verzeichnis. Ich habe nur kopiert und eingefügt. Stellen Sie dann sicher, dass Sie alle Konstanten für Ihr Konto konfigurieren.

Sobald das eingerichtet ist, meinen Code sah genauso aus wie folgt aus:

$nvp_query_string = '&PAYMENTACTION=Sale' 
       . '&AMT='.urlencode($order->total) 
       . '&CREDITCARDTYPE='.urlencode($this->input->post('credit_card_type')) 
       . '&ACCT='.urlencode($this->input->post('acct')) 
       . '&EXPDATE='.urlencode(str_pad($this->input->post('exp_date_month'), 2, '0', STR_PAD_LEFT).'20'.$this->input->post('exp_date_year')) 
       . '&CVV2='.urlencode($this->input->post('cvv2_number')) 
       . '&FIRSTNAME='.urlencode($first_name) 
       . '&LASTNAME='.urlencode($last_name) 
       . '&STREET='.urlencode($order->billing_address_1) 
       . '&CITY='.urlencode($order->billing_city) 
       . '&STATE='.urlencode($order->billing_state) 
       . '&ZIP='.urlencode($order->billing_zip) 
       . '&COUNTRYCODE=US&CURRENCYCODE=USD'; 

    $response = hash_call('doDirectPayment', $nvp_query_string); 
    if (strpos(strtoupper($response['ACK']), 'SUCCESS') !== false) { 
    // Product purchase was successful. 
    } 
    else { 
    // Product purchase was unsuccessful. 
    // The Paypal response will be in $response['ACK']. 
    // The Paypal error message to show the customer will be in $response['L_LONGMESSAGE0']. 
    } 

Es ist nicht zu elegant, aber es funktioniert auf jeden Fall gut.

Auch benötigen Sie definitiv ein SSL-Zertifikat. Diese können für $ 30 oder so für eine einzelne Domain gekauft werden. Sie sind anfangs etwas schwierig einzurichten, aber Sie können diesen Schritt nicht überspringen. SSL schützt die Übertragung zwischen dem Computer des Kunden und Ihrem Server, so dass deren CC-Informationen nicht gelesen werden können, da sie auf dem Weg durch alle Server und Router (oder über Wifi) verstreut sind. Stellen Sie also sicher, dass das Formular auf dem Formular, das Sie zum Abrufen von CC-Informationen verwenden, an https: // und nicht an ein ungesichertes http: // übermittelt wird.

+1

Danke Alan! Das ist, was ich suchte .. es würde mir sehr helfen, von diesem Gedanken zu beginnen und vielleicht eine nette Wrapper-Bibliothek zu erstellen, die wir auch in zukünftigen CI-Projekten verwenden können. Wenn Sie irgendwelche anderen Tipps/Hinweise/Dinge-zu-nicht-fallen-in haben, lassen Sie es mich bitte wissen. – Obaid

0

Ich bin mir ziemlich sicher, dass egal, ob Ihre Website sensible Daten (d. H. Kreditkartennummer) nimmt, dann benötigen Sie ein SSL-Zertifikat. Wenn sie nicht auf dem Server eines anderen Benutzers (paypal.com) sind, müssen Sie sich darum kümmern. Und, wie du schon sagtest, du willst sie nicht zu paypal.com schicken, also brauchst du einen.

Wenn Sie bereits Express-Checkout integriert haben, sollten Sie trotzdem ein SSL-Zertifikat dafür verwenden, oder?

Verwandte Themen