小程序客服消息推送 40003
发布于 7 年前 作者 jiafang 13992 次浏览 来自 问答
  • 需求的场景描述(希望解决的问题)

小程序客服消息推送,实现自动回复功能

POST xml数据到微信服务器后返回40003的错误

所以是我传的xml格式有问题,还是touser这个参数有问题,touser有问题的话,这个参数值要从哪里获取

  • 希望提供的能力

以下是用户点击小程序按钮进入客服界面后,我的服务器收到的信息:

<xml><ToUserName><![CDATA[xxxxxxxxxxxxxxx]]></ToUserName>

<FromUserName><![CDATA[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]]></FromUserName>

<CreateTime>1548120142</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[user_enter_tempsession]]></Event>

<SessionFrom><![CDATA[来哩ho小程序]]></SessionFrom>

</xml>

以下是我服务器收到信息后作出的处理(部分代码):

$url = “https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=” . $access_token;

用我服务器收到的FromUserName作为touser的参数值:

$fromUsername = $object->FromUserName; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

$xmlData = “<xml><touser><![CDATA[”.$fromUsername."]]></touser>

<msgtype><![CDATA[text]]></msgtype>

<content><![CDATA[halo u]]></content>

</xml>";

$header[] = “Content-type: text/xml”;

$ch = curl_init ($url);

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);

curl_setopt($ch, CURLOPT_HTTPHEADER,$header);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch,CURLOPT_POSTFIELDS, $xmlData);

$response = curl_exec($ch);

if(curl_errno($ch)){

printcurl_error($ch);

}

curl_close($ch);

以下是返回的错误:

{“errcode”:40003,“errmsg”:“invalid openid hint: [QuAtaA01434104]”}

4 回复

官方的报错误导人     事实上需要在http请求明确发送的是字符串格式的json内容就可以了  

一般都是错在这里

并不是用错了其他号的access_token 和 openid有误

我确实是access_token 搞错了,换过来就好了

看下是不是对应的openid的token使用错了

可能是有两种问题:1. 用错了其他号的access_token 2. openid有误

这里要注意一个appid下的openid,在另一个appid里是无意义的。

如果还有问题,可以给出调用出错所用的access_token和openid,这边帮忙检查下。

回到顶部