Frage

Ich habe bereits eine Express -Checkout in meine Codesigniter -Anwendung integriert. Jetzt möchte ich nahtloses PayPal integrieren, wo ich die CC -Informationen sammle und sie an PayPal (über Backend) weitergibt, und sobald alles genehmigt wurde, zeigt meine Bewerbung dem Benutzer an. All dies ohne die Website von PayPal.

Ich weiß, dass PayPal eine Reihe von Beispielcode bietet, aber so viele verschiedene Produkte, die für das Gleiche Werbung machen.

Gibt es eine Wrapper -Bibliothek in PHP, die ich für den Umgang mit all dem verwenden kann?

Welche Art von Entwurfsentscheidung ist an der Migration auf ein solches System beteiligt? Würde ich dafür SSL -Zertifikate benötigen?

War es hilfreich?

Lösung

Ich habe eine E-Commerce-Site in Codesigniter erstellt, die ebenfalls nahtlose PayPal-Integration durchgeführt hat.

Es schien keine suuuuuper-hübschen objektorientierten Wrapper zu geben, als ich meine Jagd machte, aber ich bemerkte einige gute Versuche.

Meine Lösung war ein bisschen langweilig. Ich habe die PHP -API hier heruntergeladen:https://cms.paypal.com/cms_content/us/en_us/files/developer/pp_php_nvp_samples.zip

Ich habe das gerettet CallerService.php Datei als application/helpers/paypal_helper.php und fügte es hinzu zu application/config/autoload.php Um es in die App zu ziehen.

Jetzt, CallerService.php erfordert constants.php, Sie müssen also entweder kopieren und einfügen oder die einfügen oder die einschließen constants.php Datei in Ihrem Helfer -Verzeichnis. Ich habe gerade kopiert und eingefügt. Konfigurieren Sie dann unbedingt alle Konstanten für Ihr Konto.

Sobald das eingerichtet ist, sah mein Code nur so 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 definitiv gut.

Außerdem benötigen Sie definitiv ein SSL -Zertifikat. Diese können für eine einzelne Domäne für 30 US -Dollar gekauft werden. Sie sind zunächst ein wenig schwer zu errichten, aber Sie können diesen Schritt nicht überspringen. SSL schützt die Übertragung zwischen dem Computer des Kunden und Ihrem Server, sodass ihre CC -Informationen nicht gelesen werden können, da sie alle Server und Router (oder durch WLAN ausgeschnüffelt) durchläuft. Stellen Sie also sicher, dass das Formular in dem Formular, mit dem Sie CC -Informationen übernehmen, https: // und nicht ein ungesicherter http: // eingereicht.

Andere Tipps

Ich bin mir ziemlich sicher, dass Sie ein SSL -Zertifikat benötigen, egal was, wenn Ihre Website sensible Daten (dh Kreditkartennummer) benötigt. Wenn sie auf dem Server eines anderen (PayPal.com) nicht auf dem Server eines anderen sind, müssen Sie sich darum kümmern. Und wie Sie sagten, möchten Sie sie nicht an paypal.com schicken, also brauchen Sie einen.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top