企业微信userid转openid时返回errcode:40003,errmsg:invalid userid

调微信支付时中需要将userid转换成openid

阅读文档(https://work.weixin.qq.com/api/doc#90000/90135/90202)后开始调用,

结果接口返回:

{"errcode":40003,"errmsg":"invalid userid, hint: [1563539598_4_6ae561db56e26aba05e01ee837ef724c], from ip: 116.52.237.66, more info at https://open.work.weixin.qq.com/devtool/query?e=40003"}

检查入参和POST方式均没有问题,网上搜索有人通过接口调试工具是可以正常返回openid的

https://segmentfault.com/q/1010000014811463/a-1020000014850318

https://blog.csdn.net/a545132569/article/details/89512913

于是按照博客中的方式,也去腾讯提供的调试页面测试https://work.weixin.qq.com/api/devtools/devtool.php

企业微信userid转openid时返回errcode:40003,errmsg:invalid userid_第1张图片

发现可以正常获取openid

博客里的哥们说自己通过chrome发现腾讯提供的调试页面请求的地址和文档中的地址不一样,他在自己的代码中把请求地址改成和调试页面中一样的地址就ok了,但是我照做了还是不行。于是就开始用postman模拟请求,后来发现post中body选项下选form-data,得到的响应和我代码调用时获取的一样,都是题目中的errcode:40003,errmsg:invalid userid,但是body选项下选raw的时候就可以正常获取openid了。

企业微信userid转openid时返回errcode:40003,errmsg:invalid userid_第2张图片

 

这下就真相大白了,我代码里用httpclient发起的post的请求时和postman里选form-data的时候是一样的,弄清了这两种方式的区别,为httpclient发起请求增加了raw这种形式的调用,问题解决。

httpclient调用参考博客:https://www.cnblogs.com/zhangfei/p/5099036.html

你可能感兴趣的:(微信开发)