>위챗 애플릿 >위챗 개발 >Chuanzhi 및 Dark Horse의 WeChat 공개 플랫폼 개발을 위한 권장 비디오 튜토리얼 리소스

Chuanzhi 및 Dark Horse의 WeChat 공개 플랫폼 개발을 위한 권장 비디오 튜토리얼 리소스

黄舟
黄舟원래의
2017-08-31 11:52:333539검색

WeChat 공개 플랫폼은 개인, 기업, 조직에 비즈니스 서비스와 사용자 관리 기능을 제공하는 새로운 서비스 플랫폼입니다. WeChat 공개 플랫폼에는 주로 실시간 커뮤니케이션, 메시지 전송 및 자료 관리가 포함됩니다. 사용자는 공개 계정의 팬을 그룹화 및 관리하고 실시간으로 소통할 수 있으며 편집 모드, 개발 모드 등의 고급 기능을 사용하여 사용자 정보에 자동으로 응답할 수 있습니다. "Chuangzhi 및 Dark Horse WeChat 공개 플랫폼 개발 비디오 튜토리얼"은 Chuanzhi 팟캐스트와 Dark Horse 프로그래머가 공동 제작한 WeChat 공개 플랫폼 개발 비디오 튜토리얼입니다.

Chuanzhi 및 Dark Horse의 WeChat 공개 플랫폼 개발을 위한 권장 비디오 튜토리얼 리소스

강좌 재생 주소: http://www.php.cn/course/320.html

선생님의 강의 스타일:

강의는 친절하고 자연스러우며 가식 없고 가식적이지 않습니다. 고의적으로 과장하지 않고 설득력 있고 자세하게 이야기하면서 교사와 학생은 평등, 협력, 조화의 분위기에서 침묵의 감정 교환을 하며 지식에 대한 갈증과 탐구를 단순성과 진정성으로 통합합니다. 가르치는 상황에서 학생들은 지식을 얻습니다. 조용한 생각과 조용한 승인을 통해

이 영상에서 더 어려운 점은 WeChat API 인터페이스 분석입니다:

WeChat 입구 바인딩, WeChat 이벤트 처리 및 이 파일에 포함된 모든 WeChat API 작업.
WeChat 결제, WeChat 빨간 봉투, WeChat 카드 및 쿠폰, WeChat 스토어.

1.index.php

<?php
include_once &#39;lib.inc.php&#39;;
  
$wcObj = new WeChat("YOUKUIYUAN");
$wcObj->wcValid();

2. 위챗 입학반

<?php
/**
 * Description of wechat
 *
 * @author Administrator
 */
class WeChat extends WxApi{
  public $token = "";
  //put your code here
  public function __construct($token = "") {
    parent::__construct();
    $this->token = $token;
  }
  
  public function wcCheckSignature(){
    try{
      if (empty($this->token)) {
        throw new Exception(&#39;TOKEN is not defined!&#39;);
      }
        
      $signature = $_GET["signature"];
      $timestamp = $_GET["timestamp"];
      $nonce = $_GET["nonce"];
          
      $token = $this->token;
      $tmpArr = array($token, $timestamp, $nonce);
      // use SORT_STRING rule
      sort($tmpArr, SORT_STRING);
      $tmpStr = implode( $tmpArr );
      $tmpStr = sha1( $tmpStr );
  
      if( $tmpStr == $signature ){
          return true;
      }else{
          return false;
      }
    } 
    catch (Exception $e) {
      echo &#39;Message: &#39; .$e->getMessage();
    }
  }
    
  public function wcValid(){
    $echoStr = isset($_GET["echostr"]) && !empty($_GET["echostr"]) ? addslashes($_GET["echostr"]) : NULL;
    if(is_null($echoStr)){
      $this->wcMsg();
    }
    else{
      //valid signature , option
      if($this->wcCheckSignature()){
        echo $echoStr;
        exit;
      }
      else{
        exit();
      }
    }
  }
    
  public function wcMsg(){
    //get post data, May be due to the different environments
    $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) && !empty($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : "";
    if(!empty($postStr)){
      libxml_disable_entity_loader(true);
      $postObj = simplexml_load_string($postStr, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA);
      $this->zcLog(TRUE,$postObj);
        
      $fromUsername = $postObj->FromUserName;
      $toUsername = $postObj->ToUserName;
      $MsgType = $postObj->MsgType;
        
      if($MsgType == &#39;event&#39;){//执行事件相应
        $Event = $postObj->Event;
        switch ($Event) {
          case &#39;subscribe&#39;://关注
            break;
          case &#39;unsubscribe&#39;://取消关注
            break;
          case &#39;SCAN&#39;://扫描
            break;
          case &#39;LOCATION&#39;://地址
            break;
          case &#39;CLICK&#39;://点击时间
            break;
          case &#39;VIEW&#39;://跳转
            break;
          case &#39;card_pass_check&#39;://卡券审核通过
            break;
          case &#39;card_not_pass_check&#39;://卡券审核失败
            break;
          case &#39;user_get_card&#39;://用户领取卡券
            break;
          case &#39;user_del_card&#39;://用户删除卡券
            break;
          case &#39;user_view_card&#39;://用户浏览会员卡
            break;
          case &#39;user_consume_card&#39;://用户核销卡券
            break;
          case &#39;merchant_order&#39;://微小店用户下单付款
            break;
          default:
            break;
        }
      }
      else{
        switch ($MsgType) {
          case &#39;text&#39;://文本格式
            break;
          case &#39;image&#39;://图片格式
            break;
          case &#39;voice&#39;://声音
            break;
          case &#39;video&#39;://视频
            break;
          case &#39;shortvideo&#39;://小视频
            break;
          case &#39;location&#39;://上传地理位置
            break;
          case &#39;link&#39;://链接相应
            break;
          default:
            break;
        }        
      }
        
      ////////////////////////////////////////////////////////////////////
      $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;
    }
  }
    
  //日志LOG
  public function zcLog($errcode , $errmsg){
    $this->returnAy = array();
    $this->returnAy[&#39;errcode&#39;] = $errcode;
    $this->returnAy[&#39;errmsg&#39;] = $errmsg;
    $this->returnAy[&#39;errtime&#39;] = date("Y-m-d H:i:s",time());
    $logfile = fopen("logfile_".date("Ymd",time()).".txt", "a+");
    $txt = json_encode($this->returnAy)."\n";
    fwrite($logfile, $txt);
    fclose($logfile);
    //return $this->returnAy;
  }
    
}

위 내용은 Chuanzhi 및 Dark Horse의 WeChat 공개 플랫폼 개발을 위한 권장 비디오 튜토리얼 리소스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.