Stripe API无效请求:必须提供来源或客户

时间:2018-04-20 19:58:25

标签: ruby-on-rails stripe-payments

我正在使用Stripe API并构建自定义结帐功能 - 我的错误是特别告诉我必须提供来源或客户。这是我的收费控制器:

我以为我使用以下代码成功创建了源和/或客户(我还在条带仪表板上包含了帖子日志)

 Stripe::Charge.create(
    :amount => @amount,
    :currency => 'usd',
    :source => params[:stripeToken],
)
Stripe::Customer.create(
    :email => params[:stripeEmail],
    :source => params[:stripeToken]
  )
  "error": {
    "code": "parameter_missing",
    "doc_url": "https://stripe.com/docs/error-codes/parameter-missing",
    "message": "Must provide source or customer.",
    "type": "invalid_request_error"
  }
}

我确实经历了the docs,但我想我还有点迷失

感谢您的帮助!

更新:这是我的API POST请求的返回。 my api requests Update2:我发现当我收取费用时正在创建一个客户。 My events tab

更新3:Source属性设置为stripeToken参数,表示提供的付款方式。令牌由Checkout自动创建。 - 这似乎与我的问题有关 - 也许它没有正确发布?

1 个答案:

答案 0 :(得分:1)

所以它确实是一个令牌请求 - 因为我使用测试卡进行测试,我想我必须通过测试令牌以确保测试卡能够正常工作。

我相信我正在使用的Rails Params(:source => params [:stripeToken] )对于生产而言是好的,但在检查给定的卡时却没有。如果有人像我一样遇到这个问题(当然这可能不是第一次被问到这个问题)

使用Stripe API时,您会看到测试卡号旁边有一个令牌选项卡 - 我认为这些是可选的,或者出于某种原因“为了别的东西”。他们不是。

您需要确保令牌与您计划使用的任何测试卡匹配(我认为)

My Stripe控制器现在看起来像这样

Stripe::Charge.create({
    :amount => @amount,
    :currency => 'usd',
    :source => 'tok_visa',  #params[:stripeToken] might be for in production I think this is for testing.,
    :description => 'Your Donation to Victoria University',
    :statement_descriptor => 'Victoria University'

    # it seems test tokens must be set as string.
  })

决定将评论留在那里 - 因为为什么不呢?

P.S您需要针对不同卡支付类型的不同令牌类型。如果你切换卡 - 切换令牌也是!!!! - 在测试卡号旁边标记了标记。