条带错误:“创建客户时,卡对象必须具有'number'的值”

时间:2014-05-20 22:34:38

标签: ruby-on-rails stripe-payments

我正在使用Stripe的ruby gem来(尝试)执行两个步骤:

  1. 使用Stripe的“Checkout”表格收集卡片
  2. 使用表单提交
  3. 中的重定向提供的令牌创建客户

    后面这些步骤会引发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(红宝石宝石)
    Rails 3.2.13
    Ruby 1.9.3

1 个答案:

答案 0 :(得分:15)

您应该将card:设置为的值只是令牌的ID,而不是您现在正在传递的整个对象。像这样的东西(我的红宝石有点生锈):

card: params[:stripeToken][:id]

您可以在Stripe API Docs中看到Customer.create的有效输入示例。