小程序解密秘钥(laravel)

安装

composer require iwanli/wxxcx=2.*

注册插件

打开/config/app.php

在providers数组中,添加:

Iwanli\Wxxcx\WxxcxServiceProvider::class,

生成配置文件

php artisan vendor:publish --tag=wxxcx

生成后,会在config文件夹下,新增一个wxxcx.php的文件

文件内的内容如下(如果php命令失效,则自己创建一个也行):

return [
    /**
     * 小程序APPID
    */
    'appid' => 'wx9fa1a621cd1b4eaa',
    /**
     * 小程序Secret
     */
    'secret' => '074c65bf5f1ee97ac38eb9e73eaa5c3e',
    /**
     * 小程序登录凭证 code 获取 session_key 和 openid 地址,不需要改动
     */
    'code2session_url' => "https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code",
];

使用

首先,打开小程序,找到相应目录下的xxx.js,如home.js

wx.login({
    success: code = >{
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        console.log(code) 
            wx.getUserInfo({
            // 获取用户信息
            success: userInfo = >{
                console.log(userInfo) 
                wx.request({
                    url: 'http://127.0.0.6/api/3cfba42fc8785f9e/login',
                    method: "POST",
                    data: {
                        'code': code.code,
                        'userInfo': userInfo
                        // 这里也可以把userInfo里的返回值拆分储存
                    },
                    success: function(res) {
                        console.log(res.data)
                    }
                })
            }
        })
    }
})

然后,打开laravel的控制器

// 引入
use Iwanli\Wxxcx\Wxxcx; 

class WxControllerPost extends Controller
{
    # 注册小程序数据解密插件
	protected $wxxcx;
    function __construct(Wxxcx $wxxcx)
    {
      $this->wxxcx = $wxxcx;
    }
    public function Login (Request $request) {
        $postData = $request->all();
        // 获取code
        $resCode = $postData['code'];
        // 解密code
        $code = $this->wxxcx->getLoginInfo($resCode);
        // 获取encryptedData 和 iv
        $encryptedData = $postData['userInfo']['encryptedData'];
        $iv = $postData['userInfo']['iv'];
        // 解密encryptedData 和 iv
        $userInfo = $this->wxxcx->getUserInfo($encryptedData, $iv);
        // getUserInfo有两个参数,写一个会报错
        // 返回值
        $arr = [
        'code' => $code,
        'userInfo' => $userInfo
        ];
        return json_encode($arr);
    }
}

结果

在小程序内console.log,会得到如下格式:

{
	"openId":"xxxxxx",
	"nickName":"xxxx",
	"gender":1,
	"language":"zh_CN",
	"city":"",
	"province":"Beijing",
	"country":"China",
	"avatarUrl":"https://wx.qlogo.cn/mmopen/vi_32/....",
	"watermark":{
		"timestamp":1577958356,
		"appid":"xxxxxx"
	}
}

 

给TA买糖
共{{data.count}}人
人已赞赏
tp6-边用边总结

以年月日+编号拼接id,且编号每天从0开始

2021-6-4 15:24:16

微信开发

微信浏览器内H5图片点击放大

2021-4-21 11:30:08

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索