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

Jas*_*der 6 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

我确实阅读了文档,但我想我还是有点迷茫

感谢您的任何帮助!

更新:这是我的 API POST 请求的返回。 我的 api 请求 更新 2:当我发送费用时,我看到正在创建一个客户。 我的活动选项卡

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

Jas*_*der 3

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

我相信我使用的 Rails 参数 (: source => params[:stripeToken] ) 适合生产,但在检查给定卡时则不然。万一有人像我一样遇到这个问题(当然这可能不是第一次被问到)

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

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

我的 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.
  })
Run Code Online (Sandbox Code Playgroud)

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

PS 对于不同的卡支付类型,您需要不同的令牌类型。如果你换卡 - 也换令牌!!!- 标记位于测试卡号码旁边。