由于项目要接微信订阅消息推送,前端搞好之后,后端按照官方文档写了代码,发现推送一直不成功,太苦恼了,一直报:
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…今天又去看文档发现官方文档写了这个问题..我这个眼啊!!!!!!!腾讯的文档还是不错的,相对于阿里的文档虽然不那么详细,但还是蛮不错的