1.https : //mp.weixin.qq.com/advanced/advanced 행동 = dev에 & t = 고급는 / dev 및 토큰 = 614565808 & LANG = zh_CN으로
기본 설정 토큰 검증
정의 ( "TOKEN", "fmyinpin123456을" ); $ echoStr = $ _GET [ "echostr" ]; // 유효한 서명, 옵션 의 경우 (WechatCallbackApiTest :: checkSignature ()) { 에코 $ echoStr ; 출구 ; } <? PHP는 / * * 의 FM 만든 *. * 사용자 : 아빈 * 날짜 : 2019년 1월 21일 * 시간 15:00 * / 네임 스페이스 응용 프로그램 \ API를 \ libs와; 클래스 WechatCallbackApiTest { 공공 기능 responseMsg () { //서로 다른 환경 때문일 수 있습니다, 포스트 데이터를 얻을 $ postStr = $ GLOBALS [ "HTTP_RAW_POST_DATA" ]; // 추출 후 데이터 의 경우 (! 빈 ( $ postStr {)) $ postObj = simplexml_load_string ( $ postStr , 'SimpleXMLElement', LIBXML_NOCDATA); $ fromUsername = $ postObj -> FromUserName; $ toUsername = $ postObj -> ToUserName; $ 키워드 = 트림 ( $ postObj를 ->함유량); $ 시간 = 시간 (); $ textTpl = " <XML> <ToUserName> <! [CDATA [% S]]> </ ToUserName> <FromUserName> <! [CDATA [% S]]> </ FromUserName> <CreateTime 더> % S </ CreateTime 더> <! [CDATA [% S]> <을 MsgType> </을 MsgType> <! [CDATA [% S]> <콘텐츠> </ 콘텐츠> <FuncFlag> 0 </ FuncFlag> </ XML> " ; 만약 (! = "텍스트" ; $ contentStr = "세계를 위챗에 오신 것을 환영합니다!" ; $ resultStr = sprintf와 ( $ textTpl , $ fromUsername , $ toUsername , $ 시간 , $ MSGTYPE , $ contentStr ); 에코 $ resultStr ; } 다른 { 에코 "입력 무언가를 ..." ; } } 다른 { 에코 "" ; 종료 ; } } 공용 정적 함수 checkSignature () { $ 서명 = $ _GET [ "서명" ]; $ 소인 = $ _GET [ "타임 스탬프" ]; $ 논스 = $ _GET [ "난스" ]; $ 토큰 = TOKEN; $ tmpArr = 배열 ( $ 토큰 , $ 소인 , $ 넌스 ); 종류 ( $ tmpArr ); $ tmpStr = 내파 ( $ tmpArr); $ tmpStr = SHA1 ( $ tmpStr ); 경우 ( $ tmpStr == $ 서명 ) { 반환 사실 ; } 다른 { 반환 거짓 ; } } }
2.https : //mp.weixin.qq.com/cgi-bin/settingpage = t / 설정 기능 및 행동 함수 및 토큰 = = 614,565,808 및 LANG = zh_CN으로
콜백 설정 페이지 권위있는 이름
3.https : //mp.weixin.qq.com/cgi-bin/frame t = 고급 / dev_tools_frame 및 탐색 = 10049 & 토큰 = 614565808 & LANG = zh_CN으로
공공 플랫폼 테스트 번호는 위의 설정
인터페이스 구성 / 수정
JS 인터페이스 보안 도메인 / 수정
웹 페이지에 사용자에 대한 정보를 얻을 수있는 권한 / 수정
공공 기능 지수 () { $ APPID = $이 -> APPID; $ redirect_uri로 = 를 urlencode ( $이 -> redirect_uri로); $ URL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=". $의 APPID . "& redirect_uri로 =". $의 redirect_uri에 "& RESPONSE_TYPE = 코드 및 범위 = snsapi_userinfo 및 상태 STATE = # 1 wechat_redirect." ; 헤더 (. "위치 :" $ URL ); 출구 ; } 공공 기능 http_curl ( $ URL이 ,RES $ = 'JSON', $ ARR = '' ) { // 1. 초기화 곱슬 $의 CH = curl_init (); // 2. 컬의 파라미터를 설정 curl_setopt ( $의 CH 에 CURLOPT_URL, $의 URL ) curl_setopt을 ( $ CH , CURLOPT_SSL_VERIFYPEER는 거짓에 ); // 인증서 확인하지 curl_setopt ( $ CH , CURLOPT_SSL_VERIFYHOST, false로를 ); //이 인증서 확인하지 (curl_setopt을 $의 CH , CURLOPT_RETURNTRANSFER ,. 1 ) IF ( $ 유형을 == 'POST'를) { curl_setopt ( $의 CH , CURLOPT_POST, 1 ); curl_setopt ( $ ch를 , CURLOPT_POSTFIELDS, $의 편곡 ); } // 3采集의 $ 출력 = curl_exec ( $의 CH ); // 4.关闭 curl_close ( $ ch를 ); 경우 ( $ 입술 == 'JSON' ) { 복귀 json_decode ( $ 출력 , 참 ); } } // 공공 기능 getUserOpentId () { //콜백 주소가 우리가 오픈 ID 및 권한 부여가 코드에 따라 access_token은 인수 가서, 코드를 반환 $ 코드 = $ _GET [ '코드' ]; $ AppID에 = $은이 -> 의 AppID; $ 비밀 = $은이 -> appsecret; URL의 $ = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=." $ AppID가 . "= 비밀." $ 비밀 . "& 코드 =." $ 코드 . "& grant_type = authorization_code" ; $ RES = $은이 -> http_curl ( $의 URL ); $ access_token과 = $ RES [ 'access_token과']; $ getopenid = $ 입술 [ '오픈 아이디' ]; // 获取用户授权信息 $ urltoc = "https://api.weixin.qq.com/sns/userinfo?access_token=". $ access_token이 . "& 오픈 ID =". $의 getopenid "& LANG = zh_CN으로." ; $ resinfos = $이 -> http_curl ( $의 urltoc ); 인 print_r ( $ 고해상도 ); 인 print_r ( $ resinfos ); 다이 ; $ 오픈 ID = $ resinfos [ '오픈 아이디' ]; $의 check_member = DB :: 이름 ( "회원") ->오픈 ID $ ) -> 찾기 (); IF ( 빈 ( $의 check_member가 )) { //이 처음 입력 한 사용자 정보가 데이터베이스로, 획득 $ resInfo [ '오픈 ID'] = $ 오픈 ID ; $ insert_data = [ '오픈 ID'=> 오픈 ID $ , '이 CREATE_TIME'=> 시간 () ] DB :: 이름 ( "회원") -> INSERT ( $의 insert_data ); $ 사용자 ID = DB :: 이름 ( '회원') -> getLastInsID (); 세션 : : 설정 ( 'wx_member_info'$의 resinfo); $는이 -> 리디렉션은 ( '홈 / 색인 /를 index_html은' ); } 다른 { // 참고 이미 대중 번호의 구성원 인 사용자로 세션에 저장된 정보를 호출 wx_member_info $ = :: DB 이름 ( '회원' ) -> WHERE ( "오픈 ID", $ 오픈 ID ) -> () 찾기, 세션 : SET ( 'wx_member_info', $의 wx_member_info ); $를이 -> 리디렉션 ( '홈 / 색인 /를 index_html' ); } }