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

            return(result);
        }
Example #11
0
        // 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));
        }
Example #12
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);
            }
        }
Example #13
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);
            }
        }
Example #14
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);
        }
Example #15
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)
            {
            }
        }
Example #16
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));
                }
            }
        }
Example #17
0
        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);
        }
Example #18
0
        /// <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);
            }
        }
Example #19
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;
            }
        }
Example #20
0
 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);
     }
 }
Example #21
0
 /// <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);
     }
 }
Example #22
0
        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);
            }
        }
Example #23
0
        ///// <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);
        }
Example #24
0
        /* 参数范例:
         *
         * 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");
            });
        }
Example #25
0
        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));
        }
Example #27
0
 /// <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);
     }
 }
Example #28
0
        /// <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);
        }
Example #29
0
        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("");
        }
Example #30
0
 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);
     });
 }