小程序官方的加解密 SDK 已经非常清楚了,只不过改成 Laravel 风格而已,仅仅相当于搬砖工。至于重复造轮子,我发现其他人的扩展解密用户信息的时候代码出错了,并且需要安装一个 Laravel 的 Curl 扩展也没说。只好 ...
小程序官方的加解密 SDK 已经非常清楚了,只不过改成 Laravel 风格而已,仅仅相当于搬砖工。至于重复造轮子,我发现其他人的扩展解密用户信息的时候代码出错了,并且需要安装一个 Laravel 的 Curl 扩展也没说。只好自己去根据他们的源码自己写一个0.0 ,不依赖其他扩展,直接安装使用即可。
小程序API接口
用户登录:wx.login
获取用户信息:wx.getUserInfo
安装
执行以下命令安装最新稳定版本:
composer require iwanli/wxxcx或者添加如下信息到你的 composer.json 文件中 :
"iwanli/wxxcx": "^1.0",然后注册服务提供者到 Laravel中 具体位置:/config/app.php 中的 providers 数组:
Iwanli\Wxxcx\WxxcxServiceProvider::class,发布配置文件:
php artisan vendor:publish --tag=wxxcx命令完成后,会添加一个wxxcx.php配置文件到您的配置文件夹 如 : /config/wxxcx.php。
生成配置文件后,将小程序的 AppID 和 AppSecret 填写到 /config/wxxcx.php 文件中
在Laravel 5控制器中使用 (示例)
...use Iwanli\Wxxcx\Wxxcx;class WxxcxController extends Controller{protected $wxxcx;function __construct(Wxxcx $wxxcx){$this->wxxcx = $wxxcx;}/*** 小程序登录获取用户信息* @author 晚黎* @date 2017-05-27T14:37:08+0800* @return [type] [description]*/public function getWxUserInfo(){//code 在小程序端使用 wx.login 获取$code = request('code', '');//encryptedData 和 iv 在小程序端使用 wx.getUserInfo 获取$encryptedData = request('encryptedData', '');$iv = request('iv', '');//根据 code 获取用户 session_key 等信息, 返回用户openid 和 session_key$userInfo = $this->wxxcx->getLoginInfo($code);//获取解密后的用户信息return $this->wxxcx->getUserInfo($encryptedData, $iv);}}用户信息返回格式:
{"openId": "xxxx","nickName": "晚黎","gender": 1,"language": "zh_CN","city": "","province": "Shanghai","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.codewx.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(){...}})如有bug,请在 Issues 中反馈,非常感谢!