Je pense qu'il est plus important d'être prêt à devenir développeur que de se débrouiller avec les fonctions "avancées" du backend WeChat, je vais donc mettre cette section en premier.
En tant que développeurs, nous devons faire face à deux objets principaux : le serveur WeChat et le serveur d'application (site Web).
Lorsqu'un utilisateur de WeChat envoie un message à votre plateforme publique, le message est en fait d'abord envoyé au serveur WeChat, et le serveur WeChat initie une autre requête au serveur du site Web. Le serveur du site Web renvoie le résultat de cette requête. , puis le serveur WeChat. Le serveur WeChat l'envoie au client WeChat.
L'ensemble du processus de communication du message est le suivant :
Parmi les 5 étapes ci-dessus, en tant que développeurs, nous nous concentrons principalement sur l'étape 3. Cette étape se concentre principalement on Il y a en fait 3 tâches :
Recevoir les informations XML de 2
Exécution de la logique interne du serveur
Organiser et renvoyer les informations XML pour 4
J'expliquerai les trois tâches ci-dessus en détail plus tard et fournirai un ensemble de méthodes de traitement simples et efficaces.
Lorsque les utilisateurs envoient différents types de messages à l'aide du client WeChat, le serveur du site Web recevra des données dans différents formats (texte, voix, images, etc.), des données format Actuellement, il n'existe que XML.
Pour l'apprentissage, je pense que tant que vous maîtrisez le type de texte le plus simple, les autres formats sont similaires. Et dans les instructions suivantes, vous constaterez que Senparc.Weixin.MP.dll peut nous aider à ignorer complètement ces formats et définitions encombrants.
Le contenu d'une simple demande de texte XML (RequestMessage) est le suivant :
<xml> <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName> <FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName> <CreateTime>1357986928</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[TNT2]]></Content> <MsgId>5832509444155992350</MsgId> </xml>
La description officielle du nœud correspondant est la suivante :
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | text |
Content | 文本消息内容 |
MsgId | 消息id,64位整型 |
Un simple Le contenu du texte renvoyé XML (ResponseMessage) est le suivant :
<xml> <ToUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></ToUserName> <FromUserName><![CDATA[gh_a96a4a619366]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[content]]></Content> <FuncFlag>0</FuncFlag> </xml>
La description officielle du nœud correspondant est la suivante :
参数 | 描述 |
---|---|
ToUserName | 接收方帐号(收到的OpenID) |
FromUserName | 开发者微信号 |
CreateTime | 消息创建时间 |
MsgType | text |
Content | 回复的消息内容,长度不超过2048字节 |
FuncFlag | 位0x0001被标志时,星标刚收到的消息。 |
Chaque information XML a une limite de taille, comme les informations textuelles, il est recommandé que le contenu du contenu ne dépasse pas 600 mots.
Dans l'image ci-dessus, après le démarrage de l'étape 2, le serveur WeChat a un temps d'attente : 5 secondes, s'il n'est pas traité dans ce délai À l'étape 4, la demande sera alors clôturée (y compris le temps de transmission des données). C'est-à-dire que si le délai dépasse, même si le serveur du site renvoie les données, le client ne peut pas recevoir de réponse.
Dans les messages texte, il est permis d'ajouter des balises pour placer des liens. Cependant, de nombreux amis l'ont testé et ont constaté qu'il n'y avait pas de problème sur iOS, mais le lien. ne peut pas être cliqué sur Android. En fait, la raison est (au moins jusqu'à présent) : Le client Android WeChat est strict concernant le format de balise . Veuillez suivre strictement ce format pour écrire : content , n'utilisez pas de guillemets simples après href et n'ajoutez pas d'autres attributs.
FromUserName dans le nœud XML ci-dessus est l'OpenId de l'utilisateur WeChat. Pour le même compte public, les 6 premiers chiffres de cet OpenId sont cohérents et uniques parmi les enregistrements de l'ensemble du public. plate-forme de. Autrement dit, si un même utilisateur suit deux comptes publics différents, il aura deux OpenIds différents.
CreateTime utilise le temps Unix, donc si vous utilisez C#, vous devez effectuer une conversion.
Essayez de conserver l'ordre des nœuds XML dans l'API officielle. Dans le passé, le serveur WeChat utilisait l'emplacement du nœud pour lire les informations (node[0]) au lieu du nom du nœud. .Maintenant, ce problème semble s'améliorer, mais il faut quand même être prudent (¥…………&%&……).
En raison de cette méthode de communication spéciale, (du moins jusqu'à présent) toutes les demandes doivent d'abord être initiées par le client. Ne vous attendez pas à ce que la simple utilisation de l'API ou du SDK puisse envoyer activement des messages. le serveur du site Web (il existe bien sûr d'autres méthodes, comme la connexion simulée).
Bien que l'ensemble du processus de communication soit très simple, l'API officielle est toujours Des conventions ou des traitements spéciaux ont été élaborés pour certains domaines, et il est également très laborieux de traiter autant de types de données de requête de manière orientée processus.
Pour cela j'ai réalisé un projet open source : Senparc.Weixin.MP, adresse : http://www.php.cn/
Le but principal de Senparc.Weixin.MP est pour aider les développeurs C# à simplifier l'ensemble du processus de communication, à traiter les messages de manière orientée objet et à se concentrer sur la logique métier plutôt que sur des API encombrantes.
Utilisez Senparc.Weixin.MP et déployez-le sur le réseau externe pour communiquer avec le serveur WeChat. Vous devez préparer ces environnements :
VS2012 (au moins VS2010). SP1 );
Si vous devez exécuter la démo MVC, vous avez besoin d'au moins .NET 4.0 (installez MVC 4). Pour exécuter la démo Webforms, vous avez besoin d'au moins .NET 3.5).
Un nom de domaine ou une IP accessible via le port 80, un hôte virtuel, un intranet de mappage Peanut Shell, un VPS, un serveur indépendant peuvent être utilisés.
Pour plus de tutoriel de développement de plateforme publique Senparc.Weixin.MP SDK WeChat (2) : Pour les articles liés à la façon de devenir développeur, veuillez faire attention au PHP chinois site web!