1. Trois types de comptes publics WeChat
Accédez à l'URL : https://mp.weixin.qq.com Lors de votre inscription à WeChat, c'est obligatoire Nous choisissons parmi les trois types actuels de comptes publics WeChat (compte d'abonnement, compte de service, compte d'entreprise). Leurs différences sont les suivantes :
Ceux qui le sont). Les comptes publics les plus utilisés sont les comptes d'abonnement et les comptes de service. Les comptes d'entreprise sont généralement utilisés par les employés de la même entreprise pour la communication et la collaboration. Les comptes d'entreprise ne sont pas publics et inaccessibles au monde extérieur. et les comptes de service sont ouverts au public Oui, tout le monde peut suivre. Le compte d'abonnement est généralement utilisé pour transmettre régulièrement certaines informations graphiques aux abonnés et peut également fournir d'autres services de requête. Le compte de service dispose d'une fonction de paiement WeChat, il est donc généralement utilisé à des fins commerciales. Par exemple, micro centre commercial, micro vente aux enchères, etc.
2. Activez la fonction de développeur WeChat
Après avoir demandé un compte public WeChat, si vous avez besoin de développer sur la plateforme WeChat, vous devez d'abord activer la fonction de développeur WeChat. Pour activer la fonction de développeur WeChat, vous devez écrire un code de vérification et il doit y avoir une URL accessible. Connectez-vous d'abord à la plateforme publique WeChat : https://mp.weixin.qq.com/
Cliquez sur "Centre des développeurs", cochez "J'accepte" et cliquez sur "Devenir développeur" :
Allez sur la page suivante :
Cliquez sur "Éléments de configuration", il y a une URL et un jeton dont nous avons besoin remplissez et l'URL fait référence à l'ouverture. Lors de l'utilisation de la fonction développeur, le serveur WeChat enverra une demande d'obtention à l'adresse URL. Les paramètres de la demande d'obtention sont :
1) Horodatage : horodatage
2) Nombre aléatoire : nonce3) Chaîne aléatoire : echostr4) Informations récapitulatives de l'algorithme SHA-1 de la chaîne composée des valeurs de ce qui précède trois paramètres dans l'ordre du dictionnaire : signature Ce que nous voulons accomplir est : obtenir les quatre paramètres timestamp, nonce, echostr et signature dans la classe de traitement des requêtes get de l'URL renseignée, puis calculer leurs valeurs De la même manière pour la chaîne composée d'un horodatage, d'un nom occasionnel et d'un jeton dans l'ordre du dictionnaire, les informations récapitulatives de l'algorithme SHA-1 sont signature2, puis les valeurs de signature2 et de signature sont comparées pour voir si elles le sont. le même. S'ils sont identiques, echostr est renvoyé tel quel. Si le serveur WeChat reçoit echostr, la fonction de développeur est activée avec succès. Notez que le jeton ici est le jeton à remplir ci-dessus. Remarque : si vous avez accédé à Alipay, vous constaterez qu'il y a une petite différence entre la vérification ici et la vérification d'Alipay. triés selon l'ordre du dictionnaire des clés dans les paires clé-valeur composées de paramètres et de valeurs de paramètres, et la composition de la chaîne est : clé1=valeur1 & clé2=valeur2 et la chaîne à laquelle WeChat participe à la vérification est : valeur1 valeur2 ; ... n'inclut pas la clé et est trié selon l'ordre de valeur du champ. Le code Java correspondant est le suivant : Traitement du servlet WeChat get request :/** * 微信请求处理的核心类 */ 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(); }
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); } }
<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>
La documentation pour activer les développeurs WeChat est la suivante : Pour plus d'articles liés au développement WeChat et à la façon de devenir développeur, veuillez faire attention au site Web PHP chinois !