El mini programa WeChat uniapp + springboot implementa la notificación de servicio del mini programa

El mini programa WeChat uniapp + springboot implementa la notificación de servicio del mini programa

1. Lograr resultados

imagen-20230620165955759

2. Selección de plantilla y juicio sobre el tipo de campo.

2.1 Activar mensajes de suscripción y seleccionar una plantilla

Si hace clic en Mensaje de suscripción para habilitar la suscripción de mensajes, aparecerá la siguiente página. La plantilla que utilicé esta vez es 月卡到期提醒una plantilla. Simplemente haga clic para seleccionarla.

imagen-20230620170127969

2.2 Ver tipos de campos de plantilla

TemplateId se usará más adelante, cópielo, haga clic en detalles para ver la información de la plantilla

imagen-20230620171144528

imagen-20230620171518987

2.3 Restricciones de consulta sobre los tipos de campo correspondientes

Descripción de la restricción de contenido del valor del parámetro del mensaje de suscripción

Nuestros campos son Character_string.DATA, tiempo y cosa, solo necesitamos seguir sus reglas.

Categoría de parámetro Descripción de parámetros Restricciones de valores de parámetros ilustrar
cosa.DATOS cosa Dentro de 20 caracteres Se puede combinar con caracteres, números, letras o símbolos chinos.
número.DATOS número Número dentro de 32 dígitos Sólo se permiten números, decimales.
carta.DATOS carta Dentro de 32 caracteres Solo cartas
símbolo.DATOS símbolo Símbolo dentro de 5 dígitos solo puedo firmar
cadena_caracteres.DATOS cadena Números, letras o símbolos de hasta 32 dígitos Se puede combinar con números, letras o símbolos.
hora.DATOS tiempo Formato de hora de 24 horas (admite + año, mes y día), admite completar períodos de tiempo y los dos puntos de tiempo están conectados con el símbolo "~" Por ejemplo: 15:01 o: 15:01 del 1 de octubre de 2019
Datos de fecha fecha Formato de año, mes y día (admite tiempo de +24 horas), admite completar períodos de tiempo y los dos puntos de tiempo están conectados con el símbolo "~" Por ejemplo: 1 de octubre de 2019 o: 1 de octubre de 2019 15:01
cantidad.DATOS Cantidad 1 símbolo de moneda + números puros de hasta 10 dígitos, con decimales permitidos y "yuan" al final Decimales permitidos
número_teléfono.DATOS Teléfono Dentro de 17 dígitos, números, símbolos. Número de teléfono, por ejemplo: +86-0766-66888866
número_auto.DATOS placa Dentro de los 8 dígitos, el primer y el último dígito pueden ser caracteres chinos y el resto pueden ser letras o números. Número de matrícula: Guangdong A8Z888
nombre.DATOS Nombre Dentro de 10 caracteres chinos puros o dentro de 20 letras o símbolos puros El nombre chino debe tener un máximo de 10 caracteres chinos; el nombre puro en inglés debe tener un máximo de 20 letras; una mezcla de chino y letras se contará como un nombre chino, dentro de un máximo de 10 caracteres
frase.DATOS personaje chino Dentro de 5 caracteres chinos Dentro de 5 caracteres chinos puros, por ejemplo: Entrega en curso
enumeración.DATOS valor de enumeración Solo se pueden cargar valores de campo dentro del rango de valores de enumeración Llame a la interfaz para obtener el valor de enumeración de referencia.

3. vue front-end para autorización

Documentación oficial

Este código solo necesita colocarse en un método determinado y luego completar el template_id correspondiente.

            wx.requestSubscribeMessage({
              tmplIds: ['xxxx'],
              success (res) {
                console.log('接口调用成功的回调函数', res)
              },
              fail (err) {
                console.log('接口调用失败的回调函数', err)
              },
              complete () {
                console.log('接口调用结束的回调函数(调用成功、失败都会执行)')
              }
            })

Efecto de autorización

Después de hacer clic en Permitir, podemos enviar el mensaje al usuario (open_id)una vezSuscríbete a las noticias

imagen-20230620172918479

4. El backend envía mensajes de suscripción a los usuarios suscritos.

Documentación oficial

4.1 Interfaz

PUBLICAR https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN

4.2 Parámetros de solicitud:

Recuerde verificar si se trata de una plantilla de mini programa o una plantilla de cuenta pública.

imagen-20230620174311144

4.3 Escribir código de prueba

  • Lo principal es encapsular los datos de la plantilla y enviarlos a la interfaz.

  • No escribiré aquí el método para obtener accessToken.

    Para obtenerlo, simplemente llame a esta interfaz y reemplace APPID y APPSECRET con el suyo propio. El valor de retorno contiene accessToken.

    https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

package com.admin;

import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.admin.domain.Card;
import com.admin.mapper.CardMapper;
import com.admin.util.WxUtils;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author zr
 * @date 2023/6/20 15:23
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class ExpireNotifyTest {
    
    
    @Autowired
    private CardMapper cardMapper;
    @Test
    void name() {
    
    
        Card card = cardMapper.selectById(10);
        String today = DateUtil.formatDate(new Date());
        Map map = new HashMap();
        map.put("template_id","xxxx");
        map.put("page","");//点击详细跳转小程序页面,不填就没有查看详情
        map.put("touser","xxxx");//发送用户的open_id
        //跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
        map.put("miniprogram_state","developer");
        map.put("lang","zh_CN");
        Map data = new HashMap();
        Map character_string1 = new HashMap();
        character_string1.put("value",card.getCardNo());//15487517
        Map time2 = new HashMap();
        time2.put("value",card.getDoorValidEnd());//2023-06-20
        Map thing3 = new HashMap();
        thing3.put("value",card.getDoorValidEnd().compareTo(today)>0?"":"月卡已过期,请尽快延期");//月卡已过期,请尽快延期
        data.put("character_string1",character_string1);
        data.put("time2",time2);
        data.put("thing3",thing3);
        map.put("data",data);
        String accessToken = WxUtils.getXcxAccessToken();//获取小程序的accessToken
        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN";
        String sendUrl = url.replace("ACCESS_TOKEN", accessToken);
        String post = HttpUtil.post(sendUrl, JSONUtil.toJsonStr(map));
        System.out.println(post);
    }
}

imagen-20230620175646729

5. Prueba

Porque en el Capítulo 3, a nuestro backend se le permitió llamar directamente al método de prueba una vez.

imagen-20230620165955759

Supongo que te gusta

Origin blog.csdn.net/qq_31745863/article/details/131312733
Recomendado
Clasificación