由于项目要接微信订阅消息推送,前端搞好之后,后端按照官方文档写了代码,发现推送一直不成功,太苦恼了,一直报:
argument invalid! data.character_string4.value i ...
查看了官方文档(传送门),也没发现错误
$data = array(
'character_string4' => "SF123123",
'thing7' => "123".time(),
'date5' => date('Y-m-d H:i:s', time()),
'thing19' => '购买的商品信息',
);
一开始的data数据
网上找了一下发现原来少value,这个怎么说呢…
$data = array(
'character_string4' => array("value"=>"SF123123"),
'thing7' => array("value"=>"123".time()),
'date5' => array("value"=>date('Y-m-d H:i:s', time())),
'thing19' => array("value"=>'购买的商品信息'),
);
修改后的
成功接收到推送
下面贴一下代码,尽管有的框架已经有这样的功能了
$data = array(
'character_string4' => array("value"=>"SF123123"),
'thing7' => array("value"=>"123".time()),
'date5' => array("value"=>date('Y-m-d H:i:s', time())),
'thing19' => array("value"=>'购买的商品信息'),
);
$page = '这个是跳小程序页面的地址';
$access_token = "你的access_token";
$url = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' . $access_token;
$post_data = array(
"touser" => $openid, // 这个是用户的openid
"template_id" => $tempCode, // 这个是模板id
"page" => $page,
"miniprogram_state" => 'trial', // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
"data" => $data
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$rs = curl_exec($ch);
curl_close($ch);
$jsondecode = json_decode($rs, true);
if ($jsondecode['errcode'] == 0) {
return $jsondecode['errmsg'];
} else {
return 'code:'.$jsondecode['errcode'].' '.$jsondecode['errmsg'];
}
PS: emm…今天又去看文档发现官方文档写了这个问题..我这个眼啊!!!!!!!腾讯的文档还是不错的,相对于阿里的文档虽然不那么详细,但还是蛮不错的
