/**
*获取unionid
*/
public function actionGetUnionid(){
$sign = Yii::$app->request->get('sign');
$encryptedData = Yii::$app->request->get('encryptedData');
$iv = Yii::$app->request->get('iv');
$uid = $this->getUidBySign($sign);
if (!$uid) {
return ['status' => 0, 'msg' => '登录会话失效'];
}
$User = User::findOne($uid);
$appid='wxbdc7dd8cc5d15a8e';
$data='';
$errCode = $this->decryptData($appid,$User->session_key,$encryptedData, $iv, $data ); //解释数据
if ($errCode == 0 ) {
$obj = json_decode($data);
$unionid = $obj->unionId; //得到unionId
$User = User::findOne($uid);
$User->unionid=$unionid;
$User->save();
return '获取uunionid成功';
}else{
return '获取uunionid失败';
}
}
protected function decryptData( $appid, $sessionKey, $encryptedData, $iv, &$data )
{
if (strlen($sessionKey) != 24) {
return 41001;
}
$aesKey=base64_decode($sessionKey);
if (strlen($iv) != 24) {
return 41001;
}
$aesIV=base64_decode($iv);
$aesCipher=base64_decode($encryptedData);
$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
$dataObj=json_decode( $result );
if( $dataObj == NULL )
{
return 41001;
}
if( $dataObj->watermark->appid != $appid )
{
return 41001;
}
$data = $result;
return 0;
}