2016-03-31 19 views
0

Sitemde yönetilen Stripe hesabı oluşturulduktan sonra kullanıcının Stripe gizli ve yayınlanabilir anahtarlarını veritabanıma kaydetmeye çalışıyorum.NoMethodError Stripe anahtarlarını veritabanına kaydederken, Rails

stripe_controller.rb

def create 

    Stripe.api_key = Rails.configuration.stripe[:secret_key] 
    @account = Stripe::Account.create(
    managed: true, 
    country: params[:artist_payment_setting][:country], 
    email: @artist.email, 
    tos_acceptance: { 
     ip: request.remote_ip, 
     date: Time.now.to_i 
    }, 
    legal_entity: { 
     dob: { 
     month: params[:artist_payment_setting][:month], 
     day: params[:artist_payment_setting][:day], 
     year: params[:artist_payment_setting][:year] 
     }, 
     first_name: params[:artist_payment_setting][:first_name], 
     last_name: params[:artist_payment_setting][:last_name], 
     type: 'individual', 
    } 
) 

    if @account.save 
    @payment = @artist.create_artist_payment_setting(
     currency: @account.default_currency, 
     country: @account.country, 
     stripe_id: @account.id, 
     stripe_publishable_key: @account.keys.publishable, ***********problem******** 
     stripe_secret_key: @account.keys.secret   ***********problem******** 
    ) 
    end 

    redirect_to artist_path(@artist) 
end 

Unfortuntely, ben NoMethodError (undefined method 'publishable' for #<Array:0x007f57d83edaf0>) gösterilmeye devam secret ile aynı.

API yanıtı

{ 
    keys: 
    { 
     secret: "secret_key" 
     publishable: "publish_key" 
    } 
} 

bu anahtarları nasıl anlamaya Can not olduğunu.

+0

Ne içerdiğini görmek için '@ account.keys.inspect''e baktınız mı? Hata mesajı bunun bir "Array" olduğunu düşündürüyor ... –

+0

Evet, neden bir 'Array' olarak geri geldiğini anlayamıyorum. API'dan yanıt alınmıyor. –

+0

Konsolunuzda @ account.keys işlevini kullanmak için 'byebug' kullanmayı deneyin. Kaydedilmeden önce @ hesabının neye benzediğini gönderir misiniz? –

cevap

0

Bu, Stripe ile ilgili bir hata olduğunu düşünüyorum. @account bir Hash gibi davranıyor gibi görünüyor, bu yüzden beklediğinizden çok bir anahtar ([:keys] bu durumda) bir dizi anahtar döndürür.

Bu belgelerde değil, ama bir karma biçimi gibi nesne tedavi sorununuzu çözebilir: bu beri sadece kafaları yukarı

@account[:keys][:publishable] 

, Stripe::Payment içinde #capture yöntemi ile benzer bir böcek var Ruby de kelime saklıdır. Stripe'nin, yanıtları içerisinde ayrılmış sözcükler kullanma alışkanlığı içinde olduğundan emin değil.

+0

Sadece denedim - 'NoMethodError (undefined method' [] 'için nil: NilClass)' –

+0

olarak döndü Denemek istedim '@ account.to_h'? Yukarıda verdiğiniz API yanıtını veriyor mu? –