微信错误码:"errcode":40003 解决方法汇总

一、问题描述


最近公司在搞微信小程序开发,然后自己负责一个小程序的模板消息发送,调用其中的

https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN

模板发送接口,请求之后,就返回错误信息:

{"errcode":40003,"errmsg":"invalid openid hint: [c49C4a0396ge21]"}

40003是不合法的OpenID,代码为:

            // 组装请求参数
            WxaNoticeDTO dto = new WxaNoticeDTO();
            dto.setTouser(requestDTO.getOpenid());
            dto.setTemplate_id(requestDTO.getTemplateId());
            dto.setPage("pages/home/index");
            dto.setForm_id(requestDTO.getFormId());
            Map data = new HashMap<>(5);
//          data.put("keyword1", new WxaNoticeFieldDTO("1元"));
//          data.put("keyword2", new WxaNoticeFieldDTO("xxxxx"));
//          data.put("keyword3", new WxaNoticeFieldDTO("xxxxx"));  //时间
//          data.put("keyword4", new WxaNoticeFieldDTO("xxxxx"));
//          data.put("keyword5", new WxaNoticeFieldDTO("未在有效期内取货,自动发起退款。"));
            dto.setData(data);
            // 发送请求
            CloseableHttpClient httpClient = HttpClients.createDefault();
            CloseableHttpResponse response = null;
            HttpPost post = new HttpPost(SEND_MESSAGE_URL + token);
            post.setConfig(buildPostConfig());
            StringEntity stringEntity = new StringEntity(JsonUtil.toJson(dto), "UTF-8");
            stringEntity.setContentEncoding("UTF-8");
            stringEntity.setContentType("application/json");
            post.setEntity(stringEntity);
			response = httpClient.execute(post);
			HttpEntity entity = response.getEntity();
			log.info("notice result: " + EntityUtils.toString(entity, "UTF-8"));



二、解决方法


在网上找了几种解决方式:


1.用户的openid与(AppId和AppSecret)对应不上,也就是说AppId,AppSecret,openid要成套。

2.JSON格式错误如"openid":"" openid的引号和值的引号也要带着。


我这里改来改去,最后发现就是JSON格式有问题,但是不是openid的问题。

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