打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PHP 微信公众号开发
  1 <?php  2 // 字符编码  3 header("Content-Type:text/html; charset=utf-8");  4   5 // 微信接口类  6 class WeChat{  7     private static $appid;  8     private static $appsecret;  9  10     function __construct(){ 11         self::$appid = '';      // 开发者ID(AppID) 12         self::$appsecret = '';  // 开发者密码(AppSecret) 13     } 14  15     // 微信授权地址 16     public static function getAuthorizeUrl($url){ 17         $url_link = urlencode($url); 18         return "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . self::$appid . "&redirect_uri={$url_link}&response_type=code&scope=snsapi_base&state=1#wechat_redirect"; 19     } 20  21     // 获取TOKEN 22     public static function getToken(){ 23         $urla = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . self::$appid . "&secret=" . self::$appsecret; 24         $outputa = self::curlGet($urla); 25         $result = json_decode($outputa, true); 26         return $result['access_token']; 27     } 28  29     /** 30      * getUserInfo 获取用户信息 31      * @param  string $code         微信授权code 32      * @param  string $weiwei_token Token 33      * @return array 34      */ 35     public static function getUserInfo($code, $weiwei_token){ 36         $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . self::$appid . "&secret=" . self::$appsecret . "&code={$code}&grant_type=authorization_code"; 37         $access_token_json = self::curlGet($access_token_url); 38         $access_token_array = json_decode($access_token_json, true); 39         $openid = $access_token_array['openid']; 40         $new_access_token = $weiwei_token; 41  42         //全局access token获得用户基本信息 43         $userinfo_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={$new_access_token}&openid={$openid}"; 44         $userinfo_json = self::curlGet($userinfo_url); 45         $userinfo_array = json_decode($userinfo_json, true); 46         return $userinfo_array; 47     } 48  49     /** 50      * pushMessage 发送自定义的模板消息 51      * @param  array  $data          模板数据 52         $data = [ 53             'openid' => '', 用户openid 54             'url' => '', 跳转链接 55             'template_id' => '', 模板id 56             'data' => [ // 消息模板数据 57                 'first'    => ['value' => urlencode('黄旭辉'),'color' => "#743A3A"], 58                 'keyword1' => ['value' => urlencode('男'),'color'=>'blue'], 59                 'keyword2' => ['value' => urlencode('1993-10-23'),'color' => 'blue'], 60                 'remark'   => ['value' => urlencode('我的模板'),'color' => '#743A3A'] 61             ] 62         ]; 63      * @param  string $topcolor 模板内容字体颜色,不填默认为黑色 64      * @return array 65      */ 66     public static function pushMessage($data = [],$topcolor = '#0000'){ 67         $template = [ 68             'touser'      => $data['openid'], 69             'template_id' => $data['template_id'], 70             'url'         => $data['url'], 71             'topcolor'    => $topcolor, 72             'data'        => $data['data'] 73         ]; 74         $json_template = json_encode($template); 75         $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . self::getToken(); 76         $result = self::curlPost($url, urldecode($json_template)); 77         $resultData = json_decode($result, true); 78         return $resultData; 79     } 80  81     /** 82      * addLog 日志记录 83      * @param string $log_content 日志内容 84      */ 85     public static function addLog($log_content = ''){ 86         $data = ""; 87         $data .= "DATE: [ " . date('Y-m-d H:i:s') . " ]\r\n"; 88         $data .= "INFO: " . $log_content . "\r\n\r\n"; 89         file_put_contents('/wechat.log', $data, FILE_APPEND); 90     } 91  92     /** 93      * 发送get请求 94      * @param string $url 链接 95      * @return bool|mixed 96      */ 97     private static function curlGet($url){ 98         $curl = curl_init(); 99         curl_setopt($curl, CURLOPT_URL, $url);100         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);101         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);102         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);103         $output = curl_exec($curl);104         if(curl_errno($curl)){105             return 'ERROR ' . curl_error($curl);106         }107         curl_close($curl);108         return $output;109     }110 111     /**112      * 发送post请求113      * @param string $url 链接114      * @param string $data 数据115      * @return bool|mixed116      */117     private static function curlPost($url, $data = null){118         $curl = curl_init();119         curl_setopt($curl, CURLOPT_URL, $url);120         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);121         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);122         if(!empty($data)){123             curl_setopt($curl, CURLOPT_POST, 1);124             curl_setopt($curl, CURLOPT_POSTFIELDS, $data);125         }126         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);127         $output = curl_exec($curl);128         curl_close($curl);129         return $output;130     }131 }132 133 /**134  * get_page_url 获取完整URL135  * @return url136  */137 function get_page_url($type = 0){138     $pageURL = 'http';139     if($_SERVER["HTTPS"] == 'on'){140         $pageURL .= 's';141     }142     $pageURL .= '://';143     if($type == 0){144         $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];145     }else{146         $pageURL .= $_SERVER["SERVER_NAME"];147     }148     return $pageURL;149 }150 151 // 获取用户openid152 153 // 微信接口类154 $WeChat = new WeChat();155 if(empty($_GET['code']) || !isset($_GET['code'])){156     // 通过授权获取code157     $url = get_page_url();158     $authorize_url = $WeChat->getAuthorizeUrl($url);159     header("Location:{$authorize_url}"); // 重定向浏览器160     exit();161 }else{162     // 获取微信用户信息163     $code = $_GET['code'];164     $weiwei_token = $WeChat->getToken(); // 获取微信token165     $user_info = $WeChat->getUserInfo($code, $weiwei_token);166     $openid = $user_info['openid'];167     # 公众号消息推送168     $WeChat::pushMessage([169         'openid' => $openid, // 用户openid170         'access_token' => $weiwei_token,171         'template_id' => "ONZapeZi5OzxHym7IaZw7q4eJHEV4L6lzdQrEIWBs60", // 填写你自己的消息模板ID172         'data' => [ // 模板消息内容,根据模板详情进行设置173             'first'    => ['value' => urlencode("尊敬的某某某先生,您好,您本期还款已成功扣收。"),'color' => "#743A3A"],174             'keyword1' => ['value' => urlencode("2476.00元"),'color'=>'blue'],175             'keyword2' => ['value' => urlencode("13期"),'color'=>'blue'],176             'keyword3' => ['value' => urlencode("15636.56元"),'color' => 'green'],177             'keyword4' => ['value' => urlencode("6789.23元"),'color' => 'green'],178             'remark'   => ['value' => urlencode("更多贷款详情,请点击页面进行实时查询。"),'color' => '#743A3A']179         ],180         'url_link' => 'https://www.cnblogs.com/' // 消息跳转链接181     ]);182 }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
群发文本消息 - 傻瓜式微信开发教程21
获取微信昵称、头像等信息方法
微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法
[代码全屏查看]
微信支付之openid获取
MVC 微信开发获取用户OpenID
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服