首先说明,我是在开发工具环境下运行的,获取得到的formId为:"the formId is a mock one"。继续:
获取access_token
发送模板消息
访问接口地址:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET,
得到token:
array(2) {
["access_token"]=>
string(138) "iqHh-ixElcCeBQf6KpYiJ0-oSRkl3WUskKNlHS1fptHSDQ0wfJTw8hGJWVwtLNefXl0Jtq1r8dy70pOWwg4EOcH3GOrIEVZfrNDLvGoUarOlYoulN16VfEuTdv-JW0a1OYOaAEARBR"
["expires_in"]=>
int(7200)
}
访问接口地址:https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN
POST数据为:
$data = array ("touser" => $oid,
"template_id" => "l54PVNXqYmp1rUDh4oPgFvGS5WThK2oN2rL20ztQYg",
"form_id" => $fid,
"data" => array ("keyword1" => array ( "value" => $name ),
"keyword2" => array ( "value" => $gender ),
"keyword3" => array ( "value" => date() )
)
);
但是返回的数据貌似是又一次获取了access_token:
array(2) {
["access_token"]=>
string(138) "iqHh-ixElcCeBQf6KpYiJ0-oSRkl3WUskKNlHS1fptGmAFDUiNAawF6uUE36YPh2AWejLYyEGYMkNFTAZIKPmoLSLwQcLQWDxkDZluLoWmJKzF_0yIr3DqCqmiMNuhGrQCSaAEAKWM"
["expires_in"]=>
int(7198)
}
怎么回事泥?(怎么没有“模板消息”标签??)
formid是在客户端获取然后发送到服务器端的。
formid从哪获取的?我这边是服务器端,接口里面能获取到formid吗?
把你 POST 的东西用打印成真正的 JSON 字符串看一下,或者用 Fiddler 之类的截个包。
是我的错,发送地址不对。但是现在仍然有问题,发送消息时,返回:
array(2) {
["errcode"]=>
int(47001)
["errmsg"]=>
string(40) "data format error hint: [206T3a0292ge25]"
}
数据格式怎么错了呢?看不出来 ……
IDE 里的 formid 不可用,需要真机。“the formId is a mock one” 翻译过来就是“这是一个虚拟的 formid”。
第二点的话你再多截点儿呗,发的地址填的确定对?抓包看下真的是发送模板消息的地址?