最近做一个手机来电及短息转发的应用场景,在实践过程中发现微信并没有开放的接口用于微信接收信息!怎么办呢?我的解决办法就是建立一个微信企业公众平台(https://qy.weixin.qq.com/)使用开放平台发送消息接口,来进行消息转发!在这里不只是实现了将消息转发到自己的微信!也可以通过用户关注给某个用户或者某个组的人发送群发微信消息!美中不足的是上下只有200人!但是和朋友们使用的小应用是够了!我就设计了个朋友们的生日提醒器!在朋友生日的前三天群发消息到朋友们的微信进行提醒。

当然利用相同的方法还可以使用微信公众平台的开发者测试应用!开通了所有的权限!只是不能修改应用名称和人数上限200.大规模的服务应该使用认证后的号码这样就不会有那么多限制了.

 

<?php

//--------------------------------------------------------------------------------------------------
// This script reads event data from a JSON file and outputs those events which are within the range
// supplied by the "start" and "end" GET parameters.
//
// An optional "timezone" GET parameter will force all ISO8601 date stings to a given timezone.
//
// Requires PHP 5.2.0 or higher.
//--------------------------------------------------------------------------------------------------
/*
参数	必须	说明
touser	否	成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送
toparty	否	部门ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数
totag	否	标签ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数
msgtype	是	消息类型,此时固定为:text (支持消息型应用跟主页型应用)
agentid	是	企业应用的id,整型。可在应用的设置页面查看
content	是	消息内容,最长不超过2048个字节,注意:主页型应用推送的文本消息在微信端最多只显示20个字(包含中英文)
safe	否	表示是否是保密消息,0表示否,1表示是,默认0
*/
// Require our Event class and datetime utilities
//数据库类 medoo 百度了解即可
include_once 'medoo.php';
/*
* 获取access_token
*
*///应用的ID 及 key直接写在了连接里自行修改即可
$url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=这里是应用ID&corpsecret=应用KEY';

$a  = array('a' =>'b');
//值为空出错!发送默认无用数据代替
$data = request_post($url,$a);
//echo $data;
$dat = json_decode($data);

$dat = object_array($dat);
//发送消息接口
$surl = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='.$dat['access_token'];


header("Content-Type:text/html;charset=utf-8"); 

// 初始化配置MYSQL
$database = new medoo([
    'database_type' => 'mysql',
    'database_name' => 'mysql库名',
    'server' => 'mysql连接域名',
    'username' => '用户名',
    'password' => '密码',
    'charset' => 'utf8'
]);
// 插入数据示例

//数据库中的name表 和 name day tek 三个字段
$datas = $database->select("name", [
    "name",//text
    "day", // date
    "tel" // text
]);
///阴历 阳历转换类
include_once 'class.r.php'; 
foreach ($datas as $key => $value) {
//var_dump($value);
//echo $value['name'];
//echo $value['day'];
//echo $value['tel'];
$a = $value['day'];
$a=substr($a,4);
$day = date('Y').$a;
$lunar=new Lunar();
$r_array = explode('-', $day); 
$month=$lunar->convertLunarToSolar($r_array["0"],$r_array["1"],$r_array["2"]);

$d =  $month[0].'-'.$month[1].'-'.$month[2];

$zero1=strtotime (date("y-m-d h:i:s")); //当前时间  ,注意H 是24小时 h是12小时 
$zero2=strtotime ($d." 00:00:00");  //过年时间,不能写2014-1-21 24:00:00  这样不对 
$guonian=ceil(($zero2-$zero1)/86400); //60s*60min*24h   


$zero3=strtotime(date("y-m-d")); //当前时间  ,注意H 是24小时 h是12小时 
$zero4=strtotime($value['day']);  //过年时间,不能写2014-1-21 24:00:00  这样不对 
$guonian2=ceil(($zero4-$zero3)/86400); //60s*60min*24h
$tian =  abs(ceil($guonian2/365))+1;   
//ID - 9
if ($guonian<=3&&$guonian>=1){
    if ($guonian<1){
        $guonian="今";
    }
    //"touser": "36488963",  发送给某个人
    //"toparty": "9",   发送给组 ID = 9
$data_string='{
   "toparty": "9",
   "totag": "@al ",
   "msgtype": "text",
   "agentid": 0,
   "text": {
       "content": "'.$value['day'].'-'.$value['name'].'还有'.$guonian.'天就过'.$tian.'岁生日了,生日快乐。"
   },
   "safe":0
}';
//模拟post  
http_post_data($surl,$data_string);



}

}

/*******************
//
//  post json to web
//
//
********************/
 function http_post_data($url, $data_string) {  
  
        $ch = curl_init();  
        curl_setopt($ch, CURLOPT_POST, 1);  
        curl_setopt($ch, CURLOPT_URL, $url);  
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);  
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(  
            'Content-Type: application/json; charset=utf-8',  
            'Content-Length: ' . strlen($data_string))  
        );  
        ob_start();  
        curl_exec($ch);  
        $return_content = ob_get_contents();  
        ob_end_clean();  
  
        $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
        return array($return_code, $return_content);  
    }  
 /******************
 *
 *
 *
 *  post array
 *
 *
 *
 *********************/
     function request_post($url = '', $param = '') {
        if (empty($url) || empty($param)) {
            return false;
        }
        
        $postUrl = $url;
        $curlPost = $param;
        $ch = curl_init();//初始化curl
        curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
        curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
        curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
        curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
        $data = curl_exec($ch);//运行curl
        curl_close($ch);
        
        return $data;
    }

//*对象转数组

    function object_array($array) {  
    if(is_object($array)) {  
        $array = (array)$array;  
     } if(is_array($array)) {  
         foreach($array as $key=>$value) {  
             $array[$key] = object_array($value);  
             }  
     }  
     return $array;  
}