>  기사  >  위챗 애플릿  >  WeChat 공개 계정 개발에 대한 전체 튜토리얼 1

WeChat 공개 계정 개발에 대한 전체 튜토리얼 1

不言
不言원래의
2018-05-14 15:27:4892966검색

이 기사의 내용은 WeChat 공개 계정 개발에 대한 완전한 튜토리얼입니다. 이제는 모든 사람과 공유합니다. 도움이 필요한 친구는 이를 참조할 수 있습니다. 지난 2년 동안 WeChat 공개 계정에 대한 많은 연구와 소규모 프로그램, 더 많은 프로젝트가 제작되었습니다. 그래서 저는 포괄적인 제작 튜토리얼을 작성하려고 합니다. 물론 최고의 튜토리얼은 WeChat 작업 플랫폼의 문서입니다. 여기서는 제 작품의 제작 과정에 대해서만 이야기하겠습니다. 모든 관련 기사의 소스 코드는 내 자신의 github에서 호스팅됩니다. 팔로우를 환영합니다. 링크를 열려면 주소를 클릭하세요. 튜토리얼을 시작하겠습니다.

1. WeChat과 공개 플랫폼의 차이점:

WeChat: 인스턴트 채팅 소프트웨어, 일대일 관계

WeChat 공개 플랫폼: 일대다 관계.

2. 구독 계정과 서비스 계정의 차이점:

구독 계정:

1 메시지는 매일 그룹으로 개인이나 미디어에 보낼 수 있으며 기본적으로 맞춤 메뉴가 없습니다. 서버 번호: 기업이나 은행의 경우 4 메시지를 매달 대량으로 보낼 수 있으며 기본적으로 사용자 정의 메뉴가 있습니다. 운영 주체가 조직(예: 기업, 미디어, 자선 단체)인 경우 서비스 계정을 신청할 수 있습니다. 운영 주체인 조직과 개인은 구독 계정을 신청할 수 있지만, 개인은 서비스 계정을 신청할 수 없습니다. 3. 공개 플랫폼의 두 가지 모드:

1

, 편집 모드: 사용자 상호작용을 위해 WeChat 공개 플랫폼에서 제공하는 백그라운드 작업을 직접 사용합니다. 편집 모드는 다음 시나리오에서 사용할 수 있습니다.

개발 능력이 없는 운영자, 주로 브랜드 홍보, 뉴스 미디어 및 셀프 서비스 고객 서비스를 위한 공개 계정, 운영 초기 단계에서는 편집 모드가 필요하지 않습니다. 다양한 특수 기능의 경우 개발 모드 시스템 업그레이드, 오류 및 기타 특수 상황2

, 개발자 모드: 인터페이스 코드를 직접 사용하여 사용자 통신 구현

4.

WeChat 공개 플랫폼 준비: 공개 플랫폼 등록 및 온라인 서버 보유

5. 편집 모드 알아보기:

원칙:

5.1 대량 메시지:

대량 메시지를 위한 개체 및 자료 선택:


5.2: 사용자 정의 메뉴:

사용자 정의 활성화 메뉴 정의 및 켜기:


설정 인터페이스를 보고 들어가려면 클릭하세요:



5.3 자동 응답:


위의 설명은 주로 편집 모드의 사용에 관한 것입니다. 사실 우리가 일반적으로 포럼에서 기사나 게시물을 편집하는 방법과 비슷합니다.

6. 개발자 모드

원리:


6.1 첫 번째 단계는 개발자 모드를 켜는 것입니다.

참고: 개발자 모드를 켜면 편집 모드의 일부 기능을 정상적으로 사용할 수 없습니다. 즉, 개발자 모드와 편집기 모드 사이에 충돌이 발생합니다.

설정 인터페이스 들어가기:


구성 수정:


설정 결과는 아래와 같습니다. 서버 파일 주소, 토큰을 입력하고 제출을 클릭한 후 확인하세요. 제출하고 확인하면 개발자 모드


에 들어갑니다.

6.2 내 온라인 인증 코드는 다음과 같습니다.


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은 신원 인증입니다. 다른 인터페이스에서는 기본적으로 이 값을 사용하여 확인해야 합니다.

7.access_token 획득: (로컬에서 테스트 가능)

7.1 인터페이스 설명 보기:


Get access_token방법 1:


결과는 다음과 같습니다.


Get access_token방법 2:


결과는 다음과 같습니다.


us 위 코드를 캡슐화해 보세요. access_token은 하루에 2000번만 호출할 수 있으므로 재사용 효과를 얻으려면 캐시해야 합니다.

7.2:curl封装发送请求和获取access_token封装:


// 获取请求的地址的方法

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(&#39;get_access_token&#39;)){
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[&#39;access_token&#39;];
$obj->set($appid,$value,7000);
}
return $value;
}
}

上述代码就是我对这两个方法的封装,其中我们用到了缓存技术:缓存的方法如下:


// memcache操作类

class MyMemcache{
public $conn;
public $isMemcache =true;
public function __construct($host="127.0.0.1",$port=&#39;11211&#39;)
{
//  建立连接
if(class_exists(&#39;MyMemcache&#39;)){
$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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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