Micro-canal de desarrolladores plataforma pública para configurar

directorio

La primera parte para permitir a los desarrolladores para configurar

(1) Iniciar sesión plataforma pública de micro-canales

(2) configurar la lista blanca IP

(3) permiten a los desarrolladores para configurar

(4) la parte de código específica llamando

La segunda parte del evento para recibir empuje

(1) Interfaz

(2) clases de lógica de negocios 

(3) MessageUtil

(4) imprimir los resultados:

resumen:


Prefacio:

Los trabajos preparatorios de hoy es introducir plataforma pública de micro-canales recibe evento empuje parte, se desprende de los documentos oficiales, plataforma pública de micro-canales proporciona empuje caso, los usuarios preocupados por el número público números dejar de seguir puede insertar contenido en los desarrolladores en el micro-carta url configuraciones de plataforma públicos, los desarrolladores pueden mantener esta información para su posterior juicio la lógica.

La primera parte para permitir a los desarrolladores para configurar

pasos:

(1) Iniciar sesión plataforma pública de micro-canales

Necesidad de iniciar la sesión de micro carta cuenta de la plataforma pública, se convierten en una plataforma pública de micro-canales para los desarrolladores, haga clic en el siguiente icono de nota donde los desarrolladores pueden acceder a la página de configuración.

 

(2) configurar la lista blanca IP

Cuando múltiples avance de línea directa IP, esto tiene que ser configurados, muy importante , como se muestra a continuación, voy a tener mi propia IP en la configuración del equipo a subir.

 

(3) permiten a los desarrolladores para configurar

Tenga en cuenta que simbólico que puede ser por el desarrollador para personalizar, sólo asegúrese de que el código de abajo Token Token y puedo ser consistente.

(4) la parte de código específica llamando

  • 4.1 Interfaz llama a las necesidades método para obtener las solicitudes.
package com.bos.controller.wechat;

import com.bos.qiWechat.WXBizMsgCrypt;
import com.bos.service.WeiService;
import com.bos.util.WeiXinParamesUtil;
import com.bos.wechat.SignUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;

/**
 * @Author tanghh
 * @Date 2020/4/3 10:12
 */
@RestController
@RequestMapping(value = "/wechat")
public class WechatDeveloperController {
 

    /**
     * 确认请求来自微信服务器
     *
     * @param signature 微信加密签
     * @param timestamp 时间戳
     * @param nonce     随机数
     * @param echostr   随机字符串
     * @param signature
     * @param timestamp
     * @param nonce
     * @param echostr
     * @return
     */
    @RequestMapping(method = {RequestMethod.GET})
    public void doGet(
            @RequestParam(value = "signature", required = false) String signature,
            @RequestParam(value = "timestamp", required = false) String timestamp,
            @RequestParam(value = "nonce", required = false) String nonce,
            @RequestParam(value = "echostr", required = false) String echostr,
            HttpServletResponse response) throws Exception {

        if (SignUtil.checkSignature(signature, timestamp, nonce)) {
            response.getOutputStream().println(echostr);
            System.out.println("微信验证成功");
        }
    }


}
  • 4.2 Señal Util
package com.bos.wechat;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
/**
 * @Author: tanghh
 *
 */
public class SignUtil {
    private static String token = "WinXinEBO";

    /**
     * 校验签名
     *
     * @param signature 签名
     * @param timestamp 时间戳
     * @param nonce     随机数
     * @return 布尔值
     */
    public static boolean checkSignature(String signature, String timestamp, String nonce) {
        String checktext = null;
        if (null != signature) {
            //对ToKen,timestamp,nonce 按字典排序
            String[] paramArr = new String[]{token, timestamp, nonce};
            Arrays.sort(paramArr);
            //将排序后的结果拼成一个字符串
            String content = paramArr[0].concat(paramArr[1]).concat(paramArr[2]);

            try {
                MessageDigest md = MessageDigest.getInstance("SHA-1");
                //对接后的字符串进行sha1加密
                byte[] digest = md.digest(content.toString().getBytes());
                checktext = byteToStr(digest);
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }
        //将加密后的字符串与signature进行对比
        return checktext != null ? checktext.equals(signature.toUpperCase()) : false;
    }

    /**
     * 将字节数组转化我16进制字符串
     *
     * @param byteArrays 字符数组
     * @return 字符串
     */
    private static String byteToStr(byte[] byteArrays) {
        String str = "";
        for (int i = 0; i < byteArrays.length; i++) {
            str += byteToHexStr(byteArrays[i]);
        }
        return str;
    }

    /**
     * 将字节转化为十六进制字符串
     *
     * @param myByte 字节
     * @return 字符串
     */
    private static String byteToHexStr(byte myByte) {
        char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
        char[] tampArr = new char[2];
        tampArr[0] = Digit[(myByte >>> 4) & 0X0F];
        tampArr[1] = Digit[myByte & 0X0F];
        String str = new String(tampArr);
        return str;
    }


}

Estas operaciones anteriormente pueden abrir la configuración de desarrollador. bueno

La segunda parte del evento para recibir empuje

Los desarrolladores han configurado la configuración anterior más adelante, se puede hacer un empuje recibir evento! Escribo en el WechatDeveloperController

método doPost se utiliza en el micro-canal para recibir mensajes enviados por el servidor

(1) Interfaz

package com.bos.controller.wechat;

import com.bos.qiWechat.WXBizMsgCrypt;
import com.bos.service.WeiService;
import com.bos.util.WeiXinParamesUtil;
import com.bos.wechat.SignUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;

/**
 * @Author tanghh
 * @Date 2020/4/3 10:12
 */
@RestController
@RequestMapping(value = "/wechat")
public class WechatDeveloperController {
    @Autowired
    private WeiService weiService;

    /**
     * 确认请求来自微信服务器
     *
     * @param signature 微信加密签
     * @param timestamp 时间戳
     * @param nonce     随机数
     * @param echostr   随机字符串
     * @param signature
     * @param timestamp
     * @param nonce
     * @param echostr
     * @return
     */
    @RequestMapping(method = {RequestMethod.GET})
    public void doGet(
            @RequestParam(value = "signature", required = false) String signature,
            @RequestParam(value = "timestamp", required = false) String timestamp,
            @RequestParam(value = "nonce", required = false) String nonce,
            @RequestParam(value = "echostr", required = false) String echostr,
            HttpServletResponse response) throws Exception {

        if (SignUtil.checkSignature(signature, timestamp, nonce)) {
            response.getOutputStream().println(echostr);
            System.out.println("微信验证成功");
        }
    }

    /**
     * 处理微信服务器发来的消息
     *
     * @return     
     */
    @RequestMapping(method = {RequestMethod.POST})
    public void dopost(HttpServletRequest request) {
        // 调用核心业务类接收消息、处理消息
        weiService.wechatReceiveEventChange(request);
    }

}

(2) clases de lógica de negocios 

Tenga en cuenta que: cuando he configurado una configuración desarrollador seleccionado anteriormente es expresamente modo, por lo que no lo hice en el momento de los mensajes de cifrado y descifrado de procesamiento enviados desde el servidor de micro-canales, sino directamente a la xml convertir en el mapa.

  /**
     * 微信开放平台--接收事件推送
     * 文档地址:https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html
     * @return
     */
    @Override
    public ResultData wechatReceiveEventChange(HttpServletRequest request) {
        ResultData resultData = new ResultData();
        try{
            //目前文档上记录的总共有6种事件类型
//            a.(扫描带参数二维码事件)
//            如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
//            如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。

            //1.解析微信发来的请求,解析xml字符串
            Map<String, String> requestMap = MessageUtil.xmlToMap(request);
            //获取返回的数据
            String event = requestMap.get("Event");
            String eventKey = requestMap.get("EventKey");
            String ticket = requestMap.get("Ticket");
           
        }catch (Exception e){
            resultData.setResult("false");
            resultData.setMessage("微信接收事件推送失败");
            logger.error("微信接收事件推送失败",e);
        }
        return resultData;
    }

(3) MessageUtil

   /**
     * 将xml转换成map集合
     * @param request
     * @return
     * @throws IOException
     * @throws DocumentException
     */
    public static Map<String, String> xmlToMap(HttpServletRequest request) throws IOException, DocumentException {
        Map<String, String> map = new HashMap<String, String>();
        //使用dom4j解析xml
        SAXReader reader = new SAXReader();
        //从request中获取输入流
        InputStream ins = request.getInputStream();
        Document doc = reader.read(ins);
        //获取根元素
        Element root = doc.getRootElement();
        //获取所有的节点
        List<Element> list = root.elements();
        for (Element e : list) {
            map.put(e.getName(), e.getText());
            System.out.println(e.getName() + "----->" + e.getText());
        }
        ins.close();   //关流
        return map;
    }

(4) imprimir los resultados:

resumen:

Por encima es la plataforma pública de micro-canales para los desarrolladores para configurar y recibir impulso de eventos, utilice el proceso si tiene alguna pregunta, comentarios sección de comentarios son bienvenidos, si eso es lo suficientemente bueno para la escritura pequeña, se puede dar el punto de una pequeña serie como Oh!

digresión:

Empecé también en la plataforma pública de micro-canales y el concepto de plataforma abierta WeChat vaga, ya que tanto los que tienen una gran cantidad de ubicaciones duplicadas, incluyendo las empresas de micro-canales y micro-letras, al igual que, cuando estaba haciendo código de exploración de negocios de micro-canales para iniciar la sesión y se encontró con el micro-carta códigos de exploración para firmar una lógica similar, pero el código de micro-canales de verificación paso barrido de inicio de sesión serán algunos más, como cuando tenemos una necesidad de desarrollo de la plataforma pública de micro-canales, debemos ser primero de su promotor, en este contexto, el número de servicios que el número de suscripción las más características, pero si usted desea utilizar algunas de la interfaz avanzada, tales como micro-canales de acceso código de exploración, es necesario registrarse WeChat cuenta de plataforma abierta.

Mientras WeChat plataforma abierta permite registro de la función de escaneo de código, sino un evento específico o para empujar a través de una plataforma pública de micro-canales.

Por ejemplo: Nuestro sistema genera un código de dos dimensiones, los usuarios utilizan los teléfonos móviles de código de exploración, micro carta entre bastidores a la información de retorno a los desarrolladores y usuarios preocupados por el número público, despegar el número público es a través de micro-canales empuje de sucesos de plataforma pública enviada a lograr, los desarrolladores necesitan parámetros configurar en el fondo de micro-canales plataforma pública, este punto de vista había dos zonas comunes.

 Citado de: https://www.zhihu.com/question/21074751

Micro-canales plataforma pública para el editor, WeChat plataforma abierta para la tecnología.

Micro-canales plataforma pública a hacer?

  • Escribir artículos artículos para el cabello
  • Y charlar con los fans
  • Menú de configuración
  • Abrir todo tipo de número autoridad pública (propio número única pública)
  • Al activar el modo desarrollador, desarrollar su propio número público
  • publicidad
  • Ver datos

 

WeChat plataforma abierta puede hacer?

  • APP desea utilizar micro carta de sesión / Compartir círculo de amigos, etc.
  • PC le gustaría usar el micro-sitio de inicio de sesión carta
  • Número de registro de plataformas de terceros públicos (todos los números de servicio público)
  • Inscribirse applets de plataformas de terceros (pequeños programas proporcionados plantilla)
  • Sin pública o applets de unión, para formar unionid

 

Publicado 73 artículos originales · ganado elogios 59 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/tangthh123/article/details/105288990
Recomendado
Clasificación