使用客户来源时,条纹收费失败

时间:2019-08-19 08:20:48

标签: go stripe-payments

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

1 个答案:

答案 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
}

此代码可以使其正常工作。

相关问题