Wie erhalten Sie PayPal Benutzerdaten und Transaktionsdetails mit paypal_permissions gem?

8

Ich brauche Transaktionsdaten (Datum, Wert) und Benutzerdaten. Kann ich dieses Juwel mit einigen Änderungen verwenden, wie in diesem frage ?

Auch aus der Dokumentation:

  

Wenn Sie z. B. planen, PayPal mithilfe von getBasicPersonalData und getAdvancedPersonalData abzufragen, generieren Sie möglicherweise ein Händlermodell wie:

%Vor%

Ich sollte Zahlungsdatenübertragung (PDT) oder TRANSACTION_DETAILS verwenden? Es ist ein Ort, wo ich Daten schreiben werde, aber wie kann ich Daten von PayPal bekommen?

Kann mir jemand ein Beispiel für Code geben?

    
Ostap 10.07.2012, 07:39
quelle

1 Antwort

1

Paypal Adaptive scheint der richtige Weg zu sein, hier sind einige Dokumente, die ich gefunden habe, hoffe, dass es hilft.

PayPal Adaptive mit Rails 3

Wie üblich ist die PayPal-Dokumentation ziemlich unordentlich und unorganisiert und so dachte ich, ich würde dokumentieren, wie es mir gelungen ist, Adaptive Adaptive auf einer Marktplatz-Website zu betreiben.

Warnung!

Bitte verwenden Sie diesen Beitrag als Anleitung, wie die paypal API mit Ihrer Rails App verbunden wird. Wie Jamesw in den Kommentaren darauf hinweist, habe ich keine angemessene Möglichkeit geschaffen, alle Details jeder Transaktion aufzuzeichnen; etwas, das zweifellos gesetzlich vorgeschrieben ist. Vielleicht werfen Sie einen Blick auf seinen Kommentar, nachdem Sie das gelesen haben. Hoffentlich können Sie einen Weg finden, dies zu tun

Einrichtung

Nach einigem Suchen fand ich heraus, dass der beste Edelstein, der jetzt benutzt wird, paypal_adaptive ist. ActiveMerchant unterstützt derzeit PayPal Adaptive nicht (es gibt ein Juwel, das es hinzufügt, aber es scheint nicht gepflegt zu werden.)

%Vor%

Wie es funktioniert

PayPal Adaptive ist relativ einfach, aber die unordentliche Dokumentation kann es entmutigend wirken lassen. Einfach gesagt, so habe ich es gemacht:

  1. Erstellen Sie paypal_adaptive.yml in Ihrem Konfigurationsordner und fügen Sie Ihre Details hinzu
  2. Erstellen Sie eine Ressource für die Abwicklung von Zahlungen - Ich habe eine Ressource "Purchases" (Modell: Purchase) erstellt
  3. Wenn der Benutzer auf eine Kauf-Schaltfläche klickt, ruft er eine Aktion auf, die ich in meinem PurchasesController aufgerufen habe
  4. in der "buy" -Aktion Ich erstelle zuerst einen neuen Kaufgegenstand (Purchase.new) und füge dann einige Details wie user_id, product_id, amount etc.
  5. hinzu
  6. Ich rufe dann eine Modellmethode namens "pay" auf meinem neu erstellten Kaufobjekt (purchase.pay)
  7. auf
  8. In meinem Kaufmodell definiere ich die "pay" -Methode und in ihr benutze ich schließlich das paypal_adaptive-Juwel, indem ich seine Request-Klasse (PaypalAdaptive :: Request.new)
  9. erstelle
  10. Ich füge alle notwendigen Daten, die ich an PayPal senden möchte, in einen Hash ein und führe dann die Request.pay-Methode aus und übergebe diesen Hash der Daten. Dies führt zu einem API-Aufruf an PayPal, der dann mit einer Bestätigung antwortet, dass diese Anfrage erfolgreich ist.
  11. Wenn der API-Aufruf erfolgreich ist, leite ich den Benutzer zu PayPal um, um mich anzumelden und die Zahlung zu bestätigen
  12. Sobald der Benutzer die Zahlung vorgenommen hat, sendet PayPal eine IPN (sofortige Zahlungsbenachrichtigung) an Ihre angegebene IPN-Adresse - die ich an eine Methode in meinem PurchasesController
  13. weitergeleitet habe
  14. Bei dieser Methode finde ich das Kaufobjekt und markiere es als bezahlt (purchase.paid = true) und dann ist es fertig!

paypal_adaptive.yml

Gehen Sie hier , um ein Sandbox-Konto zu erstellen (Sie werden es benötigen). Sobald Sie eingeloggt sind, gehen Sie auf "Create a preconfigured account". Erstellen Sie zwei Konten - einen Käufer und einen Verkäufer. Wenn Sie verkettete oder parallele Zahlungen verwenden (Zahlungen, die auf mehr als eine Person aufgeteilt sind), erstellen Sie weitere Konten.

Klicken Sie im linken Seitenbereich auf Api Credentials.

Füllen Sie nun Ihre paypal_adaptive.yml mit diesen Zugangsdaten aus (benutzen Sie auch die unten angegebene Anwendungs-ID - dies ist die Test-Anwendungs-ID von www.x.com

%Vor%

Erstellen Sie eine Controller-Aktion, um eine Kaufanfrage zu bearbeiten

Hier brauchen Sie nur wirklich den Geldbetrag, der bezahlt werden muss, und eine Liste der E-Mails, zu denen das Geld gehen soll. Schreiben Sie also Ihre Logik, um das herauszufinden, und rufen Sie dann PayPal an, um den Kauf einzurichten.

%Vor%

Behandlung des IPN-Anrufs

Ich route meinen IPN-Anruf von PayPal zu dieser Methode:

%Vor%

Leider, wenn Sie auf localhost sind, kann Ihnen PayPal das IPN nicht senden, und daher gibt es ein Problem beim Testen dieses ganzen Prozesses. Ryan Bates Lösung besteht darin, curl zu verwenden, um eine IPN-Anfrage nachzuahmen. Wie Sie jedoch im obigen Code sehen können, stellen wir eine weitere Anfrage an PayPal, in der bestätigt wird, dass das IPN echt ist. Selbst wenn wir ein gefälschtes IPN locken, stoßen wir auf Probleme. Ich werde jetzt nach Lösungen suchen, aber bitte kommentieren Sie, wenn Sie Ideen haben.

    
Francois 15.11.2012 07:28
quelle