Sto spegnendo il checkout delle strisce con stripe.js. Tutto funziona quando digito una carta, tranne che non passa mai. Ogni volta che fare clic su Invia sto ottenendo un errore che dice:Impossibile caricare un cliente che non ha una striscia di carta attiva
Cannot charge a customer that has no active card
Ho provato utilizzando sia la scheda di prova e un vero e proprio numero di carta di credito e due di loro mi stanno dando lo stesso errore. Qui è la mia stripe.rb:
class ChargesController < ApplicationController
before_action :authenticate_user!
def new
end
def create
# Amount in cents
@amount = 500
customer = Stripe::Customer.create(
:email => params[:stripeEmail],
:source => params[:stripeToken]
)
Stripe.api_key = 'sk_test_string'
charge = Stripe::Charge.create(
:amount => 1000,
:customer => customer.id,
:currency => "usd",
:card => params[:stripeToken] # replace full card details with the string token from our params
)
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to new_charge_path
end
end
Ecco il mio Haml con il javascript embeded:
.well{:style => "margin-left: 0px; position: relative; min-width: 650px; min-height: 180px; max-height: 180px"}
= form_tag charges_path :id => 'payment-form' do
.row
.row
%div
%label.control-label{:for => "number"} Card Number
%input#number{"data-stripe" => "number", :pattern => "[\\d ]*", :placeholder => "**** **** **** ****", :size => "20", :style => "width: 18em", :type => "text", :maxlength => "16"}/
.row
%div
%label.control-label{:for => "cvc"} CVC
%input#cvc{"data-stripe" => "cvc", :pattern => "\\d*", :placeholder => "***", :size => "3", :style => "width: 3em", :type => "text"}/
= image_tag "credit.png"
%div
%label.control-label Exp (MM/YYYY)
%input#exp-month{"data-stripe" => "exp-month", :pattern => "\\d*", :placeholder => "MM", :size => "2", :type => "text"}/
%span/
%input#exp-year{"data-stripe" => "exp-year", :pattern => "\\d*", :placeholder => "YYYY", :size => "4", :type => "text"}/
.row
.price
5.00
%div
%button.btn.btn-primary.btn-large{:type => "submit"} Buy Now
:javascript
Stripe.setPublishableKey('pk_test_string');
$('#payment-form').submit(function(event) {
var form = $(this);
form.find('button').prop('disabled', true);
Stripe.createToken(form, stripeResponseHandler);
return false;
});
function stripeResponseHandler(status, response) {
var form = $('#payment-form');
if (response.error) {
form.find('.payment-errors').text(response.error.message);
form.find('button').prop('disabled', false);
} else {
var token = response.id;
form.append($('<input type="hidden" name="stripeToken">').val(token));
form.get(0).submit();
}
Edit: sono andato in file registro degli errori stripe e mi sta dando questa:
error:
message: "Cannot charge a customer that has no active card"
type: "card_error"
param: "card"
code: "missing"
Ma ho compilato l'errore della scheda e dovrebbe funzionare. Se aiuta mi sto usando le chiavi di test.
Edit 2: Ecco ciò che viene inviato nella striscia
id: cus_7gzOPGpAB2DMYY
object: "customer"
account_balance: 0
created: 1452402410
currency: null
default_source: null
delinquent: false
description: "Thank you"
discount: null
email: null
livemode: false
metadata:
shipping: null
sources:
object: "list"
data:
has_more: false
total_count: 0
url: "/v1/customers/cus_7gzOPGpAB2DMYY/sources"
subscriptions:
object: "list"
data:
has_more: false
total_count: 0
url: "/v1/customers/cus_7gzOPGpAB2DMYY/subscriptions"
Sei sicuro ?? –
Tutto funzionava, tranne stripe.js non è riuscito a trovare il modulo di pagamento. – Jakxna360