예제 #1
0
파일: wxcontroller.php 프로젝트: wxl2012/wx
 public function before()
 {
     parent::before();
     $flag = $this->getNotOpenidAllowed();
     if ($flag) {
         return;
     }
     if (!\Session::get('wechat', false) && !\Input::get('openid', false)) {
         //获取到openid之后跳转的参数列表
         //$params = \handler\mp\UrlTool::createLinkstring(\Input::get());
         //本站域名
         $baseUrl = \Config::get('base_url');
         $url = $baseUrl . \Input::server('REQUEST_URI');
         $toUrl = urlencode($url);
         $callback = "{$baseUrl}wxapi/oauth2_callback?to_url={$toUrl}";
         $account = \Session::get('WXAccount', \Model_WXAccount::find(1));
         $url = \handler\mp\Tool::createOauthUrlForCode($account->app_id, $callback);
         \Response::redirect($url);
     } else {
         if (!\Session::get('wechat', false)) {
             $wxopenid = \Model_WechatOpenid::query()->where(['openid' => \Input::get('openid')])->get_one();
             if (!$wxopenid) {
                 \Session::set_flash('msg', ['status' => 'err', 'msg' => '未找到您的微信信息,无法确认您的身份! 系统无法为您提供服务!', 'title' => '拒绝服务']);
                 return $this->show_mesage();
             }
             \Session::set('wechat', $wxopenid->wechat);
             \Session::set('OpenID', $wxopenid);
             \Auth::force_login($wxopenid->wechat->user_id);
         } else {
             if (!\Auth::check() && \Session::get('wechat')->user_id) {
                 \Auth::force_login(\Session::get('wechat')->user_id);
             }
         }
     }
 }
예제 #2
0
파일: gateway.php 프로젝트: wxl2012/wx
 /**
  * 发起微信支付(公众号JSSDK支付)
  */
 public function action_wxpay()
 {
     $this->account = \Session::get('WXAccount', \Model_WXAccount::find(\Input::get('account_id', 1)));
     if (!\Input::get('openid', false)) {
         //本站域名
         $baseUrl = \Config::get('base_url');
         $request_uri = \Input::server('REQUEST_URI', '');
         if ($request_uri) {
             $request_uri = substr($request_uri, 1);
         }
         $toUrl = urlencode("{$baseUrl}{$request_uri}");
         $callback = "{$baseUrl}wxapi/oauth2_callback?to_url={$toUrl}";
         $url = \handler\mp\Tool::createOauthUrlForCode($this->account->app_id, $callback);
         \Response::redirect($url);
     }
     $msg = false;
     if (!\Input::get('order_id', false)) {
         $msg = ['status' => 'err', 'msg' => '缺少订单ID', 'errcode' => 0, 'title' => '错误'];
     } else {
         if (!$this->account) {
             $msg = ['status' => 'err', 'msg' => '缺少微信公众号ID', 'errcode' => 0, 'title' => '错误'];
         }
     }
     if ($msg) {
         \Session::set_flash('msg', $msg);
         return \Response::forge(\View::forge('message/moblie'));
     }
     //订单openid赋值
     $order = \Model_Order::find(\Input::get('order_id'));
     if (!$order->buyer_openid) {
         $openID = \Model_WechatOpenid::query()->where(['openid' => \Input::get('openid')])->get_one();
         if ($openID->wechat->user_id == $order->buyer_id) {
             $order->buyer_openid = \Input::get('openid');
             $order->save();
         }
     }
     //查询收款帐户
     $access = \Model_AccessConfig::query()->where('access_type', 'wxpay')->where('seller_id', $order->from_id)->where('enable', 'ENABLE')->get_one();
     $result = \handler\mp\Tool::wxpay_order($this->account, $order, $access, \Input::get('openid'));
     $params = array('appId' => $this->account->app_id, 'timeStamp' => strval(time()), 'nonceStr' => \Str::random('alnum', 16), 'package' => "prepay_id={$result['prepay_id']}", 'signType' => "MD5");
     $params['paySign'] = \handler\mp\Tool::getWxPaySign($params, $access->access_key);
     $params['to_url'] = "/order/home/delivery/{$order->id}";
     return \Response::forge(\View::forge('pay/wxpay', $params));
 }