WeiXinMPSDK icon indicating copy to clipboard operation
WeiXinMPSDK copied to clipboard

Weixin.WxOpen.AdvancedAPIs.WxApp类中,多个方法返回值存在BUG

Open andywu188 opened this issue 4 years ago • 4 comments

问题描述

GetWxaCodeUnlimit、CreateWxQrCode、CreateWxQrCode、GetWxaCode等方法,返回值并没有使用微信API的返回值,而是直接

return new WxJsonResult() { errcode = ReturnCode.请求成功 };

导致外部调用取的的消息,永远是成功,不会有失败,无法得到正确的微信API消息,标准应该按官方有个正确的消息,至少成功失败状态要保证一致。

微信官方文档 URL

https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.createQRCode.html

发现问题的模块
  • [ ] Senparc.Weixin.WxOpen 版本:3.8.401

andywu188 avatar Apr 11 '20 12:04 andywu188

这个不是bug,之前书里面应该也有说明,所有涉及到文件下载的,您都需要自己核验一下文件是否下载成功,以及内容是否正确,具体方法可以参考我们单元测试的代码:

https://github.com/JeffreySu/WeiXinMPSDK/blob/eef330c348a000ffa4270cb7334231983b51e123/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen.Tests/AdvancedAPIs/WxApp/WxAppApiTests.cs#L150

另外补充一下:这里判断文件其实是不够的,最好添加一个文件内容的检测,最简单的例如通过文件大小判断一下,是否在合理范围内。

JeffreySu avatar Apr 16 '20 10:04 JeffreySu

这个操作有点反人类设计,很容易进坑,居然要自己判断图片是不是真的图片数据,如果不是,还需要自己把消息解析出来,给前台反馈或者记录后台日志,使用很不便。

我只是做为一个开发者,不太理解这种设计,如果有其他某些原因必需要这样设计,比如说为了性能,或者为了能批量生成等等,那也应该提供正常容易理解的调用方法,比如分开不同方法调用,批量生成支持异步并能够返回有用的消息等等,这都是我的假设,肯定是有其他更优的方案,关键是使用符合正常思维逻辑。

特此,感谢您的回复!

andywu188 avatar Apr 28 '20 08:04 andywu188

这个操作有点反人类设计,很容易进坑,居然要自己判断图片是不是真的图片数据,如果不是,还需要自己把消息解析出来,给前台反馈或者记录后台日志,使用很不便。

我只是做为一个开发者,不太理解这种设计,如果有其他某些原因必需要这样设计,比如说为了性能,或者为了能批量生成等等,那也应该提供正常容易理解的调用方法,比如分开不同方法调用,批量生成支持异步并能够返回有用的消息等等,这都是我的假设,肯定是有其他更优的方案,关键是使用符合正常思维逻辑。

特此,感谢您的回复!

andywu188 avatar Apr 28 '20 08:04 andywu188

我也觉得有点反人类,不过不管怎么做,一定会有人觉得反人类,这个下载接口比较特殊 lol

我后面会安排做一个Helper专门助理这个问题,不过也不能保证所有场景下都能高效甚至可靠执行,这里面情况太复杂了。

JeffreySu avatar Apr 30 '20 09:04 JeffreySu