/// <summary> /// 获取用户分组 /// </summary> /// <param name="accessTokenOrAppId"></param> /// <param name="openId"></param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static GetGroupIdResult GetId(string accessTokenOrAppId, string openId, int timeOut = Config.TIME_OUT) { return ApiHandlerWapper.TryCommonApi(accessToken => { var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/getid?access_token={0}"; var data = new { openid = openId }; return CommonJsonSend.Send<GetGroupIdResult>(accessToken, urlFormat, data, timeOut: timeOut); }, accessTokenOrAppId); }
/// <summary> /// 删除邮费模板 /// </summary> /// <param name="accessToken"></param> /// <param name="templateId">邮费模板Id</param> /// <returns></returns> public static WxJsonResult DeleteExpress(string accessToken, int templateId) { var urlFormat = "https://api.weixin.qq.com/merchant/express/del?access_token={0}"; var data = new { template_id = templateId }; return CommonJsonSend.Send<WxJsonResult>(accessToken, urlFormat, data); }
/// <summary> /// 批量删除成员 /// </summary> /// <param name="accessToken"></param> /// <param name="userIds"></param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static QyJsonResult BatchDeleteMember(string accessToken, string[] userIds, int timeOut = Config.TIME_OUT) { var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/user/batchdelete?access_token={0}", accessToken); var data = new { useridlist = userIds }; return CommonJsonSend.Send<QyJsonResult>(null, url, data, CommonJsonSendType.POST, timeOut); }
/// <summary> /// 删除货架 /// </summary> /// <param name="accessToken"></param> /// <param name="shelfId">货架Id</param> /// <returns></returns> public static WxJsonResult DeleteShelves(string accessToken, int shelfId) { var urlFormat = "https://api.weixin.qq.com/merchant/shelf/del?access_token={0}"; var data = new { shelf_id = shelfId }; return CommonJsonSend.Send<WxJsonResult>(accessToken, urlFormat, data); }
/// <summary> /// 获取指定ID的邮费模板 /// </summary> /// <param name="accessToken"></param> /// <param name="templateId">邮费模板Id</param> /// <returns></returns> public static GetByIdExpressResult GetByIdExpress(string accessToken, int templateId) { var urlFormat = "https://api.weixin.qq.com/merchant/express/getbyid?access_token={0}"; var data = new { template_id = templateId }; return CommonJsonSend.Send<GetByIdExpressResult>(accessToken, urlFormat, data); }
/// <summary> /// 删除商品 /// </summary> /// <param name="accessToken"></param> /// <param name="productId">商品的Id</param> /// <returns></returns> public static WxJsonResult DeleteProduct(string accessToken, string productId) { var urlFormat = "https://api.weixin.qq.com/merchant/del?access_token={0}"; var data = new { product_id = productId }; return CommonJsonSend.Send<WxJsonResult>(accessToken, urlFormat, data); }
/// <summary> /// 根据分组ID获取分组信息 /// </summary> /// <param name="accessToken"></param> /// <param name="groupId">分组Id</param> /// <returns></returns> public static GetByIdGroup GetByIdGroup(string accessToken, int groupId) { var urlFormat = "https://api.weixin.qq.com/merchant/group/getbyid?access_token={0}"; var data = new { group_id = groupId }; return CommonJsonSend.Send<GetByIdGroup>(accessToken, urlFormat, data); }
/// <summary> /// 删除分组 /// </summary> /// <param name="accessToken"></param> /// <param name="groupId">分组Id</param> /// <returns></returns> public static WxJsonResult DeleteGroup(string accessToken, int groupId) { var urlFormat = "https://api.weixin.qq.com/merchant/group/del?access_token={0}"; var data = new { group_id = groupId }; return CommonJsonSend.Send<WxJsonResult>(accessToken, urlFormat, data); }
/// <summary> /// 获取指定状态的所有商品 /// </summary> /// <param name="accessToken"></param> /// <param name="status">商品状态(0-全部, 1-上架, 2-下架)</param> /// <returns></returns> public static GetByStatusResult GetByStatus(string accessToken, int status) { var urlFormat = "https://api.weixin.qq.com/merchant/getbystatus?access_token={0}"; var data = new { status }; return CommonJsonSend.Send<GetByStatusResult>(accessToken, urlFormat, data); }
/// <summary> /// 获取预授权码 /// </summary> /// <param name="suiteAccessToken"></param> /// <param name="suiteId">应用套件id</param> /// <param name="appId">应用id,本参数选填,表示用户能对本套件内的哪些应用授权,不填时默认用户有全部授权权限</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static GetPreAuthCodeResult GetPreAuthCode(string suiteAccessToken, string suiteId, int[] appId, int timeOut = Config.TIME_OUT) { var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/service/get_pre_auth_code?suite_access_token={0}", suiteAccessToken); var data = new { suite_id = suiteId, appid = appId }; return CommonJsonSend.Send<GetPreAuthCodeResult>(null, url, data, CommonJsonSendType.POST, timeOut); }
/// <summary> /// 获取应用套件令牌 /// </summary> /// <param name="suiteId">应用套件id</param> /// <param name="suiteSecret">应用套件secret</param> /// <param name="suiteTicket">微信后台推送的ticket</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static GetSuiteTokenResult GetSuiteToken(string suiteId, string suiteSecret, string suiteTicket, int timeOut = Config.TIME_OUT) { var url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_suite_token"; var data = new { suite_id = suiteId, suite_secret = suiteSecret, suite_ticket = suiteTicket }; return CommonJsonSend.Send<GetSuiteTokenResult>(null, url, data, CommonJsonSendType.POST, timeOut); }
/// <summary> /// 获取第三方平台access_token /// </summary> /// <param name="componentAppId">第三方平台appid</param> /// <param name="componentAppSecret">第三方平台appsecret</param> /// <param name="componentVerifyTicket">微信后台推送的ticket,此ticket会定时推送,具体请见本页末尾的推送说明</param> /// <param name="timeOut"></param> /// <returns></returns> public static ComponentAccessTokenResult GetComponentAccessToken(string componentAppId, string componentAppSecret, string componentVerifyTicket, int timeOut = Config.TIME_OUT) { var url = "https://api.weixin.qq.com/cgi-bin/component/api_component_token"; var data = new { component_appid = componentAppId, component_appsecret = componentAppSecret, component_verify_ticket = componentVerifyTicket }; return CommonJsonSend.Send<ComponentAccessTokenResult>(null, url, data, CommonJsonSendType.POST, timeOut); }
/// <summary> /// 增加标签成员 /// </summary> /// <param name="accessToken">调用接口凭证</param> /// <param name="tagId">标签ID</param> /// <param name="userList">企业成员ID列表,注意:userlist、partylist不能同时为空</param> /// <param name="partyList">企业部门ID列表,注意:userlist、partylist不能同时为空</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static AddTagMemberResult AddTagMember(string accessToken, int tagId, string[] userList = null, int[] partyList = null, int timeOut = Config.TIME_OUT) { var url = "https://qyapi.weixin.qq.com/cgi-bin/tag/addtagusers?access_token={0}"; var data = new { tagid = tagId, userlist = userList, partylist = partyList }; return CommonJsonSend.Send<AddTagMemberResult>(accessToken, url, data, CommonJsonSendType.POST, timeOut); }
/// <summary> /// 获取企业号的授权信息 /// </summary> /// <param name="suiteAccessToken"></param> /// <param name="suiteId">应用套件id</param> /// <param name="authCorpId">授权方corpid</param> /// <param name="permanentCode">永久授权码,通过get_permanent_code获取</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static GetAuthInfoResult GetAuthInfo(string suiteAccessToken, string suiteId, string authCorpId, string permanentCode, int timeOut = Config.TIME_OUT) { var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/service/get_auth_info?suite_access_token={0}", suiteAccessToken); var data = new { suite_id = suiteId, auth_corpid = authCorpId, permanent_code = permanentCode }; return CommonJsonSend.Send<GetAuthInfoResult>(null, url, data, CommonJsonSendType.POST, timeOut); }
/// <summary> /// 更新部门 /// </summary> /// <param name="accessToken">调用接口凭证</param> /// <param name="id">部门id</param> /// <param name="name">更新的部门名称。长度限制为0~64个字符。修改部门名称时指定该参数</param> /// <param name="parentId">父亲部门id。根部门id为1 </param> /// <param name="order">在父部门中的次序。从1开始,数字越大排序越靠后</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static QyJsonResult UpdateDepartment(string accessToken, string id, string name, int parentId, int order = 1, int timeOut = Config.TIME_OUT) { var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/department/update?access_token={0}", accessToken); var data = new { id = id, name = name, parentid = parentId, order = order }; return CommonJsonSend.Send<QyJsonResult>(null, url, data, CommonJsonSendType.POST, timeOut); }
/// <summary> /// 删除设备 /// </summary> /// <param name="accessTokenOrAppId"></param> /// <param name="bssid">需要删除的无线网络设备无线mac地址,格式冒号分隔,字符长度17个,并且字母小写,例如:00:1f:7a:ad:5c:a8</param> /// <param name="timeOut"></param> /// <returns></returns> public static WxJsonResult DeleteDevice(string accessTokenOrAppId, string bssid, int timeOut = Config.TIME_OUT) { return ApiHandlerWapper.TryCommonApi(accessToken => { const string urlFormat = "https://api.weixin.qq.com/bizwifi/device/delete?access_token={0}"; var data = new { bssid }; return CommonJsonSend.Send<WxJsonResult>(accessToken, urlFormat, data, timeOut: timeOut); }, accessTokenOrAppId); }
/// <summary> /// 设置所属行业 /// </summary> /// <param name="accessTokenOrAppId"></param> public static WxJsonResult SetIndustry(string accessTokenOrAppId,string industryId1,string industryId2, int timeOut = Config.TIME_OUT) { return ApiHandlerWapper.TryCommonApi(accessToken => { const string urlFormat = "https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token={0}"; var msgData = new { industry_id1 = industryId1, industry_id2 = industryId2 }; return CommonJsonSend.Send<WxJsonResult>(accessToken, urlFormat, msgData, timeOut: timeOut); }, accessTokenOrAppId); }
/// <summary> /// 获取预授权码 /// </summary> /// <param name="componentAppId">第三方平台方appid</param> /// <param name="componentAccessToken"></param> /// <param name="timeOut"></param> /// <returns></returns> public static PreAuthCodeResult GetPreAuthCode(string componentAppId, string componentAccessToken, int timeOut = Config.TIME_OUT) { var url = string.Format( "https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token={0}", componentAccessToken); var data = new { component_appid = componentAppId }; return CommonJsonSend.Send<PreAuthCodeResult>(null, url, data, CommonJsonSendType.POST, timeOut); }
/* 使用普通自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息,请见自定义菜单查询接口的说明 */ /// <summary> /// 测试个性化菜单匹配结果 /// </summary> /// <param name="accessTokenOrAppId"></param> /// <param name="userId">可以是粉丝的OpenID,也可以是粉丝的微信号。</param> /// <returns></returns> public static MenuTryMatchResult TryMatch(string accessTokenOrAppId, string userId) { return ApiHandlerWapper.TryCommonApi(accessToken => { var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/trymatch?access_token={0}", accessToken.AsUrlData()); var data = new { user_id = userId }; return CommonJsonSend.Send<MenuTryMatchResult>(accessToken, url, data, CommonJsonSendType.POST); }, accessTokenOrAppId); }
/// <summary> /// 获取授权方信息 /// 注意:此方法返回的JSON中,authorization_info.authorizer_appid等几个参数通常为空(哪怕公众号有权限) /// </summary> /// <param name="componentAccessToken"></param> /// <param name="componentAppId"></param> /// <param name="authorizerAppId"></param> /// <param name="timeOut"></param> /// <returns></returns> public static GetAuthorizerInfoResult GetAuthorizerInfo(string componentAccessToken, string componentAppId, string authorizerAppId, int timeOut = Config.TIME_OUT) { var url = string.Format( "https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info?component_access_token={0}", componentAccessToken.AsUrlData()); var data = new { component_appid = componentAppId, authorizer_appid = authorizerAppId, }; return CommonJsonSend.Send<GetAuthorizerInfoResult>(null, url, data, CommonJsonSendType.POST, timeOut); }
/// <summary> /// 创建分组 /// </summary> /// <param name="accessTokenOrAppId"></param> /// <param name="name">分组名字(30个字符以内)</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static CreateGroupResult Create(string accessTokenOrAppId, string name, int timeOut = Config.TIME_OUT) { return ApiHandlerWapper.TryCommonApi(accessToken => { var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token={0}"; var data = new { group = new { name } }; return CommonJsonSend.Send<CreateGroupResult>(accessToken, urlFormat, data, timeOut: timeOut); }, accessTokenOrAppId); }
/// <summary> /// 批量移动用户分组 /// </summary> /// <param name="accessTokenOrAppId">调用接口凭证</param> /// <param name="toGroupId">分组id</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <param name="openIds">用户唯一标识符openid的列表(size不能超过50)</param> /// <returns></returns> public static WxJsonResult BatchUpdate(string accessTokenOrAppId, int toGroupId, int timeOut = Config.TIME_OUT, params string[] openIds) { return ApiHandlerWapper.TryCommonApi(accessToken => { var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/members/batchupdate?access_token={0}"; var data = new { openid_list = openIds, to_groupid = toGroupId }; return CommonJsonSend.Send<WxJsonResult>(accessToken, urlFormat, data, CommonJsonSendType.POST, timeOut); }, accessTokenOrAppId); }
/// <summary> /// 获取(刷新)授权公众号的令牌 /// 由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token拥有较长的有效期(30天),当refresh_token失效的后,需要用户重新授权。 /// </summary> /// <param name="componentAccessToken"></param> /// <param name="componentAppId"></param> /// <param name="authorizerAppId"></param> /// <param name="authorizerRefreshToken"></param> /// <param name="timeOut"></param> /// <returns></returns> public static RefreshAuthorizerTokenResult ApiAuthorizerToken(string componentAccessToken, string componentAppId, string authorizerAppId, string authorizerRefreshToken = null, int timeOut = Config.TIME_OUT) { var url = string.Format( "https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token={0}", componentAccessToken.AsUrlData()); var data = new { component_appid = componentAppId, authorizer_appid = authorizerAppId, authorizer_refresh_token = authorizerRefreshToken }; return CommonJsonSend.Send<RefreshAuthorizerTokenResult>(null, url, data, CommonJsonSendType.POST, timeOut); }
/// <summary> /// 获取授权方的选项设置信息 /// </summary> /// <param name="componentAppId">服务开发商的appid</param> /// <param name="componentAccessToken">服务开发方的access_token</param> /// <param name="authorizerAppId">授权公众号appid</param> /// <param name="optionName">选项名称</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static AuthorizerOptionResult GetAuthorizerOption(string componentAccessToken, string componentAppId, string authorizerAppId, OptionName optionName, int timeOut = Config.TIME_OUT) { var url = string.Format( "https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_option?component_access_token={0}", componentAccessToken); var data = new { component_appid = componentAppId, authorizer_appid = authorizerAppId, option_name = optionName }; return CommonJsonSend.Send<AuthorizerOptionResult>(null, url, data, CommonJsonSendType.POST, timeOut); }
/// <summary> /// 确认授权 /// </summary> /// <param name="componentAppId">服务开发方的appid</param> /// <param name="componentAccessToken">服务开发方的access_token</param> /// <param name="authorizerAppid">授权code,会在授权成功时返回给第三方平台,详见第三方平台授权流程说明</param> /// <param name="funscopeCategoryId">服务开发方的access_token</param> /// <param name="confirmValue">服务开发方的access_token</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static WxJsonResult ApiConfirmAuth(string componentAccessToken, string componentAppId, string authorizerAppid, int funscopeCategoryId, int confirmValue, int timeOut = Config.TIME_OUT) { var url = string.Format( "https://api.weixin.qq.com/ cgi-bin/component/api_confirm_authorization?component_access_token={0}", componentAccessToken.AsUrlData()); var data = new { component_appid = componentAppId, authorizer_appid = authorizerAppid, funscope_category_id = funscopeCategoryId, confirm_value = confirmValue }; return CommonJsonSend.Send<WxJsonResult>(null, url, data, CommonJsonSendType.POST, timeOut); }
/// <summary> /// 增加货架 /// </summary> /// <param name="accessTokenOrAppId"></param> /// <param name="m1">控件1数据</param> /// <param name="m2">控件2数据</param> /// <param name="m3">控件3数据</param> /// <param name="m4">控件4数据</param> /// <param name="m5">控件5数据</param> /// <param name="shelfBanner">货架招牌图片Url</param> /// <param name="shelfName">货架名称</param> /// <returns></returns> public static AddShelfResult AddShelves(string accessTokenOrAppId, M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, string shelfBanner, string shelfName) { return ApiHandlerWapper.TryCommonApi(accessToken => { var urlFormat = "https://api.weixin.qq.com/merchant/shelf/add?access_token={0}"; var data = new { shelf_data = new { module_infos = new object[] { m1, m2, m3, m4, m5 } }, shelf_banner = shelfBanner, shelf_name = shelfName }; return CommonJsonSend.Send<AddShelfResult>(accessToken, urlFormat, data); }, accessTokenOrAppId); //var urlFormat = "https://api.weixin.qq.com/merchant/shelf/add?access_token={0}"; //var data = new //{ // shelf_data = new // { // module_infos = new object[] // { // m1, // m2, // m3, // m4, // m5 // } // }, // shelf_banner = shelfBanner, // shelf_name = shelfName //}; //return CommonJsonSend.Send<AddShelfResult>(accessToken, urlFormat, data); }
/// <summary> /// 添加设备 /// </summary> /// <param name="accessTokenOrAppId"></param> /// <param name="shopId">门店ID</param> /// <param name="ssid">无线网络设备的ssid,不能包含中文字符,必需是“WX”开头(“WX”为大写字母)</param> /// <param name="password">无线网络设备的密码,大于8个字符,不能包含中文字符</param> /// <param name="bssid">无线网络设备无线mac地址,格式冒号分隔,字符长度17个,并且字母小写,例如:00:1f:7a:ad:5c:a8</param> /// <param name="timeOut"></param> /// <returns></returns> public static WxJsonResult AddDevice(string accessTokenOrAppId, long shopId, string ssid, string password, string bssid, int timeOut = Config.TIME_OUT) { return ApiHandlerWapper.TryCommonApi(accessToken => { const string urlFormat = "https://api.weixin.qq.com/bizwifi/device/add?access_token={0}"; var data = new { shop_id = shopId, ssid = ssid, password = password, bssid = bssid, }; return CommonJsonSend.Send<WxJsonResult>(accessToken, urlFormat, data, timeOut: timeOut); }, accessTokenOrAppId); }
/// <summary> /// 删除商品 /// </summary> /// <param name="accessTokenOrAppId"></param> /// <param name="productId">商品的Id</param> /// <returns></returns> public static WxJsonResult DeleteProduct(string accessTokenOrAppId, string productId) { return ApiHandlerWapper.TryCommonApi(accessToken => { var url = $"https://api.weixin.qq.com/merchant/del?access_token={accessToken}"; var data = new { product_id = productId }; return CommonJsonSend.Send<WxJsonResult>(accessToken, url, data); }, accessTokenOrAppId); //var urlFormat = "https://api.weixin.qq.com/merchant/del?access_token={0}"; //var data = new //{ // product_id = productId //}; //return CommonJsonSend.Send<WxJsonResult>(accessToken, urlFormat, data); }
/// <summary> /// 发货通知 /// </summary> /// <param name="appId">公众平台账户的AppId</param> /// <param name="openId">购买用户的OpenId</param> /// <param name="transId">交易单号</param> /// <param name="out_Trade_No">第三方订单号</param> /// <param name="deliver_TimesTamp">发货时间戳</param> /// <param name="deliver_Status">发货状态,1 表明成功,0 表明失败,失败时需要在deliver_msg 填上失败原因</param> /// <param name="deliver_Msg">发货状态信息,失败时可以填上UTF8 编码的错误提示信息,比如“该商品已退款</param> /// <param name="app_Signature">签名</param> /// <param name="sign_Method">签名方法</param> public static WxJsonResult Delivernotify(string appId, string openId, string transId, string out_Trade_No, string deliver_TimesTamp, string deliver_Status, string deliver_Msg, string app_Signature, string sign_Method = "sha1") { var accessToken = AccessTokenContainer.GetAccessToken(appId); var urlFormat = "https://api.weixin.qq.com/pay/delivernotify?access_token={0}"; //组装发送消息 var data = new { appid = appId, openid = openId, transid = transId, out_trade_no = out_Trade_No, deliver_timestamp = deliver_TimesTamp, deliver_status = deliver_Status, deliver_msg = deliver_Msg, app_signature = app_Signature, sign_method = sign_Method }; return CommonJsonSend.Send<WxJsonResult>(accessToken, urlFormat, data); }
/// <summary> /// 增加货架 /// </summary> /// <param name="accessToken"></param> /// <param name="m1">控件1数据</param> /// <param name="m2">控件2数据</param> /// <param name="m3">控件3数据</param> /// <param name="m4">控件4数据</param> /// <param name="m5">控件5数据</param> /// <param name="shelfBanner">货架招牌图片Url</param> /// <param name="shelfName">货架名称</param> /// <returns></returns> public static AddShelfResult AddShelves(string accessToken, M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, string shelfBanner, string shelfName) { var urlFormat = "https://api.weixin.qq.com/merchant/shelf/add?access_token={0}"; var data = new { shelf_data = new { module_infos = new object[] { m1, m2, m3, m4, m5 } }, shelf_banner = shelfBanner, shelf_name = shelfName }; return CommonJsonSend.Send<AddShelfResult>(accessToken, urlFormat, data); }