Heim > Artikel > WeChat-Applet > Entwicklung der öffentlichen WeChat-Plattform – Gruppennachrichten
Dieser Artikel stellt hauptsächlich die Entwicklung von Massennachrichten auf der öffentlichen WeChat-Plattform vor. Detaillierte Informationen werden hier zusammengestellt, um den Prozess von Massennachrichten auf der öffentlichen WeChat-Plattform zu erklären.
1. Zweck
Senden von Gruppennachrichten im offiziellen WeChat-Konto abgeschlossen. Schließen Sie hier einfach den einfachen Textversand ab. Sie können auch Sprachbilder usw. senden, das Datenformat ist jedoch unterschiedlich. Unten finden Sie einen Link zum Abfragen des Datensendeformats des Datentyps.
2. Der Prozess des Versendens von Gruppentextnachrichten
Erhalten Sie ein öffentliches Testkonto (diejenigen, die ein Konto haben, benötigen kein Testkonto , aber für formelle Konten gelten mehr Einschränkungen)
Benutzer folgen dem oben genannten öffentlichen Konto
Holen Sie sich unser access_token über appid und appsecret
Senden Sie Gruppentextnachrichten über access_token
3. Holen Sie sich ein öffentliches Testkonto + folgen Sie dem öffentlichen Konto
1), erhalten Sie ein öffentliches Testkonto
Besuchen Sie den obigen Link und wählen Sie „Interface Test Number Application“, um http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo direkt zu öffnen ?action=showinfo&t=sandbox/index über WeChat-Kunden Scannen Sie den QR-Code, um sich anzumelden.
Nach dem Anmelden können Sie die Informationen eines öffentlichen Testkontos abrufen. Es gibt hauptsächlich zwei Parameter, appId und appsecret, die ein offizielles Konto eindeutig identifizieren und als Parameter verwendet werden müssen, um die Informationen des Benutzers zu erhalten. ,
2) Schnittstelleninformationen konfigurieren
Für diesen Schritt können Sie sich auf die WeChat-Zugriffsanweisungen beziehen. Diese Seite bietet einen PHP-Beispiel-Download Sehr einfach und grundsätzlich: Ändern Sie einfach das benutzerdefinierte TOKEN und legen Sie dann die Überprüfungsseite auf Ihrem eigenen Server ab.
Hier stelle ich ein Beispiel für das dar, was ich getan habe:
Bereiten Sie Ressourcen vor:
Domainname + Leerzeichen (meiner ist Sae-Leerzeichen + Wanwang-Domainname), PHP nur zur Überprüfung Datei
Ich habe eine wx_sample.php erstellt
wx_sample.php
<?php /** * wechat php test */ //define your token define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; exit; } } public function responseMsg() { //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //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; } } private function checkSignature() { // you must define TOKEN by yourself if (!defined("TOKEN")) { throw new Exception(‘TOKEN is not defined!‘); } $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = 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; } } } ?>
Dann füllen Sie das Konfigurationsinformations-Token aus (muss mit dem Token in wx_sample.php oben übereinstimmen), URL (die Adresse von wx_sample.php)
und dann einreichen
Wenn die Die Eingabeaufforderung schlägt fehl. Bitte überprüfen Sie den Token und die URL. [Wenn es sich um Ihren eigenen Domainnamen und -bereich handelt, reichen Sie ihn bitte ein. Baidu sae und Sina sae müssen ihn selbst beantragen und die Zertifizierung bestehen (machen Sie einfach ein Foto von Ihrer Hand, die den Ausweis hält). und laden Sie es hoch, es ist sehr einfach) Die kürzeste Zeit beträgt 2 Tage o), dieser Schritt ist notwendig]
3) Konfigurieren Sie den Sicherheitsdomänennamen der JS-Schnittstelle
Achten Sie darauf, kein Protokoll einzuschließen wenn Sie diesen Domänennamen eingeben, zum Beispiel http://www.sagosoft.com/; Das ist falsch, dies ist eine URL, kein Domänenname
Der Domänenname sollte ähnlich wie www.sagosoft sein. com [andernfalls wird beim Zugriff auf WeChat js-sdk eine ungültige URL-Domäne angezeigt]
4) Folgen Sie dem öffentlichen Konto
Dies ist nur möglich, wenn Sie diesem öffentlichen Konto folgen Der Benutzer autorisiert die Anmeldung Dritter, indem er den Link mit den öffentlichen Kontoinformationen öffnet und Vorgänge für Benutzerinformationen erhält. Daher müssen wir auch unsere WeChat-ID verwenden. Der Vorgang ist wie folgt:
Es ist immer noch die Seite, die nach erfolgreicher Anmeldung angezeigt wird. Wir können Scannen Sie den Code „Folgen Sie dem QR“. Wenn Sie erfolgreich folgen, werden in der „Benutzerliste“ auf der rechten Seite weitere Benutzerinformationen angezeigt. Wie in der Abbildung unten gezeigt:
5) Konfigurieren Sie die Rückruffunktion
Wir greifen auf Webseiten Dritter zu (d. h. unsere eigenen Webseiten). ) auf dem WeChat-Client Wenn wir WeChat verwenden, können wir den WeChat-Webseiten-Autorisierungsmechanismus verwenden. Wir benötigen nicht nur die zuvor erhaltene App-ID und das App-Geheimnis, sondern müssen auch die Domänennameneinstellungen für den Rückruf nach der Autorisierung durch den Benutzer haben. wohin die Seite springt, nachdem der Benutzer die Autorisierung erteilt hat. Die spezifische Konfiguration ist wie folgt:
Noch auf der Seite gibt es gerade eine „Webseitenautorisierung zum Abrufen grundlegender Benutzerinformationen“, klicken Sie auf die Änderung hinter
Geben Sie den Callback-Domänennamen ein:
Der Domänenname ist der oben konfigurierte Stammdomänenname, wenn die URL, die Sie oben in den „Schnittstellenkonfigurationsinformationen“ eingegeben haben, zcr.sinaaappc.com/wx_sample.php ist , füllen Sie einfach zcr.sinaaappc hier aus. .com genügt.
Wenn Ihre URL nicht auf der schwarzen Liste steht, wird sie oben angezeigt
Hinweis:
1. Der Domänenname (eine Zeichenfolge) wird hier ausgefüllt, nicht die URL, also fügen Sie bitte keine Protokollheader wie http:// hinzu Die Konfigurationsspezifikation für den Rückrufdomänennamen ist beispielsweise der Domänenname, für den eine Webseitenautorisierung erforderlich ist: www.qq.com Nach der Konfiguration lauten die Seiten unter diesem Domänennamen http://www.qq.com/. music.html und http://www.qq.com/login.html können eine OAuth2.0-Authentifizierung durchführen. Aber ttp://pay.qq.com, http://music.qq.com, http://qq.com kann keine OAuth2.0-Authentifizierung durchführen
4. Erhalten Sie unser access_token über appid und appsecret
Access_token ist das weltweit eindeutige Ticket des offiziellen Kontos, das beim Aufruf jeder Schnittstelle access_token verwenden muss. Entwickler müssen es ordnungsgemäß speichern. Für die Speicherung des access_token müssen mindestens 512 Zeichen Platz reserviert werden. Die Gültigkeitsdauer von access_token beträgt derzeit 2 Stunden und muss regelmäßig aktualisiert werden. Wiederholte Erfassung führt dazu, dass das letzte access_token ungültig wird. Methode abrufen: http-Anfragemethode: GEThttps://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
参数 | 是否必须 | 说明 |
---|---|---|
grant_type | 是 | 获取access_token填写client_credential |
appid | 是 | 第三方用户唯一凭证 |
secret | 是 | 第三方用户唯一凭证密钥,即appsecret |
错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):
{"errcode":40013,"errmsg":"invalid appid"}
例子:
获取access_token:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx41cb8dbd827a16e9&secret=d4624c36b6795d1d99dcf0547af5443d
返回数据:
{ "access_token": "qR5UK2vMf5aTHV8e-uB10FZW0caTZm_1kbkUe4OPK2ILVvNaoa7pLzYWqLUAmx6Sjq1E7pKHrVAtuG0_1MPkqmDfOkm2750kaLWNk59DS-iDOpjjxompJtXa3WhbN5FKRWNhADAVAR", "expires_in": 7200 }
5、通过access_token群发短信
在公众平台网站上,为订阅号提供了每天一条的群发权限,为服务号提供每月(自然月)4条的群发权限。而对于某些具备开发能力的公众号运营者,可以通过高级群发接口,实现更灵活的群发能力。
请注意:
1、对于认证订阅号,群发接口每天可成功调用1次,此次群发可选择发送给全部用户或某个分组;
2、对于认证服务号虽然开发者使用高级群发接口的每日调用限制为100次,但是用户每月只能接收4条,无论在公众平台网站上,还是使用接口群发,用户每月只能接收4条群发消息,多于4条的群发将对该用户发送失败;
3、具备微信支付权限的公众号,在使用群发接口上传、群发图文消息类型时,可使用标签加入外链;
4、开发者可以使用预览接口校对消息样式和排版,通过预览接口可发送编辑好的消息给指定用户校验效果。
1)根据分组进行群发【订阅号与服务号认证后均可用】
调用接口:
http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN 在body添加如下数据(以JSON格式数据发送)——发送其他格式数据,只需要改里面参数信息即可,具体可查看微信官方文档:
{ "filter":{ "is_to_all":false, "group_id":2 }, "text":{ "content":"CONTENT" }, "msgtype":"text" }
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
filter | 是 | 用于设定图文消息的接收者 |
is_to_all | 否 | 用于设定是否向全部用户发送,值为true或false,选择true该消息群发给所有用户,选择false可根据group_id发送给指定群组的用户 |
group_id | 否 | 群发到的分组的group_id,参加用户管理中用户分组接口,若is_to_all值为true,可不填写group_id |
mpnews | 是 | 用于设定即将发送的图文消息 |
media_id | 是 | 用于群发的消息的media_id |
msgtype | 是 | 群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为video,卡券为wxcard |
title | 否 | 消息的标题 |
description | 否 | 消息的描述 |
thumb_media_id | 是 | 视频缩略图的媒体ID |
例子:发送给所有人
url:
https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=KBoNONaJZ4-KhafQVJoQ6VBX0F-bls7nAsJBn8Fy7GLwav4Be1lRJcob1RHH6wW35IxxFwkJnZfnc-On9EQITg3oxEWUw7O2YyVW9naDknu6PQX9fnSmQcr8ojTK8Ug-HDTcAAABXN
发送的json数据:发送给所有人
{ "filter":{ "is_to_all":true }, "text":{ "content":"CONTENT" }, "msgtype":"text" }
返回数据:
{ "errcode": 0, "errmsg": "send job submission success", "msg_id": 1000000003 }
参数意义:
参数 | 说明 |
---|---|
type | 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb),图文消息为news |
errcode | 错误码 |
errmsg | 错误信息 |
msg_id | 消息发送任务的ID |
msg_data_id | 消息的数据ID,该字段只有在群发图文消息时,才会出现。可以用于在图文分析数据接口中,获取到对应的图文消息的数据,是图文分析数据接口中的msgid字段中的前半部分,详见图文分析数据接口中的msgid字段的介绍。 |
错误码及其以及查询:
使用postman模拟https请求发送如下图所示:
2)根据OpenID列表群发【订阅号不可用,服务号认证后可用】
发送的http请求url:(注意:和上面的不同)
http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN
数据格式:
{ "touser":[ "OPENID1", "OPENID2" ], "msgtype": "text", "text": { "content": "hello from boxer."} }
其中 OPENID1和OPENID2是我们要发送的微信用户openId(用户的唯一标示)。
例子:
发送"oF3PcsnsrMiJzEwalZZbAfWQpxCI","oF3PcshH1CUIhR_WYau6swUiPzlw" 两个用户。
内容为:hello from boxer.欢迎来到百度
url:
https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=wRyTbnsiu18ssEhMPLf4bDfeT-Bt6e6tgR4CQGVLBipRcyJPkdAKPYfM6-qkKuHUN8uRKJh6Xvm0OuAdFgqOo8Ru8hoDxl-cGc9bh-ezJb2ZUcJSnQk2s416zI8kbEOfOGYdAFARJB
json数据:
{ "touser":[ "oF3PcsnsrMiJzEwalZZbAfWQpxCI", "oF3PcshH1CUIhR_WYau6swUiPzlw" ], "msgtype": "text", "text": { "content": "hello from boxer.<a href=‘http://www.php.cn/‘>欢迎希沃学院</a>"} }
返回数据:
{ "errcode": 0, "errmsg": "send job submission success", "msg_id": 3147483654 }
使用postman模拟发送请求如下:
微信号接收到的内容:
更多Entwicklung der öffentlichen WeChat-Plattform – Gruppennachrichten相关文章请关注PHP中文网!