SDK enkripsi dan dekripsi resmi dari program mini ini sudah sangat jelas, tetapi telah diubah ke gaya Laravel, yang seperti tukang batu. Mengenai penemuan kembali roda, saya menemukan bahwa ekstensi orang lain memiliki kesalahan kode saat mendekripsi informasi pengguna, dan tidak disebutkan perlunya menginstal ekstensi Laravel Curl. Saya sendiri harus menulis 0,0 berdasarkan kode sumbernya, tanpa bergantung pada ekstensi lain, cukup instal dan gunakan secara langsung.
Fungsi enkripsi
mcrypt_module_open()
dari PHP7.1 telah ditinggalkan karena sudah usang. Orang yang menggunakan versi PHP7.1 silakan instal kode versi 2.0
Jalankan perintah berikut untuk menginstal versi stabil terbaru:
PHP <7.1
composer require iwanli/wxxcx=1. *
PHP > 7.1
composer require iwanli/wxxcx=2. *
Atau tambahkan informasi berikut ke file composer.json
Anda:
PHP <7.1
"iwanli/wxxcx" : " ^1.0 "
PHP > 7.1
" iwanli/wxxcx " : " ^2.0 "
Kemudian daftarkan penyedia layanan ke lokasi spesifik di Laravel: array providers
di /config/app.php
:
Iwanli Wxxcx WxxcxServiceProvider::class,
Publikasikan file konfigurasi:
php artisan vendor:publish --tag=wxxcx
Setelah perintah selesai, file konfigurasi wxxcx.php
akan ditambahkan ke folder konfigurasi Anda seperti: /config/wxxcx.php
.
Setelah generate file konfigurasi, isi AppID
dan AppSecret
mini program ke dalam file /config/wxxcx.php
. . .
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 );
}
}
Format pengembalian informasi pengguna:
{
"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"
}
}
//调用登录接口
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 ( ) {
...
}
} )
Jika ada bug, silakan laporkan di Masalah, terima kasih banyak!