PHP 기반 위 챗 공식 번호 개발 절차 상세 설명

위 챗 공식 번호 개발 은 바보 모델 과 개발 자 모델 두 가지 로 나 뉘 는데 전 자 는 특정한 인 터 페 이 스 를 호출 하 는 것 을 고려 하지 않 고 배경 에 따라 바보 식 조작 을 제시 하면 비 전문 개발 자 에 게 적용 된다.
개발 모델 은 당연히 프로그램 개발 을 아 는 사람 이 사용 하 는 것 이다.
다음은 위 챗 공중 호 개발 의 간단 한 절 차 를 간단히 말씀 드 리 겠 습 니 다.초보 자 들 이 보면 도움 이 될 것 입 니 다.고 수 는 웃 으 며 지나 가세 요.
1.서버 설정:
A.먼저 이 컴퓨터 에 다음 과 같은 구조의 폴 더 를 만 듭 니 다.(여 기 는 제 습관 입 니 다.참고 하 시기 바 랍 니 다)

MMPN:총 디 렉 터 리 mro message public number 위 챗 공중 번호
backup:백업 디 렉 터 리 는 주로 phop 파일 을 백업 하 는 데 사 용 됩 니 다.수정 할 때마다 원 고 를 백업 합 니 다.
이미지:그림 저장
includes:my sql 설정,smarty 템 플 릿 포함 파일 등 을 포함 합 니 다.
menu:공중 번호 메뉴 정 보 를 저장 하고 txt 문 서 를 저장 하면 됩 니 다.
gr****zx.php:개발 파일,즉 공중 번호 와 연 결 된 프로그램 파일,즉 설 정 된 url 에 대응 하 는 파일
마지막 으로 필요 한 파일 입 니 다.
주 프로그램 파일:gr***zx.php

<?php

 define("TOKEN", "aabbc_lzpt");

 //        
 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
 //      
 if (!empty($postStr))
 {
  //    
  $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  //     ID
  $fromUsername = $postObj->FromUserName;
  //     ID
  $toUsername = $postObj->ToUserName;
  //    
  $form_MsgType = $postObj->MsgType;

  //    
  if($form_MsgType=="event")
  {
   //      
   $form_Event = $postObj->Event;
   //    
   if($form_Event=="subscribe")
   {

    //        
    /*
    $resultStr = "<xml>
        <ToUserName><![CDATA[".$fromUsername."]]></ToUserName>
        <FromUserName><![CDATA[".$toUsername."]]></FromUserName>
        <CreateTime>".time()."</CreateTime>
        <MsgType><![CDATA[news]]></MsgType>
        <ArticleCount>2</ArticleCount>
        <Articles>
         <item>
          <Title><![CDATA[     ***      ,****]]></Title>
          <Description><![CDATA[        ]]></Description>
          <PicUrl><![CDATA[http://a.hiphotos.baidu.com/baike/c0%3Dbaike116%2C5%2C5%2C116%2C38/sign=5cae7405f21f3a294ec5dd9cf84cd754/32fa828ba61ea8d32de5a1df950a304e241f5822.jpg]]></PicUrl>
          <Url><![CDATA[http://www.baidu.com]]></Url> </item>
         <item>
          <Title><![CDATA[    ]]></Title>
          <Description><![CDATA[]]></Description>
          <PicUrl><![CDATA[http://a.hiphotos.baidu.com/baike/c0%3Dbaike116%2C5%2C5%2C116%2C38/sign=5cae7405f21f3a294ec5dd9cf84cd754/32fa828ba61ea8d32de5a1df950a304e241f5822.jpg]]></PicUrl>
          <Url><![CDATA[http://www.baidu.com]]></Url> </item>

        </Articles>
        </xml> ";
    */
    //        

    $reply="  ,    ******      ";
    $resultStr="<xml>
        <ToUserName><![CDATA[".$fromUsername."]]></ToUserName>
        <FromUserName><![CDATA[".$toUsername."]]></FromUserName>
        <CreateTime>".time()."</CreateTime>
        <MsgType><![CDATA[text]]></MsgType>
        <Content><![CDATA[".$reply."]]></Content>
       </xml>";
   }
   else if($form_Event=="CLICK")
   {
    $form_Event_Key = $postObj->EventKey;
    if($form_Event_Key=="V3002_CONTACT")
    {
     /*
      $resultStr = "<xml>
        <ToUserName><![CDATA[".$fromUsername."]]></ToUserName>
        <FromUserName><![CDATA[".$toUsername."]]></FromUserName>
        <CreateTime>".time()."</CreateTime>
        <MsgType><![CDATA[news]]></MsgType>
        <ArticleCount>1</ArticleCount>
        <Articles>
         <item>
          <Title><![CDATA[        ]]></Title>
          <Description><![CDATA[            !]]></Description>
          <PicUrl><![CDATA[http://a.hiphotos.baidu.com/baike/c0%3Dbaike116%2C5%2C5%2C116%2C38/sign=5cae7405f21f3a294ec5dd9cf84cd754/32fa828ba61ea8d32de5a1df950a304e241f5822.jpg]]></PicUrl>
          <Url><![CDATA[http://www.baidu.com]]></Url>
         </item>
        </Articles>
        </xml> ";
     */
     $reply="     :    222 
:0510-88888888"; $resultStr="<xml> <ToUserName><![CDATA[".$fromUsername."]]></ToUserName> <FromUserName><![CDATA[".$toUsername."]]></FromUserName> <CreateTime>".time()."</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[".$reply."]]></Content> </xml>"; } } } else if($form_MsgType=="location"){ $lng1=$postObj->Location_X; $lat1=$postObj->Location_Y; $from_Location_Label=$postObj->Label; $reply=" :"; $reply.=" ".$lat1."\t ".$lng1." ".$from_Location_Label; $resultStr = "<xml> <ToUserName><![CDATA[".$fromUsername."]]></ToUserName> <FromUserName><![CDATA[".$toUsername."]]></FromUserName> <CreateTime>".time()."</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[".$reply."]]></Content> </xml> "; } echo $resultStr; exit; } else { echo ""; exit; } ?>
임시 파일:wxsample.php

<?php
/**
 * wechat php test
 */

//define your token
define("TOKEN", "aabbc_lzpt");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

class wechatCallbackapiTest
{
 public function valid()
 {
  $echoStr = $_GET["echostr"];

  //valid signature , option
  if($this->checkSignature()){
   echo $echoStr;
   exit;
  }
 }

 public function responseMsg()
 {
  //get post data, May be due to the different environments
  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

   //extract post data
  if (!empty($postStr)){
    
     $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
    $fromUsername = $postObj->FromUserName;
    $toUsername = $postObj->ToUserName;
    $keyword = trim($postObj->Content);
    $time = time();
    $textTpl = "<xml>
       <ToUserName><![CDATA[%s]]></ToUserName>
       <FromUserName><![CDATA[%s]]></FromUserName>
       <CreateTime>%s</CreateTime>
       <MsgType><![CDATA[%s]]></MsgType>
       <Content><![CDATA[%s]]></Content>
       <FuncFlag>0</FuncFlag>
       </xml>";    
    if(!empty( $keyword ))
    {
      $msgType = "text";
     $contentStr = "Welcome to wechat world!";
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
     echo $resultStr;
    }else{
     echo "Input something...";
    }

  }else {
   echo "";
   exit;
  }
 }
  
 private function checkSignature()
 {
  $signature = $_GET["signature"];
  $timestamp = $_GET["timestamp"];
  $nonce = $_GET["nonce"]; 
    
  $token = TOKEN;
  $tmpArr = array($token, $timestamp, $nonce);
  sort($tmpArr, SORT_STRING);
  $tmpStr = implode( $tmpArr );
  $tmpStr = sha1( $tmpStr );
  
  if( $tmpStr == $signature ){
   return true;
  }else{
   return false;
  }
 }
}

?>
두 파일 의 시작 부분 에 코드 가 있 습 니 다:define("TOKEN","aabbc"lzpt"); 이것 은 token 을 정의 하 는 것 입 니 다.뒤의 값 은 스스로 설정 하지만 위 챗 배경 에 서버 를 설정 하 는 데 사용 해 야 한 다 는 것 을 기억 해 야 합 니 다.
B.지금부터 작업 을 시작 합 니 다.우선 gr***zx.php 파일 의 내용(코드)을 임시 파일 의 내용(코드)으로 대체 하여 저장 합 니 다.MMPN 항목 을 서버 에 전송 할 때 주 프로그램 파일 url 은"http://www.****.com/MMPN/fy_hzx/grape_fy_hzx.php'와 같은 형식 으로 경로 가 정확 한 지 확인 하고 위 챗 공중 번호 백 엔 드 개발 자 센터 를 열 고 아래 그림 에서'설정 수정'을 누 르 면 방금 url 을 해당 컨트롤 에 입력 합 니 다.


token 은 방금 기억 해 야 할 token 의 값 입 니 다.일치 해 야 합 니 다.세 번 째'메시지 암호 화 키'는 무 작위 로 생 성 된 다음 제출 할 수 있 습 니 다.
token 이 정확 하고 url 이 정확 하 며 파일 코드 가 틀 리 지 않 으 면 성공 을 알 리 고 다시 누 르 십시오.
C.방금 메 인 프로그램 파일 의 코드 는 임시 적 인 것 입 니 다.다만 등록 인증 token 을 개통 하기 위해 서 입 니 다.성공 한 후에 다시 지우 고 원래 의 내용 으로 복원 할 수 있 습 니 다.(저장 해서 서버 에 업로드)
이렇게 하면 서버 설정 작업 이 끝 납 니 다.
2.메 인 프로그램 파일 의 코드 소개
  $form_MsgType = $postObj->MsgType;
  $form_MsgType 메시지 유형 은'이벤트','위치'(팬 전송 위치),'문자 유형','이미지 유형'등 으로 나 뉘 며 배경 인터페이스 문 서 를 구체 적 으로 볼 수 있 습 니 다.
  $form_Event = $postObj->Event;
  $form_이벤트 이벤트 유형 은'구독'(subscribe),'구독 취소'(unsubscribe),'클릭'(CLICK)―메뉴 를 클릭 하지만 클릭 형식의 메뉴 만 을 대상 으로 하고 url 형식의 메뉴 라면 해당 하 는 url 을 직접 열 어 코드 에서 처리 할 필요 가 없다.
팬 들 에 게 답장 하 는 콘 텐 츠 형식 은 보통 문자 나 그림 두 가지 로 코드 에 모두 있다.
3.메뉴 설정
메뉴 설정 은 개발 자 ID 에 있 는 AppID(이것 은 직접 볼 수 있 습 니 다)와 AppSecret(이것 은 숨겨 져 있 을 수 있 습 니 다.공중전화 관리자 인증 을 통 해 신청 을 통 해 확인 해 야 완전 함 을 표시 할 수 있 습 니 다.완전 함 을 표시 한 후에 기록 을 제때에 저장 해 야 다음 에 관리 자 를 찾 지 않 아 도 됩 니 다)를 알 아야 합 니 다.
메뉴 를 설정 하기 전에 access 를 받 아야 합 니 다.token,유효기간 은 2 시간 입 니 다.그림 클릭 하여 access 획득token

그리고 오른쪽 아래 에서'웹 디 버 깅 도구 로 이 인 터 페 이 스 를 디 버 깅 합 니 다'를 누 르 십시오.

appid 와 secret 를 입력 하고"문제 검사"를 누 르 면 제출 합 니 다.

복사 해서 얻 은 accesstoken

사용자 정의 메뉴 다시 선택:

방금 획득 한 accesstoken 복사
인터페이스 목록 이 검색 메뉴 를 선택 했다 면 제출 한 결 과 는 존재 하지 않 습 니 다.맞 습 니 다.아직 메뉴 를 만 들 지 않 았 기 때 문 입 니 다.

그러면 다음 json 형식 코드 를 body 에 복사 하여 제출 합 니 다.

{
  "button": [
   {
    "name": "  ", 
    "sub_button": [
     {
      "type": "view", 
      "name": "    ", 
      "url": "http://www.baidu.com", 
      "sub_button": [ ]
     }, 
     {
      "type": "click", 
      "name": "    ", 
      "key": "V1001_QUERY", 
      "sub_button": [ ]
     }, 
     {
      "type": "view", 
      "name": "    ", 
      "url": "http://www.baidu.com", 
      "sub_button": [ ]
     }
     
    ]
   }, 
   {
    "name": "  ", 
    "sub_button": [
     {
      "type": "view", 
      "name": "    ", 
      "url": "http://www.baidu.com", 
      "sub_button": [ ]
     }, 
     {
      "type": "click", 
      "name": "    ", 
      "key": "V1001_QUERY", 
      "sub_button": [ ]
     }, 
     {
      "type": "view", 
      "name": "    ", 
      "url": "http://www.baidu.com", 
      "sub_button": [ ]
     }
     
    ]
   }, 
   {
    "name": "    ", 
    "sub_button": [
     {
      "type": "view", 
      "name": "    ", 
      "url": "http://www.baidu.com", 
      "sub_button": [ ]
     }, 
     {
      "type": "click", 
      "name": "    ", 
      "key": "V1001_QUERY", 
      "sub_button": [ ]
     }, 
     {
      "type": "view", 
      "name": "    ", 
      "url": "http://www.baidu.com", 
      "sub_button": [ ]
     }
    ]
   }
  ]
 }

제출,알림 성공 메뉴 생 성.
메뉴 내용 중 두 가지 유형(type)이 있 습 니 다.하 나 는 view 입 니 다.이것 은 해당 url 링크 를 직접 엽 니 다.하 나 는 click 입 니 다.이것 은 방금 주 프로그램 파일 에서 key 값 실행 과 관련 된 코드 를 찾 습 니 다.
격식 을 틀 리 지 않 으 면 된다.
메뉴 를 수정 하려 면 먼저 삭제 하고 만 듭 니 다.일반적으로 메뉴 가 바 뀌 면 공중 번 호 는 다시 관심 을 가 져 야 바로 변경 효 과 를 볼 수 있 으 며,그렇지 않 으 면 24 시간 자동 으로 업데이트 된다.
PHP 기반 의 위 챗 공중 호 개발 절차 에 대한 상세 한 설명 은 여기까지 입 니 다.더 많은 관련 PHP 위 챗 공중 호 개발 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기