func('communication');
load()->classs('weixin.platform');
load()->classs('wxapp.platform');
load()->model('wxapp');
$account_platform = new WxAppPlatform();
$dos = array('forward', 'confirm');
$do = in_array($do, $dos) ? $do : 'forward';
$setting = setting_load('platform');
if ($do == 'forward') {
if (empty($_GPC['auth_code'])) {
itoast('授权登录失败,请重试', url('wxapp/manage'), 'error');
}
$auth_info = $account_platform->getAuthInfo($_GPC['auth_code']);
if (is_error($auth_info)) {
itoast('授权登录新建小程序失败:' . $auth_info['message'], url('wxapp/manage'), 'error');
}
$auth_refresh_token = $auth_info['authorization_info']['authorizer_refresh_token'];
$auth_appid = $auth_info['authorization_info']['authorizer_appid'];
$account_info = $account_platform->getAccountInfo($auth_appid);
if (is_error($account_info)) {
itoast('授权登录新建小程序失败:' . $account_info['message'], url('wxapp/manage'), 'error');
}
if (!empty($_GPC['test'])) {
echo "此为测试平台接入返回结果:
公众号名称:{$account_info['authorizer_info']['nick_name']}
接入状态:成功";
exit;
}
if ($account_info['authorizer_info']['service_type_info']['id'] == '0' || $account_info['authorizer_info']['service_type_info']['id'] == '1') {
if ($account_info['authorizer_info']['verify_type_info']['id'] > '-1') {
$level = '3';
} else {
$level = '1';
}
} elseif ($account_info['authorizer_info']['service_type_info']['id'] == '2') {
if ($account_info['authorizer_info']['verify_type_info']['id'] > '-1') {
$level = '4';
} else {
$level = '2';
}
}
if (!empty($account_info['authorizer_info']['user_name'])) {
$account_found = pdo_get('account_wxapp', array('original' => $account_info['authorizer_info']['user_name']));
if (!empty($account_found)) {
message('小程序已经在系统中接入,是否要更改为授权接入方式?
', '', 'tips');
}
}
$account_insert = array(
'name' => $account_info['authorizer_info']['nick_name'],
'description' => '',
'groupid' => 0,
);
$account_wxapp_data = array(
'name' => trim($account_info['authorizer_info']['nick_name']),
'description' => trim($_GPC['description']),
'original' => trim($account_info['authorizer_info']['user_name']),
'level' => 1,
'key' => trim($auth_appid),
'secret' => trim($_GPC['appsecret']),
'type' => ACCOUNT_TYPE_APP_AUTH,
'encodingaeskey'=>$account_platform->encodingaeskey,
'auth_refresh_token'=>$auth_refresh_token,
'token' => $account_platform->token,
);
$uniacid = wxapp_account_create($account_wxapp_data);
if (!$uniacid) {
itoast('授权登录新建小程序失败,请重试', url('wxapp/manage'), 'error');
}
$headimg = ihttp_request($account_info['authorizer_info']['head_img']);
$qrcode = ihttp_request($account_info['authorizer_info']['qrcode_url']);
file_put_contents(IA_ROOT . '/attachment/headimg_' . $acid . '.jpg', $headimg['content']);
file_put_contents(IA_ROOT . '/attachment/qrcode_' . $acid . '.jpg', $qrcode['content']);
cache_build_account($uniacid);
itoast('授权登录成功', url('wxapp/post/design_method', array('uniacid' => $uniacid, 'choose_type'=>2)), 'success');
}
if ($do == 'confirm') {
$auth_refresh_token = $_GPC['auth_refresh_token'];
$auth_appid = $_GPC['auth_appid'];
$level = intval($_GPC['level']);
$acid = intval($_GPC['acid']);
$uniacid = intval($_GPC['uniacid']);
pdo_update('account_wxapp', array(
'auth_refresh_token' => $auth_refresh_token,
'encodingaeskey' => $account_platform->encodingaeskey,
'token' => $account_platform->token,
'level' => $level,
'key' => $auth_appid,
), array('acid' => $acid));
pdo_update('account', array('isconnect' => '1', 'type' => ACCOUNT_TYPE_APP_AUTH, 'isdeleted' => 0), array('acid' => $acid));
cache_delete("uniaccount:{$uniacid}");
cache_delete("unisetting:{$uniacid}");
cache_delete("accesstoken:{$acid}");
cache_delete("jsticket:{$acid}");
cache_delete("cardticket:{$acid}");
cache_delete("account:auth:refreshtoken:{$acid}");
$url = url('wxapp/post/design_method', array('acid' => $acid, 'uniacid' => $uniacid, 'choose_type'=>2));
itoast('更改小程序授权接入成功', $url, 'success');
}
if ($do == 'test') {
$auth_appid = '123';
$account_wxapp_data = array(
'name' => trim($_GPC['name']),
'description' => trim($_GPC['description']),
'original' => trim($_GPC['original']),
'level' => 1,
'key' => trim($_GPC['appid']),
'secret' => trim($_GPC['appsecret']),
'type' => ACCOUNT_TYPE_APP_NORMAL,
);
$account_wxapp_data = array(
'name' => '阿凡',
'description' => '123',
'original' => 'default',
'level' => 1,
'key' => trim($auth_appid),
'secret' => 'empty',
'type' => ACCOUNT_TYPE_APP_AUTH,
'encodingaeskey'=>'ak',
'auth_refresh_token'=>'authken',
'token' => 'token', );
$uniacid = wxapp_account_create($account_wxapp_data);
if (!$uniacid) {
itoast('授权登录新建小程序失败,请重试', url('wxapp/manage'), 'error');
}
itoast('授权登录成功', url('wxapp/post/design_method', array('uniacid' => $uniacid, 'choose_type'=>2)), 'success');
}