/// <summary> /// 发送模板消息_已知ODS账户,需要获取ODS对应微信用户OpenID /// 需要转换消息内容json文本为WCTemplateAction /// </summary> /// <param name="strAccount">目标ODS账户</param> /// <param name="strTemplateID"></param> /// <param name="strURL"></param> /// <param name="strTemData"></param> /// <param name="pDlgGetOpenIDByAccount">通过ODSAccount获取OPenID委托</param> public void SendTemplateMessage(string strAccount, string strTemplateID, string strURL, string strTemData, DlgCommonString pDlgGetOpenIDByAccount) { this.ExecuteTryCatch(() => { //检查服务输入信息,并通过ods账户获取微信用户openid //由于,模板消息不能大量发送,因此并发性较低,因此,采用直连数据库获取信息 string strOpenID = CheckAccountInfo(strAccount, strTemplateID, strURL, strTemData, pDlgGetOpenIDByAccount); //Json转换为WCTemplateAction实体 WCTemplateAction pEntity = FromJsonToMatch(strTemData); //发送模板消息 EG.WeChat.Service.WeiXin.WeixinMessageSender.SendTemplateMessage <WCTemplateAction>(strOpenID, strTemplateID, System.Drawing.Color.AliceBlue, strURL, pEntity); }); }
/// <summary> /// /// </summary> /// <param name="jsonString"></param> /// <returns></returns> private WCTemplateAction FromJsonToMatch(string jsonString) { JObject jo = (JObject)JsonConvert.DeserializeObject(jsonString); WCTemplateAction entity = new WCTemplateAction(); string strValue = string.Empty; //使用反射根据对象获取属性集 //Type typeEntity = entity.GetType(); Type typeEntity = typeof(WCTemplateAction); PropertyInfo[] propertyInfos = typeEntity.GetProperties(); //为每个属性设置数据行中的相应值 foreach (PropertyInfo info in propertyInfos) { if (jo.Property(info.Name) == null || jo.Property(info.Name).ToString() == "") { continue; } strValue = jo[info.Name].ToString(); //info.SetValue(entity, propertyValue, null); info.SetValue(entity, new Senparc.Weixin.MP.AdvancedAPIs.TemplateMessage.TemplateDataItem(strValue), null); } return(entity); }
/// <summary> /// 初始化 /// </summary> public WCTemplateBindingA() { TemData = new WCTemplateAction(); }
/// <summary> /// 发送模板消息——已知OpenID参数 /// </summary> /// <param name="strOpenID">目标微信用户OpenID</param> /// <param name="strTemplateID"></param> /// <param name="strURL"></param> /// <param name="pTemAction"></param> public void SendTemplateMessage(string strOpenID, string strTemplateID, string strURL, WCTemplateAction pTemAction) { this.ExecuteTryCatch(() => { //检查输入信息 CheckOpenIDInfo(strOpenID, strTemplateID, strURL); //发送模板消息 EG.WeChat.Service.WeiXin.WeixinMessageSender.SendTemplateMessage <WCTemplateAction>(strOpenID, strTemplateID, System.Drawing.Color.AliceBlue, strURL, pTemAction); }); }