He estado trabajando en la integración de Stripe en mi aplicación web, y parece que no funciona. Para ayudarme, he estado usando Rails Cast de Ryan Bates para integrar Stripe. Cada vez que intento ejecutar el formulario de pago, aparece un mensaje de error que dice "Hubo un problema con mi tarjeta de crédito". Creo que el problema radica en mi archivo coffeescript, pero quizás estoy equivocado. Incluí el token de usuario de stripe como parte de mi modelo de usuario en lugar de colocarlo en su propio modelo de suscripción. Aquí está el código que tengo CoffeeScript:¿Qué hay de malo con mi coffeescript en 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)
Soy un principiante cuando se trata de la programación, por lo que cualquier ayuda que puede dar mí sería grande.
Aquí está el error que consigo en mi terminal cuando intento para inscribirse:
Parámetros: { "UTF-8" => "✓", "authenticity_token" => "Xas + iA + a3op7jUi57qTr7XWQSClPscA7fR19rkclkEE =" " usuario "=> {" stripe_card_token "=>" "," name "=>" Jack "," email "=>" [email protected] "," phone_number "=>" 203-xxx-xxxx "," contraseña "=>" [FILTERED] "," password_confirmation "=>" [FILTERED] "}," commit "=>" Crear mi cuenta "}
El usuario existe (0.2ms) SELECT 1 AS one FROM" users " WHERE LOWER ("usuarios". "Email") = LOWER ('[email protected] ') LÍMITE 1 Error de banda mientras se crea el cliente: ID del token no válido:
Mi visión para el registro es el siguiente:
<% 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>
Mi código para mi controlador está presente para el método de crear:
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
Mi código para la migración de base de datos para el token de usuario es la siguiente:
class AddStripeToUsers < ActiveRecord::Migration
def change
add_column :users, :stripe_customer_token, :string
end
end
Y el código para el método save_with_payment en mi modelo es la siguiente:
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
¿Qué 'estado' y' respuesta' están recibiendo y qué le hace pensar que su CoffeeScript en lugar de la información de su tarjeta es el problema? –
En línea, mi cuenta se encuentra actualmente en modo de prueba, y estoy usando el código de la tarjeta: 4242424242424242, el código de cvc: 123 y una fecha de vencimiento pasada el mes de hoy. No obtengo un error de aplicación, sino solo un error de que la información de la tarjeta es incorrecta. Agregaré el error que recibí en mi terminal a la pregunta original. ¡Gracias por tu interés! – user1483441
¿Por qué está comprobando 'status == 500' como una condición de éxito? Eso significa que hubo un error del servidor en los servidores de Stripe. Debería verificar 'if (! Response.error)'. Notaste que 'stripe_card_token' está vacío en tu servidor, ¿verdad? –