Maison  >  Article  >  Applet WeChat  >  Ressources de didacticiels vidéo recommandées pour le développement de la plateforme publique WeChat par Chuanzhi et Dark Horse

Ressources de didacticiels vidéo recommandées pour le développement de la plateforme publique WeChat par Chuanzhi et Dark Horse

黄舟
黄舟original
2017-08-31 11:52:333515parcourir

La plateforme publique WeChat est une nouvelle plateforme de services qui fournit des services commerciaux et des capacités de gestion des utilisateurs aux particuliers, aux entreprises et aux organisations. La plateforme publique WeChat comprend principalement la communication en temps réel, l'envoi de messages et la gestion du matériel. Les utilisateurs peuvent regrouper et gérer les fans des comptes publics et communiquer en temps réel. Ils peuvent également utiliser des fonctions avancées - mode édition et mode développement pour répondre automatiquement aux informations des utilisateurs. "Tutoriel vidéo de développement de plate-forme publique WeChat Chuangzhi et Dark Horse" est un didacticiel vidéo de développement de plate-forme publique WeChat produit conjointement par Chuanzhi Podcast et Dark Horse Programmers.

Ressources de didacticiels vidéo recommandées pour le développement de la plateforme publique WeChat par Chuanzhi et Dark Horse

Adresse de lecture du cours : http://www.php.cn/course/320.html

Le style d'enseignement du professeur :

Les cours sont conviviaux et naturels, sans prétention, ni prétentieux ni délibérément exagérés, mais parlent avec éloquence et prudence, entre enseignants et étudiants Dans une atmosphère d'égalité, la collaboration et l'harmonie, des échanges émotionnels silencieux sont réalisés, et le désir et l'exploration des connaissances sont intégrés dans des situations d'enseignement simples et réelles. Les étudiants acquièrent des connaissances grâce à une réflexion calme et une approbation silencieuse

Le point le plus difficile. dans cette vidéo se trouve l'analyse de l'interface de l'API WeChat :

La liaison du portail WeChat, le traitement des événements WeChat et toutes les opérations de l'API WeChat sont inclus dans ces fichiers.
Paiement WeChat, enveloppe rouge WeChat, carte et coupon WeChat, boutique WeChat.

1. index.php

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

2. Cours d'entrée WeChat

<?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;
  }
    
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn