微信统一服务(小程序服务通知与微信公众号模板消息)发送

您所在的位置:网站首页 下发流程的通知怎么发送 微信统一服务(小程序服务通知与微信公众号模板消息)发送

微信统一服务(小程序服务通知与微信公众号模板消息)发送

2024-07-16 19:11:06| 来源: 网络整理| 查看: 265

微信新更新的sendUniformMessage接口也叫下发小程序和公众号统一的服务消息,可以支持小程序服务通知和微信公众号模板消息的发送,并且如果小程序与公众号相互关联还可根据通知进行页面的跳转交互,好吧 话不多说直接上干货:

官方文档链接地址:https://developers.weixin.qq.com/miniprogram/dev/api/sendUniformMessage.html

首先我们看官方文档的请求地址:

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

可以看到要发送统一服务便需要获取到与微信交换的access_token,跟微信打过交道的朋友就知道微信提供了根据appid 以及appsecret 获取token的接口 在这里就不多做解释了 当然你也可以使用现有的sdk 本人使用的是Magicodes.WeChat.MiniProgram这个是公司在githup开源的sdk之一  进行微信的基础信息注册如下所示:

namespace Magicodes.MiniProgram.Startup {     public class MiniProgramStartup     {         ///         ///     配置微信小程序         ///         public static void Config(ILogger logger, IIocManager iocManager, IConfigurationRoot config, ISettingManager settingManager)         {             //日志函数             void LogAction(string tag, string message)             {                 if (tag.Equals("error", StringComparison.CurrentCultureIgnoreCase))                     logger.Error(message);                 else                     logger.Debug(message);             }             var configInfo = new DefaultMiniProgramConfig             {                 MiniProgramAppId = config["WeChat:MiniProgram:AppId"],                 MiniProgramAppSecret = config["WeChat:MiniProgram:AppSecret"]             };             //从用户设置读取配置             if (Convert.ToBoolean(settingManager.GetSettingValue(AppSettings.WeChatMiniProgram.IsActive)))             {                 configInfo.MiniProgramAppId = settingManager.GetSettingValue(AppSettings.WeChatMiniProgram.AppId);                 configInfo.MiniProgramAppSecret = settingManager.GetSettingValue(AppSettings.WeChatMiniProgram.AppSecret);             }             MiniProgramSDKBuilder.Create()                 //设置日志记录                 .WithLoggerAction(LogAction).RegisterGetKeyFunc(() =>                 {                     var key = iocManager.Resolve()?.TenantId;                     if (key == null) return "0";

                    return key.ToString();                 }).RegisterGetConfigByKeyFunc(key => configInfo).Build();         }     } }

就可以使用接口获取token  :

             TokenApi tokenApi = new TokenApi()             var AccessToken = tokenApi.SafeGet()?.AccessToken;

然后就是入参的准备 仔细看一下官方文档会发现 小程序对于不良营销方面还是非常的严格  需要提供formid或者预支付id作为入参 所以在小程序的场景中应该尽量多存储一下formid和预支付id以供使用 

我们来看一下入参格式:

namespace Magicodes.App.Application.MiniProgram.Dto {     ///     /// 发送统一服务出参(根据微信格式定义)     ///     public class UniServiceOutput     {                 ///         /// 接收该消息的用户openid(小程序与公众号openid需根据场景区分)         ///         public string touser { get; set; }         ///         /// 小程序的模板         ///         public AppletTemplateInputDto weapp_template_msg { get; set; }         ///         /// 公众号的模板         ///         public PlatformTemplateInputDto mp_template_msg { get; set; }

        ///         /// 小程序模板入参         ///         public class AppletTemplateInputDto{             ///             /// 模板消息id             ///            public string template_id { get; set; }             ///             /// 小程序跳转页面(点击模板消息触发)             ///             public string page { get; set; }             ///             /// 表单id(可以是支付场景的预支付id)             ///             public string form_id { get; set; }             ///             /// 模板数据             ///             public Dictionary data { get; set; }             ///             /// 放大的关键词(为空无放大关键词)             ///             public string emphasis_keyword { get; set; }

        }

        ///         /// 公众号模板入参         ///         public class PlatformTemplateInputDto         {             ///             /// 公众号appid             ///             public string appid { get; set; }             ///             /// 模板消息id             ///             public string template_id { get; set; }             ///             /// 模板消息的跳转地址             ///             public string url { get; set; }             ///             /// 关联的小程序(如需要跳转小程序页面需传此值)             ///             public AssociatedMiniprogram miniprogram { get; set; }             ///             /// 公众号模板数据             ///             public Dictionary Data { get; set; }         }

        ///         /// 关联的小程序         ///         public class AssociatedMiniprogram         {             ///             /// 小程序appid             ///             public string appid { get; set; }             ///             /// 需要跳转的小程序地址             ///             public string pagepath { get; set; }         }     } }  

namespace Magicodes.App.Application.MiniProgram.Dto {

    ///     ///     模板消息的数据项类型     ///     public class TemplateDataItem     {        ///        ///         ///        ///        ///         public TemplateDataItem(string tvalue, string tcolor = "#173177")         {             value = tvalue;             color = tcolor;         }

        ///         ///     项目值         ///         public string value { get; set; }

        ///         ///     16进制颜色代码,如:#FF0000         ///         public string color { get; set; }     } }

这里一定注意的地方  1、参数要一致包括大小写和符号,2、touser指的平台的openid 3、有小程序的入参时默认先发小程序服务通知,没有小程序的入参有公众号入参才会发公众号模板消息

以上准备好了之后就可以进行发送了

        /// 处理并发送模板消息         ///         ///         private SendUniformMessageResult sendUniformMessage(UniServiceOutput input)         {                         TokenApi tokenApi = new TokenApi();             string result = null;             //根据sdk安全获取AcceessToken值             var AccessToken = tokenApi.SafeGet()?.AccessToken;             if (!string.IsNullOrEmpty(AccessToken))             {                 string url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=" + AccessToken;                 var wr = new WeChatApiWebRequestHelper();                 result = wr.HttpPost(url, JsonConvert.SerializeObject(input));                             }             else             {                 Logger.Debug("未获取到AccessToken");             }

            return JsonConvert.DeserializeObject(result);         }



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭