ArtisanCloud/PowerWeChat

微信支付下单接口报错,日志无输出

FourLeafTec opened this issue · 3 comments

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),
  }
}

定位到问题了,看上去是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仍然没有返回,
这就导致整个请求被取消了

不好意思,这个问题可能我们没太理解,现在context按照取消的写法,我们测试是正常的。

能否加企业微信群直接沟通?

wecom-temp-4e8166b4116dbd127d2d66b36323cc85

wecom-temp-249caf0d5427a01dee733987c3679f68

抱歉,我找到问题了,是我这边的问题,超时时间设置太短了,timeDuration忘了乘time.Second的倍数了