isMethod('post')) { $store_id = $request->input('store_id'); $phone = $request->input('phone'); $name = $request->input('name'); if (!$phone || !$name) { $message = '请输入电话号码'; return view('web.auth.error', compact('message')); } else { $check = AlbumUserModel::where([['phone', $phone],['g_open_id', null],['is_dealer', 1]])->first(); if (!$check) { $message = '该经销商号码不存在或是已绑定'; return view('web.auth.error', compact('message')); } } $weChatApp = AlbumManufacturerModel::where('store_id', $store_id)->first(); $config = [ 'app_id' => $weChatApp->G_app_id, 'secret' => $weChatApp->G_app_secret, 'response_type' => 'array', 'oauth' => [ 'scopes' => ['snsapi_userinfo'], 'callback' => '/web/notify?store_id=' . $store_id . "&name=$name&phone=$phone", ] ]; $app = Factory::officialAccount($config); $response = $app->oauth ->redirect(); return $response; } else { return view('web.auth.bind'); } } public function notify(Request $request) { $store_id = $request->input('store_id'); $phone = $request->input('phone'); $name = $request->input('name'); $weChatApp = AlbumManufacturerModel::where('store_id', $store_id)->first(); $config = [ 'app_id' => $weChatApp->G_app_id, 'secret' => $weChatApp->G_app_secret, 'response_type' => 'array', 'oauth' => [ 'scopes' => ['snsapi_userinfo'], 'callback' => '/web/notify', ] ]; $app = Factory::officialAccount($config); $oauth = $app->oauth; $user = $oauth->user()->toArray(); $check_user = AlbumUserModel::where([['store_id',$store_id],['wechat_union_id',$user['original']['unionid']]])->first(); $agent = AlbumAgentModel::where([['store_id', $store_id],['user_id', $check_user->id]])->first(); $agent->name = $name; $agent->save(); $check_user->g_open_id = $user['id']; $check_user->phone = $phone; $check_user->save(); return view('web.auth.success'); } public function notifyAccount(Request $request) { $store_id = $request->input('store_id'); $config = [ 'app_id' => 'wxbce144ca3da7aa23', 'secret' => '4d97eba675deeea187e1ebc32c1399da', 'response_type' => 'array', ]; $app = Factory::officialAccount($config); if (isset($_GET["echostr"])) { $echoStr = $_GET["echostr"]; //对接规则 $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = 'bshbdajdbjadwedwqer'; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode($tmpArr); $tmpStr = sha1($tmpStr); if ($tmpStr == $signature) { echo $echoStr; } else { echo ""; exit; } } else { $postStr = file_get_contents("php://input"); if (!empty($postStr)) { $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $MsgT = $postObj->MsgType; $time = time(); //如果用户发的text类型 if ($MsgT == "text") { $key = trim($postObj->Content); $fromUsername = $postObj->FromUserName; $textTpl = " %s "; $msgType = "text"; if ($key == '绑定') { $user = $app->user->get($fromUsername); $check_user = AlbumUserModel::where([['store_id',$store_id],['wechat_union_id',$user['unionid']]])->first(); if ($check_user) { $check_user->g_open_id = $user['id']; $res = $check_user->save(); } else { $data['username'] = $user['nickname']; $data['wechat_union_id'] = $user['unionid']; $data['avatar'] = $user['headimgurl']; $data['g_open_id'] = $fromUsername; $data['store_id'] = $store_id; $data['is_dealer'] = 0; $data['role'] = 0; $data['model'] = 0; $data['up_agent_id'] = 0; $res = AlbumUserModel::create($data); } if ($res) { $contentStr = "绑定成功"; } else { $contentStr = "绑定失败"; } } else { $contentStr = "回复 绑定 即可绑定用户"; } $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; exit; } //如果用户发的event(事件)类型 if ($MsgT == "event") { $Event = $postObj->Event; if ($Event == 'subscribe') { $contentStr = "欢迎关注,回复 绑定 即可绑定用户"; } else { $contentStr = "希望您下次关注,但您收不到此条消息了"; } $textTpl = " %s "; $Title = $postObj->Title; $Description = $postObj->Description; $Url = $postObj->Url; $msgType = 'text'; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; exit; } } else { echo ""; exit; } } } public function welcome() { return view('welcome'); } }