【发布时间】:2017-09-18 15:21:25
【问题描述】:
我正在创建一个简单的网页,Stripe Checkout 将提示用户输入他们的卡信息,生成一个令牌,并将其发送到我的后端 Go 网络服务器,该服务器处理该令牌的支付。我遇到的问题是,当我获得令牌时,我尝试创建一个客户并将源设置为 Stripe 创建的令牌,但我每次都会收到此响应:
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 向卡收费失败。即使在我的 Stripe Dashboard 中该客户的日志中,它也会显示尝试收费。因此,它试图将费用与正确的客户相关联,但由于生成令牌时没有考虑特定客户而失败?我不确定发生了什么。
我在后端接受令牌并处理所有内容的代码如下:
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)
另外,如果我删除了这个例子的客户部分,那么上面的代码就可以正常收费了。它只是没有明显地将费用与客户联系起来。但是,一旦我尝试向客户收费,它就会失败。
【问题讨论】:
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。见:How to create a Minimal, Complete, and Verifiable example.
标签: go stripe-payments