php三方網站使用微信公衆號推送文章



//獲取accesstoken 的方法
public function index(){ $appId = 'wxd0e50fe967dccccc'; $appSecret = 'd7f6be12ce41b60ss0f45054';//虛擬的,不要用 $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appId."&secret=".$appSecret; $ch = curl_init();//初始化curl curl_setopt($ch, CURLOPT_URL,$url); //要訪問的地址 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//跳過證書驗證 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 從證書中檢查SSL加密算法是否存在 $data = json_decode(curl_exec($ch)); if(curl_errno($ch)){ var_dump(curl_error($ch)); //若錯誤打印錯誤信息 } var_dump($data); //打印信息 curl_close($ch);//關閉curl }

獲取accesstoken 的第二種方法,將accesstoken存在text文件中每隔2小時刷新一次php

<?php
class TokenUtil {
    //獲取access_token並保存到token.txt文件中
    public static function build_access_token(){
        $ch = curl_init(); //初始化一個CURL對象
        curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx2e9f8435ebdb2856&secret=288db114f02b2b5cdc249ca75a4bf1cc");//設置你所須要抓取的URL
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//設置curl參數,要求結果是否輸出到屏幕上,爲true的時候是不返回到網頁中,假設上面的0換成1的話,那麼接下來的$data就須要echo一下。
        $data = json_decode(curl_exec($ch));
        if($data->access_token){
            $token_file = fopen("token.txt","w") or die("Unable to open file!");//打開token.txt文件,沒有會新建
            fwrite($token_file,$data->access_token);//重寫tken.txt所有內容
            fclose($token_file);//關閉文件流
        }else{
            echo $data->errmsg;
        }
        curl_close($ch);
    }
    
    //設置定時器,每兩小時執行一次build_access_token()函數獲取一次access_token
    public static function set_interval(){
        ignore_user_abort();//關閉瀏覽器仍然執行
        set_time_limit(0);//讓程序一直執行下去
        $interval = 7200;//每隔必定時間運行
        do{
            build_access_token();
            sleep($interval);//等待時間,進行下一次操做。
        }while(true);
    }
    
    //讀取token
    public static function read_token(){
        $token_file = fopen("token.txt", "r") or die("Unable to open file!");
        $rs = fgets($token_file);
        fclose($token_file);
        return $rs;
    }
}
?>

 

固然ACCESS_TOKEN是會過時的
本身須要整合這個api自動獲取
咱們學習過程當中作測試能夠直接獲取粘貼上去。
固然調用這個接口須要配置IP白名單
若是獲取過程當中出現一串英文,裏面有IP地址,就說明你還沒配置IP白名單
你須要進入公衆號後臺安全中心-IP白名單-粘貼提示的IP地址便可面試

若是你要給指定的openID羣發模板消息
例如你公司作教育培訓服務的
有3個學生報了大家公司的某課程培訓班
你須要在上課前15分鐘主動向每一個學生的微信推送模板消息通知上課
那麼這三個學生須要關注你的服務號
你還要獲取到這三個學生的openID
而後存入數組中,遍歷數組發送便可。算法

獲取openID的方法
一、配置回調域名
進入公衆號,接口權限,找到網頁服務,網頁獲取用戶基本信息json

進去修改你的域名便可api

新建oauth.php數組

<?php
  //獲取微信access_token
function getaccess_token(){
    $code = $_GET['code'];
    $appid = '本身的appid';
    $appsecret = '本身的appsecret';
    $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$appsecret}&code={$code}&grant_type=authorization_code";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    $data = curl_exec($ch);
    curl_close($ch);
    echo $data;
}
getaccess_token();

 

配置用戶要訪問的網頁
https://open.weixin.qq.com/co...瀏覽器

REDIRECT_URI是回調連接
就是上面的oauth.php的地址
例如你的域名是
www.baidu.com
你把oauth.php上傳到根目錄
那麼URL轉碼的回調連接就是
http://www.baidu.com/oauth.php安全

回調連接須要URL轉碼
給你們提供一個轉碼工具微信

http://tool.oschina.net/encod...app

 

最終的回調連接是
http%3A%2F%2Fwww.baidu.com%2Foauth.php

例如的你APPID是:wx66666666666666
整個用戶要訪問的網頁就是
https://open.weixin.qq.com/co...://www.baidu.com/oauth.php&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

用戶訪問的網頁也須要URL轉碼
最終的網址是:
https%3A%2F%2Fopen.weixin.qq.com%2Fconnect%2Foauth2%2Fauthorize%3Fappid%3Dwx66666666666666%26redirect_uri%3Dhttp%3A%2F%2Fwww.baidu.com%2Foauth.php%26response_type%3Dcode%26scope%3DSCOPE%26state%3DSTATE%23wechat_redirect

而後用微信訪問上面的最終的網址,就會返回一串JSON數據,裏面有openid
要想得到3個學生的openid那麼就要這三個學生點進去,獲取發給你

下面就是模板消息推送給指定的openid的代碼
我就以這三個學生的openid爲例

<?php
$ACCESS_TOKEN = "替換你的ACCESS_TOKEN";//ACCESS_TOKEN
//openid數組
$touser = [
    'ouD7BuHpIKRXPIz7pdrwI9IwDRCU',
    'ouD7BuI36wSUZgteyiydmDrldQLU',
    'ouD7BuLejq7R4Vbuyh41bH778cg0'];
//模板消息請求URL
$url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $ACCESS_TOKEN;

//遍歷發送微信消息
foreach ($touser as $value) {
    $data = getDataArray($value);
    $json_data = json_encode($data);//轉化成json數組讓微信能夠接收
    $res = https_request($url, urldecode($json_data));//請求開始
    $res = json_decode($res, true);
    if ($res['errcode'] == 0 && $res['errcode'] == "ok") {
        echo "發送成功!<br/>";
    }
}

//獲取發送數據數組
function getDataArray($value)
{
    $data = array(
        'touser' => $value, //要發送給用戶的openid
        'template_id' => "mfopDNUlvoBGGsPLB-d_nrfL8Je92xnTq5vk5ZBxL-w",//改爲本身的模板id,在微信後臺模板消息裏查看
        'url' => "http://mp.weixin.qq.com/s/8UWPqHVa8PReWZp-No0ebA", //本身網站連接url
        'data' => array(
            'first' => array(
                'value' => "親愛的同窗,您有考試提醒,請查閱。",
                'color' => "#000"
            ),
            'keyword1' => array(
                'value' => "2017下半年教師資格證面試",
                'color' => "#f00"
            ),
            'keyword2' => array(
                'value' => "2018-1-6",
                'color' => "#173177"
            ),
            'keyword3' => array(
                'value' => "請看您的准考證",
                'color' => "#3d3d3d"
            ),
            'keyword4' => array(
                'value' => "教師資格證試講",
                'color' => "#3d3d3d"
            ),
            'keyword5' => array(
                'value' => "答辯,選題,結構化",
                'color' => "#3d3d3d"
            ),
            'remark' => array(
                'value' => "\n如今是打印准考證時間,請您在考試前打印准考證,戳進來能夠查看詳情>>>",
                'color' => "#3d3d3d"
            ),
        )
    );
    return $data;
}


//curl請求函數,微信都是經過該函數請求
function https_request($url, $data = null)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (!empty($data)) {
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}



?>

 新建test.php
拷貝代碼
修改你的
ACCESS_TOKEN
修改你的學生的3個openid
修改你的模板ID
模板ID是什麼?
就是你要推送的那個卡片的模板
例如支付成功模板,上課通知模板,發貨模板....

相關文章
相關標籤/搜索