Laravel 微信小程式獲取『使用者詳細資訊』及『帶引數小程式碼』擴充套件

Icharle發表於2019-02-16

功能介紹

本擴充套件包包含使用者詳細資訊解密、帶引數小程式碼生成並儲存在本地目錄功能。
使用者詳細資訊解密官方也提供多種語言版本SDK(C++、PHP、Node、Python),在本擴充套件包中僅僅做封裝處理。
帶引數小程式碼生成,官方給出三種介面,在此擴充套件包中採用 介面B (適用於需要的碼數量極多的業務場景,通過該介面生成的小程式碼,永久有效,數量暫無限制)。

專案地址

https://github.com/icharle/Wxtool

使用方法

執行以下命令以獲取最新版本:

composer require icharle/wxtool 1.0

將服務提供者新增到配置檔案中的providers陣列中config/app.php,如下所示:

`providers` => [

    ...

    IcharleWxtoolWxtoolServiceProvider::class,
]

釋出配置檔案

php artisan vendor:publish --tag=wxtool

此時有一個config/wxtool.php檔案。

配置AppID及AppSecret

在根目錄.env檔案中新增如下程式碼

WX_APPID = 您的小程式小程式ID
WX_SECRET = 您的小程式金鑰

公開storage訪問檔案(可選)

若要使用 帶引數小程式碼生成 功能時必須執行下面命令。生成的小程式碼預設儲存在storage/app/public/qrcode資料夾中

php artisan storage:link

快速入門

  • 獲取帶引數小程式碼(示例程式碼)
      <?php
    
        namespace AppHttpControllers;
    
        use IcharleWxtoolWxtool;
        use IlluminateHttpRequest;
    
        class TestController extends Controller
        {    
        
            /**
             * 獲取帶引數小程式碼
             * @param $scene 場景值(最大32個可見字元,只支援數字,大小寫英文以及部分特殊字元)
             * @param $pages 頁面(必須是已經發布的小程式存在的頁面(否則報錯)
             * @return $imgpath 小程式碼路徑 (可以直接訪問 http://xxx.com/$imgpath)
             */
            public function GetImgCode($scene,$pages)
            {
                $a = new Wxtool();
                $imgpath = $a->GetQrcode($scene,$pages); 
            }
        }
  • 獲取使用者詳細資訊(示例程式碼)
      <?php
    
        namespace AppHttpControllers;
    
        use IcharleWxtoolWxtool;
        use IlluminateHttpRequest;
    
        class TestController extends Controller
        {    
        
            /**
             * 獲取使用者詳細資訊
             * @param Request $request
             */
            public function GetInfo(Request $request)
            {
                $a = new Wxtool();
                $code = $request->code;                                     //wx.login獲取
                $encryptedData = $request->encryptedData;                   //wx.getUserInfo 獲取
                $iv = $request->iv;                                         //wx.getUserInfo 獲取
                $res = $a->GetSessionKey($code);                            //獲取使用者openid 和 session_key
                $userinfo = $a->GetUserInfo($encryptedData,$iv);            //獲取使用者詳細資訊
                dd($userinfo);
            }
        }

解密返回結果

    {
        "openId": "OPENID",
        "nickName": "NICKNAME",
        "gender": GENDER,
        "city": "CITY",
        "province": "PROVINCE",
        "country": "COUNTRY",
        "avatarUrl": "AVATARURL",
        "unionId": "UNIONID",
        "watermark":
        {
            "appid":"APPID",
            "timestamp":TIMESTAMP
        }
    }

相關文章