小白的微信開發第一天,廢話少說直接動手做!
【訂閱號】
1.進入官網微信開發公眾平台,選擇立即注冊
2.根據實際情況選擇要注冊的賬號類型(個人一般訂閱號即可)
公眾平台服務號、訂閱號、企業號的相關說明



3.1 填寫郵箱后選擇激活郵箱,登錄郵箱打開郵件復制驗證碼粘貼到郵箱驗證碼
3.1.1 發送驗證碼
3.1.2 復制驗證碼
3.1.3 粘貼驗證碼並填寫信息,點擊注冊
3.2 選擇類型(根據自己實際情況選擇)
3.2.1 選擇地區
3.2.2 選擇服務類型(我選擇的是訂閱號)
ps:類型一旦選擇不可修改!
3.3 信息登記
3.3.1 根據自己情況選擇(我選擇的為個人)
3.3.2 填寫基本信息並掃碼驗證
ps:主體信息提交后不可修改
3.4 公眾號信息填寫
3.4.1 填寫信息
3.4.2 前往公眾平台
公眾平台頁面
選擇右上角--》賬號詳情可上傳頭像和獲取訂閱號二維碼
到此微信訂閱號注冊完成,接下來進入開發環節,沒有服務器的可以選擇公眾平台測試賬號
【微信開發】
1.基本配置
訂閱號的主頁面---》開發---》基本配置
勾選我同意---》成為開發者
ps:
成為微信公眾平台開發者,你將可以使用公眾平台的開發接口,在你自身服務器上接收用戶的微信消息,並可按需回復。此外,我們還提供了更多更高級的接口來完善公眾號的功能:
1. 會話界面的自定義菜單
2. 多客服接口,提供貼心快捷的客服服務
3. 獲取用戶地址位置,精確提供服務
4. 高級群發接口,實現更靈活的群發能力
5. 用戶分組接口,方便管理用戶
還有很多接口,等你來體驗。
2.啟用開發者密碼(密碼需要自己保存)
2.1 啟用
2.2 按流程操作
2.2.1 身份確認
2.2.2 密碼驗證
2.2.3 查看開發者密碼,確定進入下一步設置白名單
2.2.4 設置白名單(很重要,昨天就被這家伙給坑了)
2.2.4.1 獲取到自己的IP外網
輸入IP確定后,然后掃碼確認即可
3. 啟用服務器配置
3.1 修改配置
3.2 配置頁面
3.2.1 微信端配置
1. URL是開發者用來接收微信消息和事件的接口URL,你服務器的公網IP或者域名
2. Token可由開發者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)
3. EncodingAESKey由開發者手動填寫或隨機生成,將用作消息體加解密密鑰
3.2.2 服務器端配置
https://github.com/wangyang0210/WeCheat/tree/master/checkToken
通過遠程連接工具將此文件放入到你服務器網頁的根目錄下,index.php中的token值要和微信端填寫的token值一致,否則會驗證不通過
3.2.3 提交驗證
成功后點擊啟用
ps:
3.3 擼代碼
寫了這么多終於可以擼代碼了,代碼如下
參考文檔: 被動回復用戶消息
index.php
<?php $postStr = file_get_contents("php://input"); file_put_contents('./data.txt', $postStr); if (!empty($postStr)){ 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 )) { if ($keyword == '圖片') { $imgtml = " <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[image]]></MsgType> <Image><MediaId><![CDATA[%s]]></MediaId></Image> </xml> "; $imgid = "w9ffB-g3DM1yZWiGbx7rHm9IkW9mOv7vs4WRMwTEfr0v9lsiMy9DTc6izeqrJqUL"; $resultStr = sprintf($imgtml,$fromUsername,$toUsername,$time,$imgid); echo $resultStr; }else if ($keyword == '音樂') { $musicTml = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[music]]></MsgType> <Music> <Title><![CDATA[有我不怕]]></Title> <Description><![CDATA[送給我的小媳婦兒]]></Description> <MusicUrl><![CDATA[%s]]></MusicUrl> <HQMusicUrl><![CDATA[%s]]></HQMusicUrl> </Music> </xml>"; $musicUrl = "http://wangnana.cn/love.mp3"; $resultStr = sprintf($musicTml,$fromUsername,$toUsername,$time,$musicUrl,$musicUrl); echo $resultStr; }else if ($keyword == '視頻') { $videotml =" <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[video]]></MsgType> <Video> <MediaId><![CDATA[%s]]></MediaId> <Title><![CDATA[視頻回復]]></Title> <Description><![CDATA[測試視頻]]></Description> </Video> </xml>"; $videoid = "8OgNkp7FKFpwd3NRBIy10i8611O6UHumzW_wjTx3W1X-c5rlQ-GAUaEgS3vnREM1"; $resultStr = sprintf($videotml,$fromUsername,$toUsername,$time,$videoid); echo $resultStr; }else{ $msgType = "text"; $contentStr = "歡迎來到我們的世界,接下來是吃狗糧的時間!"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; } }else{ echo "啊哦,要親親(づ ̄3 ̄)づ╭❤~"; } }else { echo ""; exit; }
3.4 如何獲取視頻/圖片的media_id(沒寫方法,利用開發者工具中的接口調試工具來獲取的)
3.4.1 獲取access_token的值
這時候就用到前面基本配置的兩個值了還有我們的白名單,如果出問題那就請查看你現在的外網IP是否在白名單中,如果你的AppSecret沒保存那只好重置開發者密碼咯
都沒有問題后,返回的值就是我們需要的access_token咯
3.4.2 獲取到圖片的media_id
接口類型--->基礎支持
接口列表---->多媒體文件上傳接口/media/upload
參數列表
access_token ---->剛才獲取的token
type---->img
media---->選擇上傳的文件
我上傳的是2.jpg
點擊檢查獲取media_id
測試效果:
一通百通,這個是寫死的,接下來就是把死的轉活,視頻的同理,音樂的直接文檔就可以搞出來,讓我偷下懶吧~
一上午都在弄這個,有點浪費時間,不過加深了自己的理解也是很不錯的一件事
如果出錯請看https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433747234,當然也可以和我這個小白分享,我可是很願意解決問題的,時間允許的情況下哈~