400-1513-886

全国统一服务热线

微信开发

Laravel 5 获取微信小程序【用户信息】扩展

发布时间:2020-09-30 10:10:12 1128 次

微信小程序用户信息 API 接口

用户登录:wx.login

获取用户信息:wx.getUserInfo

执行以下命令安装扩展:

composer require iwanli/wxxcx

注册服务提供者到 Laravel 中 /config/app.php 的 providers 数组

Iwanli\Wxxcx\WxxcxServiceProvider::class,

发布配置文件

php artisan vendor:publish --tag=wxxcx

生成/config/wxxcx.php配置文件后,将小程序的 AppID 和 AppSecret 填写到 /config/wxxcx.php 文件中

为方便管理将配置信息存放在.env文件中

修改wxxcx.php 文件如下:

return [

    /**

    * 小程序APPID

    */

    'appid' => env('WECHAT_MINI_PROGRAM_APPID', ''),

    /**

     * 小程序Secret

     */

    'secret' => env('WECHAT_MINI_PROGRAM_SECRET', ''),

    /**

     * 小程序登录凭证 code 获取 session_key 和 openid 地址,不需要改动

     */

    'code2session_url' => "https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code",

];

在 Laravel 5 控制器中使用 (示例)

......

use Iwanli\Wxxcx\Wxxcx;

use Iwanli\Wxxcx\WXBizDataCrypt;

class WxxcxController extends Controller

{

    protected $wxxcx;

    function __construct(Wxxcx $wxxcx)

    {

        $this->wxxcx = $wxxcx;

    }

    /**

     * 小程序登录获取用户信息

     */

    public function getWxUserInfo(Request $request)

    {

        //code 在小程序端使用 wx.login 获取

        $code = $request->get('code');

        //encryptedData 和 iv 在小程序端使用 wx.getUserInfo 获取

        $encryptedData = $request->get('encryptedData');

        $iv = $request->get('iv');

         // 根据 code 获取用户 openid, session_key

        $loginInfo = $this->wxxcx->getLoginInfo($code);

        // 获取解密后的用户信息

        $userInfo = $this->wxxcx->getUserInfo($encryptedData, $iv);

        return  $userInfo;

    }

......

}

用户信息返回格式:

{
   "openId": "xxxx",
   "nickName": "统天科技",
   "gender": 1,
   "language": "zh_CN",
   "city": "",
   "province": "GuangZhou",
   "country": "CN",
   "avatarUrl": "http://wx.qlogo.cn/mmopen/xxxx",
   "watermark": {
       "timestamp": 1495867603,
       "appid": "your appid"
   }
}

小程序端获取 code、iv、encryptedData 向服务端发送请求示例代码:

//调用登录接口

wx.login({
   success: function (response) {
       var code = response.code
       wx.getUserInfo({
           success: function (resp) {
               wx.request({
                   url: 'your domain',
                   data: {
                       code: code,
                       iv: resp.iv,
                       encryptedData: resp.encryptedData
                   },
                   success: function (res) {
                       console.log(res.data)
                   }
               })
           }
       })
   },
   fail:function(){
       ...    }

})

扫码进入小程序

公司名称:广州统天网络科技有限公司

公司地址:广州市白云区石井镇潭村水闸街6号

公司电话:400-1513-886

公司邮箱:info@tongtian.tech