订购控制器页面
begin
Stripe.api_key = ENV["STRIPE_API_KEY"]
token = params[:stripeToken]
charge = Stripe::Charge.create(
:amount => (@listing.price * 100).floor,
:currency => "usd",
:source => params[:stripeToken],
:destination => @seller.recipient
)
flash[:notice] = "Thanks for ordering!"
rescue Stripe::CardError => e
flash[:danger] = e.message
end
order.js.coffee
jQuery ->
Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'))
payment.setupForm()
payment =
setupForm: ->
$('#new_order').submit ->
$('input[type=submit]').attr('disabled', true)
Stripe.card.createToken($('#new_order'), payment.handleStripeResponse)
false
handleStripeResponse: (status, response) ->
if status == 200
$('#new_order').append($('<input type="hidden" name="stripeToken" />').val(response.id))
$('#new_order')[0].submit()
else
$('#stripe_error').text(response.error.message).show()
$('input[type=submit]').attr('disabled', false)
我不确定为什么source =&gt;当我检查我的条带帐户中的日志时,params [:stripeToken]没有通过。令牌是否为空?
答案 0 :(得分:0)
通常当您收到此错误是因为可发布的密钥不在您的表单中,因此当您将表单发送到条带时,它不会识别您并且它不会将您发回给令牌。
向客户收费的过程就是这样。
1.-在您的网站中,您告诉用户在表单中键入他的卡信息(在本地托管或仅由条带脚本创建)。
2.-用户提交表格后。使用您的可发布密钥将信息提交给条带服务器。您从服务器收到带有令牌的响应。此令牌将转发到您控制器中的操作,并且由于链接到您的帐户,您可以创建客户,收费或将用户加入计划。这是'params [:stripeToken]'。卡信息永远不会到达您的控制器,您只需收到此令牌。
您可以为客户收取两件费用,第一件是创建自己的表单,第二件就是将其委托给条带脚本。
第一个更棘手,因为条带不时更新它们的api。它需要一些js及其api的知识。例如,Stripe v3与v2不同。允许更多的合理化,但需要更多的js知识。可以在stripe elements中找到有关如何配置的信息和示例。
第二个很容易。我推荐它不是高级用户。您只需按照此链接using checkout and rails中的说明即可实施。
我通常使用第二个选项,因为它只花了5分钟,你将辛勤工作委托给条纹。