我正在尝试使用其中一张存储的信用卡向客户收费。我在请求中传递了客户 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/