- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我不再收到任何错误,但我知道当我创建一个新用户时,不会写入 stripeToken。
class Users::RegistrationsController < Devise::RegistrationsController
def create
super do |resource|
if params[:plan]
resource.plan_id == params[:plan]
if resource.plan_id == 1
resource.save_with_payment
else
resource.save
end
end
end
end
class Users < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
belongs_to :plan
attr_accessor :stripeToken
def payment
if valid?
customer = Stripe::Customer.create(
description: email,
plan: plan_id,
card: stripeToken
)
self.stripeToken = customer.id
save!
end
end
end
$(document).ready(function() {
Stripe.setPublishableKey($('meta[name="stripe-key"]').attr("content"));
// Watch for a form submission
$("#form-submit-btn").click(function(event) {
event.preventDefault();
$("input[type=submit]").prop("disabled", true);
var error = false;
var ccNum = $("#card_number").val(),
cvcNum = $("#card_code").val(),
expMonth = $("#card_month").val(),
expYear = $("#card_year").val();
if (!error) {
// Get the Stripe token:
Stripe.createToken({
number: ccNum,
cvc: cvcNum,
exp_month: expMonth,
exp_year: expYear
}, stripeResponseHandler);
}
return false;
}); // form submission
function stripeResponseHandler(status, response) {
// Get a reference to the form:
var f = $("#new_user");
// Get the token from the response:
var token = response.id;
// Add the token to the form:
f.append('<input type="hidden" name="user[stripe_card_token]" value="' + token + '" />');
// Submit the form:
f.get(0).submit();
}
});
<!DOCTYPE html>
<html>
<head>
<title>tinito</title>
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "https://js.stripe.com/v2/", type: "text/javascript" %>
<%= javascript_include_tag "application" %>
<%= tag :meta, name: "stripe_api_key", content: STRIPE_PUBLISHABLE_KEY %>
<%= csrf_meta_tags %>
</head>
<body>
<%= render "layouts/header" %>
<% flash.each do |key, value| %>
<%= content_tag :div, value, class: "alert alert-#{key}" %>
<% end %>
<%= yield %>
<%= render "layouts/footer" %>
</body>
</html>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<%= hidden_field_tag "plan", params[:plan] %>
<div class="field form-group">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true, placeholder: "Email", class: "form-control" %>
</div>
<div class="field form-group">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "off", placeholder: "Password", class: "form-control" %>
</div>
<div class="field form-group">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "off", placeholder: "Confirm Password", class: "form-control" %>
</div>
<div class="form-group">
<%= label_tag :card_number, "Credit Card Number" %>
<%= text_field_tag :card_code, nil, name: nil, placeholder: "41*****", class: "form-control" %>
</div>
<div class="form-group">
<%= label_tag :card_code, "Security Code on Card (CVV)" %>
<%= text_field_tag :card_number, nil, name: nil, placeholder: "123", class: "form-control" %>
</div>
<div class="form-group">
<%= label_tag :card_month, "Card Expiration" %>
<%= select_month nil, {add_month_number: 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"} %>
</div>
<div class="actions form-group">
<%= f.submit "Sign up", class: "btn btn-primary", id: "form-submit-btn" %>
</div>
<% end %>
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, :stripeToken, :email, :password, :password_confirmation) }
end
end
class AddStripeTokenToUsers < ActiveRecord::Migration
def change
add_column :users, :stripeToken, :string
end
end
最佳答案
将 ID 添加到您的 form_for 中:views/devise/registrations/_pro_form.html.erb
<%= form_for(resource, as: resource_name, :html => {:id => "payment-form"}, url: registration_path(resource_name)) do |f| %>
同时添加
<div class="payment-errors text-danger"></div>
这将显示来自 Stripe 的错误响应。更新 User.js 以处理@vivrass 提到的错误响应。
$(document).ready(function() {
Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'));
// Watch for a form submission:
$("#form-submit-btn").click(function(event) {
event.preventDefault();
$('input[type=submit]').prop('disabled', true);
var error = false;
var ccNum = $('#card_number').val(),
cvcNum = $('#card_code').val(),
expMonth = $('#card_month').val(),
expYear = $('#card_year').val();
if (!error) {
// Get the Stripe token:
Stripe.createToken({
number: ccNum,
cvc: cvcNum,
exp_month: expMonth,
exp_year: expYear
}, stripeResponseHandler);
}
return false;
}); // form submission
function stripeResponseHandler(status, response) {
var $form = $('#payment-form');
if (response.error) {
// Show the errors on the form
$form.find('.payment-errors').text(response.error.message);
$form.find('button').prop('disabled', false);
} else {
// response contains id and card, which contains additional card details
var token = response.id;
// Insert the token into the form so it gets submitted to the server
$form.append($('<input type="hidden" name="stripeToken" />').val(token));
// and submit
$form.get(0).submit();
}
};
});
最后...您很可能正在使用旧卡进行测试。如果您使用卡号 41111111111111111 cvv123
,您将收到 Stripe 的错误响应,指出“您的卡号不正确”。
使用此处找到的更新测试卡:https://stripe.com/docs/testing
关于ruby-on-rails - 用户中的 Stripe::InvalidRequestError::RegistrationsController#create,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31988410/
我的代码是从别人那里复制的,代码的目的是测试AzureOpenai API。但是我遇到了一些错误。。输出是这样的。我已经检查了我的终结点网站,但结果是网站中的{“Error”:{“code”:“404
将客户数据和 token 发送回 Stripe 的服务器时似乎存在问题。我目前正在使用测试 api 来进行虚拟交易。但是,我却无缘无故地过不了这一关。我已尝试一切方法来修复此错误。我将在下面发布代码和
我在单独的包中有 3 个文件,如下所示: -- base | - class BaseDb(db.Model) | -- pkg1 | - class A(BaseDb) | -- pkg2 |
我已经实现了Stripe来处理我网站上的订阅。一切都工作正常,除非涉及取消订阅。 这是我的 Controller : Stripe.api_key = Rails.configuration.stri
我从其他人那里复制了代码,代码的目的是测试AzureOpenai API。但是我遇到了一些错误。 `from langchain.llms import AzureOpenAI import os i
我很可能在这里缺少一些基本概念,但我尝试创建一些类似简单的代码审查应用程序的东西,并在设计数据库架构时尝试遵循此文档: http://flask-sqlalchemy.pocoo.org/2.1/mo
http://jsfiddle.net/e8wjyb35/ 我的 Controller : class ChargesController params[:stripeToken], :
我试图同时从数据库提交和查询结果,但我遇到了这个错误。 sqlalchemy.exc.InvalidRequestError: This session is in 'committed' state
我正在构建一个应用程序(基于在线资源)。您可以注册或使用设备登录。然后,您可以购买产品。或者制作您自己的 list 并销售您的产品。 我正在整合 Stripe。当我创建 Charge 时,我在控制台中
将我的模型移动到它们自己的模块会导致 InvalidRequestError.. 这似乎与数据库 session 以及我在模型模块中导入数据库的方式有关。 我试图将这个问题减少到所需的最少代码量。首先
尝试访问 OpenAPI 示例 - Explain code但它显示错误为 - InvalidRequestError: Engine not found enter code response =
尝试访问 OpenAPI 示例 - Explain code但它显示错误为 - InvalidRequestError: Engine not found enter code response =
我正在为我的 iOS 应用程序构建后端,并选择使用 Flask 框架。 对于数据库部分,我使用 flask-sqlalchemy 连接我的 mysql 数据库。 当我将所有测试代码放在一个单个文件中时
我正在尝试使用 SQLAlchemy 自动映射扩展为现有数据库生成 ORM,并收到 InvalidRequestError 异常(“实例无法刷新 - 它不是持久的并且不包含完整的主键。”)我尝试插入一
我正在一个名为 foodsy 的电子商务市场上工作。我正在使用 stripe connect为目的。连接帐户是使用 stripe-connect-omniauth 创建的. Foodsy 有几个客户。
我正在使用 Flask 创建一个论坛项目,并使用 Flask-SQLAlchemy 管理所有用户、线程、帖子等。但是,我发现当我尝试执行 x(例如编辑帖子)时,如果我尝试执行其他任何操作(例如删除帖子
我正在使用 SQLAlchemy 核心(版本 1.13.12)定义两个必须具有一对一 (0..1) 关系的表: things = sa.Table( "things", metadat
如果我将 CapacityMin 类和单元测试类放在同一个 .py 文件中,一切都很好。但是在我将 CapacityMin 类移动到一个单独的文件并运行单元测试后,我得到了这个错误: 需要 SQL 表
我不再收到任何错误,但我知道当我创建一个新用户时,不会写入 stripeToken。 controllers/users/registrations_controller.rb class Users
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我是一名优秀的程序员,十分优秀!