【问题标题】:Stripe Charges fails when using a Customer Source使用客户来源时,Stripe Charges 失败
【发布时间】:2019-12-24 10:42:06
【问题描述】:

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

【问题讨论】:

    标签: go stripe-payments


    【解决方案1】:

    好的,所以我缺少的是Customer id。进行 Charge 时,必须提供两个 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
    }
    

    这段代码让它工作。

    【讨论】:

      猜你喜欢
      • 2019-03-31
      • 2018-11-15
      • 2017-07-18
      • 2020-08-10
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      • 2018-12-13
      • 2017-02-03
      相关资源
      最近更新 更多