小程序官方的加解密 SDK 已經(jīng)非常清楚了,只不過改成 Laravel 風(fēng)格而已,僅僅相當(dāng)于搬磚工。至于重復(fù)造輪子,我發(fā)現(xiàn)其他人的擴(kuò)展解密用戶信息的時(shí)候代碼出錯(cuò)了,并且需要安裝一個(gè) Laravel 的 Curl 擴(kuò)展也沒說。只好 ...
小程序官方的加解密 SDK 已經(jīng)非常清楚了,只不過改成 Laravel 風(fēng)格而已,僅僅相當(dāng)于搬磚工。至于重復(fù)造輪子,我發(fā)現(xiàn)其他人的擴(kuò)展解密用戶信息的時(shí)候代碼出錯(cuò)了,并且需要安裝一個(gè) Laravel 的 Curl 擴(kuò)展也沒說。只好自己去根據(jù)他們的源碼自己寫一個(gè)0.0 ,不依賴其他擴(kuò)展,直接安裝使用即可。
小程序API接口
用戶登錄:wx.login
獲取用戶信息:wx.getUserInfo
安裝
執(zhí)行以下命令安裝最新穩(wěn)定版本:
composer require iwanli/wxxcx
或者添加如下信息到你的 composer.json 文件中 :
"iwanli/wxxcx": "^1.0",
然后注冊(cè)服務(wù)提供者到 Laravel中 具體位置:/config/app.php 中的 providers 數(shù)組:
Iwanli\Wxxcx\WxxcxServiceProvider::class,
發(fā)布配置文件:
php artisan vendor:publish --tag=wxxcx
命令完成后,會(huì)添加一個(gè)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', '');
//根據(jù) 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 向服務(wù)端發(fā)送請(qǐng)求示例代碼:
//調(diào)用登錄接口
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,請(qǐng)?jiān)?Issues 中反饋,非常感謝!
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)