Ejemplo n.º 1
0
        /// <summary>
        /// 发送视频消息
        /// </summary>
        /// <param name="host"></param>
        /// <param name="account"></param>
        /// <param name="toUserNameId"></param>
        /// <param name="mediaId"></param>
        /// <returns></returns>
        /// https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendvideomsg?fun=async&f=json&pass_ticket=%252FX8NCpFJfNmU%252Be%252FgE2dwRCN2D8Y8EBSKunfckAJmPfCeVD4YaubkaS2e767qiyAO
        /// https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendvideomsg?fun=async&f=json&lang=zh_CN&pass_ticket=KwMEOlgC57Dc1AwBwr7oaHekXX0P8fJE%252Bl0cLVocIrxdWNr%252F9URPGCAEmf%252FzfjEK
        public static HttpTaskParams GetSendVideoMsg(string host, WxAccount account, string toUserNameId, string mediaId)
        {
            string url = string.Format("{0}?fun=async&f=json&lang=zh_CN&pass_ticket={1}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_SEND_VIDEO_MSG),
                                       encoding(account.PassTicket));

            HttpTaskParams htp = HttpTaskParams.NewPost(url);

            htp.ContentType = "application/json;charset=UTF-8";

            WxSendMsgReq req = new WxSendMsgReq();

            req.BaseRequest = WxReqUtil.GetIdentifyReq(account);
            req.Scene       = 0;

            WxSendMediaMsg msg = new WxSendMediaMsg();

            msg.Type         = 43;//视频
            msg.MediaId      = mediaId;
            msg.FromUserName = account.UserName;
            msg.ToUserName   = toUserNameId;
            string msgId = TimeUtil.CurrentTimeMillis() + TextUtil.RandomNumber(4);

            msg.LocalID     = msgId;
            msg.ClientMsgId = msgId;
            msg.Content     = string.Empty;

            req.Msg = msg;

            htp.CustomStringContentBody = JsonConvert.SerializeObject(req);
            return(htp);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取微信状态通知
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        /// https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxstatusnotify
        /// ?lang=zh_CN
        /// &pass_ticket=zXbwZhRifdRRNcPjsjxyemYskxzSRQOxZF6T3HJuTpsdgPENMSMXylIlmsnrEZ5s
        public static HttpTaskParams GetStatusNotify(string host, WxAccount wxAccount)
        {
            string url = string.Format("{0}?lang={1}&pass_ticket={2}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_STATUS_NOTIFY),
                                       "zh_CN",
                                       encoding(wxAccount.PassTicket));

            HttpTaskParams htp = HttpTaskParams.NewPost(url);

            htp.ContentType             = "application/json;charset=utf-8";
            htp.CustomStringContentBody = JsonConvert.SerializeObject(WxReqUtil.GetStatusNotifyReq(wxAccount));
            return(htp);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取同步检查参数
        /// </summary>
        /// <param name="account"></param>
        /// <param name="deviceId"></param>
        /// <param name="wxSyncKey"></param>
        /// <returns></returns>
        /// https://webpush.wx2.qq.com/cgi-bin/mmwebwx-bin/synccheck
        /// ?r=1501480039641
        /// &skey=%40crypt_77e833b9_e705acd2a3250d78bdbb1137d87afad5&sid=TlG7spFxhWig3TpY
        /// &uin=243082945
        /// &deviceid=e835949820036438
        /// &synckey=1_653730215%7C2_653730255%7C3_653730169%7C1000_1501462441
        /// &_=1501479916949
        public static HttpTaskParams GetSyncCheckParams(string host, WxAccount wxAccount, WxSyncKey wxSyncKey)
        {
            HttpTaskParams htp = HttpTaskParams.NewGet(WxHttpApi.GetWebPushUrl(host, WxHttpApi.URL_WX_MSG_CHECK));

            htp.AddStringParam("skey", wxAccount.Skey);
            htp.AddStringParam("uin", wxAccount.Uin);
            htp.AddStringParam("sid", wxAccount.Sid);
            htp.AddStringParam("deviceid", wxAccount.DeviceId);
            htp.AddStringParam("synckey", WxReqUtil.GetSyncKey2String(wxSyncKey));
            long millis = TimeUtil.CurrentTimeMillis();

            htp.AddStringParam("r", millis.ToString());
            htp.AddStringParam("_", (millis / 1000).ToString());//时间戳取反
            return(htp);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 群踢人
        /// </summary>
        /// <param name="account"></param>
        /// <param name="userNameId"></param>
        /// <param name="groupUserNameId"></param>
        /// <returns></returns>
        public static HttpTaskParams GetGroupContactDelMember(string host, WxAccount account, string userNameId, string groupUserNameId)
        {
            string url = string.Format("{0}?fun=delmember&lang=zh_CN&pass_ticket={1}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_GROUP_DEL_MEMBER),
                                       encoding(account.PassTicket));

            HttpTaskParams htp = HttpTaskParams.NewPost(url);

            htp.ContentType = "application/json;charset=UTF-8";

            WxGroupMemberReq req = new WxGroupMemberReq();

            req.BaseRequest             = WxReqUtil.GetIdentifyReq(account);
            req.DelMemberList           = userNameId;
            req.ChatRoomName            = groupUserNameId;
            htp.CustomStringContentBody = JsonConvert.SerializeObject(req);
            return(htp);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 获取微信登录初始化接口
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        /// demo:https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit
        /// ?r=665841145
        /// &lang=zh_CN
        /// &pass_ticket=zXbwZhRifdRRNcPjsjxyemYskxzSRQOxZF6T3HJuTpsdgPENMSMXylIlmsnrEZ5s
        public static HttpTaskParams GetLoginInitParams(string host, WxLoginIdsResult result, string deviceId)
        {
            //r时间戳取反
            string url = string.Format("{0}?r={1}&lang={2}&pass_ticket={3}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_INIT),
                                       (TimeUtil.CurrentTimeMillis() / 1000),
                                       "zh_CN",
                                       encoding(result.PassTicket));

            HttpTaskParams htp = HttpTaskParams.NewPost(url);

            htp.ContentType             = "application/json;charset=utf-8";
            htp.CustomStringContentBody = JsonConvert.SerializeObject(WxReqUtil.GetBaseReq(result, deviceId));
#if Debug
            Console.WriteLine("init content body = " + htp.CustomStringContentBody);
#endif
            return(htp);
        }
Ejemplo n.º 6
0
        public static HttpTaskParams GetUploadImage(string host, WxAccount account, string toUserNameId, string imagePath)
        {
            string url = string.Format("{0}?f=json", WxHttpApi.GetFileUploadUrl(host, WxHttpApi.URL_WX_FILE_UPLOAD));

            HttpTaskParams htp  = HttpTaskParams.NewPost(url);
            FileInfo       info = new FileInfo(imagePath);

            htp.AddStringParam("id", "WU_FILE_" + fileCount);
            htp.AddStringParam("name", info.Name);
            htp.AddStringParam("type", "image/jpeg");
            htp.AddStringParam("lastModifiedDate", info.LastWriteTime.ToString("r", DateTimeFormatInfo.InvariantInfo));
            htp.AddStringParam("size", info.Length.ToString());
            htp.AddStringParam("mediatype", "pic");
            htp.AddStringParam("webwx_data_ticket", account.DataTicket);
            htp.AddStringParam("pass_ticket", account.PassTicket);
            htp.AddFileParam("filename", imagePath, WxReqUtil.GetImageMimeType(info));
            htp.AddStringParam("uploadmediarequest", WxReqUtil.GetUploadMediaRequestBody(account, toUserNameId, info, imagePath));
            return(htp);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 批量获取联系人,包含个人和组
        /// </summary>
        /// <param name="wxAccount"></param>
        /// <param name="groupUserNames"></param>
        /// <returns></returns>
        /// //https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxbatchgetcontact
        /// ?type=ex
        /// &r=1498291861743
        /// &lang=zh_CN
        /// &pass_ticket=ga8bxGb9YQJLWhU6RA6FMamJy0wqnD7QuWP9k%252F9tlTb8O1uUkgcZ7YbjNg3bEkYH
        public static HttpTaskParams GetBatchContactParams(string host, WxAccount wxAccount, List <string> groupUserNameIds)
        {
            string url = string.Format("{0}?type=ex&r={1}&lang=zh_CN&pass_ticket={2}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_CONTACT_BATCH),
                                       TimeUtil.CurrentTimeMillis(),
                                       encoding(wxAccount.PassTicket));

            HttpTaskParams htp = HttpTaskParams.NewPost(url);

            htp.ContentType = "application/json;charset=utf-8";

            WxBatchContactReq req = new WxBatchContactReq();

            req.BaseRequest             = WxReqUtil.GetIdentifyReq(wxAccount);
            req.Count                   = CollectionUtil.Size(groupUserNameIds);
            req.List                    = WxReqUtil.GetBatchContactItemList(groupUserNameIds);
            htp.CustomStringContentBody = JsonConvert.SerializeObject(req);
            return(htp);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 同步获取更新消息
        /// </summary>
        /// <param name="account"></param>
        /// <param name="syncKey"></param>
        /// <returns></returns>
        /// https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsync
        /// ?sid=XbUcBWzGt6NPu5jO
        /// &skey=@crypt_55085584_cf738edf865a9c101021022d1c732ae6
        /// &lang=zh_CN
        /// &pass_ticket=lBIvUtbeb5e%252BMIDHLr5QVehuJDPbW3NEgMSh87ILAOv3ue1HdLtSV%252B8AK0ULznEL
        public static HttpTaskParams GetSyncMsgParams(string host, WxAccount account, WxSyncKey syncKey)
        {
            string url = string.Format("{0}?sid={1}&skey={2}&pass_ticket={3}&lang={4}",
                                       WxHttpApi.GetCommonUrl(host, WxHttpApi.URL_WX_MSG_PULL),
                                       encoding(account.Sid),
                                       encoding(account.Skey),
                                       encoding(account.PassTicket),
                                       "zh_CN");

            HttpTaskParams htp = HttpTaskParams.NewPost(url);

            htp.ContentType = "application/json;charset=UTF-8";

            WxWebSyncReq req = new WxWebSyncReq();

            req.BaseRequest             = WxReqUtil.GetIdentifyReq(account);
            req.SyncKey                 = syncKey;
            req.rr                      = (~(TimeUtil.CurrentTimeMillis() / 1000)).ToString();//时间戳取反
            htp.CustomStringContentBody = JsonConvert.SerializeObject(req);
            return(htp);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 上传视频文件
        /// </summary>
        /// <param name="host"></param>
        /// <param name="account"></param>
        /// <param name="toUserNameId"></param>
        /// <param name="videoPath"></param>
        /// <returns></returns>
        /// https://file.wx.qq.com/cgi-bin/mmwebwx-bin/webwxuploadmedia?f=json
        public static HttpTaskParams GetUploadVideo(string host, WxAccount account, string toUserNameId, string videoPath)
        {
            string url = string.Format("{0}?f=json", WxHttpApi.GetFileUploadUrl(host, WxHttpApi.URL_WX_FILE_UPLOAD));

            HttpTaskParams htp  = HttpTaskParams.NewPost(url);
            FileInfo       info = new FileInfo(videoPath);

            htp.AddStringParam("id", "WU_FILE_" + fileCount);
            htp.AddStringParam("name", info.Name);
            htp.AddStringParam("type", WxReqUtil.GetVideoMimeType(info));//"video/mp4"
            htp.AddStringParam("lastModifiedDate", info.LastWriteTime.ToString("r", DateTimeFormatInfo.InvariantInfo));
            htp.AddStringParam("size", info.Length.ToString());
            htp.AddStringParam("chunks", "1"); //分段数,这里一次上传,不分段
            htp.AddStringParam("chunk", "0");  //第几段
            htp.AddStringParam("mediatype", "video");
            htp.AddStringParam("uploadmediarequest", WxReqUtil.GetUploadMediaRequestBody(account, toUserNameId, info, videoPath));
            htp.AddStringParam("webwx_data_ticket", account.DataTicket);
            htp.AddStringParam("pass_ticket", account.PassTicket);
            htp.AddFileParam("filename", videoPath);

            return(htp);
        }