public void SendVoteTemplateMessage(long memberId, string title, string name, string content, string range, string beginTime, string endTime, string url) { var memberInfo = _memberRepository.FirstOrDefault(t => t.Id == memberId); if (memberInfo == null) { throw new UserFriendlyException("会员信息不存在!"); } if (string.IsNullOrEmpty(memberInfo.Openid)) { throw new UserFriendlyException("会员未绑定微信!"); } string openid = memberInfo.Openid; try { var appid = _settingManager.GetSettingValue(AppSettings.Weixin.AppId); var appsecret = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret); var noticeTemplateId = GetTemplateMessageId(_settingManager.GetSettingValue(AppSettings.TemplateKey.Vote)); if (!AccessTokenContainer.CheckRegistered(appid)) { AccessTokenContainer.Register(appid, appsecret); } var result = TemplateApi.SendTemplateMessage(appid, openid, new TemplateMessage_VoteNotice(title, name, content, range, beginTime, endTime, "点击查看详情", noticeTemplateId, url)); } catch (Exception ex) { _logger.Error("发送模板消息", ex); throw new UserFriendlyException(ex.Message, ex); } }
//标题委托房源通知 //private string OrderTemp = "51o9MS_hB0RCXdciqIlqRZ0C58g6LjtA3Fp2Ph7cFHw"; //private string OrderTemp = "TuGoUsJWShChs6dU9Lp7Kf3gg_Qi8AsBfk9dSpEMB4I"; /// <summary> /// 直约业主 /// </summary> //private string BespokeTemp = "AQa1EnpKlwIqX6DqIUw1jibkHYq9-Ft9NEUdFbavHdk"; //private string BespokeTemp = "TuGoUsJWShChs6dU9Lp7Kf3gg_Qi8AsBfk9dSpEMB4I"; public virtual SendTemplateMessageResult SendOrderStatusChangeMessag(string appId, string secret, string openId, string templateId, object temp, string url = "", string color = "#FF0000") { SendTemplateMessageResult result = new SendTemplateMessageResult(); int i = 0; do { try { i++; logger.Debug("第" + i + "次 发送..."); //Task.Factory.StartNew(() => Senparc.Weixin.MP.AdvancedAPIs.TemplateApi.SendTemplateMessageAsync(appId, openId, // templateId, url, temp)); result = TemplateApi.SendTemplateMessage(appId, openId, templateId, url, temp); //result = Senparc.Weixin.MP.AdvancedAPIs.TemplateApi.SendTemplateMessageAsync(appId, openId, templateId, url, temp).Result; if (result != null && result.msgid > 0) { break; } } catch (Exception ex) { logger.Debug("发送消息" + i + " :" + ex); } } while (i < 3); return(result); }
public void SendRefundOrderAcceptMessage(long memberId, long orderId, string amount, string productName, string orderNo) { var memberInfo = _memberRepository.FirstOrDefault(t => t.Id == memberId); if (memberInfo == null) { throw new UserFriendlyException("会员信息不存在!"); } if (string.IsNullOrEmpty(memberInfo.Openid)) { throw new UserFriendlyException("会员未绑定微信!"); } string openid = memberInfo.Openid; try { var appid = _settingManager.GetSettingValue(AppSettings.Weixin.AppId); var appsecret = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret); var host = _settingManager.GetSettingValue(AppSettings.Wuye.Host); var noticeTemplateId = GetTemplateMessageId(_settingManager.GetSettingValue(AppSettings.TemplateKey.RefundOrderAccept)); if (!AccessTokenContainer.CheckRegistered(appid)) { AccessTokenContainer.Register(appid, appsecret); } string url = host + "/weixin/mall/refund/view?id=" + orderId; var result = TemplateApi.SendTemplateMessage(appid, openid, new TemplateMessage_RefundOrderAccept(productName, amount, noticeTemplateId, url)); } catch (Exception ex) { _logger.Error("发送模板消息", ex); } }
public void SendWorkOrderTemplateMessage(long memberId, string billCode, string title, string progress, string person) { var memberInfo = _memberRepository.FirstOrDefault(t => t.Id == memberId); if (memberInfo == null) { throw new UserFriendlyException("会员信息不存在!"); } if (string.IsNullOrEmpty(memberInfo.Openid)) { throw new UserFriendlyException("会员未绑定微信!"); } string openid = memberInfo.Openid; var host = _settingManager.GetSettingValue(AppSettings.Wuye.Host); string url = host.TrimEnd('/') + "/weixin/linkbill/view?EType=2&EDType=3&BillCode=" + billCode; try { var appid = _settingManager.GetSettingValue(AppSettings.Weixin.AppId); var appsecret = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret); var workOrderTemplateId = GetTemplateMessageId(_settingManager.GetSettingValue(AppSettings.TemplateKey.WorkOrder)); if (!AccessTokenContainer.CheckRegistered(appid)) { AccessTokenContainer.Register(appid, appsecret); } var result = TemplateApi.SendTemplateMessage(appid, openid, new TemplateMessage_WorkOrderNotice(title, billCode, progress, person, "点击查看详情", workOrderTemplateId, url)); } catch (Exception ex) { _logger.Error("发送模板消息", ex); throw new UserFriendlyException(ex.Message, ex); } }
/// <summary> /// 发送信息 /// </summary> public bool Send(string open_id, string template_id, string link_url, object data) { try { if (!AccessTokenContainer.CheckRegistered(appId)) //检查是否已经注册 { AccessTokenContainer.Register(appId, appSecret); //如果没有注册则进行注册 } string access_token = AccessTokenContainer.GetAccessTokenResult(appId).access_token; //AccessToken SendTemplateMessageResult sendResult = TemplateApi.SendTemplateMessage(access_token, open_id, template_id, link_url, data); //发送成功 if (sendResult.errcode.ToString() == "请求成功") { LogHelper.WriteDebugLog("[wx push msg]:" + open_id + " send success"); return(true); } else { LogHelper.WriteDebugLog("[wx push msg]:" + open_id + " send failed"); return(false); } } catch (Exception ex) { LogHelper.WriteDebugLog("[wx push msg]:" + ex.Message); return(false); } }
public void SendJoinGrouponMessage(long memberId, long grouponOrderId, string productName, decimal price, string leader, int memberCount, DateTime expireTime) { var memberInfo = _memberRepository.FirstOrDefault(t => t.Id == memberId); if (memberInfo == null) { throw new UserFriendlyException("会员信息不存在!"); } if (string.IsNullOrEmpty(memberInfo.Openid)) { throw new UserFriendlyException("会员未绑定微信!"); } string openid = memberInfo.Openid; try { var appid = _settingManager.GetSettingValue(AppSettings.Weixin.AppId); var appsecret = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret); var host = _settingManager.GetSettingValue(AppSettings.Wuye.Host); var noticeTemplateId = GetTemplateMessageId(_settingManager.GetSettingValue(AppSettings.TemplateKey.JoinGroupon)); if (!AccessTokenContainer.CheckRegistered(appid)) { AccessTokenContainer.Register(appid, appsecret); } string url = host + "/weixin/mall/groupon/order?id=" + grouponOrderId; var result = TemplateApi.SendTemplateMessage(appid, openid, new TemplateMessage_JoinGroupon(productName, price, leader, memberCount, expireTime, noticeTemplateId, url)); } catch (Exception ex) { _logger.Error("发送模板消息", ex); } }
/// <summary> /// 使用微信模板发送固定消息 /// </summary> /// <param name="accessToken"></param> /// <param name="openId">接收信息者的微信openId</param> /// <param name="templateId">选择模板</param> /// <param name="data"> /// new /// { /// first = new { color = "#f0f0f1", value = "first" }, /// reason = new { color = "#0fe123", value = "reason" }, /// refund = new { color = "#c321f0", value = 0.101 }, /// Remark = new { color = "#3f333", value = "备注" } /// } /// </param> /// <param name="url">微信链接地址</param> /// <returns>返回参数</returns> public static WeiXinResult SendTemplateMessage(string accessToken, string openId, string templateId, object data, string url = "") { var result = new WeiXinResult(); try { Log4Helper.WriteErrLog(String.Format("微信模板发送 WeiXin准备发送:openId:{0},templateId{1},data:{2}", openId, templateId, data.ToJson()), null); var template = TemplateApi.SendTemplateMessage(accessToken, openId, templateId, url, data); result.ErrCode = template.errcode.ToString(); result.ErrMsg = template.errmsg; } catch (ErrorJsonResultException ex) { result.IsErr = true; result.ErrCode = ex.JsonResult.errcode.ToString(); result.ErrMsg = ex.JsonResult.errmsg; Log4Helper.WriteErrLog("微信模板发送 发送异常", ex); } catch (Exception ex) { result.IsErr = true; result.ErrMsg = ex.Message; Log4Helper.WriteErrLog("微信模板发送 发送异常", ex); } return(result); }
/// <summary> /// 发送推送消息 /// </summary> /// <param name="model"></param> /// <param name="userId"></param> public async Task OrderPushRemind(OrderPushModel model, string userId) { var userEntity = await _userRepository.GetForIdAsync(userId); var weiXinUser = await _weiXinUserRepository.GetAsync(userEntity.UnionId); try { var templateData = new { first = new TemplateDataItem("您好,您的订单" + model.Type), keyword1 = new TemplateDataItem(model.Number), keyword2 = new TemplateDataItem(model.CreateTime.ToString("yyyy年MM月dd日 HH:mm:ss")), keyword3 = new TemplateDataItem(model.ReceiverName), keyword4 = new TemplateDataItem(model.PaymentPrice.ToString()), remark = new TemplateDataItem(">>点击查看详情<<", "#FF0000") }; var miniProgram = new TempleteModel_MiniProgram() { appid = GuoGuoCommunity_WxOpenAppId, pagepath = "pages/orderDetail/orderDetail?id=" + model.Id }; TemplateApi.SendTemplateMessage(AppId, weiXinUser?.OpenId, OrderTemplateId, null, templateData, miniProgram); } catch (Exception) { } }
/// <summary> /// 退票申请 /// </summary> /// <param name="out_trade_no"></param> /// <returns></returns> private bool sendReturnTicketMessage(string out_trade_no) { PaymentDao pDao = new PaymentDao(); try { PaymentDataResults paymentDataResults = pDao.getPayData(out_trade_no); double refundFee = Math.Round(Convert.ToDouble(paymentDataResults.billPrice) * 0.8, 2); WxJsonResult wxJsonResult = TemplateApi.SendTemplateMessage(Global.APPID, paymentDataResults.openId, Global.ReturnTicketTemplate, new { keyword1 = new { value = paymentDataResults.billid }, keyword2 = new { value = refundFee }, keyword3 = new { value = paymentDataResults.refundTime }, keyword4 = new { value = "退票申请中,等待商家处理" }, keyword5 = new { value = "退款说明" } }, paymentDataResults.formId, "/pages/orderList/orderList?num=1", "keyword3.DATA"); return(true); } catch (Exception ex) { return(false); } }
public SendTemplateMessageResult SendTemplateMessage(SendTemplateMessageDto dto) { dto.AccessToken = GetAccessToken(MPConfig.AppId, MPConfig.AppSecret); var result = TemplateApi.SendTemplateMessage(dto.AccessToken, dto); return(result); }
// GET: CoachTest public async Task <ActionResult> Index() { if (Session["OpenId"] != null) { ViewBag.Me = Newtonsoft.Json.JsonConvert.SerializeObject(await base.Me()); if (ViewBag.Me == null || ViewBag.Me == "null") { Response.Redirect("Coash/BindingUser/?opid=" + Session["OpenId"] + "&url=http://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLmqP7fEiaQdThp5Q9KH0TZEvoAut4dex2zicNNsa7iccRfMcJzbw34jQoATDLZ2j4OibErMpGriboOIsg/0&name=我是2017"); return(View()); } else { var templateId = Comm.WeiXin.NoticeTemplates.TestOrderPayTemplate; var data = new { first = new TemplateDataItem("老师登录成功"), keyword1 = new TemplateDataItem("飞翔的企鹅"), keyword2 = new TemplateDataItem("123456789"), keyword3 = new TemplateDataItem("1000", "#ff0000"),//显示为红色 keyword4 = new TemplateDataItem("购买课时"), remark = new TemplateDataItem("详细信息,查看(http://www.baidu.com)!") }; var result = TemplateApi.SendTemplateMessage(base.AppId, Session["OpenId"].ToString(), templateId, "http://www.baidu.com", data); Response.Redirect("Coash/Index"); return(View()); } } ViewBag.Title = "Home Page"; var jssdkUiPackage = Senparc.Weixin.MP.Helpers.JSSDKHelper.GetJsSdkUiPackage(base.AppId, base.AppSecret, Request.Url.AbsoluteUri); return(View(jssdkUiPackage)); }
public Boolean SendTemplateMsg(BillDataModel billData) { var accessToken = AccessTokenContainer.GetAccessToken(Config.APPID); //由于源代码采用分支管理,这里将不再编写兼容所有模板消息的代码 var templateId = "KpddG3wzOIVa5WOqFIYO4rBQL7knr0UJltcUWUqokAc"; var data = new { first = new TemplateDataItem(""), keyword1 = new TemplateDataItem(billData.ACC_MONEY), keyword2 = new TemplateDataItem(billData.ACC_WATER), remark = new TemplateDataItem(billData.BILLING_MONTH.ToString()) }; string url = ""; SendTemplateMessageResult result = TemplateApi.SendTemplateMessage(Config.APPID, billData.openID, templateId, url, data); if (result.errmsg == "ok") { return(true); } else { return(false); } }
/// <summary> /// 待支付 /// </summary> /// <param name="out_trade_no"></param> /// <returns></returns> private bool sendToBePayMessage(string out_trade_no) { PaymentDao pDao = new PaymentDao(); try { PaymentDataResults paymentDataResults = pDao.getPayData(out_trade_no); WxJsonResult wxJsonResult = TemplateApi.SendTemplateMessage(Global.APPID, paymentDataResults.openId, Global.ToBePayTemplate, new { keyword1 = new { value = paymentDataResults.billid }, keyword2 = new { value = paymentDataResults.billPrice }, keyword3 = new { value = paymentDataResults.billValue }, keyword4 = new { value = paymentDataResults.bookingTime }, keyword5 = new { value = "待支付" }, keyword6 = new { value = "船票已预订,请在10分钟内付款,否则船票会被回收!" } }, paymentDataResults.formId, "/pages/orderList/orderList?num=0", "keyword3.DATA"); return(true); } catch (Exception ex) { return(false); } }
public void SendTemplateMessageTestForBook() { var _appId = "wx03ea2f7f93b7cf96"; var _appSecret = "609bd314b63811293cec1d9adb84e699"; //Senparc.Weixin.MP.Containers.AccessTokenContainer.Register(_appId, _appSecret); var accessToken = AccessTokenContainer.TryGetAccessToken(_appId, _appSecret); var openId = "ozLW4wHYTcApj55HIUT0o8Qdet6U"; //消息目标用户的OpenId var templateId = "7VMaAiEXaI9WabE8z5_oRTtUjimclgeLc6XuwgIw__o"; //7VMaAiEXaI9WabE8z5_oRTtUjimclgeLc6XuwgIw__o templateId = "jGWhXy1FpVQP2GaEki1ReAQAcbE6KyWEp5PmiNlnvhk"; var data = new { first = new TemplateDataItem("您的订单已经支付"), keyword1 = new TemplateDataItem("飞翔的企鹅"), keyword2 = new TemplateDataItem("123456789"), keyword3 = new TemplateDataItem("1000", "#ff0000"),//显示为红色 keyword4 = new TemplateDataItem("购买课时"), remark = new TemplateDataItem("更详细信息,官方网站(http://www.baidu.com)查看!") }; var result = TemplateApi.SendTemplateMessage(_appId, openId, templateId, "http://www.cnblogs.com", data); Assert.AreEqual(Senparc.Weixin.ReturnCode.请求成功, result.errcode); }
public static void OwnerCertificationRecordPushRemind(OwnerCertificationRecordPushModel model) { try { var templateData = new { first = new TemplateDataItem("用户认证通知"), keyword1 = new TemplateDataItem(DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss\r\n")), keyword2 = new TemplateDataItem(model.Status), keyword3 = new TemplateDataItem(model.Message), remark = new TemplateDataItem("详情", "#FF0000") }; var miniProgram = new TempleteModel_MiniProgram() { appid = GuoGuoCommunity_WxOpenAppId, pagepath = "pages/my/my" }; TemplateApi.SendTemplateMessage(AppId, model.OpenId, OwnerCertificationRecordTemplateId, null, templateData, miniProgram); } catch (Exception) { } }
public static void SendTemplateMessage(string openId, string templateId, object data, string url = null) { WxBaseConfigApp app = new WxBaseConfigApp(); WxBaseConfigEntity weixin = app.GetDefaultConfig(); AccessTokenResult token = AccessTokenContainer.GetAccessTokenResult(weixin.AppId, true); if (token.errcode != Senparc.Weixin.ReturnCode.请求成功) { throw new Exception(token.errmsg); } if (!string.IsNullOrEmpty(templateId)) { //获取AccessToken try { var result = TemplateApi.SendTemplateMessage(token.access_token, openId, templateId, url, data); //new BLL.wx_message_template_sendlog().AddLog(AppId, templateId, temp_title, openId, string.Format("【微信公众号发送模板消息接口调用】返回参数:errcode:{0},erromsg:{1},misgid:{2}", result.errcode, result.errmsg, result.msgid)); } catch (Exception ex) { throw new Exception("微信模板消息:" + ex.Message); //new BLL.wx_message_template_sendlog().AddLog(AppId, templateId, temp_title, openId, string.Format("【微信公众号发送模板消息接口调用】错误:{0}", ex.Message)); } } }
protected void Button1_Click(object sender, EventArgs e) { //string json = @"{ // { // 'value':'支持成功', // 'color':'#173177' // } // } // 订单号: { // { // 'value':'order2020', // 'color':'#173177' // } // } // 订单类型: { // { // 'value':'活动', // 'color':'#173177' // } // } // 商品名称: { // { // 'value':'支持队员', // 'color':'#173177' // } // } // 消费金额: { // { // 'value':'100.00元', // 'color':'#173177' // } // } // 消费时间: { // { // 'value':'2020-1-30', // 'color':'#173177' // } // } { // { // 'value':'感谢您的支持!', // 'color':'#173177' // } // }"; var accessToken = AccessTokenContainer.GetAccessToken("wx9511a139072c5d5e"); var testData = new //TestTemplateData() { first = new TemplateDataItem("支持成功!"), keyword1 = new TemplateDataItem("order2020"), keyword2 = new TemplateDataItem("活动"), keyword3 = new TemplateDataItem("支持队员"), keyword4 = new TemplateDataItem("100.00元"), keyword5 = new TemplateDataItem("2020-1-30"), remark = new TemplateDataItem("感谢您的支持!") }; var result = TemplateApi.SendTemplateMessage(accessToken, "ou1fM1O00kUsfw8j2qyIoXXn1G8M", "K2WtNl3zArzx3KsKGT2e3Ph7Fud64oIhMHC4XvUFoVA", "#FF0000", "", testData); Response.Write(result.errcode); }
/// <summary> /// /// </summary> /// <param name="openId">用户openId </param> /// <param name="templateId">模版id</param> /// <param name="linkUrl">点击详情后跳转后的链接地址,为空则不跳转 </param> public static ErrorMessage SendMsg(WxMsgModel model, Dictionary <string, string> param) { ErrorMessage errorMessage = new ErrorMessage(ErrorMessage.ExceptionCode, "消息发送失败"); try { //校验参数 if (string.IsNullOrWhiteSpace(model.OpenId)) { errorMessage.errmsg = "接收消息的账号不能为空。"; return(errorMessage); } if (string.IsNullOrWhiteSpace(model.TemplateId)) { errorMessage.errmsg = "模板id不能为空。"; return(errorMessage); } if (string.IsNullOrWhiteSpace(Config.APPID) && string.IsNullOrWhiteSpace(Config.APPSECRET)) { errorMessage.errmsg = "微信appid,AppSecret不能为空"; return(errorMessage); } //string appId, appSecret; //appId = "wx65aceb537005fb0d"; //appSecret = "a7eddd99f2e1ab7acb1fe6aa09152941"; //获取许可令牌 AccessToken token = AccessToken.Get(Config.APPID, Config.APPSECRET); if (token == null) { errorMessage.errmsg = "获取Token失败。"; } Dictionary <string, TemplateDataItem> templateData = new Dictionary <string, TemplateDataItem>(); foreach (var item in param.Keys) { templateData.Add(item, new TemplateDataItem(param[item])); } SendTemplateMessageResult sendResult = TemplateApi.SendTemplateMessage(token.access_token, model.OpenId, model.TemplateId, "#ccc", model.LinkUrl, templateData); //发送成功 if (sendResult.errcode.ToString() == "请求成功") { //... } else { //Logger.Error(sendResult.errmsg); } errorMessage.errcode = 0; errorMessage.errmsg = "成功"; return(errorMessage); } catch (Exception ex) { return(errorMessage); } }
public HttpResult PayNotifyUrl() { try { ResponseHandler resHandler = new ResponseHandler(HttpContext); string return_code = resHandler.GetParameter("return_code"); string return_msg = resHandler.GetParameter("return_msg"); resHandler.SetKey(TenPayV3Info.Key); //验证请求是否从微信发过来(安全) if (resHandler.IsTenpaySign() && return_code.ToUpper() == "SUCCESS") { //正确的订单处理 //直到这里,才能认为交易真正成功了,可以进行数据库操作,但是别忘了返回规定格式的消息! } else { //错误的订单处理 } /* 这里可以进行订单处理的逻辑 */ //发送支付成功的模板消息 try { string appId = Config.SenparcWeixinSetting.TenPayV3_AppId;//与微信公众账号后台的AppId设置保持一致,区分大小写。 string openId = resHandler.GetParameter("openid"); var templateData = new Weixin_PaySuccess("https://yufaquan.cn", "购买商品", "状态:" + return_code); Senparc.Weixin.WeixinTrace.SendCustomLog("支付成功模板消息参数", appId + " , " + openId); var result = TemplateApi.SendTemplateMessage(appId, openId, templateData); } catch (Exception ex) { Senparc.Weixin.WeixinTrace.SendCustomLog("支付成功模板消息", ex.ToString()); } #region 记录日志 #endregion var res = new { return_code, return_msg }; return(HttpResult.Success(res)); } catch (Exception ex) { WeixinTrace.WeixinExceptionLog(new WeixinException(ex.Message, ex)); throw; } }
public void SendMessageByTemplate(string appid, string appsecret, string openId, string templateId, string topcolor, string url, object data) { if (!string.IsNullOrWhiteSpace(templateId)) { string str = AccessTokenContainer.TryGetToken(appid, appsecret, false); TemplateApi.SendTemplateMessage(str, openId, templateId, topcolor, url, data, 10000); } }
/// <summary> /// 发送模板消息 /// </summary> /// <param name="accessTokenOrAppId"></param> /// <param name="openId"></param> /// <param name="templateId"></param> /// <param name="topcolor"></param> /// <param name="url"></param> /// <param name="data"></param> /// <returns></returns> public void SendMessageByTemplate(string appid, string appsecret, string openId, string templateId, string topcolor, string url, object data) { if (!string.IsNullOrWhiteSpace(templateId)) { var accessToken = this.TryGetToken(appid, appsecret); TemplateApi.SendTemplateMessage(accessToken, openId, templateId, topcolor, url, data); } }
public bool SendOrderNotice([FromBody] OrderInfo info) { try { string shop_appid = WeixinConfig.AppID;//公众账号ID //string access_token = WeixinConfig.TokenHelper.GetToken(); string access_token = AccessTokenContainer.TryGetAccessToken(WeixinConfig.AppID, WeixinConfig.AppSecret, true); string openid = info.openid; string template_id = System.Configuration.ConfigurationManager.AppSettings["SpollingSendPlaceOrderNotice"];//模板ID 正式号模板ID var domain = System.Configuration.ConfigurationManager.AppSettings["Domain"]; string redirect_uri = "http://" + domain + "/weixin/seeorderdetail?orderid=" + info.orderId; string url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state={2}"; url = string.Format(url, shop_appid, HttpUtility.UrlEncode(redirect_uri), "wanlixin"); string first = "尊敬的会员,您的订单已支付成功!"; string keyword1 = info.shopName.ToString(); //门店名称 string keyword2 = info.orderId.ToString(); //订单编号 string keyword3 = info.num.ToString(); //订单数量 string keyword4 = info.price.ToString(); //销售金额 string remark = "感谢您的信任,欢迎您再次光临!"; Tuple <string, string, Color>[] data = new Tuple <string, string, Color>[] { new Tuple <string, string, Color>("first", first, Color.Black), new Tuple <string, string, Color>("keyword1", keyword1, Color.Black), new Tuple <string, string, Color>("keyword2", keyword2, Color.Black), new Tuple <string, string, Color>("keyword3", keyword3, Color.Black), new Tuple <string, string, Color>("keyword4", keyword4, Color.Black), new Tuple <string, string, Color>("remark", remark, Color.Black) }; IDictionary <string, object> dataDict = new Dictionary <string, object>(); foreach (Tuple <string, string, Color> item in data) { dataDict.Add(item.Item1, new { value = item.Item2, color = GetColorString(item.Item3) }); } SendTemplateMessageResult result = TemplateApi.SendTemplateMessage(access_token, openid, template_id, url, dataDict); Tools.MessBox(result.errcode + "|" + result.errmsg, "//Log//SendOrderNotice//return"); if (result.errmsg == "ok") { return(true); } else { return(false); } } catch (Exception ex) { Tools.MessBox(ex.ToString(), "//Log//SendOrderNotice"); return(false); } }
///// <summary> ///// 发送模板消息 ///// </summary> ///// <param name="openId"></param> ///// <param name="templateId"></param> ///// <param name="detailUrl"></param> ///// <param name="modelDataMap"></param> //public void SendModelMessage(string openId, string templateId, List<(string name, string value)> modelDataMap, string detailUrl) //{ // TemplateApi.SendTemplateMessageAsync(this.Config.AppId, openId, templateId, // ) //} /// <summary> /// 发送模板消息 /// </summary> /// <param name="openId"></param> /// <param name="templateId"></param> /// <param name="modelData">一个匿名对象,其中的属性作为模板参数,如下所示: /// new /// { /// nickname = new TemplateDataItem("daiwei"), /// date = new TemplateDataItem("2018-06-12"), /// mobile = new TemplateDataItem("13610239726"), /// money = new TemplateDataItem("5.00") /// }</param> /// <param name="detailUrl"></param> public void SendTemplateMessage(string openId, string templateId, object modelData, string detailUrl) { //var obj = new ExpandoObject() as IDictionary<string, Object>; //foreach (var pair in modelData) //{ // obj[pair.Key] = new TemplateDataItem(pair.Value); //} //TemplateApi.SendTemplateMessage(this.AccessToken, openId, ) TemplateApi.SendTemplateMessage(this.Config.AppId, openId, templateId, detailUrl, modelData); }
/* 参数范例: * * public class TemplateData_SensitiveAction * { * public TemplateDataItem first { get; set; } * public TemplateDataItem time { get; set; } * public TemplateDataItem sec_type { get; set; } * public TemplateDataItem remark { get; set; } * } * 这里的字段名,需要与 模板的内容对应,比如:{{first.DATA}},则这里对应为 first。 * * var data = new TemplateData_SensitiveAction() * { * first = new TemplateDataItem("您好,您的英皇账户,有一条敏感操作确认消息。"), * time = new TemplateDataItem(DateTime.Now.ToString()), * sec_type = new TemplateDataItem("资金转移超过每日上限。"), * remark = new TemplateDataItem("更详细信息,请点击进行查看!") * }; * */ /// <summary> /// 发送模板消息 /// </summary> /// <typeparam name="TData">匹配模板的Class的类型,成员需为TemplateDataItem。</typeparam> /// <param name="openId">OPENID</param> /// <param name="templateId">模板ID</param> /// <param name="topcolor">顶部颜色</param> /// <param name="url">点击后要打开的网址</param> /// <param name="data">配模板的Class</param> public static void SendTemplateMessage <TData>(string openId, string templateId, Color topcolor, string url, TData data) { ExecuteTryCatch(() => { var accessToken = GetAccessToken(); var strColor = WebColorConvertor.ConvertToString(topcolor); var result = TemplateApi.SendTemplateMessage <TData>(accessToken, openId, templateId, strColor, url, data); LogErrorInfo(result, openId, "SendTemplateMessage"); }); }
public void SendTemplateMessageTest() { var openId = "onh7q0DGM1dctSDbdByIHvX4imxA"; var data = new WxOpenTemplateMessage_PaySuccessNotice( "在线购买", SystemTime.Now,"图书众筹","1234567890", 100, "400-9939-858","http://sdk.senparc.weixin.com"); var result = TemplateApi.SendTemplateMessage(_wxOpenAppId, openId, data.TemplateId, data, "formSubmit", "pages/websocket", "keyword3"); Assert.AreEqual(ReturnCode.请求成功,result.errcode); }
/// <summary> /// 发送消息 /// </summary> /// <param name="weixinAppId">小程序AppID</param> /// <param name="appId">开发者ID(微信公众号)</param> /// <param name="openId">接收者ID(微信公众号)</param> /// <param name="pagepath">小程序跳转链接</param> /// <param name="templateId">消息模板</param> /// <param name="url"></param> /// <param name="title">标题</param> /// <param name="_first"></param> /// <param name="_remark"></param> /// <param name="_params">参数替换</param> /// <returns></returns> public string Send(string weixinAppId, string appId, string openId, string pagepath, string templateId, string url, string title, string _first, string _remark, string[] _params) { TempleteModel_MiniProgram mini; SendTemplateMessageResult result = new SendTemplateMessageResult(); var data = new WeiXinTemplate(templateId, "", title, _first, _remark, _params); mini = new TempleteModel_MiniProgram(); mini.appid = weixinAppId; mini.pagepath = pagepath; result = TemplateApi.SendTemplateMessage(appId, openId, data); return(JsonConvert.SerializeObject(result)); }
/// <summary>发送微信模板消息</summary> public static void SendMessage(string openId, string templateId, string url, object data) { try { TemplateApi.SendTemplateMessage(AccesToken, openId, templateId, url, data); } catch (Exception ex) { string txt = string.Format("微信发射失败:{0}", ex.Message); Logger.LogToDb(txt, LogLevel.Error); } }
/// <summary> /// 购买通知 /// </summary> /// <param name="title"></param> /// <param name="remark"></param> public void BuySuccess(string title, string remark) { var templateId = Comm.WeiXin.NoticeTemplates.BuySuccessTemplate; var data = new { //first = new TemplateDataItem("支付成功"), keyword1 = new TemplateDataItem(title), remark = new TemplateDataItem(remark) }; var result = TemplateApi.SendTemplateMessage(_appId, _openId, templateId, "http://m.yiyust.com/student/index", data); }
public string PushMsg() { //模板ID 0AI1R_RWcY-gxfU57El-r7iOr8-aQOgCyTgrOiOqWp0 开票提醒 //开发者ID(AppID) wx37f7ad5ea8d57ffa //开发者密码(AppSecret) d3049416a70dcc631c0bd1f8f4ecfdba //我的 openID oXhYxs6xEvWnJR0sqvhkUh9JUHoA //WeChatApiCommonService.GetWeChatAccessToken(); //根据appId判断获取 //if (!AccessTokenContainer.CheckRegistered(ApiConfigConst.WeChatAppID)) //检查是否已经注册 //{ // AccessTokenContainer.Register(ApiConfigConst.WeChatAppID, ApiConfigConst.WeChatAppSecret); //如果没有注册则进行注册 //} //string access_token = AccessTokenContainer.GetAccessTokenResult(ApiConfigConst.WeChatAppID).access_token; //AccessToken string access_token = "15_eJHYeCbl20cD0KLsgSHun0Z9vykSZmXpu8UdaIQ7LNd-ausM6guuGjg3ui12J6aKyCl8cvyaT1xVsIJpfQHd9hUCKMVRJbaolMsTrbfCZSMjM0OkBEMRz8Cv6kSNt9U1NBAlAjqqs2Sf5EmGVTAiAGANLS"; string openId = "oXhYxs6xEvWnJR0sqvhkUh9JUHoA"; //用户openId string templateId = "0AI1R_RWcY-gxfU57El-r7iOr8-aQOgCyTgrOiOqWp0"; //模版id string linkUrl = "http://www.baidu.com"; //点击详情后跳转后的链接地址,为空则不跳转 //您好,您的发票已经开具成功。 //发票号码:NO9000001 //开票日期:2017 - 06 - 18 //开票金额:890.00 //点击查看详情 //为模版中的各属性赋值 var templateData = new ProductTemplateData() { first = new TemplateDataItem("您好,您的发票\r\n已经开具成功。", "#000000"), keyword1 = new TemplateDataItem("NO9000001", "#000000"), keyword2 = new TemplateDataItem("2017 - 06 - 18", "#000000"), keyword3 = new TemplateDataItem("890.00", "#000000"), remark = new TemplateDataItem("感谢您的光临~", "#000000") }; SendTemplateMessageResult sendResult = TemplateApi.SendTemplateMessage(access_token, openId, templateId, linkUrl, templateData); //发送成功 if (sendResult.errcode.ToString() == "请求成功") { //... } else { //Response.Write("出现错误:" + sendResult.errmsg); } return(""); }
public static void SendTemplate(List <Guid?> userIds, string templateId, string linkUrl) { QueryOpenId(userIds).ForEach(openId => { var templateData = new TemplateData() { Title = new TemplateDataItem("您好,您的订单已支付成功!", "#000000"), Place = new TemplateDataItem("广州-北京", "#000000"), Price = new TemplateDataItem("100元", "#000000"), Time = new TemplateDataItem("2111-11-11 11:11:11", "#000000"), Remark = new TemplateDataItem("感谢您的购买~", "#000000") }; SendTemplateMessageResult sendResult = TemplateApi.SendTemplateMessage(AppId, openId, templateId, linkUrl, templateData, null); }); }