【发布时间】:2016-07-15 22:08:59
【问题描述】:
我检查了每个可能包含问题的文件,尝试使用其他 API 版本,所以基本上尝试了我在互联网上找到的所有内容。
这是我的 User.rb 文件:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
belongs_to :plan
attr_accessor :stripe_card_token
def save_with_payment
if valid?
customer = Stripe::Customer.create(description: email, plan: plan_id, source: stripe_card_token)
self.stripe_customer_token = customer.id
save!
end
end
end
这里是注册控制器:
class Users::RegistrationsController < Devise::RegistrationsController
before_filter :select_plan, only: :new
def create
super do |resource|
if params[:plan]
resource.plan_id = params[:plan]
if resource.plan_id == 2
resource.save_with_payment
else
resource.save
end
end
end
end
private
def select_plan
unless params[:plan] && (params[:plan] == '1' || params[:plan] == '2')
redirect_to root_url
end
end
end
最后是 User.js 文件:
$(document).ready(function(){
Stripe.setPublishableKey($('meta[name="stripe_key"]').attr('content'));
$("#from-submit-btn").click(function(event) {
event.preventDefault();
$('input[type=submit]').attr('disabled', true);
var error = false;
var ccNum = $('#card_number').val(),
cvcNum = $('#card_code').val(),
expMonth = $('#card_month').val(),
expYear = $('#card_year').val();
if (!error) {
Stripe.createToken({
number: ccNum,
cvc: cvcNum,
exp_month: expMonth,
exp_year: expYear
}, stripeResponseHandler);
}
});
function stripeResponseHandler(status, response) {
var f = $("#new_user");
var token = response.id;
f.append('<input type="hidden" name="user[stripe_card_token]" value="' + token + '" />');
f.get(0).submit();
}
});
我感到很沮丧,虽然我尝试了几种方法来解决它,但我无法真正找到问题所在。会感谢任何人的帮助!!!
【问题讨论】:
-
你使用什么版本的
stripegem? -
1.16.1 是 gem 的版本。我尝试的 API 是最新的和 2015-01-11。
-
1.16.1已经很老了,比您尝试过的两个 api 版本都旧。您是否考虑过更新到较新的版本?目前1.38.0是最新版本。 -
我已经尝试过了,但仍然收到错误“此客户没有附加的付款来源”。虽然在服务器尝试提交事务后我看到 500 Internal Server。
-
条带化日志给出 400 请求错误。
标签: javascript ruby ruby-on-rails-4 stripe-payments