2016-05-03 5 views
0

Eine kurze Geschichte: Ich habe einen Entwicklungsserver auf Heroku installiert, der im Produktionsmodus läuft.Force Rails Paypal gem zu verwenden Sandbox statt Live

Ich bin nicht sehr vertraut mit dem paypal-sdk-rest Edelstein, der in dieser App installiert ist (eigentlich bin ich neu in RoR).

Die Dokumentation hier lesen https://github.com/paypal/PayPal-Ruby-SDK Ich habe festgestellt, dass es eine Konfigurations-XML-Datei (config/paypal.yml) mit der client_id und der client_secret für Sandbox und Live für Entwicklungs- und Produktionsumgebungen gibt. Und eine Referenz darauf in config/initializers/paypal.rb.

Wenn ich an localhost arbeite, kann ich Zahlungen auf Sandbox erstellen und wenn ich auf meinem AWS-Server bin, kann ich Zahlungen auf Live erstellen. Aber auf Heroku brauche ich es, um Zahlungen auf Sandbox und nicht auf Live zu erstellen. So kommentierte ich den Verweis auf paypal.yml in paypal.rb und erklärte dies in paypal.rb:

#this was added 
PayPal::SDK.configure({ 
    :mode => "sandbox", 
    :client_id => "my-sandbox-id", 
    :client_secret => "my-sandbox-secret" 
}) 

Bevor Sie Dateien Heroku Senden ich auf localhost zu testen und ich erwartete die Sandbox Zahlungsseite zu sehen, da es funktionierte vor Entfernen der Konfigurationsdatei Ich erhalte diese Fehlermeldung statt:

{ "name" => "BUSINESS_VALIDATION_ERROR", "Details" => [{ "Feld" => "validation_error", "Ausgabe" => "Falsche Vorlage Id. "}], "message"=>" Validierungsfehler. " "information_link"=>" https://developer.paypal.com/webapps/developer/docs/api/#BUSINESS_VALIDATION_ERROR“, "debug_id"=> "einige id hier"}

Zusätzliche Informationen : Bevor ich die Konfigurationsdatei entfernte, kopierte ich gerade die Entwicklungsinformationen in die Produktion. Ich habe Heroku getestet und den gleichen Fehler bekommen.

Irgendwelche Ideen Leute?

Antwort

0

Ich würde die Schlüssel über eine Umgebungsvariable hinzufügen. Auf diese Weise wird jede Umgebung auf den richtigen Schlüssel verweisen, und Sie müssen sie nicht in die Quellcodeverwaltung einchecken. https://github.com/laserlemon/figaro ist ein gutes Juwel, wenn Sie diese Route gehen wollen. Alternativ können Sie Ihre Datei config/paypal.yml so einrichten, dass sie auf die verschiedenen Umgebungen verweist. Das würde eher wie folgt aussehen:

development: 
    :mode: "sandbox" 
    :client_id: "my-sandbox-id" 

production: 
    :mode: "not-sandbox-er-whatever" 
    :client_id: "my-not-sandbox-id" 
+0

ja. das habe ich ursprünglich bekommen. Aber ich habe versucht, Heroku dazu zu bringen, beide an der Sandbox zu arbeiten. Und dann bekomme ich diesen Fehler –

+0

Ich rate, dass die Konfigurationsdatei für mehr verwendet wird, als nur von paypal.rb verwiesen wird, aber ich könnte falsch liegen. In jedem Fall sollte die Verwendung von Umgebungsvariablen dieses Problem lösen. Sie können es testen, indem Sie die Variable paypal.rb auf eine Variable verweisen lassen, die Sie manuell mit heroku exportieren. –

Verwandte Themen