Javascript 可以使用无支付信息的Stripe JS创建令牌
我有一个客户想要一个不花钱的条带订阅。目前,他们的应用程序设置为获取CC信息,因为他们以前的计划确实需要按月付费 我想知道是否可以通过Stripe JS创建Stripe客户令牌,而不需要用户提供任何类型的CC信息/银行帐户等 我尝试用jQuery删除CC字段,但我一直收到一个无效请求错误,因为它找不到付款信息 总之,当用户从下拉列表中选择“免费”计划时,他们不应该看到CC字段,他们应该能够在不进行任何条带验证的情况下通过注册页面,同时创建他们的客户令牌 这可能吗 相关文件 主机控制器#创建Javascript 可以使用无支付信息的Stripe JS创建令牌,javascript,jquery,ruby-on-rails,stripe-payments,Javascript,Jquery,Ruby On Rails,Stripe Payments,我有一个客户想要一个不花钱的条带订阅。目前,他们的应用程序设置为获取CC信息,因为他们以前的计划确实需要按月付费 我想知道是否可以通过Stripe JS创建Stripe客户令牌,而不需要用户提供任何类型的CC信息/银行帐户等 我尝试用jQuery删除CC字段,但我一直收到一个无效请求错误,因为它找不到付款信息 总之,当用户从下拉列表中选择“免费”计划时,他们不应该看到CC字段,他们应该能够在不进行任何条带验证的情况下通过注册页面,同时创建他们的客户令牌 这可能吗 相关文件 主机控制器#创建
def create
@host = User.new(host_params)
if @host.valid?
customer = Stripe::Customer.create(
stripe_params.merge(email: host_params[:email], coupon: coupon)
)
@host.update(
stripe_customer_id: customer[:id],
subscription_plan: stripe_params[:plan]
)
sign_in(:user, @host)
redirect_to dashboard_path, notice: t('notices.hosts.created')
else
render :new
end
rescue Stripe::CardError, Stripe::InvalidRequestError => error
render :new, alert: error.message
end
$(document).on 'ready page:load', ->
$cardFields = $('#credit-card-fields')
$parentForm = $cardFields.parents('form')
$parentBtn = $('.js-payment-btn', $parentForm)
return unless $parentForm.length
$parentBtn.on 'click', (event) ->
event.preventDefault()
pub_key = $('meta[name=stripe-publishable-key]').attr('content')
$parentBtn.prop('disabled', true)
Stripe.setPublishableKey(pub_key)
Stripe.card.createToken $parentForm, (status, response) ->
if response.error
$parentForm.find('.payment-errors').text(response.error.message)
$parentBtn.prop('disabled', false)
else
token = response.id
S> $parentForm.append($('<input type="hidden" name="stripe[source]" />').val(token))
$parentForm.get(0).submit()
条纹JS代码
def create
@host = User.new(host_params)
if @host.valid?
customer = Stripe::Customer.create(
stripe_params.merge(email: host_params[:email], coupon: coupon)
)
@host.update(
stripe_customer_id: customer[:id],
subscription_plan: stripe_params[:plan]
)
sign_in(:user, @host)
redirect_to dashboard_path, notice: t('notices.hosts.created')
else
render :new
end
rescue Stripe::CardError, Stripe::InvalidRequestError => error
render :new, alert: error.message
end
$(document).on 'ready page:load', ->
$cardFields = $('#credit-card-fields')
$parentForm = $cardFields.parents('form')
$parentBtn = $('.js-payment-btn', $parentForm)
return unless $parentForm.length
$parentBtn.on 'click', (event) ->
event.preventDefault()
pub_key = $('meta[name=stripe-publishable-key]').attr('content')
$parentBtn.prop('disabled', true)
Stripe.setPublishableKey(pub_key)
Stripe.card.createToken $parentForm, (status, response) ->
if response.error
$parentForm.find('.payment-errors').text(response.error.message)
$parentBtn.prop('disabled', false)
else
token = response.id
S> $parentForm.append($('<input type="hidden" name="stripe[source]" />').val(token))
$parentForm.get(0).submit()
$(文档)。在“就绪页面:加载”上,->
$cardFields=$(“#信用卡字段”)
$parentForm=$cardFields.parents('form'))
$parentBtn=$('.js付款btn',$parentForm)
除非$parentForm.length,否则返回
$parentBtn.on“单击”(事件)->
event.preventDefault()
pub_key=$('meta[name=stripe publishiable key]').attr('content'))
$parentBtn.prop('disabled',true)
Stripe.setPublishableKey(发布密钥)
Stripe.card.createToken$parentForm,(状态,响应)->
如果响应错误
$parentForm.find('.payment errors').text(response.error.message)
$parentBtn.prop('disabled',false)
其他的
token=response.id
S> $parentForm.append($('').val(标记))
$parentForm.get(0.submit())
条纹JS表单
<script type="text/javascript" src="https://js.stripe.com/v2/" data-turbolinks-track="true"></script>
<div class="clearfix" id="credit-card-fields">
<span class="payment-errors"></span>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon icon icon-credit-card"></span>
<input id="card-number" class="form-control input-cc" required placeholder="Card Number" type="text" size="16" maxlength=16 data-stripe="number" />
</div>
</div>
<div class="form-group side-by-side">
<div class="input-group">
<span class="input-group-addon icon icon-calendar"></span>
<input id="card-month" class="form-control input-exp" required placeholder="MM" type="text" size="2" maxlength="2" data-stripe="exp-month" />
<input id="card-year" class="form-control input-exp" required placeholder="YY" type="text" size="2" maxlength="2" data-stripe="exp-year" />
</div>
</div>
<div class="form-group side-by-side">
<div class="input-group">
<span class="input-group-addon icon icon-lock"></span>
<input id="card-cvc" class="form-control input-cvv" required placeholder="CVC" type="text" size="4" maxlength="4" data-stripe="cvc" />
</div>
</div>
</div>
创建没有任何卡详细信息的卡令牌是没有意义的,因此这是不可能的。正如您所提到的,如果您试图创建一个没有所需参数(如卡号或过期日期)的令牌,您将返回一个
无效\u请求\u错误
如果您不想要求卡的详细信息,那么您不应该创建令牌。当有人试图订阅免费计划时,您将不需要创建令牌,只需收集您想要的其他信息,如客户的电子邮件地址或姓名。然后在服务器端,调用并在plan
参数中传递计划id以订阅它们
如果计划是免费的,那么就不需要传递令牌,您可以完全忽略
源
参数。酷,在#创建操作中调用客户api。是否有方法排除或忽略条带参数哈希中的源参数?我调查了一下#除了,但它似乎没有摆脱param。只是不要发送它,因为它不是必需的。这是您自己的代码,所以您可以决定发送给Stripe的参数!谢谢你的帮助!