stuchilde / wxxcx
适用于 Laravel 的微信小程序(mini_app)插件
1.0.0
2021-04-26 06:19 UTC
Requires
- php: >=5.5.9
- illuminate/support: ^5.5 || ^7.0 || ^8.0
This package is auto-updated.
Last update: 2024-09-26 13:33:16 UTC
README
小程序官方的加解密 SDK 已经非常清晰了,只是改变了 Laravel 风格,就像搬砖工一样。至于重复造轮子,我发现其他人在扩展解密用户信息时代码有误,并且没有提及需要安装 Laravel 的 Curl 扩展。我只能根据他们的源码自己写一个0.0,不依赖其他扩展,直接安装即可。
小程序 API 接口
- 用户登录:wx.login
- 获取用户信息:wx.getUserInfo
安装
将服务提供者注册到 Laravel 中,具体位置在 /config/app.php 文件的 providers 数组中
Stuchilde\Wxxcx\WxxcxServiceProvider::class,
发布配置文件
php artisan vendor:publish --tag=wxxcx
命令完成后,会在您的配置文件夹中添加一个 wxxcx.php 配置文件,如:/config/wxxcx.php。
生成配置文件后,将小程序的 AppID 和 AppSecret 填写到 /config/wxxcx.php 文件中
在 Laravel 5 控制器中使用(示例)
... use Stuchilde\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.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(){ ... } })
如有 bug,请在 Issues 中反馈,非常感谢!