OWX使用说明

OWX使用说明

项目设置

应用设置

通过UCS添加具体项目添加项目信息

  1. Name(应用名称)

  2. ApplicationPath(消息回调地址,OWX抛过来的消息接收的地址如:http://localhost/XXXX/rest/wxmessage/handle)

  3. ApplicationCallBack(登入回调地址,OWX登入后需要具体项目登入地址如:http://dev.nbeport.com/XXXX/home/LoginCallBack)

  4. WeixinAppId(微信ID)

  5. WeixinAppSecret(微信密钥)

  6. WeixinClientSecret(响应微信的Token验证信息)

具体项目微信设置

  1. 微信回调地址统一以http://dev.nbeport.com/owx/rest/message/{applicationId 具体在上面应用中设定的ID}

  2. Token需与上面设置的WeixinAppSecret一致

  3. 设置JS接口安全域名,授权回调页面域名

实例

在OWX中设置首页登入模版

    //权限过滤器 套用V2模版 不需做修改
    [WeixinAuthorizeV2]
    //定义要设置的应用首页
    public ActionResult Index_V2(string id)
   {
        var url = Request.QueryString["returnUrl"];
        //如果有回调URL则进行回调,没有回调则默认进入对应应用首页 这里的URL为GOX短连接唯一ID
        if (!String.IsNullOrEmpty(url))
        {
        string shortCode = url;
        var rs = GoxClient.GetShortUrl(shortCode);
        return Content(string.Format(""));
        }
        ViewData["ApplicationId"] = Session["applicationId"] == null ? "default" : Session["applicationId"].ToString();
        ViewData["Openid"] = Session["openId"] == null ? "default" : Session["openId"].ToString();
        return View();
    }
实例

注:后期将通过UCS菜单进行控制

具体应用中的设置

 这里以XXXX应用为例子
  • HomeController设置
    //HomeController
    public class HomeController : Controller
    {
        public HomeController()
        {
        }
        //获取Authentication
        private IAuthenticationManager authentication
        {
            get
            {
                return HttpContext.GetOwinContext().Authentication;
            }
        }
        //获取应用认证ID
        private string GetOauthType
        {
            get
            {
                return System.Configuration.ConfigurationManager.AppSettings["oauth:authType"];
            }
        }
        [WeixinAuthorize]
        public ActionResult Index()
        {   
             //获取用户信息并放入VIWDATA
            var result = authentication.AuthenticateAsync(GetOauthType).Result;
            ViewData["UserId"] = result.Identity.Claims.Where(x => x.Type == ClaimTypes.NameIdentifier).FirstOrDefault().Value;
            ViewData["OpenId"] = result.Identity.Claims.Where(x => x.Type == ClaimTypes.Name).FirstOrDefault().Value;
            ViewData["ApplicationId"] = Purple.ConfigHelper.GetConfigString("oauth:clientId");
            return View();
        }
        /// 
        /// 授权回调函数,跟上面应用中设立的参数要一致
        /// 
        /// 用户ID
        /// 微信ID
        /// 回调短连接ID
        public ActionResult LoginCallBack(string userId,string openId,string returnUrl)
        {
            //有信息才会登入不然返回owx进行再授权
            if(!String.IsNullOrEmpty(userId))
            {
                //sigin
                this.authentication.SignOut(GetOauthType);
                var claims = new List();
                claims.Add(new Claim(ClaimTypes.NameIdentifier, userId));
                claims.Add(new Claim(ClaimTypes.Name, openId));
                var id = new ClaimsIdentity(claims, GetOauthType);
                this.authentication.SignIn(id);
            }
            return Redirect(Purple.ConfigHelper.GetConfigString("address:owx") + "/weixin/Index_V2?id=" + Purple.ConfigHelper.GetConfigString("oauth:clientId")+"&ReturnUrl="+returnUrl);
        }
    }
  • 登入授权过滤器
    ///
    /// 认证信息
    /// 
    public class WeixinAuthorize : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            return base.AuthorizeCore(httpContext);
        }
        //验证不通过直接跳到OWX进行授权
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            var url = filterContext.HttpContext.Request.Params["id"];
            filterContext.HttpContext.Response.Redirect(Purple.ConfigHelper.GetConfigString("address:owx") + "/WxAccountV2/UnifyLogin?id=" + Purple.ConfigHelper.GetConfigString("oauth:clientId") + "&returnUrl=" + url);
        }
    }
  • 设置参数必须加入下列项目

消息处理设置

在前面应用中已经将消息处理接口设置,在具体应用中只要设置具体回调接口
  • 消息处理接口
        //定义回调方法
        public HttpResponseMessage MessageHandle(WxMessageReceive model)
        {
            //要返回的XML
            string RETURNXML = "";
            //初始化信息
            TextMessage initModel = new TextMessage()
            {
                ToUserName = model.FromUserName,
                FromUserName = model.ToUserName,
                CreateTime = HwxHelper.ConvertDateTimeInt(DateTime.Now),
                MsgType = "text",
                Content = "敬请期待!"
            };
            RETURNXML = HwxHelper.GetPostXml(initModel);
            var response = Request.CreateResponse(HttpStatusCode.OK);
            response.Content = new StringContent(RETURNXML, Encoding.UTF8);
            return response;
        }
  • Purple.top.Hwx.Model提供所有关于微信被动消息的模型
    使用时需先安装Purple.top.Hwx nuget包
         1. WxMessageReceive--接受模型
    public class WxMessageReceive
    {
        #region 基础信息
        /// 
        /// 开发者微信号
        /// 
        public string ToUserName { get; set; }
        /// 
        /// 发送方帐号
        /// 
        public string FromUserName { get; set; }
        /// 
        /// 消息创建时间
        /// 
        public int CreateTime { get; set; }
        /// 
        /// 消息类型
        /// 
        public string MsgType { get; set; }
        /// 
        /// 消息ID  用于非EVENT消息
        /// 
        public long MsgId { get; set; }
        /// 
        /// 图片消息媒体id,可以调用多媒体文件下载接口拉取数据
        /// 
        public string MediaId { get; set; }
        #endregion
        #region 文本消息
        /// 
        /// 文本消息内容
        /// 
        public string Content { get; set; }
        #endregion
        #region 图片消息
        /// 
        /// 图片链接
        /// 
        public string PicUrl { get; set; }
        #endregion
        #region  语音消息
        /// 
        /// 语音格式
        /// 
        public string Format { get; set; }
        #endregion
        #region 视频/小视频 消息
        /// 
        /// 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据
        /// 
        public string ThumbMediaId { get; set; }
        #endregion
        #region 地理位置消息
        /// 
        /// 地理位置维度
        /// 
        public decimal Location_X { get; set; }
        /// 
        /// 地理位置经度
        /// 
        public decimal Location_Y { get; set; }
        /// 
        /// 地图缩放大小
        /// 
        public int Scale { get; set; }
        /// 
        /// 地理位置信息
        /// 
        public string Label { get; set; }
        #endregion
        #region 链接消息
        /// 
        /// 消息标题
        /// 
        public string Title { get; set; }
        /// 
        /// 消息描述
        /// 
        public string Description { get; set; }
        /// 
        /// 消息链接
        /// 
        public string Url { get; set; }
        #endregion
        #region event
        /// 
        /// 事件类型
        /// 
        public string Event { get; set; }
        /// 
        /// 事件Key值
        /// 
        public string EventKey { get; set; }
        #region 扫描带参数二维码事件
        /// 
        /// 二维码的ticket,可用来换取二维码图片
        /// 
        public string Ticket { get; set; }
        #endregion
        #region 上报地理位置事件
        /// 
        /// 地理位置纬度
        /// 
        public decimal Latitude { get; set; }
        /// 
        /// 地理位置经度
        /// 
        public decimal Longitude { get; set; }
        /// 
        /// 地理位置精度
        /// 
        public decimal Precision { get; set; }
        #endregion
        #endregion
    }
        2. TextMessage--文本消息
    public partial class TextMessage
    {
        /// 
        /// 接收方帐号
        /// 
    public partial class TextMessage
    {
         [XmlIgnore]
         public string ToUserName { get; set; }
        /// 
        /// 开发者微信号
        /// 
        [XmlIgnore]
         public string FromUserName { get; set; }
        /// 
        /// 消息创建时间
        /// 
        [XmlIgnore]
        public int CreateTime { get; set; }
        /// 
        /// 消息类型
        /// 
        [XmlIgnore]
        public string MsgType { get; set; }
        /// 
        /// 回复的内容
        /// 
        [XmlIgnore]
        public string Content { get; set; }
    }
        3. ImgMessage--图片消息
    public partial class ImgMessage
    {
        /// 
        /// 接收方帐号
        /// 
        [XmlIgnore]
        public string ToUserName { get; set; }
        /// 
        /// 开发者微信号
        /// 
        [XmlIgnore]
        public string FromUserName { get; set; }
        /// 
        /// 消息创建时间
        /// 
        [XmlIgnore]
        public int CreateTime { get; set; }
        /// 
        /// 消息类型
        /// 
        [XmlIgnore]
        public string MsgType { get; set; }
        /// 
        /// 图片信息
        /// 
        [XmlElement("Image")]
        public Image Image { get; set; }
    }
    /// 
    /// 图片信息
    /// 
    public partial class Image
    {
        /// 
        /// 素材ID
        /// 
        [XmlIgnore]
        public string MediaId { get; set; }
    }
        4. VoiceMessage--声音消息
    public partial class VoiceMessage
    {
        /// 
        /// 接收方帐号
        /// 
        [XmlIgnore]
        public string ToUserName { get; set; }
        /// 
        /// 开发者微信号
        /// 
        [XmlIgnore]
        public string FromUserName { get; set; }
        /// 
        /// 消息创建时间
        /// 
        [XmlIgnore]
        public int CreateTime { get; set; }
        /// 
        /// 消息类型
        /// 
        [XmlIgnore]
        public string MsgType { get; set; }
    }
        5. VideoMessage--视频消息
    public partial class VideoMessage
    {
        /// 
        /// 接收方帐号
        /// 
        [XmlIgnore]
        public string ToUserName { get; set; }
        /// 
        /// 开发者微信号
        /// 
        [XmlIgnore]
        public string FromUserName { get; set; }
        /// 
        /// 消息创建时间
        /// 
        [XmlIgnore]
        public int CreateTime { get; set; }
        /// 
        /// 消息类型
        /// 
        [XmlIgnore]
        public string MsgType { get; set; }
    }
    public partial class Video
    {
        /// 
        /// 素材ID
        /// 
        [XmlIgnore]
        public string MediaId { get; set; }
        /// 
        /// 标题
        /// 
        [XmlIgnore]
        public string Title { get; set; }
        /// 
        /// 描述
        /// 
        [XmlIgnore]
        public string Description { get; set; }
    }
        6. MusicMessage--音乐消息
    public partial class MusicMessage
    {
        /// 
        /// 接收方帐号
        /// 
        [XmlIgnore]
        public string ToUserName { get; set; }
        /// 
        /// 开发者微信号
        /// 
        [XmlIgnore]
        public string FromUserName { get; set; }
        /// 
        /// 消息创建时间
        /// 
        [XmlIgnore]
        public int CreateTime { get; set; }
        /// 
        /// 消息类型
        /// 
        [XmlIgnore]
        public string MsgType { get; set; }
    }
    /// 
    /// 音乐消息
    /// 
    public partial class Music
    {
        /// 
        /// 标题
        /// 
        [XmlIgnore]
        public string Title { get; set; }
        /// 
        /// 描述
        /// 
        [XmlIgnore]
        public string Description { get; set; }
        /// 
        /// 音乐链接
        /// 
        [XmlIgnore]
        public string MusicUrl { get; set; }
        /// 
        /// 高品质音乐链接
        /// 
        [XmlIgnore]
        public string HQMusicUrl { get; set; }
        /// 
        /// 缩略图媒体ID
        /// 
        [XmlIgnore]
        public string ThumbMediaId { get; set; }
    }
        7. ArticleMessage--图文消息
    public partial class ArticleMessage
    {
        /// 
        /// 接收方帐号
        /// 
        [XmlIgnore]
        public string ToUserName { get; set; }
        /// 
        /// 开发者微信号
        /// 
        [XmlIgnore]
        public string FromUserName { get; set; }
        /// 
        /// 消息创建时间
        /// 
        [XmlIgnore]
        public int CreateTime { get; set; }
        /// 
        /// 消息类型
        /// 
        [XmlIgnore]
        public string MsgType { get; set; }
        /// 
        /// 图文消息条数
        /// 
        [XmlIgnore]
        public int ArticleCount { get; set; }
    }
    /// 
    /// 文章消息
    /// 
    public partial class Article
    {
        /// 
        /// 标题
        /// 
        [XmlIgnore]
        public string Title { get; set; }
        /// 
        /// 描述
        /// 
        [XmlIgnore]
        public string Description { get; set; }
        /// 
        /// 图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200
        /// 
        [XmlIgnore]
        public string PicUrl { get; set; }
        /// 
        /// 点击图文消息跳转链接
        /// 
        [XmlIgnore]
        public string Url { get; set; }
    }
  • Purple.top.Hwx.Helper提供将所有上述模型转换成XML文档

      HwxHelper.GetPostXml()将上述模型转换成微信接收的模型
    
  • 主动消息发送

       method:httppost
        
       /rest/message/{applicationId}/sendtemplate
        
        postJsonModel:
    
    /// 
    /// 模版发送模型
    /// 
    public class TempalteSendModel
    {
        //对应的用户ID
         public string touser { get; set; }        
        //模版ID
        public string template_id { get; set; }      
        //模版消息点击URL
        public string url { get; set; }
        //要发送的数据模型
        public object data { get; set; }
    }

二维码扫码设置

未完待续

图片上传

未完待续

你可能感兴趣的:(OWX使用说明)