Ho lavorato all'integrazione di Stripe nella mia applicazione Web e non sembra funzionare. Per aiutarmi, ho utilizzato Rails Cast di Ryan Bates sull'integrazione di Stripe. Ogni volta che cerco di eseguire il modulo di pagamento, ricevo un errore che dice "C'era un problema con la mia carta di credito". Penso che il problema risieda nel mio file coffeescript, ma forse mi sbaglio. Ho incluso il token utente stripe come parte del mio modello utente invece di inserirlo nel suo modello di abbonamento. Ecco il codice CoffeeScript ho:Cosa c'è di sbagliato con il mio coffeescript a Stripe?
jQuery ->
Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'))
subscription.setupForm()
user =
setupForm: ->
$('#new_user').submit ->
$('input[type=submit]').attr('disabled', true)
if $('#card_number').length
user.processCard()
false
else
true
processCard: ->
card =
number: $('#card_number').val()
cvc: $('#card_code').val()
expMonth: $('#card_month').val()
expYear: $('#card_year').val()
Stripe.createToken(card, user.handleStripeResponse)
handleStripeResponse: (status, response) ->
if status == 500
$('#user_stripe_card_token').val(response.id)
$('#new_user')[0].submit()
else
$('#stripe_error').text(response.error.message)
$('input[type=submit]').attr('disabled', false)
Sono un principiante quando si tratta di programmazione, in modo che qualsiasi aiuto che potete dare me sarebbe fantastico.
Ecco l'errore che ottengo nel mio terminale quando provo ad iscriversi:
Parametri: { "utf8" => "✓", "authenticity_token" => "Xas + iA + a3op7jUi57qTr7XWQSClPscA7fR19rkclkEE =", " utente "=> {" stripe_card_token "=>" "," name "=>" Jack "," email "=>" [email protected] "," numero_telefono "=>" 203-xxx-xxxx "," password "=>" [FILTRATO] "," password_confirmation "=>" [FILTRATO] "}," commit "=>" Crea il mio account "}
Utente esistente (0,2 ms) SELECT 1 AS uno da" utenti " WHERE LOWER ("users". "Email") = LOWER ('[email protected] ') LIMIT 1 Errore righe durante la creazione del cliente: ID token non valido:
mio punto di vista per l'iscrizione è questo:
<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>
<div class="row">
<div class="span6 offset3">
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages' %>
<%= f.hidden_field :stripe_card_token %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :phone_number, "Your cell phone number" %>
<%= f.text_field :phone_number %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation, "Password confirmation" %>
<%= f.password_field :password_confirmation %>
<%= label_tag :card_number, "Credit Card Number" %>
<%= text_field_tag :card_number, nil, name: nil %>
<%= label_tag :card_code, "Security Code on Card (CVV)" %>
<%= text_field_tag :card_code, nil, name: nil %>
<%= label_tag :card_month, "Card Expiration" %>
<%= select_month nil, {add_month_numbers: 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"} %>
<%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
<% end %>
</div>
</div>
<div id="stripe_error">
<noscript>JavaScript is not enabled and is required for this form. First enable it in your web browser settings.</noscript>
</div>
Il mio codice per il mio controller è questo per il metodo create:
def create
@user = User.new(params[:user])
if @user.save_with_payment
sign_in @user
flash[:success] = "Welcome to the Sample App!"
redirect_to edit_user_path(current_user)
UserMailer.welcome_email(@user).deliver
else
render 'new'
end
end
Il mio codice per la migrazione di database per il token dell'utente è questo:
class AddStripeToUsers < ActiveRecord::Migration
def change
add_column :users, :stripe_customer_token, :string
end
end
E il codice per il metodo save_with_payment nel mio modello è questo:
def save_with_payment
if valid?
customer = Stripe::Customer.create(description: email, plan: 1, card: stripe_card_token)
self.stripe_customer_token = customer.id
save!
end
rescue Stripe::InvalidRequestError => e
logger.error "Stripe error while creating customer: #{e.message}"
errors.add :base, "There was a problem with your credit card."
false
end
Quali 'status' e' response' stai tornando e cosa ti fa pensare che il tuo CoffeeScript piuttosto che le tue informazioni sulla carta sia il problema? –
In stripe, il mio account è attualmente in modalità test e sto utilizzando il codice della scheda: 4242424242424242, il codice cvc: 123 e una data di scadenza oltre il mese di oggi. Non ricevo un errore dell'applicazione, ma solo un errore che le informazioni della carta non sono corrette. Aggiungerò l'errore che ricevo nel mio terminale alla domanda originale. Grazie per il tuo interesse! – user1483441
Perché stai selezionando 'status == 500' come una condizione di successo? Ciò significa che c'è stato un errore del server sui server Stripe. Dovresti controllare 'if (! Response.error)'. Hai notato che 'stripe_card_token' è vuoto sul tuo server, giusto? –