我正在尝试用一张存储的信用卡向客户收费。我在请求中传递了客户ID,并且我正好从Stripe获取客户信息。问题是当试图向客户来源之一收费时,库返回错误Must provide source or customer
。我检查了sc.Sources.Data[1]
(仅在此示例中对其进行硬编码),它具有实际的剪切源。谁能告诉我我在做什么错?
编辑:如果我使用tok_1212321令牌,它可以正常工作,但我找不到从条带中检索令牌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
}
答案 0 :(得分:0)
好的,所以我所缺少的是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
}
此代码可以使其正常工作。