Cet article présente principalement le développement de la messagerie de masse sur la plateforme publique WeChat. Des informations détaillées sont compilées ici pour expliquer le processus de messagerie de masse sur la plateforme publique WeChat.
1. Objectif
Fin de l'envoi de messages de groupe dans le compte officiel WeChat. Ici, complétez simplement l’envoi de texte simple. Vous pouvez également envoyer des images vocales, etc., mais le format des données est différent. Il existe un lien ci-dessous pour interroger le format d'envoi des données du type de données.
2. Le processus d'envoi de messages texte de groupe
Obtenez un compte public de test (ceux qui ont un compte n'ont pas besoin d'un compte de test , mais les comptes formels ont plus de restrictions)
Les utilisateurs suivent le compte public ci-dessus
Obtenez notre access_token via appid et appsecret
Envoyer des messages texte de groupe via access_token
Obtenez un compte public de test et suivez le compte public
1), obtenez un compte de test public
Accédez au lien ci-dessus et sélectionnez "Interface Test Number Application" pour ouvrir directement http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo ?action=showinfo&t=sandbox/index via le client WeChat Scannez le code QR pour vous connecter.
Après vous être connecté, vous pouvez obtenir les informations d'un compte public de test. Il existe principalement deux paramètres, appId et appsecret, qui identifieront de manière unique un compte officiel, et ils doivent être utilisés comme paramètres pour obtenir les informations de l'utilisateur. ,
2) Configuration des informations de l'interface
Pour cette étape, vous pouvez vous référer aux instructions d'accès à WeChat. Cette page fournit un exemple de téléchargement php, qui est. très simple et fondamentalement, modifiez simplement le TOKEN personnalisé, puis placez la page de vérification sur votre propre serveur.
Ici, je donne un exemple de ce que j'ai fait :
Préparer les ressources :
Espace de nom de domaine (le mien est le nom de domaine sae space Wanwang), fichier PHP pour vérification uniquement
J'ai créé un wx_sample.php
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; } } } ?>
dans le répertoire racine de l'espace pointé par le nom de domaine puis rempli les informations de configuration Jeton (doit être cohérent avec le jeton dans wx_sample.php ci-dessus), URL (l'adresse de wx_sample.php)
Puis soumettez it
Si l'invite échoue, veuillez vérifier le jeton et l'URL [S'il s'agit de votre propre nom de domaine et de votre propre espace, veuillez le déposer ; Baidu sae et Sina sae doivent en faire la demande vous-même et le faire certifier (juste prenez une photo de votre main tenant la pièce d'identité et téléchargez-la, c'est très simple et le plus court Cela prendra 2 jours), cette étape est nécessaire]
3) Configurer le nom de domaine de sécurité de l'interface JS
Assurez-vous de ne pas inclure de protocole lorsque vous remplissez ce nom de domaine, par exemple http://www.sagosoft com/ ; C'est faux, il s'agit d'une URL et non d'un nom de domaine
Le domaine. le nom doit être similaire à www.sagosoft.com [sinon, il affichera un domaine URL invalide lors de l'accès à WeChat js-sdk]
4) Suivez le compte public
Ce n'est qu'en suivant le compte public que l'utilisateur peut autoriser la connexion d'un tiers et obtenir des informations sur l'utilisateur en ouvrant le lien avec l'opération des informations du compte public. Par conséquent, nous devons également utiliser notre WeChat pour suivre l'identifiant WeChat. Le fonctionnement est le suivant :
C'est toujours la page qui a sauté après une connexion réussie. Nous pouvons voir que la page a un code QR. Vous pouvez scanner le code QR. Suivez le code QR. Si vous suivez avec succès, il y aura des informations supplémentaires sur l'utilisateur dans la « Liste des utilisateurs » à droite. Comme le montre la figure ci-dessous :
5) Configurez la fonction de rappel
Nous accédons à des pages Web tierces (c'est-à-dire nos propres pages Web ) sur le client WeChat Lors de l'utilisation de WeChat, nous pouvons utiliser le mécanisme d'autorisation de la page Web WeChat. Nous avons non seulement besoin de l'appid et du appsecret obtenus précédemment, mais également des paramètres de nom de domaine pour le rappel après l'autorisation de l'utilisateur, c'est-à-dire où la page accédera après l'autorisation de l'utilisateur. La configuration spécifique est la suivante :
Toujours sur la page à l'instant, il y a une "Autorisation de page Web pour obtenir les informations de base de l'utilisateur", cliquez sur la modification derrière
Remplissez le nom de domaine de rappel :
Le nom de domaine est le nom de domaine racine configuré ci-dessus si l'URL que vous avez renseignée dans les « Informations de configuration de l'interface » ci-dessus est zcr.sinaaappc.com/wx_sample.php. , remplissez simplement zcr.sinaaappc ici .com fera l'affaire.
Si votre URL n'a pas été mise sur liste noire, elle apparaîtra en haut
Remarque :
1. Le nom de domaine (une chaîne) est renseigné ici, pas l'URL, veuillez donc ne pas ajouter d'en-têtes de protocole tels que http:// ; La spécification de configuration du nom de domaine de rappel est le nom de domaine complet. Par exemple, le nom de domaine qui nécessite une autorisation de page Web est : www.qq.com. Après la configuration, les pages sous ce nom de domaine sont http://www.qq.com/. music.html et http://www.qq .com/login.html peuvent effectuer l'authentification OAuth2.0. Mais ttp://pay.qq.com, http://music.qq.com, http://qq.com ne peuvent pas effectuer l'authentification OAuth2.0
4. Obtenez notre access_token via appid et appsecret
Access_token est le ticket unique global du compte officiel. Le compte officiel doit utiliser access_token lors de l'appel de chaque interface. Les développeurs doivent le stocker correctement. Au moins 512 caractères d'espace doivent être réservés pour le stockage access_token. La période de validité de access_token est actuellement de 2 heures et doit être actualisée régulièrement. Une acquisition répétée rendra le dernier access_token invalide. Méthode Get : Méthode de requête http : 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=‘//m.sbmmt.com/‘>欢迎希沃学院</a>"} }
返回数据:
{ "errcode": 0, "errmsg": "send job submission success", "msg_id": 3147483654 }
使用postman模拟发送请求如下:
微信号接收到的内容:
更多Développement de la plateforme publique WeChat - messagerie de groupe相关文章请关注PHP中文网!