gpt4 book ai didi

go - 使用 Stripe 将费用与客户相关联

转载 作者:数据小太阳 更新时间:2023-10-29 03:04:55 28 4
gpt4 key购买 nike

我正在创建一个简单的网页,其中 Stripe Checkout将提示用户输入他们的卡信息,生成一个 token ,并将其发送到我的后端 Go 网络服务器,该服务器处理该 token 的付款。我遇到的问题是,当我获得 token 时,我尝试创建一个客户并将源设置为 Stripe 创建的 token ,但我每次都会收到此响应:

charge failed: {"type":"invalid_request_error","message":"Customer cus_######### does not have a linked source with ID tok_#########.","code":"missing","param":"source","request_id":"req_######","status":404}

创建客户并将卡与该客户相关联就可以了。但是,根据 Stripe 生成的 token 对卡进行充电失败。即使在我的 Stripe 仪表板中该客户的日志中,它也显示了尝试的收费。所以,它试图将费用与正确的客户相关联,但失败了,因为 token 是在没有考虑特定客户的情况下生成的?我不太确定发生了什么。

我在后端接受 token 并处理所有内容的代码如下:

stripe.Key = "sk_test_################"

customerParams := &stripe.CustomerParams{
Desc: "Customer for xyz.com",
Email: "test@email.com",
}

err := customerParams.SetSource("tok_####################")
if err != nil {
return nil, err
}

cus, err := customer.New(customerParams)
if err != nil {
return nil, err
}

// Charge the user's card
cp := &stripe.ChargeParams{
Amount: 100,
Currency: "usd",
Desc: "some description",
Customer: cus.ID,
}

err = cp.SetSource("tok_####################")
if err != nil {
return nil, err
}

err = charge.New(cp)

此外,如果我删除此示例的客户部分,则使用上述代码即可正常进行收费。它只是没有明显地将费用与客户联系起来。但是,一旦我尝试向客户收费,它就会失败。

最佳答案

原来问题是在我已经设置了我正在收费的新客户的来源后,在收费参数上设置了 token 来源。以下操作按预期工作以创建新客户并将新费用与客户相关联:

stripe.Key = "sk_test_################"

customerParams := &stripe.CustomerParams{
Desc: "Customer for xyz.com",
Email: "test@email.com",
}

err := customerParams.SetSource("tok_####################")
if err != nil {
return nil, err
}

cus, err := customer.New(customerParams)
if err != nil {
return nil, err
}

// Charge the user's card
cp := &stripe.ChargeParams{
Amount: 100,
Currency: "usd",
Desc: "some description",
Customer: cus.ID,
}

err = charge.New(cp)

关于go - 使用 Stripe 将费用与客户相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43545819/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com