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.
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