3

对接流程

1、申请微信公众号测试账号
URL:https://mp.weixin.qq.com/debu...

2、登录,配置开发者服务器URL和Token

image.png

开发者服务器配置代码:
config.php

<?php
define("TOKEN", "weixin"); //TOKEN值
$wechatObj = new wechat();
$wechatObj->valid();
class wechat {
  public function valid() {
    $echoStr = $_GET["echostr"];
    if($this->checkSignature()){
      echo $echoStr;
      exit;
    }
  }
  private function checkSignature() {
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    if( $tmpStr == $signature ) {
      return true;
    } else {
      return false;
    }
  }
}
?>

URL是config.php在你服务器的URL
Token是上面代码自己设置的Token
image.png

搞定之后,就能完成接口配置的绑定。

开发

清空config.php的代码,粘贴下方代码,保存。

<?php

    // 页面编码
    header("Content-type:text/html;charset=utf-8");
    
    // 接收用户发送过来的XML消息
    $postStr = file_get_contents('php://input');
    
    // 使用SimpleXML进行解析XML
    $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
    
    // 消息发送方
    $fromUsername = $postObj->FromUserName;
    
    // 公众号
    $toUsername = $postObj->ToUserName;
    
    // 内容
    $content = trim($postObj->Content);
    
    // 消息类型
    $msgType = $postObj->MsgType;
    
    // 时间戳
    $time = time();
  
    // 文本消息XML模板
    $textTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    </xml>";
    
    // 图片消息XML模板
    $imageTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Image>
    <MediaId><![CDATA[%s]]></MediaId>
    </Image>
    </xml>";
    
    // 图片素材ID
    $media_id = "GHYb4PhayrbCAWgHCwkBQIAg_b46UI0Dl-xJukV-XoryFMp-t5c50_VqyId074_U";
    
    // 图文消息XML模板
    $newsTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <ArticleCount>1</ArticleCount>
    <Articles>
    <item>
    <Title><![CDATA[%s]]></Title>
    <Description><![CDATA[%s]]></Description>
    <PicUrl><![CDATA[%s]]></PicUrl>
    <Url><![CDATA[%s]]></Url>
    </item>
    </Articles>
    </xml>";
    
    // 根据关键词恢复
    if($content == '你好'){
        
        // 将文本消息发送给用户
        echo sprintf($textTpl,$fromUsername,$toUsername,$time,"text",$content);
    }else if($content == '图片'){
        
        // 将图片消息发送给用户
        echo sprintf($imageTpl,$fromUsername,$toUsername,$time,"image", $media_id);
    }else if($content == '图文'){
        
        // 将图文消息发送给用户
        echo sprintf($newsTpl,$fromUsername,$toUsername,$time,"news","这是一篇图文卡片消息","只需向公众号发送一条消息即可生成卡片!","https://d1.faiusr.com/2/AAEIABACGAAg_vuznQYogr-b2gIwuAg4uAg.jpg","https://www.qq.com");
    }
    
?>

体验

image.png

image.png

希望帮到您。

WeChat:sansure2016
Web:likeyunba.com
Date:2019-12-20
Author:Tanking


TANKING
4.8k 声望540 粉丝

热爱分享,热爱创作,热爱研究。