【问题标题】:Stripe API Invalid Request: Must provide source or customerStripe API 无效请求:必须提供来源或客户
【发布时间】:2018-10-01 14:23:23
【问题描述】:

我正在开发 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 请求的返回。 更新 2:我看到在我发送费用时正在创建一个客户。

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

【问题讨论】:

  • 欢迎来到 SO。请查看此处了解如何改进您的问题(格式化、校对、提供代码等):*.com/help/how-to-ask
  • 感谢您进行这些编辑,您教会了我一些关于通过修改后的降价提出更好的问题的知识。祝你有美好的一天!
  • 你确定 params[:stripeToken] 不为空吗?
  • 我的 Post /v1/tokens 获得 200 OK - 据我了解,我相信这确认我将令牌正确传递到该点。
  • 但我不确定我是否需要用它做更多的事情......

标签: ruby-on-rails stripe-payments


【解决方案1】:

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

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

使用 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.
  })

决定把我的 cmets 留在那儿 - 为什么不呢?

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

【讨论】:

    最近更新 更多