欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP實現(xiàn)給用戶發(fā)微信消息提醒功能

 更新時間:2023年05月25日 11:59:09   作者:北橋蘇  
這篇文章主要為大家介紹了PHP實現(xiàn)給用戶發(fā)微信消息提醒功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

以前有一個項目項目,當有用戶有資金到賬或者成員變動時需要給他發(fā)一條微信消息提示。針對這個,開始想使用模板消息,但是剛注冊的公眾號申請消息模板需要幾天時間申請,在時間不足下選擇了使用客服消息接口。   

這里跳過網(wǎng)頁授權和用戶信息獲取,請求接口的步驟,主要看獲取access_token,發(fā)布客服消息,驗證是否關注等等接口。

1. 獲取access_token

// 獲取access_token
public function getAccessToken($weid) {
        $appID = "wxfaddfdfdfd6cf6fc3569";                                      // 服務號appID
        $appSecret = "071bebfdfdofdfd23687bf53d63a";                            // 服務號appSerect
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appID&secret=$appSecret";
        $content = ihttp_get($url);                                             // 自定義請求函數(shù)
        if(is_error($content)) {
            return error('-1', '獲取微信公眾號授權失敗, 請稍后重試!錯誤詳情: ' . $content['message']);
        }
        if (empty($content['content'])) {
            return error('-1', 'AccessToken獲取失敗,請檢查appid和appsecret的值是否與微信公眾平臺一致!');
        }
        $token = @json_decode($content['content'], true);
        if ($token['errcode'] == '40164') {
            return error(-1, $this->errorCode($token['errcode'], $token['errmsg']));
        }
        if(empty($token) || !is_array($token) || empty($token['access_token']) || empty($token['expires_in'])) {
            $errorinfo = substr($content['meta'], strpos($content['meta'], '{'));
            $errorinfo = @json_decode($errorinfo, true);
            return error('-1', '獲取微信公眾號授權失敗, 請稍后重試! 公眾平臺返回原始數(shù)據(jù)為: 錯誤代碼-' . $errorinfo['errcode'] . ',錯誤信息-' . $errorinfo['errmsg']);
        }
        $record = array();
        $record['token'] = $token['access_token'];
        $record['expire'] = TIMESTAMP + $token['expires_in'] - 200;
        $cachekey = cache_system_key('accesstoken', array('acid' => $weid));
        cache_write($cachekey, $record);
        return $record['token'];
    }

2. 判斷是否關注

// 判斷當前用戶是否關注公眾號
public public function isSubscribe($weid,$userid) {
        // 獲取當前用戶信息
        $userinfo = pdo_get('hcface_users',array('uid'=>$userid));
        //return $userinfo;
        if(empty($userinfo)) {
            return false;
        }
        // 獲取access_token
        $accessToken = $this->getAccessToken($weid);
        // 是否關注接口
        $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$accessToken."&openid=".$userinfo['openid']."&lang=zh_CN";
        $res = ihttp_request($url);
        if(is_error($res)) {
            return false;
        }
        if($res['code'] != '200') {
            return false;
        }
        $result = @json_decode($res['content'],true);
        if($result['subscribe'] == 1) {
            $updateData = [];
            // 判斷當前用戶頭像和昵稱是否更換
            if($userinfo['avatar'] != $result['headimgurl']) {
                $updateData['avatar'] = $result['headimgurl'];
            }
            if($userinfo['nickname'] != $result['nickname']) {
                $updateData['avatar'] = $result['nickname'];
            }
            if(!empty($updateData)) {
                pdo_update('hcface_users',$updateData,array('uid'=>$userid));
            }
        }
        $userInfoData = [
            "subscribe" => $result['subscribe'],
            "user_openid" => $userinfo['openid'],
            "nickname" => $userinfo['nickname'],
        ];
        return $userInfoData;
    }

3. 發(fā)送客服消息

public function solPushMsg($openid, $content, $wid) {
        // 獲取access_token
        $accessToken = $this->getAccessToken($wid);
        $data = array(
          'touser' => $openid,              // 用戶openID
          'msgtype' => 'text',
          'text' => [
                'content' => $content,     // 內(nèi)容
            ],
        );
        $url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$accessToken; 
        $res = ihttp_request($url,json_encode($data,JSON_UNESCAPED_UNICODE)); // json_encode第二個參數(shù)必須帶上,不然發(fā)出的消息可能是unicode編碼的
        if(is_error($res)) {
            return false;
        }
        if($res['code'] != '200') {
            return false;
        }
        return @json_decode($res['content'],true);
    }

4. 微信接口返回的是一個數(shù)組

5. 實現(xiàn)效果

以上就是PHP實現(xiàn)給用戶發(fā)微信消息提醒功能的詳細內(nèi)容,更多關于PHP微信消息提醒的資料請關注腳本之家其它相關文章!

相關文章

  • ThinkPHP防止重復提交表單的方法實例分析

    ThinkPHP防止重復提交表單的方法實例分析

    這篇文章主要介紹了ThinkPHP防止重復提交表單的方法,結合實例形式分析了thinkPHP防止重復提交表單的各種常見操作技巧與相關注意事項,需要的朋友可以參考下
    2018-05-05
  • phpmyadmin在寶塔面板里進不去的解決方案

    phpmyadmin在寶塔面板里進不去的解決方案

    這篇文章主要介紹了phpmyadmin在寶塔面板里進不去的解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • CI框架中zip類應用示例

    CI框架中zip類應用示例

    CI框架自帶的zip類簡單實用,本文就來簡單說一下ci框架的zip類的使用,需要的朋友可以參考下
    2014-06-06
  • Linux下PHP連接Oracle數(shù)據(jù)庫

    Linux下PHP連接Oracle數(shù)據(jù)庫

    PHP連接Oracle是通過oci8訪問的。需要在web服務器上安裝oracle-instantcilent,使PHP支持Oracle擴展包OCI。下面我們來一步步詳細介紹下如何使用PHP連接Oracle。
    2014-08-08
  • PHP處理大量表單字段的便捷方法

    PHP處理大量表單字段的便捷方法

    這篇文章主要介紹了PHP處理大量表單字段的便捷方法,本文講解一種使用數(shù)組的方式來快速、方便的處理大量表單數(shù)據(jù),需要的朋友可以參考下
    2015-02-02
  • 在Laravel5中正確設置文件權限的方法

    在Laravel5中正確設置文件權限的方法

    這篇文章主要給大家介紹了關于如何在Laravel5中正確設置文件權限的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Laravel5具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • PHP中模擬處理HTTP PUT請求的例子

    PHP中模擬處理HTTP PUT請求的例子

    這篇文章主要介紹了PHP中模擬處理HTTP PUT請求的例子,PUT請求會把消息本體中的消息發(fā)送到一個URL,跟POST類似,需要的朋友可以參考下
    2014-07-07
  • Laravel路由研究之domain解決多域名問題的方法示例

    Laravel路由研究之domain解決多域名問題的方法示例

    這篇文章主要介紹了Laravel 路由研究之domain解決多域名問題的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • PHP正則表達式過濾html標簽屬性(DEMO)

    PHP正則表達式過濾html標簽屬性(DEMO)

    這篇文章主要介紹了PHP正則表達式過濾html標簽屬性的相關內(nèi)容,實用性非常,感興趣的朋友參考下吧
    2016-05-05
  • 主流PHP框架的優(yōu)缺點對比分析

    主流PHP框架的優(yōu)缺點對比分析

    這篇文章主要介紹了幾款今年比較熱門的主流PHP框架的優(yōu)缺點對比分析,非常的簡單實用,有需要的小伙伴參考下。
    2014-12-12

最新評論