Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        public SendTemplateMessageResult SendTemplateMessage(SendTemplateMessageDto dto)
        {
            dto.AccessToken = GetAccessToken(MPConfig.AppId, MPConfig.AppSecret);
            var result = TemplateApi.SendTemplateMessage(dto.AccessToken, dto);

            return(result);
        }
Beispiel #3
0
        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));
        }
Beispiel #5
0
        public WxJsonResult GetIndustry(BaseMPDto dto)
        {
            dto.AccessToken = GetAccessToken(MPConfig.AppId, MPConfig.AppSecret);
            var result = TemplateApi.GetIndustry(dto.AccessToken);

            return(result);
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        //标题委托房源通知
        //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);
            }
        }
Beispiel #10
0
        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));
        }
Beispiel #11
0
 /// <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);
     }
 }
Beispiel #12
0
        /// <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);
        }
Beispiel #13
0
        /// <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)
            {
            }
        }
Beispiel #14
0
        /// <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);
            }
        }
Beispiel #19
0
        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);
            }
        }
Beispiel #21
0
        /// <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);
            }
        }
Beispiel #24
0
        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));
                }
            }
        }
Beispiel #25
0
        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);
            }
        }
Beispiel #26
0
        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);//必须要加
            });
        }
Beispiel #27
0
        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)
            {
            }
        }
Beispiel #28
0
        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)
            {
            }
        }
Beispiel #29
0
        /// <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("异步模板消息已经发送到【盛派网络小助手】公众号,请查看。此前的验证码已失效,如需继续测试,请重新获取验证码。"));
            }
        }
Beispiel #30
0
        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;
            }
        }