public function paymentAction() { $a = new Account(); $accounts = array(); $weixins = $a->table('__PLATFORM_WEIXIN__')->field('`id`, `appid`, `secret`')->where("`level`=2")->select(); if (!empty($weixins)) { $weixins = coll_key($weixins, 'id'); $ids = coll_neaten($weixins, 'id'); $accounts = $a->table('__PLATFORMS__')->field('`id`,`title`')->where('`id` IN (' . implode(',', $ids) . ')')->select(); foreach ($accounts as &$acc) { $acc['appid'] = $weixins[$acc['id']]['appid']; $acc['secret'] = $weixins[$acc['id']]['secret']; } } Pay::loadSettings(); $setting = C('PAY'); if (IS_POST) { $input = array(); $input['alipay'] = I('post.alipay'); $input['alipay']['enable'] = $input['alipay']['enable'] == 'true' ? 1 : 0; if (!empty($input['alipay']['enable'])) { if (empty($input['alipay']['partner']) || empty($input['alipay']['account']) || empty($input['alipay']['secret'])) { $this->error('支付宝支付资料输入不完整'); } } $setting[Pay::OPT_ALIPAY] = $input['alipay']; $input['weixin'] = I('post.weixin'); $input['weixin']['enable'] = $input['weixin']['enable'] == 'true' ? 1 : 0; if (!empty($input['weixin']['enable'])) { if (empty($input['weixin']['partner']) || empty($input['weixin']['key']) || empty($input['weixin']['mchid'])) { $this->error('微信支付资料输入不完整'); } } $setting[Pay::OPT_WEIXIN] = $input['weixin']; if (Pay::saveSettings($setting)) { $this->success('操作成功'); exit; } else { $this->error('操作失败, 请稍后重试'); } } $pay = array(); $pay['weixin'] = $setting[Pay::OPT_WEIXIN]; $pay['alipay'] = $setting[Pay::OPT_ALIPAY]; $this->assign('pay', $pay); $this->assign('accounts', $accounts); $this->display(); }
public function weixinAction() { $code = I('get.code'); if (!empty($code)) { Member::loadSettings(); $setting = C('MS'); $auth = $setting[Member::OPT_AUTH_WEIXIN]; if ($auth == '0') { exit('request error'); } else { $a = new Account(); $account = $a->getAccount($auth, Account::ACCOUNT_WEIXIN); $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$account['appid']}&secret={$account['secret']}&code={$code}&grant_type=authorization_code"; $ret = Net::httpGet($url); if (!is_error($ret)) { $auth = @json_decode($ret, true); if (is_array($auth) && !empty($auth['openid'])) { $condition = '`platformid`=:platform AND `openid`=:openid'; $pars = array(); $pars[':platform'] = $account['id']; $pars[':openid'] = $auth['openid']; $fan = $a->table('__MMB_MAPPING_FANS__')->where($condition)->bind($pars)->find(); if (empty($fan)) { $platform = Platform::create($account['id']); $info = $platform->fansQueryInfo($auth['openid'], true); $fan = array(); $fan['platformid'] = $account['id']; $fan['uid'] = 0; $fan['openid'] = $auth['openid']; if (!is_error($info)) { if (!empty($info['original']['unionid'])) { $fan['unionid'] = $info['original']['unionid']; $uid = $a->table('__MMB_MAPPING_FANS__')->field('uid')->where("`unionid`=`{$info['original']['unionid']}`")->find(); if (!empty($uid)) { $fan['uid'] = $uid; } } $fan['subscribe'] = $info['original']['subscribe']; $fan['subscribetime'] = $info['original']['subscribe_time']; unset($info['original']); $fan['info'] = serialize($info); } $fan['unsubscribetime'] = 0; $a->table('__MMB_MAPPING_FANS__')->data($fan)->add(); } $stateKey = I('get.state'); $state = session('auth:forward'); session('auth:forward', null); if ($state[0] == $stateKey) { $forward = $state[1]; } else { $forward = U('/'); } if (stripos($forward, '?') !== false) { $forward .= '&wxref=mp.weixin.qq.com#wechat_redirect'; } else { $forward .= '?wxref=mp.weixin.qq.com#wechat_redirect'; } if (!empty($fan['uid'])) { //登陆 $m = new Member(); $member = $m->profile($uid); if (!empty($member)) { $m->login($fan['uid']); redirect($forward); } } if ($setting[Member::OPT_POLICY] == Member::OPT_POLICY_CLASSICAL) { //兼容模式, 创建新用户 $this->error('兼容模式暂未支持'); redirect($forward); } else { //统一模式, 注册新用户 session('fan:weixin', $fan); if (!empty($fan['info'])) { $fan['info'] = unserialize($fan['info']); } $this->assign('fan', $fan); $this->assign('forward', $forward); $this->display('weixin'); } return; } else { $this->error('微信授权失败错误信息为: ' . $ret); } } $this->error('微信授权失败错误信息为: ' . $ret['message']); } } exit('访问错误'); }
public function weixinModify() { $id = intval(I('get.id')); if (empty($id)) { $this->error('访问错误'); } $a = new Account(); $account = $a->getAccount($id, Account::ACCOUNT_WEIXIN); if (empty($account)) { $this->error('访问错误'); } if (IS_POST) { if (I('post.method') == 'generate') { $rec = array(); $rec['token'] = util_random(32); $rec['aeskey'] = util_random(43); $a->table('__PLATFORM_WEIXIN__')->data($rec)->where("`id`='{$id}'")->save(); exit(json_encode($rec)); } $rec = array(); $rec['level'] = intval(I('post.level')); if ($rec['level'] != '0') { $rec['appid'] = I('post.appid'); $rec['secret'] = I('post.secret'); if (empty($rec) || empty($rec['secret'])) { $this->error('您当前选择的公众号类型必须输入AppId和Secret'); } $access = WeiXin::getAccessToken($rec['appid'], $rec['secret']); if (is_error($access)) { $this->error('您输入的AppId和Secret经验证是无效的, 请检查. 错误详情: ' . $access['message']); } $_POST['access_token'] = $access['token']; $_POST['access_expire'] = $access['expire']; } $ret = $a->modify(Account::ACCOUNT_WEIXIN, $id); if (is_error($ret)) { $this->error($ret['message']); } $this->success('保存成功'); exit; } $this->assign('entity', $account); $this->display('weixin-form'); }
public function passportAction() { $a = new Account(); $accounts = array(); $weixins = $a->table('__PLATFORM_WEIXIN__')->field('id')->where("`level`=2")->select(); if (!empty($weixins)) { $ids = coll_neaten($weixins, 'id'); if (IS_POST) { $select = I('post.select'); if ($select == '0' || in_array($select, $ids)) { Member::loadSettings(); $setting = C('MS'); $setting[Member::OPT_AUTH_WEIXIN] = $select; Member::saveSettings($setting); $this->success('处理成功'); exit; } } $accounts = $a->table('__PLATFORMS__')->where('`id` IN (' . implode(',', $ids) . ')')->select(); } Member::loadSettings(); $setting = C('MS'); $auth = $setting[Member::OPT_AUTH_WEIXIN]; $this->assign('auth', $auth); $this->assign('accounts', $accounts); C('FRAME_CURRENT', U('control/member/passport')); $this->display(); }