お客様に製品登録を請求しようとしています。私はこのチュートリアルupskillcourses.comに従ってきました。これはサブスクリプションを設定します。私はただ製品の料金を作成しようとしています。Railsストライプインテグレーションでアクティブカードエラーが発生しない
私はこのerror
を得続ける:
は Stripe::CardError in Roadregistrations::RegistrationsController#create Cannot charge a customer that has no active card
私はセットアップstripe.js
ファイルました:
アプリ/資産/ JavaScriptのは/それはtoken
ように思える
/* global $, Stripe */
//Document ready.
$(document).on('turbolinks:load', function(){
var theForm = $('#payment-form');
var submitBtn = $('#form-submit-btn');
//Set Stripe public key.
Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'));
//When user clicks form submit btn,
submitBtn.click(function(event){
//prevent default submission behavior.
event.preventDefault();
submitBtn.val("Processing").prop('disabled', true);
//Collect the credit card fields.
var ccNum = $('#card_number').val(),
cvcNum = $('#card_code').val(),
expMonth = $('#card_month').val(),
expYear = $('#card_year').val();
//Use Stripe JS library to check for card errors.
var error = false;
//Validate card number.
if(!Stripe.card.validateCardNumber(ccNum)) {
error = true;
alert('The credit card number appears to be invalid');
}
//Validate CVC number.
if(!Stripe.card.validateCVC(cvcNum)) {
error = true;
alert('The CVC number appears to be invalid');
}
//Validate expiration date.
if(!Stripe.card.validateExpiry(expMonth, expYear)) {
error = true;
alert('The expiration date appears to be invalid');
}
if (error) {
//If there are card errors, don't send to Stripe.
submitBtn.prop('disabled', false).val("Register and Pay");
} else {
//Send the card info to Stripe.
Stripe.createToken({
number: ccNum,
cvc: cvcNum,
exp_month: expMonth,
exp_year: expYear
}, stripeResponseHandler);
}
return false;
});
//Stripe will return a card token.
function stripeResponseHandler(status, response) {
//Get the token from the response.
var token = response.id;
//Inject the card token in a hidden field.
theForm.append($('<input type="hidden" name="user[stripe_card_token]">').val(token));
//Submit form to our Rails app.
theForm.get(0).submit();
}
});
ではありませんフォームと共に提出されています。
ない私は私のusers_controller.rb
にこれらの両方が必要な場合は必ず:
# Only allow a trusted parameter "white list" through.
def roadregistration_params
params.require(:user).permit(:first_name, :last_name, :company, :street, :city, :state, :zip, :email, :phone, :roadshowcity, :stripe_card_token, :comments)
end
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:stripe_card_token, :password, :password_confirmation, :email, :first_name, :last_name, :company, :street, :city, :state, :zip, :phone, :roadshowcity, :comments) }
end
その後、私は私のuser model
でこれをしている:あなただけにカードをリンクする必要があり
attr_accessor :stripe_card_token
# If user passes validations (email, pass, etc.),
# Call stripe and tell stripe to set up a subscription
def save_with_registration
if valid?
@product_price = Objective.find(objective_id)
customer = Stripe::Customer.create(email: email, card: stripe_card_token, description: stripe_card_token.to_s)
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => 9500,
:currency => "usd",
:description => "Roadshow Registration"
)
self.stripe_customer_token = customer.id
save!
end
end
customer = Stripe::Customer.create(email: '[email protected]') => #<Stripe::Customer:0x3ffd3a10e024 id=cus_A5CWbyto5ugmju> JSON: { "id": "cus_A5CWbyto5ugmju", "object": "customer", "account_balance": 0, "created": 1486585998, "currency": null, "default_source": null, "delinquent": false, "description": null, "discount": null, "email": "[email protected]", "livemode": false, "metadata": {}, "shipping": null, "sources": {"object":"list","data":[],"has_more":false,"total_count":0,"url":"/v1/customers/cus_A5CWbyto5ugmju/sources"}, "subscriptions": {"object":"list","data":[],"has_more":false,"total_count":0,"url":"/v1/customers/cus_A5CWbyto5ugmju/subscriptions"} }
ありがとうございましたが、それは私に「#Stripe :: Customer: 'のための'未定義のメソッド 'cards '」というエラーを与えるだけです。また、ストライプAPIドキュメントを見ると、 'customer.cards'オブジェクトはありません。 – Corey
'customer = Stripe :: Customer.create(email: '[email protected]')'の結果をあなたのレールコンソールに投稿できますか? –
私は私のstackoverflow質問に出力を追加しました。 – Corey