wxxcx
1.0.0
미니 프로그램의 공식 암호화 및 복호화 SDK는 이미 매우 명확하지만 벽돌공과 같은 Laravel 스타일로 변경되었습니다. 바퀴를 재발명한 것에 관해서는, 다른 사람의 확장 프로그램에서 사용자 정보를 복호화할 때 코드 오류가 있는 것을 발견했고, Laravel Curl 확장 프로그램을 설치해야 한다는 언급도 없었습니다. 다른 확장에 의존하지 않고 소스 코드를 기반으로 0.0을 직접 작성해야 했으며 직접 설치하고 사용했습니다.
PHP7.1의 암호화 함수
mcrypt_module_open()
노후화로 인해 중단되었습니다. PHP7.1 버전을 사용하는 분은 버전 2.0 코드를 설치하시기 바랍니다
최신 안정 버전을 설치하려면 다음 명령을 실행하십시오.
PHP < 7.1
composer require iwanli/wxxcx=1. *
PHP > 7.1
composer require iwanli/wxxcx=2. *
또는 composer.json
파일에 다음 정보를 추가하세요.
PHP < 7.1
"iwanli/wxxcx" : " ^1.0 "
PHP > 7.1
" iwanli/wxxcx " : " ^2.0 "
그런 다음 Laravel의 특정 위치에 서비스 공급자를 등록하십시오: /config/app.php
의 providers
배열:
Iwanli Wxxcx WxxcxServiceProvider::class,
구성 파일 게시:
php artisan vendor:publish --tag=wxxcx
명령이 완료되면 wxxcx.php
구성 파일이 /config/wxxcx.php
와 같은 구성 폴더에 추가됩니다.
구성 파일을 생성한 후 /config/wxxcx.php
파일에 미니 프로그램의 AppID
와 AppSecret
입력합니다.
. . .
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"
}
}
//调用登录接口
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 ( ) {
...
}
} )
버그가 있으면 이슈에 신고해주세요. 정말 감사합니다!