微信支付下单接口报错,日志无输出
FourLeafTec opened this issue · 3 comments
FourLeafTec commented
SDK版本:v3.0.9
问题描述:
从v2.0.40升级sdk到v3.0.9
下单接口 Payment.Order.JSAPITransaction()
报错
request failed: Post "https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi": context deadline exceeded
只有这个error返回,debug日志均无输出
日志部分配置如下:
{
HttpDebug: true,
Log: payment.Log{
Level: "debug",
File: fmt.Sprintf("%s/wechat-pay.log", Conf.Logger.FilePath),
}
}
FourLeafTec commented
定位到问题了,看上去是v3.0.9版本对context.CancelFunc实现有点问题
问题重现代码:
ctx, cancel := context.WithTimeout(context.Background(), 10)
defer cancel()
res, err := global.Payment.Order.JSAPITransaction(ctx, options)
这段代码按golang的习惯对可关闭或者可取消直接defer取消,但是整个代码块执行结束实际上sdk仍然没有返回,
这就导致整个请求被取消了
Matrix-X commented
FourLeafTec commented
抱歉,我找到问题了,是我这边的问题,超时时间设置太短了,timeDuration忘了乘time.Second的倍数了