/// <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 SendTemplateMessageResult SendTemplateMessage(SendTemplateMessageDto dto) { dto.AccessToken = GetAccessToken(MPConfig.AppId, MPConfig.AppSecret); var result = TemplateApi.SendTemplateMessage(dto.AccessToken, dto); return(result); }
public WxJsonResult Addtemplate(AddtemplateDto dto) { dto.AccessToken = GetAccessToken(MPConfig.AppId, MPConfig.AppSecret); var result = TemplateApi.Addtemplate(dto.AccessToken, dto.template_id); 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 WxJsonResult GetIndustry(BaseMPDto dto) { dto.AccessToken = GetAccessToken(MPConfig.AppId, MPConfig.AppSecret); var result = TemplateApi.GetIndustry(dto.AccessToken); return(result); }
private static void Send(MessageTemplate template, SiteSettings settings, MemberInfo user, bool sendFirst, MailMessage email, string innerSubject, string innerMessage, string smsMessage, TemplateMessage templateMessage) { if (template.SendEmail && (email != null)) { if (sendFirst) { EmailSender sender = CreateEmailSender(settings); if ((sender == null) || !SendMail(email, sender)) { Emails.EnqueuEmail(email, settings); } } else { Emails.EnqueuEmail(email, settings); } } bool sendSMS = template.SendSMS; bool sendInnerMessage = template.SendInnerMessage; if ((template.SendWeixin && !string.IsNullOrWhiteSpace(template.WeixinTemplateId)) && (templateMessage != null)) { TemplateApi.SendMessage(TokenApi.GetToken_Message(settings.WeixinAppId, settings.WeixinAppSecret), templateMessage); } }
//标题委托房源通知 //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); }
/// <summary> /// 发送审核通知 /// </summary> /// <param name="OpenId"></param> /// <param name="host"></param> /// <param name="currentName"></param> /// <returns></returns> public async Task SendCheckMesssage(string OpenId, string host, string currentName) { try { string templateId = await _wechatappconfigRepository.GetAll().Select(v => v.TemplateIds).FirstOrDefaultAsync(); if (templateId != null || templateId.Length != 0) { string[] ids = templateId.Split(','); string appId = AppConfig.AppId; string openId = OpenId; //string templateId = "qvt7CNXBY4FzfzdX54TvMUaOi9jZ3-tdsb2NRhVp0yg";//模版id host = host ?? "http://ga.intcov.com";//host配置 string url = host + "/GAWX/Authorization?page=302"; object data = new { first = new TemplateDataItem("店员审核通知,请您尽快审核", "#FF0000"), keyword1 = new TemplateDataItem(currentName.ToString()), keyword2 = new TemplateDataItem(DateTime.Now.ToString("yyyy-MM-dd HH:mm")) }; await TemplateApi.SendTemplateMessageAsync(appId, openId, ids[2], url, data); } } catch (Exception ex) { Logger.ErrorFormat("审核通知发送失败 error:{0} Exception:{1}", ex.Message, ex); } }
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); } }
public Task Execute(IJobExecutionContext context) { IPagedList <User> users = userService.GetUsers(string.Empty, 1, int.MaxValue); List <Task> templateMessageTasks = new List <Task>(); foreach (var user in users.Where(u => !string.IsNullOrWhiteSpace(u.WeChatOpenID))) { var templateDatas = new { first = new TemplateDataItem("你好,检测到异常报警设备"), keyword1 = new TemplateDataItem(DateTime.Now.ToString("yyyy-MM-dd HH:mm")), keyword2 = new TemplateDataItem("零度云平台"), keyword3 = new TemplateDataItem("传感器参数异常"), remark = new TemplateDataItem("请尽快查看相关设备状态。") }; var url = string.Format("http://www.xcode.me/{0}", encryptionService.Encrypt(user.WeChatOpenID, appSecret)); AccessTokenContainer.Register(appId, appSecret); var task = TemplateApi.SendTemplateMessageAsync(appId, user.WeChatOpenID, templateId, url, templateDatas); templateMessageTasks.Add(task); } return(Task.WhenAll(templateMessageTasks)); }
/// <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); } }
/// <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 static void Run() { // For example purposes create template if not exists. TemplateUtils.CreateIfNotExist("templates/template-for-companies.json"); var configuration = new Configuration(Common.MyAppSid, Common.MyAppKey); var apiInstance = new TemplateApi(configuration); try { var options = new TemplateOptions { StorageName = Common.MyStorage, TemplatePath = "templates/template-for-companies.json" }; var request = new GetTemplateRequest(options); // could be used in parse by template method var template = apiInstance.GetTemplate(request); foreach (var field in template.Fields) { Console.WriteLine($"Field: {field.FieldName}"); } foreach (var table in template.Tables) { Console.WriteLine($"Table: {table.TableName}"); } } catch (Exception e) { Console.WriteLine("Exception while calling TemplateApi: " + e.Message); } }
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 static void Run() { // For example purposes create template if not exists. TemplateUtils.CreateIfNotExist("templates/template-for-companies.json"); var configuration = new Configuration(Common.MyAppSid, Common.MyAppKey); var apiInstance = new TemplateApi(configuration); try { var options = new TemplateOptions { StorageName = Common.MyStorage, TemplatePath = "templates/template-for-companies.json" }; var request = new DeleteTemplateRequest(options); apiInstance.DeleteTemplate(request); Console.WriteLine("Done."); } catch (Exception e) { Console.WriteLine("Exception while calling TemplateApi: " + e.Message); } }
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); } }
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 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); } }
/// <summary> /// 使用异步Action测试异步模板消息接口 /// </summary> /// <param name="checkcode"></param> /// <returns></returns> public async Task <ActionResult> TemplateMessageTest(string checkcode) { var currentCache = CacheStrategyFactory.GetObjectCacheStrategyInstance(); var cacheKey = $"TestCheckCode:{checkcode}"; var openId = await currentCache.GetAsync(cacheKey) as string;//使用缓存,如果多台服务器可以使用分布式缓存共享 if (openId.IsNullOrEmpty()) { return(Content("验证码已过期或不存在!请在“盛派网络小助手”公众号输入“tm”获取验证码。")); } else { await currentCache.RemoveFromCacheAsync(cacheKey); var templateId = "cCh2CTTJIbVZkcycDF08n96FP-oBwyMVrro8C2nfVo4"; var testData = new //TestTemplateData() { first = new TemplateDataItem("【异步模板消息测试】"), keyword1 = new TemplateDataItem(openId), keyword2 = new TemplateDataItem("网页测试"), keyword3 = new TemplateDataItem(SystemTime.Now.ToString("O")), remark = new TemplateDataItem("更详细信息,请到Senparc.Weixin SDK官方网站(http://sdk.weixin.senparc.com)查看!") }; var miniProgram = new TemplateModel_MiniProgram() { appid = "wxfcb0a0031394a51c",//【盛派互动(BookHelper)】小程序 pagepath = "pages/index/index" }; var result = await TemplateApi.SendTemplateMessageAsync(appId, openId, templateId, null, testData, miniProgram); return(Content("异步模板消息已经发送到【盛派网络小助手】公众号,请查看。此前的验证码已失效,如需继续测试,请重新获取验证码。")); } }
public static void CreateIfNotExist(string path) { var configuration = new Configuration(Common.MyAppSid, Common.MyAppKey); var apiInstance = new TemplateApi(configuration); var storageInstance = new StorageApi(configuration); try { var existRequest = new ObjectExistsRequest(path); if (storageInstance.ObjectExists(existRequest).Exists == true) { return; } var options = new CreateTemplateOptions { Template = GetTemplate(), StorageName = Common.MyStorage, TemplatePath = path }; var request = new CreateTemplateRequest(options); var response = apiInstance.CreateTemplate(request); } catch (Exception e) { Console.WriteLine("Exception while calling TemplateApi: " + e.Message); } }
private async Task PurchaseSendWXMesssageToShopKeeper(string OpenId, string host, string memberBarCode, int?finalIntegral, int?integral) { try { string templateId = await _wechatappconfigRepository.GetAll().Select(v => v.TemplateIds).FirstOrDefaultAsync(); if (templateId != null || templateId.Length != 0) { string[] ids = templateId.Split(','); //发送微信模板通知-店铺管理员 string appId = AppConfig.AppId; string openId = OpenId; //string templateId = "3Dgkz89yi8e0jXtwBUhdMSgHeZwPvHi2gz8WrD-CUA4";//模版id host = host ?? "http://ga.intcov.com";//host配置 string url = host + "/GAWX/Authorization?page=301"; object data = new { keyword1 = new TemplateDataItem(memberBarCode.ToString()), keyword2 = new TemplateDataItem(finalIntegral.ToString() + "积分"), keyword3 = new TemplateDataItem(integral.ToString() + "积分"), keyword4 = new TemplateDataItem(DateTime.Now.ToString("yyyy-MM-dd HH:mm")) }; await TemplateApi.SendTemplateMessageAsync(appId, openId, ids[0], url, data); } } catch (Exception ex) { Logger.ErrorFormat("店铺管理员发送消息通知失败 error:{0} Exception:{1}", ex.Message, ex); } }
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)); } } }
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); } }
public void SendTemplateMessageAsyncTest() { var openId = base._testOpenId; var templateId = "cCh2CTTJIbVZkcycDF08n96FP-oBwyMVrro8C2nfVo4"; base.TestAyncMethod(2, base._testOpenId, () => { /* * 详细内容 * {{first.DATA}} * 用户名:{{keyword1.DATA}} * 标题:{{keyword2.DATA}} * 时间:{{keyword3.DATA}} * {{remark.DATA}} */ var testData = new //TestTemplateData() { first = new TemplateDataItem(string.Format("【模板消息测试-{0}】您好,审核通过。", DateTime.Now.ToString("T"))), keyword1 = new TemplateDataItem(openId), keyword2 = new TemplateDataItem("单元测试"), keyword3 = new TemplateDataItem(DateTime.Now.ToString("O")), remark = new TemplateDataItem("更详细信息,请到Senparc.Weixin SDK官方网站(http://zs.sasu.edu.cn)查看!\r\n运行线程:" + Thread.CurrentThread.GetHashCode()) }; var result = TemplateApi.SendTemplateMessageAsync(base._appId, openId, templateId, null, testData).Result; Console.WriteLine("线程{0},结果:{1}", Thread.CurrentThread.GetHashCode(), result.errmsg); base.AsyncThreadsCollection.Remove(Thread.CurrentThread);//必须要加 }); }
public void AsyncSendTemplateMessageTestForBookOptmize() { WxJsonResult finalResult = null; Task.Factory.StartNew(async() => { var openId = "olPjZjsXuQPJoV0HlruZkNzKc91E";//消息目标用户的OpenId //实际生产环境中,用户信息应该从数据库或缓存中读取 var userInfo = await UserApi.InfoAsync(_appId, openId); var data = new TemplateMessage_PaySuccessNotice( "您的订单已经支付", userInfo.nickname, "1234567890", 88.ToString("c"), "模板消息测试商品", "更详细信息,请到Senparc.Weixin SDK官方网站(http://zs.sasu.edu.cn)查看!\r\n这条消息使用的是优化过的方法,且不带Url参数。使用异步方法。"); var result = await TemplateApi.SendTemplateMessageAsync(_appId, openId, data); //调用客服接口显示msgId finalResult = await CustomApi.SendTextAsync(_appId, openId, "上一条模板消息的MsgID:" + result.msgid); Assert.AreEqual(ReturnCode.请求成功, result.errcode); }); while (finalResult == null) { } }
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) { } }
/// <summary> /// 使用异步Action测试异步模板消息接口 /// </summary> /// <param name="checkcode"></param> /// <returns></returns> public async Task <ActionResult> TemplateMessageTest(string checkcode) { var openId = CustomMessageHandler.TemplateMessageCollection.ContainsKey(checkcode) ? CustomMessageHandler.TemplateMessageCollection[checkcode] : null; if (openId == null) { return(Content("验证码已过期或不存在!请在“盛派网络小助手”公众号输入“tm”获取验证码。")); } else { CustomMessageHandler.TemplateMessageCollection.Remove(checkcode); var templateId = "cCh2CTTJIbVZkcycDF08n96FP-oBwyMVrro8C2nfVo4"; var testData = new //TestTemplateData() { first = new TemplateDataItem("【异步模板消息测试】"), keyword1 = new TemplateDataItem(openId), keyword2 = new TemplateDataItem("网页测试"), keyword3 = new TemplateDataItem(DateTime.Now.ToString("O")), remark = new TemplateDataItem("更详细信息,请到Senparc.Weixin SDK官方网站(http://zs.sasu.edu.cn)查看!") }; var result = await TemplateApi.SendTemplateMessageAsync(appId, openId, templateId, null, testData); return(Content("异步模板消息已经发送到【盛派网络小助手】公众号,请查看。此前的验证码已失效,如需继续测试,请重新获取验证码。")); } }
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; } }