我正在使用Stripe的ruby gem来(尝试)执行两个步骤:
后面这些步骤会引发Stripe::CardError
,其消息为:
卡片对象必须具有“数字”
的值
API文档描述了该过程:https://stripe.com/docs/tutorials/subscriptions#subscribing-a-customer-to-a-plan
我的代码(Rails控制器操作)
def receive_redirect
customer = Stripe::Customer.create(
plan: "stripe_plan_name",
card: params[:stripeToken]
)
end
params [:stripeToken]看起来像这样:
{“id”=>“tok_1044TY4GgNdNSosPXdAmIZdt”,“livemode”=>“false”, “created”=>“1400620581”,“used”=>“false”,“object”=>“令牌”, “type”=>“card”,“card”=> {“id”=>“card_1044TY4GgNdNSosPuDSuygow”, “object”=>“card”,“last4”=>“9424”,“type”=>“发现”, “exp_month”=>“9”,“exp_year”=>“2014”, “fingerprint”=>“Lz5ASwlmyseG0gYo”,“customer”=>“”,“country”=>“US”, “name”=>“manderson@pinneyinsurance.com”,“address_line1”=>“”, “address_line2”=>“”,“address_city”=>“”,“address_state”=>“”, “address_zip”=>“”,“address_country”=>“”}, “电子邮件”=> “中< MY_EMAIL> @< my_host转变>” 中}
......正如你所看到的,他们没有给我一个号码,所以我该怎么办?
堆栈
条纹1.8.8(红宝石宝石)答案 0 :(得分:15)
您应该将card:
设置为的值只是令牌的ID,而不是您现在正在传递的整个对象。像这样的东西(我的红宝石有点生锈):
card: params[:stripeToken][:id]
您可以在Stripe API Docs中看到Customer.create
的有效输入示例。