微信发送模板消息时,提示“Invalid message type”

首先,在自己的代码中测试,用curl发送结果,php代码会报语法错:
$ch = curl_init();
$params[CURLOPT_URL] = $url; //请求url地址
$params[CURLOPT_HEADER] = false; //是否返回响应头信息
$params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
$params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
$params[CURLOPT_POST] = true;
$params[CURLOPT_POSTFIELDS] = $post_data;
//解决方案一 禁用证书验证
$params[CURLOPT_SSL_VERIFYPEER] = false;
$params[CURLOPT_SSL_VERIFYHOST] = false;

        curl_setopt_array($ch, $params); //传入curl参数
        $content = curl_exec($ch); //执行
        if (curl_errno($ch)) {
            return curl_error($ch);

        }
        curl_close($ch); //关闭连接

然后,就到微信调试工具测试:
图片说明
每次都报“无效消息类型错误”:
图片说明
下面是模板信息:
图片说明

请问各位这个是什么问题,怎么解决?

php
ZHXG4300
小刚张嘎 现在弄好了,也没找出特别的原因,中途换了,带这两条的curl,curl_setopt($curl, CURLOPT_ENCODING, 'deflate'); curl_setopt($curl,CURLOPT_HTTPHEADER,array("Content-type: application/json;charset='utf-8'"但当时返回的是false 或者空。然后我又换回来我原来的curl,就好了,好得莫名其妙
8 个月之前 回复

4个回答

图片说明

php那个代码我测试了,没有语法错误呀,是不是你的$url参数和$post_data参数有什么问题

微信小程序的:
api错了应该是: https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

文档位置:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277

ZHXG4300
小刚张嘎 回复hellocgb: 改成上面这样了,现在不报语法错了,但输出的是:bool(false)
8 个月之前 回复
ZHXG4300
小刚张嘎 回复hellocgb: $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); //curl可以直接 curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_ENCODING, 'deflate'); curl_setopt($curl,CURLOPT_HTTPHEADER,array("Content-type: application/json;charset='utf-8'")); //设置响应头 if ($params) { curl_setopt($curl,CURLOPT_POST,1); $data = json_encode($params); curl_setopt($curl,CURLOPT_POSTFIELDS,$data); } $data = curl_exec($curl); curl_close($curl); if($error) throw new Exception('请求发生错误:' .$error); var_dump($data);
8 个月之前 回复
u013083541
hellocgb 回复小刚张嘎: 重写一个http_post()方法为http_post_json()呀,用我之前发的curl,该方法专用来发post json请求,如果有框架的请求头初始设置,用header()方法替换掉
8 个月之前 回复
liujianchen_linux
liujianchen_linux 回复小刚张嘎: 这个跟使用框架没有关系吧,curl是php
8 个月之前 回复
ZHXG4300
小刚张嘎 回复hellocgb: ,我用的thinkphp框架,说这个不能添加请求头信息
8 个月之前 回复
ZHXG4300
小刚张嘎 回复liujianchen_linux: 用 https://www.sojson.com/http/test.html个测试是成功的
8 个月之前 回复
liujianchen_linux
liujianchen_linux 回复hellocgb: {"cNos":["1064917432615","1064917432615"],"date":"20170515"}
8 个月之前 回复
u013083541
hellocgb 试试这个curl<?php $data = array("cNos" => array("1064917432615","1064917432615"), "date" => "20170515"); $data_string = json_encode($data); print_r($data_string); $ch = curl_init('http://****/BatchQuery/Post1?eId=30005'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)) ); curl_setopt($ch, CURLOPT_ENCODING, 'deflate'); $result = curl_exec($ch); print_r($result) ?>
8 个月之前 回复
u013083541
hellocgb 回复小刚张嘎: http_post 需要post json 数据 要加请求头application/json
8 个月之前 回复
liujianchen_linux
liujianchen_linux 回复小刚张嘎: 你可以用这个在线post工具发送post请求 https://www.sojson.com/http/test.html
8 个月之前 回复
liujianchen_linux
liujianchen_linux 回复小刚张嘎: 我去微信提供的工具里面找了下,好像没有测试这个接口的呀
8 个月之前 回复
ZHXG4300
小刚张嘎 这个我知道的,在php代码中,我用的是这个地址,就是没有任何返回,在curl结束后面行报语法错误(curl函数在微信支付时也用到,都是正常的),才在微信提供的工具上测试的。
8 个月之前 回复

看图吧,以我的经验来看应该是你data里面的key使用错了。把你的name和remark换成keyword1和keyword2

图片说明

ZHXG4300
小刚张嘎 没对,这个模板就只有这两个key,之前我用另外一个模板要复杂点,和你这个有点像,不行我才换了个简单的来测试
8 个月之前 回复

消息模板:
模板ID(用于接口调用)
WobHv3cNAkrKUL3xFKe7VpZ4gGoqNnCwxWPcObGB2gs
模板内容
{ {first.DATA} } 订单号:{ {orderid.DATA} } 金额:{ {amount.DATA} } { {remark.DATA} }
发送数据:
{
"touser": "oiQs4sxNOzvy3PV6BP6H0QzYqXpY",
"template_id": "9WPXzuekGBLYcSPxX2yx7pWeBVjQj_JqSpWvY167nhY",
"url": "http://weixin.qq.com/download",
"data": {
"first": {
"value": "订单通知",
"color": "#173177"
},
"orderid": {
"value": "100001",
"color": "#173177"
},
"amount": {
"value": "1000元",
"color": "#173177"
},
"remark": {
"value": "测试订单通知",
"color": "#173177"
}
}
}
返回:
200 OK
Connection: keep-alive
Date: Mon, 18 Jan 2016 03:16:52 GMT
Content-Type: application/json; encoding=utf-8
Content-Length: 72
{
"errcode": 40008,
"errmsg": "invalid message type hint: [p71hoa0012vr18]"
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

4
c/c++程序报错问题,Invalid operator <
1
移动端 接入微信扫码登录 一直给登录失败、一般错误
1
【求助】微信获取access_token问题。
2
请问如下代码为什么报错:TypeError: Fetch argument None has invalid type <class 'NoneType'>
1
ffmpeg Invalid UE golomb code问题
2
【二维数组与指针】error: invalid type argument of unary '*' (have 'int')出现的原因及解决方法
2
【微信统一支付】发起支付, returnCode != SUCCESS, returnMsg = openid is invalid
2
git 推送时出错:remote: invalid credentials
2
微信通过公众号token获取用户信息时报token过期
1
[Error] invalid application of 'sizeof' to incomplete type 'save(int)::worker'错误原因是什么?
1
微信网页授权获取openid,发公众号模板消息提示openid无效。
1
Vue点击事件无效:Invalid handler for event "click": got undefined
2
C语言编译时,提示invalid conversion from ‘char’ to ‘char*’ [-fpermissive]错误,请问哪里问题?
0
打开PHP strom时提示Invalid Config Path
1
更改appsecret后微信分享失效了 提示invalid signature 求大神帮忙!!
1
tensorboard启动时遇到invalid argument问题
2
Invalid bound statement (not found)异常
2
Hive新手问一下,这个语句为什么会报错Invalid column reference?
3
springboot项目中使用了mybatisplus的baseMapper中的方法,却提示报错自己的mapper中没有这个方法
1
静默安装系统签名的apk失败,返回INSTALL_FAILED_INVALID_APK,求助可能的原因?