微信错误码:"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<String, WxaNoticeFieldDTO> 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的问题。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值