小程序订阅消息
/* 发送小程序订阅消息 */function xcxSendMsg($arr=[])
{
$access_token = isset($access_info['access_token']) ? $access_info['access_token'] : '';
$apiurl = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token='.$access_token;
$https_data['template_id'] = isset($arr['template_id']) ? $arr['template_id'] : '';
$https_data['page'] = isset($arr['page']) ? $arr['page'] : '';
$https_data['touser'] = isset($arr['touser']) ? $arr['touser'] : '';
$https_data['miniprogram_state'] = 'formal';
$https_data['lang'] = 'zh_CN';
$https_data['data'] = $arr['data'];
$data = json_encode($https_data);
$res = $this->fetchContent($apiurl, 'POST', $data);
return json_decode($res, true);
}
/**
* 发送curl请求
* @paramstring $url 请求地址
* @paramstring $method 请求方式 可选值:POST、GET
* @paramstring $body 向目标服务器发送的参数 (可选)
* @paramstring $header 指定请求头 (可选)
* @return string 响应信息
*/
function fetchContent($url, $method = 'GET', $body = array(), $header = array())
{
$ch = curl_init();
if ($method == 'POST') {
curl_setopt($ch, CURLOPT_POST, 1); //post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
} else {
if (!empty($body)) {
$url .= (strpos($url, '?') === false ? '?' : '&') . http_build_query($body);
}
}
if (!empty($header)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if (substr($url, 0, 5) == 'https') {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
}
$rtn = curl_exec($ch);
// if ($rtn === false) {
// // 大多由设置等原因引起,一般无法保障后续逻辑正常执行,
// // 所以这里触发的是E_USER_ERROR,会终止脚本执行,无法被try...catch捕获,需要用户排查环境、网络等故障
// trigger_error(": " . curl_error($ch), E_USER_ERROR);
// }
curl_close($ch);
return $rtn;
}
太厉害了!!! 不用授权的吗? kiseyzed 发表于 2022-8-11 17:51
不用授权的吗?
你看看access_token吧,质疑是很好的。但是建议仔细阅读一下代码,或者参考一下相关文档
页:
[1]