/// <summary> /// 订单列表查看(卖家视角) /// </summary> /// <param name="clientId"></param> /// <param name="clientSecret"></param> /// <param name="accessToken"></param> /// <param name="reqModelOrderListOnSellerView"></param> /// <param name="apiRoot"></param> /// <param name="apiVersion"></param> /// <param name="apiNamespace"></param> /// <param name="apiName"></param> /// <param name="protocol"></param> /// <param name="sessionType"></param> /// <param name="requestSchema"></param> /// <param name="validateSignature"></param> /// <param name="timeOut"></param> /// <returns></returns> public static Com.Alibaba.Trade.Entities.OrderListForSellerContainer OrderListOnSellerViewRetrieve( string clientId, string clientSecret, string accessToken, Com.Alibaba.Trade.Entities.Request.ReqModelOrderListForSeller reqModelOrderListOnSellerView, string apiRoot = "openapi", string apiVersion = "1", string apiNamespace = "com.alibaba.trade", string apiName = "alibaba.trade.getSellerOrderList", Com.Alibaba.Protocol protocol = Com.Alibaba.Protocol.param2, SessionType sessionType = SessionType.Prod, UriSchema requestSchema = UriSchema.https, bool validateSignature = true, int timeOut = Config.TIME_OUT) { var requestPolicy = new Com.Alibaba.Entities.Request.RequestPolicy { ClientId = clientId, ClientSecret = clientSecret, AccessToken = accessToken, ApiRoot = apiRoot, ApiVersion = apiVersion, ApiNamespace = apiNamespace, ApiName = apiName, Protocol = protocol, SessionType = sessionType, RequestSchema = requestSchema, ValidateSignature = validateSignature }; return(ApiHandlerWrapper.TryCommonApi(token => { var result = CommonJsonSend.Send <Com.Alibaba.Trade.Entities.OrderListForSellerContainer>(requestPolicy, reqModelOrderListOnSellerView, timeOut: timeOut); return result; }, requestPolicy: requestPolicy)); }
public void EditGetLimit(int?num, string cardid) { Func <string, WxJsonResult> fun = null; if (!num.HasValue) { num = 0; } WXCardLogInfo carddata = context.WXCardLogInfo.FirstOrDefault(o => o.CardId == cardid); if (carddata != null) { string accessToken = GetAccessToken(carddata.AppId, carddata.AppSecret); if (!string.IsNullOrWhiteSpace(accessToken)) { if (fun == null) { fun = delegate(string accessToken2) { string urlFormat = string.Format("https://api.weixin.qq.com/card/update?access_token={0}", accessToken2); var data = new { card_id = carddata.CardId, general_coupon = new { base_info = new { get_limit = num } } }; return(CommonJsonSend.Send <WxJsonResult>(null, urlFormat, data, CommonJsonSendType.POST, 0x2710, false)); }; } WxJsonResult result = ApiHandlerWapper.TryCommonApi(fun, accessToken, true); if (result.errcode != ReturnCode.请求成功) { Log.Error("微信同步修改卡券个人限领失败", new Exception(((int)result.errcode).ToString() + ":" + result.errmsg)); } } } }
/// <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="shelfId">货架Id</param> /// <param name="shelfBanner">货架招牌图片Url</param> /// <param name="shelfName">货架名称</param> /// <returns></returns> public static WxJsonResult ModShelves(string accessToken, M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, int shelfId, string shelfBanner, string shelfName) { var urlFormat = "https://api.weixin.qq.com/merchant/shelf/mod?access_token={0}"; var data = new { shelf_id = shelfId, shelf_data = new { module_infos = new object[] { m1, m2, m3, m4, m5 } }, shelf_banner = shelfBanner, shelf_name = shelfName }; return(CommonJsonSend.Send <WxJsonResult>(accessToken, urlFormat, data)); }
/// <summary> /// 创建成员(mobile/weixinid/email三者不能同时为空) /// </summary> /// <param name="accessToken">调用接口凭证</param> /// <param name="userId">员工UserID。必须企业内唯一</param> /// <param name="name">成员名称。长度为1~64个字符</param> /// <param name="department">成员所属部门id列表。注意,每个部门的直属员工上限为1000个</param> /// <param name="position">职位信息。长度为0~64个字符</param> /// <param name="mobile">手机号码。必须企业内唯一</param> /// <param name="tel">办公电话。长度为0~64个字符</param> /// <param name="email">邮箱。长度为0~64个字符。必须企业内唯一</param> /// <param name="weixinId">微信号。必须企业内唯一</param> /// <param name="gender">性别。gender=1表示男,=2表示女。默认gender=0 未选</param> /// <param name="extattr">扩展属性。扩展属性需要在WEB管理端创建后才生效,否则忽略未知属性的赋值</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// accessToken、userId和name为必须的参数,其余参数不是必须的,可以传入null /// <returns></returns> public static WxJsonResult CreateMember(string accessToken, GetMemberResult objEntity, int timeOut = Config.TIME_OUT) { var url = "https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token={0}"; var data = new { userid = objEntity.userid, name = objEntity.name, department = objEntity.department, position = objEntity.position, mobile = objEntity.mobile, //最新的接口中去除了以下两个字段 gender = objEntity.gender, //tel = tel, email = objEntity.email, weixinid = objEntity.weixinid, extattr = objEntity.extattr, to_invite = objEntity.to_invite }; return(CommonJsonSend.Send <WxJsonResult>(accessToken, url, data, CommonJsonSendType.POST, timeOut)); }
/// <summary> /// 配置设备与门店的关联关系 /// 设备编号,若填了UUID、major、minor,则可不填设备编号,若二者都填,则以设备编号为优先 /// UUID、major、minor,三个信息需填写完整,若填了设备编号,则可不填此信息。 /// </summary> /// <param name="accessTokenOrAppId">调用接口凭证</param> /// <param name="deviceId">设备编号</param> /// <param name="uuId"></param> /// <param name="major"></param> /// <param name="minor"></param> /// <param name="poiId">Poi_id 的说明改为:设备关联的门店ID,关联门店后,在门店1KM的范围内有优先摇出信息的机会。</param> /// <param name="type">为1时,关联的门店和设备归属于同一公众账号;为2时,关联的门店为其他公众账号的门店。不填默认为1</param> /// <param name="timeOut"></param> /// <param name="poi_appid">当Type为2时,必填 关联门店所归属的公众账号的APPID</param> /// <returns></returns> public static WxJsonResult DeviceBindLocatoin(string accessTokenOrAppId, long deviceId, string uuId, long major, long minor, long poiId, string poi_appid, int type = 1, int timeOut = Config.TIME_OUT) { return(ApiHandlerWapper.TryCommonApi(accessToken => { string url = string.Format("https://api.weixin.qq.com/shakearound/device/bindlocation?access_token={0}", accessToken.AsUrlData()); var data = type == 2 ? new { device_identifier = new { device_id = deviceId, uuid = uuId, major = major, minor = minor }, poi_id = poiId, type = type, poi_appid = poi_appid } as object : new { device_identifier = new { device_id = deviceId, uuid = uuId, major = major, minor = minor }, poi_id = poiId } as object; return CommonJsonSend.Send <WxJsonResult>(null, url, data, CommonJsonSendType.POST, timeOut); }, accessTokenOrAppId)); }
/// <summary> /// 创建二维码 /// </summary> /// <param name="expireSeconds">该二维码有效时间,以秒为单位。 最大不超过1800。0时为永久二维码</param> /// <param name="sceneId">场景值ID,临时二维码时为32位整型,永久二维码时最大值为1000</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static CreateQrCodeResult Create(string accessToken, int expireSeconds, int sceneId, int timeOut = Config.TIME_OUT) { var urlFormat = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}"; object data = null; if (expireSeconds > 0) { data = new { expire_seconds = expireSeconds, action_name = "QR_SCENE", action_info = new { scene = new { scene_id = sceneId } } }; } else { data = new { action_name = "QR_LIMIT_SCENE", action_info = new { scene = new { scene_id = sceneId } } }; } return(CommonJsonSend.Send <CreateQrCodeResult>(accessToken, urlFormat, data, timeOut: timeOut)); }
/// <summary> /// 发送语音信息 /// </summary> /// <param name="accessToken">调用接口凭证</param> /// <param name="senderType">发送人类型</param> /// <param name="senderId">发送人标志</param> /// <param name="receiverType">接收人类型</param> /// <param name="receiverId">接收人标志</param> /// <param name="mediaId">语音的mediaId</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static WorkJsonResult SendVoice(string accessToken, KF_User_Type senderType, string senderId, KF_User_Type receiverType, string receiverId, string mediaId, int timeOut = Config.TIME_OUT) { var data = new { sender = new { type = senderType.ToString(), id = senderId }, receiver = new { type = receiverType.ToString(), id = receiverId }, msgtype = "voice", voice = new { media_id = mediaId } }; return(CommonJsonSend.Send <WorkJsonResult>(accessToken, URL_FORMAT, data, CommonJsonSendType.POST, timeOut)); }
/// <summary> /// 发送文本信息 /// </summary> /// <param name="accessToken">调用接口凭证</param> /// <param name="senderType">发送人类型</param> /// <param name="senderId">发送人标志</param> /// <param name="receiverType">接收人类型</param> /// <param name="receiverId">接收人标志</param> /// <param name="content">消息内容</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static WorkJsonResult SendText(string accessToken, KF_User_Type senderType, string senderId, KF_User_Type receiverType, string receiverId, string content, int timeOut = Config.TIME_OUT) { var data = new { sender = new { type = senderType.ToString(), id = senderId }, receiver = new { type = receiverType.ToString(), id = receiverId }, msgtype = "text", text = new { content = content } }; return(CommonJsonSend.Send <WorkJsonResult>(accessToken, URL_FORMAT, data, CommonJsonSendType.POST, timeOut)); }
/// <summary> /// 激活/绑定会员卡 /// </summary> /// <param name="AppId"></param> /// <param name="membershipNumber">必填,会员卡编号,作为序列号显示在用户的卡包里。</param> /// <param name="code">创建会员卡时获取的code</param> /// <param name="activateEndTime">激活后的有效截至时间。若不填写默认以创建时的 data_info 为准。Unix时间戳格式。</param> /// <param name="initBonus">初始积分,不填为0</param> /// <param name="initBalance">初始余额,不填为0</param> /// <param name="initCustomFieldValue1">创建时字段custom_field1定义类型的初始值,限制为4个汉字,12字节。</param> /// <param name="initCustomFieldValue2">创建时字段custom_field2定义类型的初始值,限制为4个汉字,12字节。</param> /// <param name="initCustomFieldValue3">创建时字段custom_field3定义类型的初始值,限制为4个汉字,12字节。</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <param name="cardId"></param> /// <param name="activateBeginTime">激活后的有效起始时间。若不填写默认以创建时的 data_info 为准。Unix时间戳格式。</param> /// <returns></returns> public static WxJsonResult MemberCardActivate(string AppId, string AppSecret, string membershipNumber, string code, string cardId, string activateBeginTime = null, string activateEndTime = null, string initBonus = null, string initBalance = null, string initCustomFieldValue1 = null, string initCustomFieldValue2 = null, string initCustomFieldValue3 = null, int timeOut = Config.TIME_OUT) { return(ApiHandlerWapper.TryCommonApi(accessToken => { var urlFormat = string.Format("https://api.weixin.qq.com/card/membercard/activate?access_token={0}", accessToken.AsUrlData()); var data = new { init_bonus = initBonus, init_balance = initBalance, membership_number = membershipNumber, code = code, card_id = cardId, activate_begin_time = activateBeginTime, activate_end_time = activateEndTime, init_custom_field_value1 = initCustomFieldValue1, init_custom_field_value2 = initCustomFieldValue2, init_custom_field_value3 = initCustomFieldValue3, }; return CommonJsonSend.Send <WxJsonResult>(null, urlFormat, data, timeOut: timeOut); }, AppId, AppSecret)); }
/// <summary> /// 小程序名称设置及改名 /// </summary> /// <para>https://api.weixin.qq.com/wxa/setnickname?access_token=TOKEN</para> /// <param name="accessToken">小程序的access_token</param> /// <param name="nick_name">昵称 必填</param> /// <param name="id_card">身份证照片–临时素材mediaid 个人号必填</param> /// <param name="license">组织机构代码证或营业执照–临时素材mediaid 组织号必填</param> /// <param name="naming_other_stuff_1">其他证明材料---临时素材 mediaid 选填</param> /// <param name="naming_other_stuff_2">其他证明材料---临时素材 mediaid 选填</param> /// <param name="naming_other_stuff_3">其他证明材料---临时素材 mediaid 选填</param> /// <param name="naming_other_stuff_4">其他证明材料---临时素材 mediaid 选填</param> /// <param name="naming_other_stuff_5">其他证明材料---临时素材 mediaid 选填</param> /// <returns></returns> public static SetNickNameJsonResult SetNickName(string accessToken, string nick_name, string id_card, string license, string naming_other_stuff_1 = "", string naming_other_stuff_2 = "", string naming_other_stuff_3 = "", string naming_other_stuff_4 = "", string naming_other_stuff_5 = "") { var url = $"{Config.ApiMpHost}/wxa/setnickname?access_token={accessToken.AsUrlData()}"; var data = new { nick_name = nick_name, id_card = id_card, license = license, naming_other_stuff_1 = naming_other_stuff_1, naming_other_stuff_2 = naming_other_stuff_2, naming_other_stuff_3 = naming_other_stuff_3, naming_other_stuff_4 = naming_other_stuff_4, naming_other_stuff_5 = naming_other_stuff_5 }; return(CommonJsonSend.Send <SetNickNameJsonResult>(null, url, data)); }
/// <summary> /// 获取所有邮费模板 /// </summary> /// <param name="accessToken"></param> /// <returns></returns> public static GetAllPostageTemplateResult GetAllPostageTemplate(string accessToken) { var urlFormat = "https://api.weixin.qq.com/merchant/express/getall?access_token={0}"; return(CommonJsonSend.Send <GetAllPostageTemplateResult>(accessToken, urlFormat, null, CommonJsonSendType.GET)); }
/// <summary> /// 获取指定ID的邮费模板 /// </summary> /// <param name="accessToken"></param> /// <param name="templateId">邮费模板Id</param> /// <returns></returns> public static GetByIdPostageTemplateResult GetByIdPostageTemplate(string accessToken, int templateId) { var urlFormat = "https://api.weixin.qq.com/merchant/express/getbyid?access_token={0}"; return(CommonJsonSend.Send <GetByIdPostageTemplateResult>(accessToken, urlFormat, templateId)); }
/// <summary> /// 获取颜色列表接口 /// </summary> /// <param name="accessToken"></param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static GetColorsResultJson GetColors(string accessToken, int timeOut = Config.TIME_OUT) { var urlFormat = string.Format("https://api.weixin.qq.com/card/getcolors?access_token={0}", accessToken); return(CommonJsonSend.Send <GetColorsResultJson>(null, urlFormat, null, timeOut: timeOut)); }
/// <summary> /// 获取客服列表 /// </summary> /// <param name="accessToken"></param> /// <param name="type">不填时,同时返回内部、外部客服列表</param> /// <param name="timeOut"></param> /// <returns></returns> public static GetKFListResult GetKFList(string accessToken, KF_Type?type = null, int timeOut = Config.TIME_OUT) { var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/kf/list?access_token={0}&type={1}", accessToken, type); return(CommonJsonSend.Send <GetKFListResult>(null, url, null, CommonJsonSendType.GET, timeOut)); }
/// <summary> /// 根据OpenId进行群发【订阅号不可用,服务号认证后可用】 /// </summary> /// <param name="accessTokenOrAppId">AccessToken或AppId(推荐使用AppId,需要先注册)</param> /// <param name="value">群发媒体文件时传入mediaId,群发文本消息时传入content,群发卡券时传入cardId</param> /// <param name="type"></param> /// <param name="openIds">openId字符串数组</param> /// <param name="clientmsgid">开发者侧群发msgid,长度限制64字节,如不填,则后台默认以群发范围和群发内容的摘要值做为clientmsgid</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static SendResult SendGroupMessageByOpenId(string accessTokenOrAppId, GroupMessageType type, string value, string clientmsgid = null, int timeOut = Config.TIME_OUT, params string[] openIds) { return(ApiHandlerWapper.TryCommonApi(accessToken => { string urlFormat = Config.ApiMpHost + "/cgi-bin/message/mass/send?access_token={0}"; BaseGroupMessageDataByOpenId baseData = null; switch (type) { case GroupMessageType.image: baseData = new GroupMessageByOpenId_ImageData() { touser = openIds, image = new GroupMessageByOpenId_MediaId() { media_id = value }, msgtype = "image" }; break; case GroupMessageType.voice: baseData = new GroupMessageByOpenId_VoiceData() { touser = openIds, voice = new GroupMessageByOpenId_MediaId() { media_id = value }, msgtype = "voice" }; break; case GroupMessageType.mpnews: baseData = new GroupMessageByOpenId_MpNewsData() { touser = openIds, mpnews = new GroupMessageByOpenId_MediaId() { media_id = value }, msgtype = "mpnews" }; break; case GroupMessageType.wxcard: baseData = new GroupMessageByOpenId_WxCardData() { touser = openIds, wxcard = new GroupMessageByOpenId_WxCard() { card_id = value }, msgtype = "wxcard" }; break; case GroupMessageType.video: throw new Exception("发送视频信息请使用SendVideoGroupMessageByOpenId方法。"); break; case GroupMessageType.text: baseData = new GroupMessageByOpenId_TextData() { touser = openIds, text = new GroupMessageByOpenId_Content() { content = value }, msgtype = "text" }; break; default: throw new Exception("参数错误。"); break; } baseData.clientmsgid = clientmsgid; return CommonJsonSend.Send <SendResult>(accessToken, urlFormat, baseData, timeOut: timeOut); }, accessTokenOrAppId)); }
/// <summary> /// 创建卡券 /// </summary> /// <param name="accessTokenOrAppId"></param> /// <param name="cardInfo">创建卡券需要的数据,格式可以看CardCreateData.cs</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static CardCreateResultJson CreateCard(string accessTokenOrAppId, BaseCardInfo cardInfo, int timeOut = Config.TIME_OUT) { return(ApiHandlerWapper.TryCommonApi(accessToken => { var urlFormat = string.Format("https://api.weixin.qq.com/card/create?access_token={0}", accessToken); CardCreateInfo cardData = null; CardType cardType = cardInfo.GetCardType(); switch (cardType) { case CardType.GENERAL_COUPON: cardData = new CardCreateInfo() { card = new Card_GeneralCoupon() { card_type = cardType.ToString(), general_coupon = cardInfo as Card_GeneralCouponData } }; break; case CardType.GROUPON: cardData = new CardCreateInfo() { card = new Card_Groupon() { card_type = cardType.ToString(), groupon = cardInfo as Card_GrouponData } }; break; case CardType.GIFT: cardData = new CardCreateInfo() { card = new Card_Gift() { card_type = cardType.ToString(), gift = cardInfo as Card_GiftData } }; break; case CardType.CASH: cardData = new CardCreateInfo() { card = new Card_Cash() { card_type = cardType.ToString(), cash = cardInfo as Card_CashData } }; break; case CardType.DISCOUNT: cardData = new CardCreateInfo() { card = new Card_DisCount() { card_type = cardType.ToString(), discount = cardInfo as Card_DisCountData } }; break; case CardType.MEMBER_CARD: cardData = new CardCreateInfo() { card = new Card_MemberCard() { card_type = cardType.ToString(), member_card = cardInfo as Card_MemberCardData } }; break; case CardType.SCENIC_TICKET: cardData = new CardCreateInfo() { card = new Card_ScenicTicket() { card_type = cardType.ToString(), scenic_ticket = cardInfo as Card_ScenicTicketData } }; break; case CardType.MOVIE_TICKET: cardData = new CardCreateInfo() { card = new Card_MovieTicket() { card_type = cardType.ToString(), movie_ticket = cardInfo as Card_MovieTicketData } }; break; case CardType.BOARDING_PASS: cardData = new CardCreateInfo() { card = new Card_BoardingPass() { card_type = cardType.ToString(), boarding_pass = cardInfo as Card_BoardingPassData } }; break; case CardType.LUCKY_MONEY: cardData = new CardCreateInfo() { card = new Card_LuckyMoney() { card_type = cardType.ToString(), lucky_money = cardInfo as Card_LuckyMoneyData } }; break; case CardType.MEETING_TICKET: cardData = new CardCreateInfo() { card = new Card_MeetingTicket() { card_type = cardType.ToString(), meeting_ticket = cardInfo as Card_MeetingTicketData } }; break; default: break; } var jsonSetting = new JsonSetting(true, null, new List <Type>() { //typeof (Modify_Msg_Operation), //typeof (CardCreateInfo), typeof(Card_BaseInfoBase) //过滤Modify_Msg_Operation主要起作用的是这个 }); var result = CommonJsonSend.Send <CardCreateResultJson>(null, urlFormat, cardData, timeOut: timeOut, //针对特殊字段的null值进行过滤 jsonSetting: jsonSetting); return result; }, accessTokenOrAppId)); }
/// <summary> /// 检验授权凭证(access_token)是否有效 /// </summary> /// <param name="accessToken"></param> /// <param name="openId">用户的唯一标识</param> /// <returns></returns> public static WxJsonResult Auth(string accessToken, string openId) { var url = string.Format("https://api.weixin.qq.com/sns/auth?access_token={0}&openid={1}", accessToken.AsUrlData(), openId.AsUrlData()); return(CommonJsonSend.Send <WxJsonResult>(null, url, null, CommonJsonSendType.GET)); }
/// <summary> /// 获取用户基本信息 /// </summary> /// <param name="accessToken">调用接口凭证</param> /// <param name="openId">普通用户的标识,对当前公众号唯一</param> /// <param name="lang">返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语</param> /// <returns></returns> public static OAuthUserInfo GetUserInfo(string accessToken, string openId, Language lang = Language.zh_CN) { var url = string.Format(Config.ApiMpHost + "/sns/userinfo?access_token={0}&openid={1}&lang={2}", accessToken.AsUrlData(), openId.AsUrlData(), lang.ToString("g").AsUrlData()); return(CommonJsonSend.Send <OAuthUserInfo>(null, url, null, CommonJsonSendType.GET)); }
/// <summary> /// 检验授权凭证(access_token)是否有效 /// </summary> /// <param name="accessToken">调用接口凭证</param> /// <param name="openId">用户的唯一标识</param> /// <returns></returns> public static WxJsonResult Auth(string accessToken, string openId) { var url = string.Format(Config.ApiMpHost + "/sns/auth?access_token={0}&openid={1}", accessToken.AsUrlData(), openId.AsUrlData()); return(CommonJsonSend.Send <WxJsonResult>(null, url, null, CommonJsonSendType.GET)); }
/// <summary> /// 获取所有邮费模板 /// </summary> /// <param name="accessToken"></param> /// <returns></returns> public static GetAllExpressResult GetAllExpress(string accessToken) { var urlFormat = Config.ApiMpHost + "/merchant/express/getall?access_token={0}"; return(CommonJsonSend.Send <GetAllExpressResult>(accessToken, urlFormat, null, CommonJsonSendType.GET)); }
/// <summary> /// 减少库存 /// </summary> /// <param name="accessToken"></param> /// <param name="reduceStockData">减少库存需要Post的数据</param> /// <returns></returns> public static WxJsonResult ReduceStock(string accessToken, ReduceStockData reduceStockData) { var urlFormat = "https://api.weixin.qq.com/merchant/stock/reduce?access_token={0}"; return(CommonJsonSend.Send <WxJsonResult>(accessToken, urlFormat, reduceStockData)); }
/// <summary> /// 增加邮费模板 /// </summary> /// <param name="accessToken"></param> /// <param name="addExpressData">增加邮费模板需要Post的数据</param> /// <returns></returns> public static AddExpressResult AddExpress(string accessToken, AddExpressData addExpressData) { var urlFormat = Config.ApiMpHost + "/merchant/express/add?access_token={0}"; return(CommonJsonSend.Send <AddExpressResult>(accessToken, urlFormat, addExpressData)); }
//官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1481187827_i0l21 #region 步方法 #region 根据分组或标签群发 /// <summary> /// 根据分组或标签进行群发【订阅号与服务号认证后均可用】 /// /// 请注意: /// 1、该接口暂时仅提供给已微信认证的服务号 /// 2、虽然开发者使用高级群发接口的每日调用限制为100次,但是用户每月只能接收4条,请小心测试 /// 3、无论在公众平台网站上,还是使用接口群发,用户每月只能接收4条群发消息,多于4条的群发将对该用户发送失败。 /// 4、群发视频时需要先调用GetVideoMediaIdResult接口获取专用的MediaId然后进行群发 /// /// </summary> /// <param name="accessTokenOrAppId">AccessToken或AppId(推荐使用AppId,需要先注册)</param> /// <param name="groupId">群发到的分组的group_id,参见用户管理中用户分组接口,若is_to_all值为true,可不填写group_id;如果groupId和tagId同时填写,优先使用groupId;groupId和tagId最多只能使用一个</param> /// <param name="tagId">群发到的标签的tag_id,若is_to_all值为true,可不填写tag_id;如果groupId和tagId同时填写,优先使用groupId;groupId和tagId最多只能使用一个</param> /// <param name="value">群发媒体文件时传入mediaId,群发文本消息时传入content,群发卡券时传入cardId</param> /// <param name="type"></param> /// <param name="isToAll">用于设定是否向全部用户发送,值为true或false,选择true该消息群发给所有用户,选择false可根据group_id发送给指定群组的用户</param> /// <param name="sendIgnoreReprint">待群发的文章被判定为转载时,是否继续群发</param> /// <param name="clientmsgid">开发者侧群发msgid,长度限制64字节,如不填,则后台默认以群发范围和群发内容的摘要值做为clientmsgid</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> private static SendResult SendGroupMessageByFilter(string accessTokenOrAppId, string groupId, string tagId, string value, GroupMessageType type, bool isToAll = false, bool sendIgnoreReprint = false, string clientmsgid = null, int timeOut = Config.TIME_OUT) { return(ApiHandlerWapper.TryCommonApi(accessToken => { string urlFormat = Config.ApiMpHost + "/cgi-bin/message/mass/sendall?access_token={0}"; BaseGroupMessageDataByFilter baseData = null; BaseGroupMessageByFilter filter = null; if (!groupId.IsNullOrEmpty()) { filter = new GroupMessageByGroupId() { group_id = groupId, is_to_all = isToAll, }; } else { filter = new GroupMessageByTagId() { tag_id = tagId, is_to_all = isToAll, }; } switch (type) { case GroupMessageType.image: baseData = new GroupMessageByFilter_ImageData() { filter = filter, image = new GroupMessageByGroupId_MediaId() { media_id = value }, msgtype = "image" }; break; case GroupMessageType.voice: baseData = new GroupMessageByFilter_VoiceData() { filter = filter, voice = new GroupMessageByGroupId_MediaId() { media_id = value }, msgtype = "voice" }; break; case GroupMessageType.mpnews: baseData = new GroupMessageByFilter_MpNewsData() { filter = filter, mpnews = new GroupMessageByGroupId_MediaId() { media_id = value }, msgtype = "mpnews" }; break; case GroupMessageType.video: baseData = new GroupMessageByFilter_MpVideoData() { filter = filter, mpvideo = new GroupMessageByGroupId_MediaId() { media_id = value }, msgtype = "mpvideo" }; break; case GroupMessageType.wxcard: baseData = new GroupMessageByFilter_WxCardData() { filter = filter, wxcard = new GroupMessageByGroupId_WxCard() { card_id = value }, msgtype = "wxcard" }; break; case GroupMessageType.text: baseData = new GroupMessageByFilter_TextData() { filter = filter, text = new GroupMessageByGroupId_Content() { content = value }, msgtype = "text" }; break; default: throw new Exception("参数错误。"); //break; } baseData.send_ignore_reprint = sendIgnoreReprint ? 0 : 1;//待群发的文章被判定为转载时,是否继续群发 baseData.clientmsgid = clientmsgid; return CommonJsonSend.Send <SendResult>(accessToken, urlFormat, baseData, timeOut: timeOut); }, accessTokenOrAppId)); }
/// <summary> /// 修改邮费模板 /// </summary> /// <param name="accessToken"></param> /// <param name="upDateExpressData">修改邮费模板需要Post的数据</param> /// <returns></returns> public static WxJsonResult UpDateExpress(string accessToken, UpDateExpressData upDateExpressData) { var urlFormat = Config.ApiMpHost + "/merchant/express/update?access_token={0}"; return(CommonJsonSend.Send <WxJsonResult>(accessToken, urlFormat, upDateExpressData)); }
/// <summary> /// 预览接口【订阅号与服务号认证后均可用】 /// 注意:openId与wxName两者任选其一,同时传入以wxName优先 /// </summary> /// <param name="accessTokenOrAppId">AccessToken或AppId(推荐使用AppId,需要先注册)</param> /// <param name="value">群发媒体消息时为media_id,群发文本信息为content</param> /// <param name="type"></param> /// <param name="openId">接收消息用户对应该公众号的openid</param> /// <param name="wxName">接收消息用户的微信号</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static SendResult SendGroupMessagePreview(string accessTokenOrAppId, GroupMessageType type, string value, string openId, string wxName = null, int timeOut = Config.TIME_OUT) { return(ApiHandlerWapper.TryCommonApi(accessToken => { string urlFormat = Config.ApiMpHost + "/cgi-bin/message/mass/preview?access_token={0}"; BaseGroupMessageDataPreview baseData = null; switch (type) { case GroupMessageType.image: baseData = new GroupMessagePreview_ImageData() { touser = openId, towxname = wxName, image = new GroupMessagePreview_MediaId() { media_id = value }, msgtype = "image" }; break; case GroupMessageType.voice: baseData = new GroupMessagePreview_VoiceData() { touser = openId, towxname = wxName, voice = new GroupMessagePreview_MediaId() { media_id = value }, msgtype = "voice" }; break; case GroupMessageType.mpnews: baseData = new GroupMessagePreview_MpNewsData() { touser = openId, towxname = wxName, mpnews = new GroupMessagePreview_MediaId() { media_id = value }, msgtype = "mpnews" }; break; case GroupMessageType.video: baseData = new GroupMessagePreview_MpVideoData() { touser = openId, towxname = wxName, mpvideo = new GroupMessagePreview_MediaId() { media_id = value }, msgtype = "mpvideo" }; break; case GroupMessageType.text: baseData = new GroupMessagePreview_TextData() { touser = openId, towxname = wxName, text = new GroupMessagePreview_Content() { content = value }, msgtype = "text" }; break; case GroupMessageType.wxcard: throw new Exception("发送卡券息请使用WxCardGroupMessagePreview方法。"); default: throw new Exception("参数错误。"); } return CommonJsonSend.Send <SendResult>(accessToken, urlFormat, baseData, timeOut: timeOut); }, accessTokenOrAppId)); }
/// <summary> /// 增加邮费模板 /// </summary> /// <param name="accessToken"></param> /// <param name="addPostageTemplateData">增加邮费模板需要Post的数据</param> /// <returns></returns> public static AddPostageTemplateResult AddPostageTemplate(string accessToken, AddPostageTemplateData addPostageTemplateData) { var urlFormat = "https://api.weixin.qq.com/merchant/express/add?access_token={0}"; return(CommonJsonSend.Send <AddPostageTemplateResult>(accessToken, urlFormat, addPostageTemplateData)); }
public static CreateQrCodeResult Create(string accessTokenOrAppId, int expireSeconds, int sceneId, QrCode_ActionName actionName, string sceneStr = null, int timeOut = Config.TIME_OUT) { return(ApiHandlerWapper.TryCommonApi(accessToken => { var urlFormat = Config.ApiMpHost + "/cgi-bin/qrcode/create?access_token={0}"; object data = null; switch (actionName) { case QrCode_ActionName.QR_SCENE: data = new { expire_seconds = expireSeconds, action_name = "QR_SCENE", action_info = new { scene = new { scene_id = sceneId } } }; break; case QrCode_ActionName.QR_LIMIT_SCENE: data = new { action_name = "QR_LIMIT_SCENE", action_info = new { scene = new { scene_id = sceneId } } }; break; case QrCode_ActionName.QR_LIMIT_STR_SCENE: data = new { action_name = "QR_LIMIT_STR_SCENE", action_info = new { scene = new { scene_str = sceneStr } } }; break; case QrCode_ActionName.QR_STR_SCENE: data = new { expire_seconds = expireSeconds, action_name = "QR_STR_SCENE", action_info = new { scene = new { scene_str = sceneStr } } }; break; default: //throw new ArgumentOutOfRangeException(nameof(actionName), actionName, null); throw new ArgumentOutOfRangeException(actionName.GetType().Name, actionName, null); } return CommonJsonSend.Send <CreateQrCodeResult>(accessToken, urlFormat, data, timeOut: timeOut); }, accessTokenOrAppId)); }
/// <summary> /// 删除邮费模板 /// </summary> /// <param name="accessToken"></param> /// <param name="templateId">邮费模板Id</param> /// <returns></returns> public static WxJsonResult DeletePostageTemplate(string accessToken, int templateId) { var urlFormat = "https://api.weixin.qq.com/merchant/express/del?access_token={0}"; return(CommonJsonSend.Send <WxJsonResult>(accessToken, urlFormat, templateId)); }
/// <summary> /// 创建卡券 /// </summary> /// <param name="accessToken"></param> /// <param name="cardInfo">创建卡券需要的数据,格式可以看CardCreateData.cs</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static CardCreateResultJson CreateCard(string accessToken, BaseCardInfo cardInfo, int timeOut = Config.TIME_OUT) { var urlFormat = string.Format("https://api.weixin.qq.com/card/create?access_token={0}", accessToken); CardCreateInfo cardData = null; CardType cardType = cardInfo.CardType; switch (cardType) { case CardType.GENERAL_COUPON: cardData = new CardCreateInfo() { card = new Card_GeneralCoupon() { card_type = cardType, general_coupon = cardInfo as Card_GeneralCouponData } }; break; case CardType.GROUPON: cardData = new CardCreateInfo() { card = new Card_Groupon() { card_type = cardType, groupon = cardInfo as Card_GrouponData } }; break; case CardType.GIFT: cardData = new CardCreateInfo() { card = new Card_Gift() { card_type = cardType, gift = cardInfo as Card_GiftData } }; break; case CardType.CASH: cardData = new CardCreateInfo() { card = new Card_Cash() { card_type = cardType, cash = cardInfo as Card_CashData } }; break; case CardType.DISCOUNT: cardData = new CardCreateInfo() { card = new Card_DisCount() { card_type = cardType, discount = cardInfo as Card_DisCountData } }; break; case CardType.MEMBER_CARD: cardData = new CardCreateInfo() { card = new Card_MemberCard() { card_type = cardType, member_card = cardInfo as Card_MemberCardData } }; break; case CardType.SCENIC_TICKET: cardData = new CardCreateInfo() { card = new Card_ScenicTicket() { card_type = cardType, scenic_ticket = cardInfo as Card_ScenicTicketData } }; break; case CardType.MOVIE_TICKET: cardData = new CardCreateInfo() { card = new Card_MovieTicket() { card_type = cardType, movie_ticket = cardInfo as Card_MovieTicketData } }; break; case CardType.BOARDING_PASS: cardData = new CardCreateInfo() { card = new Card_BoardingPass() { card_type = cardType, boarding_pass = cardInfo as Card_BoardingPassData } }; break; case CardType.LUCKY_MONEY: cardData = new CardCreateInfo() { card = new Card_LuckyMoney() { card_type = cardType, lucky_money = cardInfo as Card_LuckyMoneyData } }; break; case CardType.MEETING_TICKET: cardData = new CardCreateInfo() { card = new Card_MeetingTicket() { card_type = cardType, meeting_ticket = cardInfo as Card_MeetingTicketData } }; break; default: break; } return(CommonJsonSend.Send <CardCreateResultJson>(null, urlFormat, cardData, timeOut: timeOut)); }
/// <summary> /// 修改邮费模板 /// </summary> /// <param name="accessToken"></param> /// <param name="upDatePostageTemplateData">修改邮费模板需要Post的数据</param> /// <returns></returns> public static WxJsonResult UpDatePostageTemplate(string accessToken, UpDatePostageTemplateData upDatePostageTemplateData) { var urlFormat = "https://api.weixin.qq.com/merchant/express/update?access_token={0}"; return(CommonJsonSend.Send <WxJsonResult>(accessToken, urlFormat, upDatePostageTemplateData)); }