小程序官方的加解密 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.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(){ ... } })
摘自:https://segmentfault.com/a/1190000009580577