Rails app using stripe for payments: can't transmit plan_id from app to stripe website <p>I'm trying to integrate stripe into my app. I'm following a Railscast (#288) but I'm getting the impression there a are few things that Ryan isn't mentioning explicitly.</p> <p>My problem is that the plan_id on my app doesn't get transmitted over to Stripe. Once I generate a test transaction in my app and I log on to Stripe, it will show that a new customer with a valid card was created, but the plan_id isn't transmitted. I do have plans setup on stripe. But since no plan_id is submitted, the credit card never gets charged. So I've got customers, but no payments.</p> <p>Here's my subscription/new.html.haml. I'm wondering if I need to assign a value to the hidden field "plan_id."</p> <pre><code>%p = @plan.name = @plan.price = form_for @subscription do |f| - if @subscription.errors.any? .error_messages %h2 = pluralize(@subscription.errors.count, "error") prohibited this subscription from being saved: %ul - @subscription.errors.full_messages.each do |msg| %li= msg = f.hidden_field :plan_id = f.hidden_field :stripe_card_token .field = f.label :email = f.text_field :email - if @subscription.stripe_card_token Credit card has been provided - else .field = label_tag :card_number, "Credit Card Number " = text_field_tag :card_number, nil, name: nil .field = label_tag :card_code, "Security Code on Card (CVV)" = text_field_tag :card_code, nil, name: nil .field = label_tag :card_month, "Card Expiration" = select_month nil, {add_month_numbers_true: true}, {name: nil, id: "card_month"} = select_year nil, {start_year: Date.today.year, end_year: Date.today.year+15}, {name: nil, id: "card_year"} .stripe_error %noscript JavaScript is not enabled and is required for this form. First enable it in your web browser settings. .actions= f.submit "Subscribe" </code></pre> <p>Here's my subscription controller. The params(:plan_id) is passed using a string query.</p> <pre><code> def new @subscription = Subscription.new @plan = Plan.find_by_id(params[:plan_id]) end def create @subscription = Subscription.new(params[:subscription]) if @subscription.save_with_payment flash[:success] = "Thank you for subscribing!" redirect_to @subscription else render 'new' end end </code></pre> <p>Here's my model for subscription.rb</p> <pre><code>class Subscription &lt; ActiveRecord::Base has_many :users belongs_to :plan #validates_presence_of :plan_id, :email attr_accessible :stripe_card_token, :plan_id, :email attr_accessor :stripe_card_token def save_with_payment if valid? customer = Stripe::Customer.create(description:email, plan: plan_id, card: stripe_card_token) self.stripe_customer_token = customer.id save! end rescue Stripe::InvalidRequestError =&gt; e logger.error "Stripe error while creating customer: #{e.message}" errors.add :base, "There was a problem with your credit card." end end </code></pre>