1. Drei Arten von öffentlichen WeChat-Konten
Gehen Sie zur URL: https://mp.weixin.qq.com. Wenn Sie sich für WeChat registrieren, Es ist erforderlich. Wir wählen zwischen den aktuellen drei Arten von öffentlichen WeChat-Konten (Abonnementkonto, Dienstkonto, Unternehmenskonto). Ihre Unterschiede sind wie folgt:
Die folgenden Öffentliche Konten sind Abonnementkonten und Unternehmenskonten werden im Allgemeinen von Mitarbeitern desselben Unternehmens zur Kommunikation und Zusammenarbeit verwendet. Unternehmenskonten sind nicht öffentlich und für die Außenwelt nicht zugänglich und Dienstkonten sind für die Öffentlichkeit zugänglich. Ja, jeder kann folgen. Das Abonnementkonto wird im Allgemeinen verwendet, um regelmäßig einige grafische Informationen an Follower weiterzuleiten, und kann auch einige andere Abfragedienste bereitstellen. Das Dienstkonto verfügt über eine WeChat-Zahlungsfunktion und wird daher im Allgemeinen für kommerzielle Zwecke verwendet. Zum Beispiel Micro-Mall, Micro-Auktion usw.
2. Aktivieren Sie die WeChat-Entwicklerfunktion
Wenn Sie nach der Beantragung eines öffentlichen WeChat-Kontos auf der WeChat-Plattform entwickeln müssen, Sie müssen zuerst die WeChat-Entwicklerfunktion aktivieren. Um die WeChat-Entwicklerfunktion zu aktivieren, müssen Sie einen Bestätigungscode schreiben und es muss eine zugängliche URL vorhanden sein. Melden Sie sich zunächst bei der öffentlichen WeChat-Plattform an: https://mp.weixin.qq.com/
Klicken Sie auf „Developer Center“, aktivieren Sie „Ich stimme zu“ und klicken Sie auf „Entwickler werden“:
Gehen Sie zur folgenden Seite:
Klicken Sie auf „Konfigurationselemente“, es gibt eine URL und ein Token, die wir benötigen Ausfüllen und die URL bezieht sich auf die Öffnung. Bei Verwendung der Entwicklerfunktion sendet der WeChat-Server eine Get-Anfrage an die URL-Adresse. Die Parameter der Get-Anfrage sind:
1) Zeitstempel: Zeitstempel
2) Zufallszahl: nonce
3) Zufallszeichenfolge: echostr
4) Zusammenfassende Informationen des SHA-1-Algorithmus einer Zeichenfolge, die aus den oben genannten Werten besteht drei Parameter in Wörterbuchreihenfolge: Signatur
Was wir erreichen wollen, ist: Erhalten Sie die vier Parameter Zeitstempel, Nonce, Echostr und Signatur in der Get-Anforderungsverarbeitungsklasse der ausgefüllten URL und berechnen Sie dann ihre Werte Auf die gleiche Weise lautet die zusammenfassende Information des SHA-1-Algorithmus für die Zeichenfolge, die aus Zeitstempel, Nonce und Token in Wörterbuchreihenfolge besteht, und dann werden die Werte von Signatur2 und Signatur verglichen, um festzustellen, ob dies der Fall ist Wenn sie gleich sind, wird echostr unverändert zurückgegeben. Wenn der WeChat-Server echostr empfängt, wird die Entwicklerfunktion erfolgreich aktiviert. Beachten Sie, dass es sich bei dem Token hier um das oben auszugebende Token handelt.
Hinweis: Wenn Sie auf Alipay zugegriffen haben, werden Sie feststellen, dass es einen kleinen Unterschied zwischen der Verifizierung hier und der Alipay-Verifizierung gibt Sortiert nach der Wörterbuchreihenfolge der Schlüssel in den Schlüssel-Wert-Paaren, die aus Parametern und Parameterwerten bestehen, und die Zusammensetzung der Zeichenfolge ist: key1=value1+ & + key2=value2 und die Zeichenfolge, an der WeChat an der Überprüfung teilnimmt, ist: value1 + value2 + ... enthält keinen Schlüssel und wird entsprechend der Feldreihenfolge des Werts sortiert.
Der entsprechende Java-Code lautet wie folgt:
Servlet-Verarbeitung der WeChat-Get-Anfrage:
/** * 微信请求处理的核心类 */ public class CoreServlet extends HttpServlet { private static final long serialVersionUID = 4440739483644821986L; /** * 请求校验(确认请求来自微信服务器) */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 微信服务端发来的加密签名 String signature = request.getParameter("signature"); // 时间戳 String timestamp = request.getParameter("timestamp"); // 随机数 String nonce = request.getParameter("nonce"); // 随机字符串 String echostr = request.getParameter("echostr"); PrintWriter out = response.getWriter(); // 请求校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败 if (SignUtil.checkSignature(signature, timestamp, nonce)) { out.print(echostr); } out.close(); }
Verifizierungstool anfordern Klasse:
package com.sinaapp.wx.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import com.sinaapp.wx.config.ParameterConfig; /** * 请求校验工具类 */ public class SignUtil { /** * 校验签名 * * @param signature 微信加密签名 * @param timestamp 时间 * @param nonce 随机字符串 * @return */ public static boolean checkSignature(String signature, String timestamp, String nonce) { String token = ParameterConfig.WX_TOKEN; String[] paramArr = new String[] { token, timestamp, nonce }; Arrays.sort(paramArr); // 对token、timestamp和nonce按字典排序 // 将排序后的结果拼接成字符串 StringBuilder sb = new StringBuilder(paramArr[0]); sb.append(paramArr[1]); sb.append(paramArr[2]); String cipherText = null; try { MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] digest = md.digest(sb.toString().getBytes()); // 对接后的字符串进行sha1加密 cipherText = byteToStr(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } // 将加密后的字符串与微信服务器发来的签名signature进行对比 return cipherText != null ? cipherText.equals(signature.toUpperCase()) : false; } /** * 将字节数组转换为十六进制字符 * * @param byteArray * @return */ private static String byteToStr(byte[] byteArray) { String strDigest = ""; for (int i = 0; i < byteArray.length; i++) { strDigest += byteToHexStr(byteArray[i]); } return strDigest; } /** * 将单个字节转换为十六进制字符 * * @param mByte * @return */ private static String byteToHexStr(byte mByte) { char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char[] tempArr = new char[2]; tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; // 取一个字节的高4位,然后获得其对应的十六进制字符 tempArr[1] = Digit[mByte & 0X0F]; // 取一个字节的低4位,然后获得其对应的十六进制字符 return new String(tempArr); } }
Der Wert von String token = ParameterConfig.WX_TOKEN im Code muss mit dem oben ausgefüllten Token übereinstimmen. Konfigurieren Sie das Servlet in web.xml:
<servlet> <servlet-name>coreServlet</servlet-name> <servlet-class>com.sinaapp.wx.servlet.CoreServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>coreServlet</servlet-name> <url-pattern>/coreServlet</url-pattern> </servlet-mapping>
Fügen Sie es dann unter die URL ein, auf die über das öffentliche Netzwerk zugegriffen werden kann, und geben Sie dann die Zugriffsadresse ein Servlet in der URL oben. Klicken Sie dann auf die Schaltfläche „Senden“. Wenn alles erfolgreich ist, erscheint die folgende Eingabeaufforderung:
An diesem Punkt haben wir die Entwicklerfunktion von WeChat erfolgreich aktiviert und können Führen Sie WeChat aus. Wir haben AppID und AppSecret erhalten, die beide bei WeChat-Zahlungen verwendet werden.
Hinweis:
Die Adresse des Entwicklungsdokuments von WeChat lautet: http://mp.weixin.qq.com/wiki/home/index.html
Die Dokumentation zum Aktivieren von WeChat-Entwicklern lautet wie folgt:
Weitere Artikel zur WeChat-Entwicklung und wie man Entwickler wird, finden Sie auf der chinesischen PHP-Website !