Exemplo n.º 1
0
 /**
  * Description: 获取用户信息 通过 - snsapi_base。即不弹出授权认证
  * @param $code getCode()获得,采用跳转方式,需要自行$_GET先获得
  * @param Array
  */
 public static function getUserInfoBySnsapiBase($code, $uri)
 {
     //获取OpenId
     $openId = self::getAccessTokenAndOpenId($code);
     //如果code无效,则重新获取code
     if (isset($openId['errcode']) && ($openId['errcode'] = 40029)) {
         WeChatOAuth::getCode($uri);
     }
     if (empty($openId['openid'])) {
         die('获取微信授权失败,请回到微信界面重新进入!无效openid');
     }
     $openId = $openId['openid'];
     //根据OpenId获取用户信息
     return UserManage::getUserInfo($openId);
 }
Exemplo n.º 2
0
 private function requestAction($action)
 {
     switch ($action) {
         case 'wxJsSignature':
             // got wx js signature
             if (isset($_SERVER['HTTP_REFERER'])) {
                 $url = $_SERVER['HTTP_REFERER'];
             } else {
                 $url = self::_phpFileFullUrl();
             }
             //var_dump($url);
             $sig = new ApiSignature(WECHAT_APPID, WECHAT_APPSECRET, $url);
             $ret = json_encode($sig->getSignPackage());
             echo $ret;
             break;
         case 'fetchCode':
             if (isset($_SERVER['HTTP_REFERER'])) {
                 $redirectUrl = $_SERVER['HTTP_REFERER'];
             } else {
                 $redirectUrl = $_SERVER['REQUEST_URI'];
             }
             WeChatOAuth::getCode($redirectUrl, $state = 'qianduoduo', $scope = 'snsapi_base');
             break;
         case 'fetchOpenid':
             if (!isset($_GET['code'])) {
                 echo json_encode(['msg' => 'no code here !!!']);
                 return;
             }
             $code = $_GET['code'];
             $ret = WeChatOAuth::getAccessTokenAndOpenId($code);
             echo json_encode($ret);
             break;
         case 'scanCodePay':
             //$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.WECHAT_APPID.'&secret='.WECHAT_APPSECRET;
             //                var params = {
             //                    id: $('#channel').val() + '01',  // '01' means pay
             //                                amount: $('#money').val(),
             //                                openId: openid,
             //                                authCode: result
             //                            };
             //var_dump($_GET);
             $params = ['id' => $_GET['id'], 'amount' => $_GET['amount'], 'authCode' => $_GET['authCode'], 'openId' => $_GET['openId']];
             //$params = [];
             //parse_str()
             //var_dump($params);
             $ret = Curl::callWebServer(WECHAT_URL . 'zero/scanweb', json_encode($params), 'POST');
             //var_dump($ret);
             // check receipt openid here.
             /**
              * Notify JS frontend.
              */
             echo json_encode($ret);
             /**
              * Notify the receipt.
              */
             $retParams = $ret['params'];
             if (is_string($retParams)) {
                 $retParams = json_decode($retParams, true);
             }
             $debugMode = isset($_GET['debugMode']) && $_GET['debugMode'] === '1';
             if ($debugMode) {
                 // mock
                 $ret['code'] = '00';
                 $retParams['total_amount'] = '0.01';
             }
             if ($ret['code'] === '00' && $retParams && $retParams['total_amount'] && !is_null($retParams['total_amount'])) {
                 $content = '收到' . '付款金额' . $retParams['total_amount'];
                 ResponseInitiative::text($params['openId'], $content);
             }
             break;
             //            case 'notifyPayResult': {
             //                //if(isset($_POST()))
             //                if (!isset($_GET['code'])) {
             //                    echo json_encode(['msg'=>'no code here !!!']);
             //                    return;
             //                }
             //
             //                $code = $_GET['code'];
             //                $ret = WeChatOAuth::getAccessTokenAndOpenId($code);
             //                echo json_encode($ret);
             //            }
             break;
         default:
             //return ResponsePassive::text($request['fromusername'], $request['tousername'], '收到未知的消息,我不知道怎么处理');
     }
 }