Ich denke, es ist wichtiger, darauf vorbereitet zu sein, Entwickler zu werden, als sich durch die „erweiterten“ Funktionen des WeChat-Backends zu wühlen, deshalb werde ich diesen Abschnitt an die erste Stelle setzen.
Als Entwickler müssen wir uns zwei Hauptaufgaben stellen: WeChat-Server und Anwendungsserver (Website).
Wenn ein WeChat-Benutzer eine Nachricht an Ihre öffentliche Plattform sendet, wird die Nachricht tatsächlich zuerst an den WeChat-Server gesendet und der WeChat-Server initiiert eine weitere Anfrage an den Website-Server. Der Website-Server gibt das Ergebnis dieser Anfrage zurück , und dann sendet der WeChat-Server es an den WeChat-Client.
Der gesamte Nachrichtenkommunikationsprozess ist wie folgt:
Unter den oben genannten 5 Schritten konzentrieren wir uns als Entwickler hauptsächlich auf Schritt 3. Dieser Schritt konzentriert sich hauptsächlich on Es gibt tatsächlich 3 Aufgaben:
XML-Informationen von 2 empfangen
Serverinterne Logikausführung
XML-Informationen für 4 organisieren und zurückgeben
Ich werde die oben genannten drei Aufgaben später ausführlich erläutern und eine Reihe einfacher und effizienter Verarbeitungsmethoden bereitstellen.
Wenn Benutzer mit dem WeChat-Client verschiedene Arten von Nachrichten senden, empfängt der Website-Server Daten in verschiedenen Formaten (Text, Sprache, Bilder usw.). Format Derzeit gibt es nur XML.
Zum Lernen denke ich, dass andere Formate ähnlich sind, solange Sie die einfachste Textart beherrschen. Und in den folgenden Anweisungen werden Sie feststellen, dass Senparc.Weixin.MP.dll uns dabei helfen kann, diese umständlichen Formate und Definitionen vollständig zu ignorieren.
Der Inhalt einer einfachen Textanforderung im XML-Format (RequestMessage) lautet wie folgt:
<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>
Die offizielle Beschreibung des entsprechenden Knotens lautet wie folgt :
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | text |
Content | 文本消息内容 |
MsgId | 消息id,64位整型 |
Ein einfacher XML-Inhalt (ResponseMessage) für die Textrückgabe lautet wie folgt:
<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>
Die offizielle Beschreibung des entsprechenden Knotens lautet wie folgt:
参数 | 描述 |
---|---|
ToUserName | 接收方帐号(收到的OpenID) |
FromUserName | 开发者微信号 |
CreateTime | 消息创建时间 |
MsgType | text |
Content | 回复的消息内容,长度不超过2048字节 |
FuncFlag | 位0x0001被标志时,星标刚收到的消息。 |
Für alle XML-Informationen gilt eine Größenbeschränkung, z. B. für Textinformationen. Es wird empfohlen, dass der Inhalt 600 Wörter nicht überschreitet.
Im Bild oben hat der WeChat-Server nach dem Start von Schritt 2 eine Wartezeit von 5 Sekunden, wenn er nicht verarbeitet wird innerhalb dieser Zeit bis Schritt 4, dann wird die Anfrage geschlossen (einschließlich des Zeitpunkts der Datenübertragung). Das heißt, wenn die Zeit überschritten wird, kann der Client keine Antwort erhalten, selbst wenn der Website-Server die Daten zurückgibt.
In Textnachrichten ist es erlaubt, -Tags hinzuzufügen, um Links zu platzieren. Viele Freunde haben es jedoch getestet und festgestellt, dass es unter iOS kein Problem gibt, aber der Link kann auf Android nicht angeklickt werden. Der Grund dafür ist (zumindest bisher): Der Android-WeChat-Client hält sich strikt an das Tag-Format //xxxx">content , verwenden Sie nach href keine einfachen Anführungszeichen und fügen Sie keine anderen Attribute hinzu.
FromUserName im obigen XML-Knoten ist die OpenId des WeChat-Benutzers. Für dasselbe öffentliche Konto sind die ersten 6 Ziffern dieser OpenId in den Datensätzen der gesamten Öffentlichkeit konsistent und eindeutig Plattform. Mit anderen Worten: Wenn derselbe Benutzer zwei verschiedenen öffentlichen Konten folgt, verfügt er über zwei unterschiedliche OpenIds.
CreateTime verwendet Unix-Zeit. Wenn Sie also C# verwenden, müssen Sie eine Konvertierung durchführen.
Versuchen Sie, die Reihenfolge der XML-Knoten in der offiziellen API beizubehalten. In der Vergangenheit verwendete der WeChat-Server den Knotenstandort zum Lesen von Informationen (Knoten[0]) anstelle des Knotennamens . Jetzt scheint dieses Problem besser zu werden, aber man muss immer noch vorsichtig sein (¥…………&%&……).
Aufgrund dieser speziellen Kommunikationsmethode müssen (zumindest bisher) alle Anfragen zuerst vom Client initiiert werden, sodass Nachrichten nur mithilfe der API oder des SDK aktiv weitergeleitet werden können der Website-Client (natürlich gibt es auch andere Methoden, wie z. B. simulierte Anmeldung).
Obwohl der gesamte Kommunikationsprozess sehr ist Einfach, die offizielle API ist immer noch Für einige Felder wurden spezielle Konventionen oder Behandlungen getroffen, und es ist auch sehr mühsam, so viele Arten von Anforderungsdaten prozessorientiert zu verarbeiten.
Zu diesem Zweck habe ich ein Open-Source-Projekt erstellt: Senparc.Weixin.MP, Adresse: //m.sbmmt.com/
Der Hauptzweck von Senparc.Weixin.MP ist um C#-Entwicklern dabei zu helfen, den gesamten Kommunikationsprozess zu vereinfachen, Nachrichten objektorientiert zu verarbeiten und sich auf die Geschäftslogik statt auf umständliche APIs zu konzentrieren.
Verwenden Sie Senparc.Weixin.MP und stellen Sie es im externen Netzwerk bereit, um mit dem WeChat-Server zu kommunizieren. Sie müssen diese Umgebungen vorbereiten:
VS2012 (mindestens VS2010). SP1);
Wenn Sie die MVC-Demo ausführen müssen, benötigen Sie mindestens .NET 4.0 (um MVC 4 auszuführen, benötigen Sie mindestens .NET 3.5). ;
Es kann ein Domänenname oder eine IP verwendet werden, auf die über Port 80, ein virtueller Host, ein Peanut-Shell-Mapping-Intranet, ein VPS oder ein unabhängiger Server zugegriffen werden kann.
Weitere Tutorials zur Entwicklung der öffentlichen WeChat-Plattform von Senparc.Weixin.MP SDK (2): Bei Artikeln, die sich darauf beziehen, Entwickler zu werden, achten Sie bitte auf PHP-Chinesisch Webseite!