Streifen - Kein API-key vorhanden?
Bin ich zu kämpfen mit diesem Fehler Kein API-key zur Verfügung gestellt. Stellen Sie Ihren API-Schlüssel verwenden " - Streifen.api_key = ". Sie können generieren API-keys aus dem Streifen-web-Schnittstelle in eine Rails-app nach der folgenden Schritt für Schritt Streifen s guide.
Was ich sehe, sieht alles gut aus, aber es hält Rückkehr, dass die Ankündigung. Irgendwelche Ratschläge?
Gebühren Controller:
class ChargesController < ApplicationController
def new
end
def create
# Amount in cents
@amount = 500
customer = Stripe::Customer.create(
:email => '[email protected]',
:card => params[:stripeToken]
)
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => @amount,
:description => 'Rails Stripe customer',
:currency => 'usd'
)
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to charges_path
end
end
config/Initialisierungen/Streifen.rb
Rails.configuration.stripe = {
:publishable_key => ENV['pk_test_KEY'],
:secret_key => ENV['sk_test_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
Terminal trace
Started POST "/Gebühren" für 127.0.0.1 bei 2014-12-12 22:15:08 +0100
Processing by ChargesController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"XXX", "stripeToken"=>"tok_1590kf2NNSl5uX0kXE9XXX", "stripeTokenType"=>"card", "stripeEmail"=>"[email protected]"}
Completed 500 Internal Server Error in 2ms
Stripe::AuthenticationError - No API key provided. Set your API key using "Stripe.api_key = <API-KEY>". You can generate API keys from the Stripe web interface. See https://stripe.com/api for details, or email [email protected] if you have any questions.:
() Users/javier/.rvm/gems/ruby-2.1.2/bundler/gems/stripe-ruby-9c7ebd21c973/lib/stripe.rb:71:in `request'
() Users/javier/.rvm/gems/ruby-2.1.2/bundler/gems/stripe-ruby-9c7ebd21c973/lib/stripe/api_operations/create.rb:6:in `create'
() Users/javier/Desktop/definitive/app/controllers/charges_controller.rb:10:in `create'
Getestet, unter anderem die Schlüssel in die Geheimnisse.yml als @sealocal schlägt in den Kommentaren, aber immer noch das gleiche Problem:
development:
secret_key_base: key
publishable_key: anotherkey
secret_key: anotherkey
test:
secret_key_base:key
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
publishable_key: <%= ENV["publishable_key"] %>
secret_key: <%= ENV["secret_key"] %>
- Sind diejenigen, die Ihre echten Tasten? Ich glaube, Sie wollen nicht
ENV['pk_test_NYW7gGgMYnx4HznUXLyti5r3']
. Wenn Sie hard-Codierung der Werte ist, einfach die'pk_test_NYW7gGgMYnx4HznUXLyti5r3'
. - Ehemaligen-Tasten, nicht mehr in Gebrauch. Getestet, aber es hält die Rückkehr der gleichen Begründung.
- Wo speichern Sie Ihre Streifen lösen? Sollten Sie eine Datei haben, legt die ENV-Variablen. Wie sieht es aus?
- in config/Initialisierungen/Streifen.rb, ist das nicht richtig?
- Ich glaube nicht, dass Sie tun es der richtige Weg. Ich denke, meine Antwort könnte dir helfen.
- Sind Sie versuchen, diese arbeiten in Ihrer Entwicklungsumgebung (z.B. localhost)?
- Hab ihn in "localhost" und der Produktion (Heroku). Beide gleichen Problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie speichern Sie Ihre Streifen-Tasten, die in Umgebungsvariablen, so dass
config/initializers/stripe.rb
Lesen kann.In Rails 4.1+ können Sie
Geheimnisse.yml
:HINWEIS: Verwenden genau zwei Leerzeichen bei der Definition der verschachtelten Schlüssel-Wert-Paare in YAML. Das heißt, die Tasten unter
development
eingerückt werden soll, der durch zwei Leerzeichen und nicht mit einem tab-Zeichen. Dies ist, weil YAML-Dateien strikt davon abhängen, die Einrückung.In
config/initializers/stripe.rb
:secrets.yml
Sie haben Zugriff auf Ihre Geheimnisse mit dieser syntax:Rails.application.secrets.publishable_key
. Aktualisierte Antwort zu zeigen, was Ihrestripe.rb
Aussehen sollte. Ihr code in der Frage nicht zu zeigen, die Sie verwendet haben, die syntax. Hilft das?stripe.rb
- Datei. Der Punkt ich versuche zu machen ist, dass Sie in Ihremstripe.rb
Sie eine Zeile, die wie folgt aussieht::publishable_key => ENV['pk_test_KEY']
, aber Sie sollten mitRails.application.secrets.pk_test_key
im OrtENV['pk_test_key']
. Es spielt keine Rolle, wenn man den Namenpk_test_key
oderpublishable_key
, wie lange Sie übereinstimmung zwischen Ihrerstripe.rb
undsecrets.yml
.secrets.yml
so, dass meine Anregung ist klar.$ spring stop
, und dann$ rails s
wieder zu starten.Streifen-support beantwortet meine E-Mails und Ihre Lösung ist in Ordnung:
config/Initialisierungen/Streifen.rb
Ebenfalls Teil Ihrer Antwort Es sieht aus wie Sie versuchen, Ihren API-Schlüssel, um eine ENV-variable, benannt nach Ihrem Schlüssel, den Sie wahrscheinlich nicht mit einem gültigen key. Sie wird es ändern wollen, ENV['NAME_OF_ENV_VAR_HERE'], oder greifen Sie einfach auf die Taste direkt, wie die Zeilen oben