2016-10-31 21 views
0

この質問は以前に尋ねられましたが、どちらのリンクにも顕著な解決策はなく、リンクに記載されているすべての方法を試しても問題は解決しません。私はストライプ購読プランを生成しようとしていますが、そのプロセスを通過するたびに「この顧客は支払い元がありません」というエラーが表示されます。スクリーンショットで見ることができるように、stripe_card_tokenも生成され、console.logにはJSのトークンもあり、それも生成されます。関連するすべてのコードファイルを添付しました。StripeJSエラー:この顧客には未払いの支払い元がありません

このプロジェクトのGithubのリンク:https://github.com/arpit016/picture-app

Stripeerrorスクリーンショット

enter image description here

user.rbファイル

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, :confirmable, 
     :recoverable, :rememberable, :trackable, :validatable 

    belongs_to :plan 
    attr_accessor :stripe_card_token 

    def save_with_payment 
    if valid? 
     customer = Stripe::Customer.create(
     :source => stripe_card_token, 
     :email => email, 
     :plan => plan_id 
    ) 

     self.stripe_customer_token = customer.id 
     save! 
    end 
    end 

end 

users.jsが

$(document).ready(function() { 
    Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content')); 

    $('#form-submit-btn').click(function(event) { 
     event.preventDefault(); 
     $('input[type=submit]').prop('disabled', true); 
     var error = false; 
     if (!error) { 
      Stripe.card.createToken($('#new_user'), stripeResponseHandler); 
     } 
     return false; 
    }); //form submission 

    function stripeResponseHandler(status, response){ 
     if (status == 200){ 
      //Get a reference to the form 
      var f = $('#new_user'); 

      //Get the token from the response 
      var token = response.id; 
      console.log("Token:" + token); 

      //Add the token to the form 
      f.append('<input type="hidden" name="user[stripe_card_token]" value="' + token + '" />'); 
      console.log(f) 

      //Submit the form 
      f.get(0).submit(); 
     } 
     else { 
      $('#stripe_error').text(response.error.message).show(); 
      $('input[type=submit]').attr('disabled', false) 
     } 
    } 
}); 
を提出210件の

考案変形登録コントローラ

class Users::RegistrationsController < Devise::RegistrationsController 
    before_filter :select_plan, only: [:new] 

    def create 
     super do |resource| 
      if params[:plan] 
       resource.plan_id = params[:plan] 
       if resource.plan_id == 2 
        resource.save_with_payment 
       else 
        resource.save 
       end 
      end 
     end 
    end 

    def select_plan 
     unless params[:plan] && (params[:plan] == '1' || params[:plan] == '2') 
     flash[:warning] = "Please select a valid membership" 
     redirect_to root_url 
     end 
    end 


end 
+0

@Deepak:私は工夫のためのラインの下に含まれている必要があります私のapplication_controller.rbファイルを更新していませんでした –

答えて

0

はそれを考え出しました。レールルーキーミス。私はそのリンクを見ていると、顧客を作成しながら、私はすでにソースの代わりのカードを使用しています

def configure_permitted_parameters 
    devise_parameter_sanitizer.permit(:sign_up, keys: [:stripe_card_token]) 
    end 
関連する問題