이 기사의 내용은 WeChat 공개 계정 개발에 대한 완전한 튜토리얼입니다. 이제는 모든 사람과 공유합니다. 도움이 필요한 친구는 이를 참조할 수 있습니다. 지난 2년 동안 WeChat 공개 계정에 대한 많은 연구와 소규모 프로그램, 더 많은 프로젝트가 제작되었습니다. 그래서 저는 포괄적인 제작 튜토리얼을 작성하려고 합니다. 물론 최고의 튜토리얼은 WeChat 작업 플랫폼의 문서입니다. 여기서는 제 작품의 제작 과정에 대해서만 이야기하겠습니다. 모든 관련 기사의 소스 코드는 내 자신의 github에서 호스팅됩니다. 팔로우를 환영합니다. 링크를 열려면 주소를 클릭하세요. 튜토리얼을 시작하겠습니다.
1. WeChat과 공개 플랫폼의 차이점:
WeChat 공개 플랫폼: 일대다 관계.
2. 구독 계정과 서비스 계정의 차이점:
구독 계정:1 메시지는 매일 그룹으로 개인이나 미디어에 보낼 수 있으며 기본적으로 맞춤 메뉴가 없습니다. 서버 번호: 기업이나 은행의 경우 4 메시지를 매달 대량으로 보낼 수 있으며 기본적으로 사용자 정의 메뉴가 있습니다. 운영 주체가 조직(예: 기업, 미디어, 자선 단체)인 경우 서비스 계정을 신청할 수 있습니다. 운영 주체인 조직과 개인은 구독 계정을 신청할 수 있지만, 개인은 서비스 계정을 신청할 수 없습니다. 3. 공개 플랫폼의 두 가지 모드:
개발 능력이 없는 운영자, 주로 브랜드 홍보, 뉴스 미디어 및 셀프 서비스 고객 서비스를 위한 공개 계정, 운영 초기 단계에서는 편집 모드가 필요하지 않습니다. 다양한 특수 기능의 경우 개발 모드 시스템 업그레이드, 오류 및 기타 특수 상황2
, 개발자 모드: 인터페이스 코드를 직접 사용하여 사용자 통신 구현4.
5. 편집 모드 알아보기:
5.1 대량 메시지:
대량 메시지를 위한 개체 및 자료 선택:
5.2: 사용자 정의 메뉴:
설정 인터페이스를 보고 들어가려면 클릭하세요:
5.3 자동 응답:
위의 설명은 주로 편집 모드의 사용에 관한 것입니다. 사실 우리가 일반적으로 포럼에서 기사나 게시물을 편집하는 방법과 비슷합니다.
6. 개발자 모드
6.1 첫 번째 단계는 개발자 모드를 켜는 것입니다.
구성 수정:
설정 결과는 아래와 같습니다. 서버 파일 주소, 토큰을 입력하고 제출을 클릭한 후 확인하세요. 제출하고 확인하면 개발자 모드
에 들어갑니다.
public function valid(){ //获取随机字符串 $echoStr = input("echostr"); if($echoStr){ // 验证接口的有效性,由于接口有效性的验证必定会传递echostr 参数 if($this ->checkSignature()){ echo $echoStr; exit; } }else{ $this->responseMsg(); } } protected function checkSignature() { // 微信加密签名 $signature = input("signature"); $timestamp = input("timestamp");//时间戳 $nonce =input("nonce");//随机数 $token = "weixin"; //token值,必须和你设置的一样 $tmpArr =array($token,$timestamp,$nonce); sort($tmpArr,SORT_STRING); $tmpStr = implode($tmpArr); $tmpStr =sha1($tmpStr); if($tmpStr == $signature){ return true; }else{ return false; } }
위 코드의 변수 소스와 관련하여 WeChat에는 제가 만든 공개 계정에 대한 자세한 지침이 있습니다. PHP7.0 버전과 TP5.0 프레임워크를 사용합니다. 여기에 설명해보세요.
위 코드는 한 번만 실행됩니다. 개발자 모드를 켠 후에는 위 코드의
responseMsg
메소드만 실행됩니다.
먼저 테스트 코드를 업로드하여 문자 메시지에 답장이 있는지 확인해 보겠습니다. 코드는 다음과 같습니다.
public function responseMsg() { //get post data, May be due to the different environments $postStr = file_get_contents('php://input'); //extract post data if (!empty($postStr)){ /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection, the best way is to check the validity of xml by yourself */ libxml_disable_entity_loader(true); $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; } }
결과는 다음과 같습니다.
. WeChat의 웹 인증을 통해 테스트 계정을 신청할 수 있습니다. 여기서 사용하는 것은 테스트 계정입니다. 위에서 언급한 개발자 모드를 켜는 것은 동일합니다. 테스트 계정을 신청하세요. 신청처 :
위의 코드가 나타나면 테스트에 성공한 것입니다. 다음으로, access_token 값을 얻기 시작합니다. 이 매개변수는 우리에게 매우 중요합니다.
access_token은 공식 계정의 자격 증명을 호출하는 전역적으로 고유한 인터페이스이므로 공식 계정은 각 인터페이스를 호출할 때 access_token을 사용해야 합니다. 개발자는 이를 올바르게 저장해야 합니다. access_token의 저장소는 최소 512자 공간을 예약해야 합니다. access_token의 유효 기간은 현재 2시간이며 정기적으로 새로 고쳐야 합니다. 반복해서 획득하면 마지막으로 획득한 access_token이 무효화됩니다. access_token은 신원 인증입니다. 다른 인터페이스에서는 기본적으로 이 값을 사용하여 확인해야 합니다.
결과는 다음과 같습니다.
결과는 다음과 같습니다.
us 위 코드를 캡슐화해 보세요. access_token은 하루에 2000번만 호출할 수 있으므로 재사용 효과를 얻으려면 캐시해야 합니다.
// 获取请求的地址的方法
i
f(!function_exists("http_curl")){ function http_curl($url,$data =array(),$method ="get",$returnType ="json") { //1.开启会话 $ch = curl_init(); //2.设置参数 curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); if($method!="get"){ curl_setopt($ch,CURLOPT_POST,TRUE); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); } curl_setopt($ch,CURLOPT_URL,$url); //执行会话 $json = curl_exec($ch); curl_close($ch); if($returnType == "json"){ return json_decode($json,true); } return $json; } } if(!function_exists('get_access_token')){ function get_access_token() { $appid = "wx1ba8f59d9e2c0be0"; //微信的appid $secret ="9e65155599fb9ec047455e197ff6e121"; //微信的开发者密钥 // 读取缓存中的内容 include_once "MyMemcache.php"; //引入缓存方法文件 $obj = new \MyMemcache("47.104.71.253"); $value = $obj ->get($appid); if(!$value){ $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret; $result = http_curl($url); $value = $result['access_token']; $obj->set($appid,$value,7000); } return $value; } }
上述代码就是我对这两个方法的封装,其中我们用到了缓存技术:缓存的方法如下:
// memcache操作类
class MyMemcache{ public $conn; public $isMemcache =true; public function __construct($host="127.0.0.1",$port='11211') { // 建立连接 if(class_exists('MyMemcache')){ $obj =new \Memcache(); }else{ $this ->isMemcache =false; $obj =new \Memcached(); } $obj ->addServer($host,$port); $this ->conn =$obj; } //获取数据 public function get($key) { return $this->conn->get($key); } //设置数据 public function set($key,$value,$expire=0) { if($this->isMemcache){ $this->conn->set($key,$value,0,$expire); }else{ // Memcached扩展的操作方式 $this->conn->set($key,$value,$expire); } } }
结合上述的三个方法,我们就可以实现获取access_token的值,并保存在缓存系统,7000s去重新获取一次。
上述的步骤完成,我们就算是对微信公众号的开发的基本准备全部准备完毕,接下来就开始对着微信开发者文档进行开发和数据的替换了。第一节先讲述到这里.....
相关文章推荐:
1.微信公众号开发完整教程二
2.微信公众号开发完整教程三
3.微信公众号开发完整教程四
相关视频推荐:
1.php微信接口开发实战项目视频教程 聊天机器人+微信支付
2.开发微信小程序视频教程
위 내용은 WeChat 공개 계정 개발에 대한 전체 튜토리얼 1의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!