Le SDK officiel de cryptage et de décryptage du mini programme est déjà très clair, mais il a été modifié pour le style Laravel, qui ressemble à un maçon. Quant à réinventer la roue, j'ai découvert que les extensions d'autres personnes comportaient des erreurs de code lors du décryptage des informations utilisateur, et il n'y avait aucune mention de la nécessité d'installer une extension Laravel Curl. J'ai dû écrire moi-même un 0.0 basé sur leur code source, sans compter sur d'autres extensions, il suffit de l'installer et de l'utiliser directement.
La fonction de chiffrement
mcrypt_module_open()
de PHP7.1 a été abandonnée pour cause d'obsolescence. Les personnes utilisant la version PHP7.1 doivent installer le code de la version 2.0.
Exécutez la commande suivante pour installer la dernière version stable :
PHP < 7.1
composer require iwanli/wxxcx=1. *
PHP > 7.1
composer require iwanli/wxxcx=2. *
Ou ajoutez les informations suivantes à votre fichier composer.json
:
PHP < 7.1
"iwanli/wxxcx" : " ^1.0 "
PHP > 7.1
" iwanli/wxxcx " : " ^2.0 "
Enregistrez ensuite le fournisseur de services à l'emplacement spécifique dans Laravel : tableau providers
dans /config/app.php
:
Iwanli Wxxcx WxxcxServiceProvider::class,
Publier le fichier de configuration :
php artisan vendor:publish --tag=wxxcx
Une fois la commande terminée, un fichier de configuration wxxcx.php
sera ajouté à votre dossier de configuration tel que : /config/wxxcx.php
.
Après avoir généré le fichier de configuration, remplissez AppID
et AppSecret
du mini programme dans le fichier /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 de retour des informations utilisateur :
{
"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 ( ) {
...
}
} )
S'il y a des bugs, veuillez les signaler dans Problèmes, merci beaucoup !