90y6u 发表于 2022-8-11 17:05

小程序订阅消息

/* 发送小程序订阅消息 */
    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;
    }

Liliright 发表于 2022-8-11 17:42

太厉害了!!!

kiseyzed 发表于 2022-8-11 17:51

不用授权的吗?

7Wen 发表于 2022-8-11 18:06

kiseyzed 发表于 2022-8-11 17:51
不用授权的吗?

你看看access_token吧,质疑是很好的。但是建议仔细阅读一下代码,或者参考一下相关文档
页: [1]
查看完整版本: 小程序订阅消息