go - 使用客户来源时 Stripe 收费失败

标签 go stripe-payments

我正在尝试使用其中一张存储的信用卡向客户收费。我在请求中传递了客户 ID,并且从 Stripe 获取了客户信息就好了。问题是当尝试向其中一个客户来源收费时,库返回错误 Must provide source or customer。我检查了 sc.Sources.Data[1](这里硬编码只是为了这个例子),它有一个实际的 cutsomer 源。谁能告诉我我做错了什么?

编辑:如果我使用 tok_1212321 token ,它工作正常,但我找不到从 strip 检索 token ID 的方法,只能从客户来源中检索。

stripe.Key = os.Getenv("STRIPE_KEY")
sc, _ := stripeCustomer(request)

params := &stripe.ChargeParams{
    Amount:      stripe.Int64(int64(order.total * 100)),
    Currency:    stripe.String(string(stripe.CurrencyUSD)),
    Description: stripe.String("Order Number " + order.ID),
}

params.SetSource(sc.Sources.Data[1])

if _, err := charge.New(params); err != nil {
    return nil, err
}

最佳答案

好的,所以我缺少的是 Customer id。进行收费时,必须提供两个 ID。

params := &stripe.ChargeParams{
    Amount:      stripe.Int64(int64(order.total * 100)),
    Currency:    stripe.String(string(stripe.CurrencyUSD)),
    Description: stripe.String("Order Number " + order.ID),
    Customer:    stripe.String(sc.ID),
}

params.SetSource(sc.Sources.Data[1].ID)

if _, err := charge.New(params); err != nil {
    return nil, err
}

此代码使其工作。

关于go - 使用客户来源时 Stripe 收费失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57552886/

相关文章:

java - Spring Boot 中的 Stripe 示例 Java 服务器?不兼容的类型 : Optional<StripeObject> cannot be converted to Source

go - 独立于平台的 go build 用于工程师测试

date - 在 Go 中解析带有负年份的日期?

templates - 在不使用变量的情况下从 Golang 模板中的 map 获取所有键

node.js - 如何为 strip 状态生成随机哈希

c# - 从成功的 strip 结帐重定向

go - 如果我不关闭 response.Body 会发生什么?

go - golang中的继承

stripe-payments - 我可以将客户从 Stripe 托管发票页面重定向回我的商店吗?

javascript - React Stripe 拆分卡元素错误 : Maximum update depth exceeded