위 챗 퍼 블 릭 플랫폼 개발 강좌 ⑥ 위 챗 개발 통합 류 의 사용 도문 상세 설명

본 고의 실례 는 위 챗 공중 플랫폼 개발 의 위 챗 개발 집적 류 의 사용 을 다 루 었 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
배경
  요 며칠 동안 위 챗 PHP 분야 의 개발 을 접 했 습 니 다.전에 쓴 글 이 좀 복잡 하 다 고 생각 했 습 니 다.마침 좋 은 집적 류(원본 코드 를 보면'운 지 몽 군 형'에서 나 왔 습 니 다.광 고 는 아니 고 다른 사람의 개발 성 과 를 존중 합 니 다.감사합니다.)에는 매우 전면적 인 함수 가 포함 되 어 있 습 니 다.여기 서 제 실제 사용 과정 에 대해 간단하게 설명해 드 리 겠 습 니 다.
  프레임 워 크:ThinkPHP 3.2.3
초기 준비:
①.위 챗 공식 플랫폼 의 설정
여 기 는 군더더기 없 이 구체 적 으로 제 가 앞에서 쓴 1,2 장 을 참고 하 셔 도 됩 니 다.개인 적 으로 는 비교적 전면적 이 라 고 생각 합 니 다.
②.파일 Weixin.class.php 를 대응 하 는 library 디 렉 터 리 에 두 기
그러나 본 사람 이 개발 한 것 은 ThinkpHP 프레임 워 크 를 바탕 으로 하 는 것 입 니 다.만약 에 다른 방식 을 사용 하면 인용 경 로 를 바 꾸 는 것 이 쉬 울 것 이 라 고 믿 습 니 다.캡 처 를 참고 하면 다음 과 같 습 니 다.

③.대응 하 는 데이터베이스 에 새 테이블 이 필요 합 니 다.
물론 후기 최 적 화 는 제거 하거나 자체 적 으로 디자인 하 는 것 을 고려 할 수 있다.여기 서 개인 적 으로 합 리 적 이 고 자신 이 테스트 하 는 것 도 편리 하 다(공중 번호 온라인 인터페이스 디 버 깅 도구)

④.이 표 는 위 챗 인증 시 공중 번호 정보 와 token 획득 시간 을 자동 으로 저장 하 는 데 사 용 됩 니 다.
이 표를 조작 하 는 코드 는 Weixin.class 의 getaccesstoken()방법 에 있 습 니 다.
ThinkpHP 프레임 워 크 가 아니라면 이 방법 에 있 는 sql 문 구 를 교체 하여 일부 코드 를 참고 할 수 있 습 니 다.

개발 자 모드 설정
①.설정 캡 처 참조

②.해당 디 렉 터 리 와 영패 가 일치 하 는 지 주의 하 십시오.

/**
 *          
 * Class WeixinController
 * @package M\Controller
 */
class WeixinController extends Controller
{
 public function index()
 {
 import('Org.Wechat.Weixin');
 //     token、AppID、AppSecert
 $wechat = new \Weixin('zxxxi', 'wxxxxxxxxx89', 'efxxxxxxxxxxxxxxxxxxxxxxxb7');
 if (!isset($_GET['echostr'])) {
  //TODO              
  $wechat->responseMsg();
 } else {
  //      ,        
  $wechat->valid();
 }
 }
}
③.필요 한 파일 업로드
    위 챗 공식 플랫폼 은 최근 에 해당 도 메 인 이름 의 루트 디 렉 터 리 에 파일 을 업로드 해 야 한 다 는 규정 을 발 견 했 고 구체 적 으로 공중 번호 에서 다운로드 할 수 있 습 니 다.
 
2.로그 인 권한 부여 요청,위 챗 사용자 정보 획득
①.코드 참조
    다음은 본인 이 발췌 하고 간소화 한 일부 코드 입 니 다.구체 적 인 업무 논 리 는 스스로 보충 하거나 삭제 해 야 합 니 다.

import('Org.Wechat.Weixin');
//     token、AppID、AppSecert
$wechat=new \Weixin('zxxxxi','wxxxxxxxxxxxxx9','efxxxxxxxxxxxxxxxxxxxxxxxxxxxx7');
//             
$url = "http://www.xxxxx.com".$_SERVER['REQUEST_URI'];
//TODO    memcache    ,     (          )
if(!S(session('XXXNAME').'_NAMEID')){
 if(!$_GET['code']){
 $redirect_uri = $url;
 $urls=$wechat->getOauthRedirect($redirect_uri);
 header("Location:".$urls);
 die;
 }
}
$reT=$wechat->getOauthAccessToken();
//TODO      token 
if($reT){
 $openid = $reT['openid'];
 $user_info = $wechat->getOauthUserinfo($reT['access_token'],$openid);
 //         
 $userData = M('users')
 ->where("openid = '$openid'")
 ->Field('user_id,user_name,abnormal')
 ->find();
 if ($userData['user_id']) {
 //           
 header("Location:???????");
 }else{
 //                    
 $maxuid = M('users')->max('user_id');
 $user['openid'] = $openid;
 $user['nickname'] = $user_info['nickname'];
 $user['sex'] = $user_info['sex'];
 $user['reg_time'] = time();
 $user['user_img'] = $user_info['headimgurl'];
 //TODO         
 $addTag = add('users',$user);
 }
}else{
//    ,     ...
}
②.모 바 일 위 챗 에서 해당 링크 에 로그 인 한 결과
 
③.보충 설명

$user_info = $wechat->getOauthUserinfo($reT['access_token'],$openid);
   여기 서 돌아 온$userinfo 권한 을 수 여 받 은 사용자 의 상세 한 정 보 를 추적 할 수 있 는 방법 으로 소스 코드 를 볼 수 있 습 니 다. OAUTH_USERINFO_URL 의 정의 개발 자 문 서 는 그 의 미 를 소개 합 니 다.앞의 두 글 에서 도 간단하게 소 개 했 습 니 다.
3.위 챗 엔 드 공유 기능
①.위 챗 공유 데이터 설정
다음 방법 은 개인 디자인 이 대상 을 대상 으로 할 때 계승 하 는 Controller 구조 함수 에서 호출 을 초기 화 합 니 다.여러분 은 자신의 수요 에 따라 배치 할 수 있 습 니 다.

/**
 *         
 */
public function getWxShare(){
 import('Org.Wechat.Weixin');
 $wechat=new \Weixin('zxxxxi','wxxxxxxxxxxxx9','efxxxxxxxxxxxxxxxxxxb7');
 $url = "http://www.xxxxxmi.com".$_SERVER['REQUEST_URI'];
 $res = $wechat->getJsSign($url);
 $res['wxurl'] = $url;
 $this->assign('wx',$res);
}
②.프론트 페이지 설정 정보
대부분 html 프론트 파일 입 니 다.다음 과 같은 js 코드 를 보충 하고 구체 적 인 데 이 터 는 스스로 수정 할 수 있 습 니 다.

<script src="http://res.wx.qq.com/open/js/jweixin-1.1.0.js" type="text/javascript"></script>

<script>
 /**
 * Created by      on 2017/4/27.
 */
 //  config          
 wx.config({
 debug : false,
 appId : "{$wx.appid}",
 timestamp : "{$wx.timestamp}",
 nonceStr : "{$wx.noncestr}",
 url : "{$wx.url}",
 signature : "{$wx.signature}",
 jsApiList : ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo']
 });
 wx.ready(function(){
 //   
 wx.onMenuShareTimeline({
  title : "    :               ", //     
  link : "{$wx.wxurl}", //     
  desc : "    ,    。    ,        ,   ,     !", //    
  imgUrl : "http://img.52zhenmi.com/Public/upload/20170426/149321008494428.jpg", //     
 });
 //     
 wx.onMenuShareAppMessage({
  title : "    :               ", //     
  link : "{$wx.wxurl}", //     
  desc : "    ,    。    ,        ,   ,     !", //    
  imgUrl : "http://img.52zhenmi.com/Public/upload/20170426/149321008494428.jpg", //     
 });
 //QQ  
 wx.onMenuShareQQ({
  title : "    :               ", //     
  link : "{$wx.wxurl}", //     
  desc : "    ,    。    ,        ,   ,     !", //    
  imgUrl : "http://img.52zhenmi.com/Public/upload/20170426/149321008494428.jpg", //     
 });
 //    
 wx.onMenuShareWeibo({
  title : "    :               ", //     
  link : "{$wx.wxurl}", //     
  desc : "    ,    。    ,        ,   ,     !", //    
  imgUrl : "http://img.52zhenmi.com/Public/upload/20170426/149321008494428.jpg", //     
 });
 });
</script>
③.최종 실현 효 과 는 다음 과 같다.

추가 알림:
(1).우선 개발 배치 정보의 정확성 을 확보 해 야 한다.
(2).가끔 token 영패 가 효력 을 잃 는 경우 가 있 습 니 다.로 컬 테스트 를 할 때 온라인 에 영향 을 줄 수 있 습 니 다.새로운 영패 를 가 져 와 온라인 데이터 베 이 스 를 대응 하지 않 게 하 는 것 이 좋 습 니 다.주의 하 세 요.
(3).페이지 를 공유 하 는 작업 은 실패 할 수 있 는 상황 을 편리 하 게 처리 하기 위해 디 버 깅 모드 로 wx.config 의 debug 값 을 true 로 변경 하고 정확 한 오류 가 없 으 면 다시 고 칠 수 있 습 니 다.구체 적 인 오류 보고 정 보 를 조회 하려 면 위 챗 개발 자 문 서 를 조회 해 야 한다.프로그램 원숭이 의 길 을 가 려 는 모든 사람들 이 구 덩이 를 메 우 는 것 에 강제로 습관 이 될 것 이 라 고 믿는다.

debug : true,
4.공중 번호 로 메 시 지 를 보 냅 니 다.
간단 한 메 시 지 를 보 내 는 데 사용 할 수 있 습 니 다.예 를 들 어 사용자 가 쇼핑 을 한 후에 공중 번호 관리자 에 대한 메시지 알림 등 입 니 다.
① 전제 조건
메 시 지 를 보 낼 사용 자 는 현재 대중 번호 에 관심 을 가지 고 있 습 니 다.
②.코드 예시

/**
 *                      
 */
public function postMsg(){
 import('Org.Wechat.Weixin');
 $wechat=new \Weixin('zxxxxi','wxxxxxxxxxx9','efxxxxxxxxxxxxxxxxxxxxxxxxxb7');
 $content = "       :
"; $content .= " , , 。
, 。"; $content .= " , , 。"; //TODO -openID $wxOpenID = "oIaCOxxxxxxxxxxxxxxxxxxxxFe0"; $wechat->postMaggerToUser($wxOpenID,$content); }
③ 효과 실현

5.공중전화 자동 응답
기능 은 주로 사용자 가 공중 번 호 를 조작 할 때의 트리거 이벤트 처리 에 사용 된다.예 를 들 어 관심 있 는 메시지 발송,버튼 클릭 의 감청 등 이다.
① 주요 설정
사실은 위의 첫 번 째 절 에서 개발 자 모드 에 대한 설정 에서 비롯 되 었 습 니 다.예 를 들 어 코드 에서 WeixinController 의 index()는 10 줄 도 안 되 는 코드 가 중요 합 니 다.
②.응답 메 시 지 를 감청 하 는 함수
응답 메 시 지 를 감청 하 는 함 수 는 Weixin.class 의 responseMsg()입 니 다.자세 한 데이터 처 리 는 트리거 이벤트 경로 에 따라 코드 를 수정 할 수 있 습 니 다.
    
③.예 를 들 어 공중전화 에 관심 을 가 진 메시지 발송

④.예 를 들 면:
사용자 의 입력 에 따라 메시지 의 자동 답장 을 진행 합 니 다.코드 실제 개발 에서 얻 은 문자 에 따라 프로젝트 데이터베이스 에 있 는 문자 와 일치 하 는 것 을 간단하게 보 여 줍 니 다.

⑤.효과 캡 처
   
부록
통합 적 인 위 챗 류 코드 가 많 기 때문에 여기에 붙 이지 않 으 면 아래 링크 에서 다운로드 하여 참고 할 수 있 습 니 다.    
①.전기 문장 참고
사용자 Openid 및 개인 정보 가 져 오기
위 챗 단 공유 기능
②.소스 코드
소스 코드 다운로드>>
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기