public QRCodeWxResponse CreateQRCode(string cardid) { var request = WeChatApiRequestBuilder.GenerateWxQRCodeUrl(this.WeChat.GetToken()); return(request.GetResponseForJson <QRCodeWxResponse>((http) => { http.Method = "POST"; http.ContentType = "application/json; encoding=utf-8"; var data = new { action_name = "QR_CARD", expire_seconds = 1800, action_info = new { card = new { card_id = cardid, code = CodeTypes.CODE_TYPE_QRCODE.ToString(), openid = "", is_unique_code = false, outer_str = "13b", } } }; using (var stream = http.GetRequestStream()) { var buffers = UTF8Encoding.UTF8.GetBytes(data.SerializeToJson()); stream.Write(buffers, 0, buffers.Length); stream.Flush(); } return http; })); }
public QueryCardCouponWxResponse QueryCardCouponOnWechat() { var request = WeChatApiRequestBuilder.GenerateQueryCardUrl(GetToken()); //支持开发者拉出指定状态的卡券列表 //CARD_STATUS_NOT_VERIFY”, 待审核 ; //“CARD_STATUS_VERIFY_FAIL”, 审核失败; //“CARD_STATUS_VERIFY_OK”, 通过审核; //“CARD_STATUS_DELETE”, 卡券被商户删除; //“CARD_STATUS_DISPATCH”, 在公众平台投放过的卡券; return(request.GetResponseForJson <QueryCardCouponWxResponse>((http) => { var data = new { offset = 0, count = 100, status_list = new string[] { "CARD_STATUS_NOT_VERIFY", "CARD_STATUS_VERIFY_FAIL", "CARD_STATUS_VERIFY_OK", "CARD_STATUS_DELETE", "CARD_STATUS_DISPATCH" } }; http.Method = "POST"; http.ContentType = "application/json; encoding=utf-8"; using (var stream = http.GetRequestStream()) { var body = data.SerializeToJson(); var buffers = UTF8Encoding.UTF8.GetBytes(body); stream.Write(buffers, 0, buffers.Length); stream.Flush(); } return http; })); }
public WeChatUserInfo GetWxUser(string openid, string appid, string secret) { var request = WeChatApiRequestBuilder.GenreateQueryWxLoginUserUrl(openid, GetToken(appid, secret)); var text = request.GetUriContentDirectly(); var result = request.GetResponseForJson <WeChatUserInfo>(); return(result); }
public IWxAuthorization GetSessionKey(string code, string appid, string secret) { var request = WeChatApiRequestBuilder.GenerateWxAuthRequestUrl(appid, code, secret); var text = request.GetUriContentDirectly(); var auth = text.DeserializeToObject <WeChatAuthorization>(); // request.GetResponseForJson<WeChatAuthorization>(); return(auth); }
public ApplyProtocolWxResponse GetApplyProtocol() { return(this.Cache.Get(CacheKey_ApplyProtocol, ctx => { var apply = WeChatApiRequestBuilder.GenerateWxGetApplyProtocolUrl(GetToken()) .GetResponseForJson <ApplyProtocolWxResponse>(); ctx.Monitor(this.Clock.When(TimeSpan.FromDays(15)));//默认过期时间为 7200秒 return apply; })); }
public WxAccessToken GetAccessTokenByCode(string code) { var request = WeChatApiRequestBuilder.GenerateOAuth2ByCode(code); var token = request.GetResponseForJson <WxAccessToken>(); //根据openid 换回 unionid以及其他用户信息 var queryLoginUser = WeChatApiRequestBuilder.GenreateQueryWxLoginUserUrl(token.OpenId, GetToken()); token.LoginUser = queryLoginUser.GetResponseForJson <WxLoginUser>(); return(token); }
public WxSession CreateWxSession(IWxAuthContext context) { var request = WeChatApiRequestBuilder.GenerateWxAuthRequestUrl(context.AppId, context.Code, Constants.WxConfig.AppSecret); var auth = request.GetResponseForJson <WeChatAuthorization>(); var wechatUser = Decrypt <WeChatUserInfo>(context.Data, context.IV, auth.SessionKey); return(new WxSession() { LoginUser = context, Miniprogram = null, WeCharUser = wechatUser, Authorization = auth }); }
public string GetToken(string appid, string appsecret) { return(this.Cache.Get(appid, ctx => { var token = WeChatApiRequestBuilder.GenerateWxTokenRequestUrl(appid, appsecret).GetResponseForJson <AccessTokenWxResponse>(); ctx.Monitor(this.Clock.When(TimeSpan.FromSeconds(token.Expiresin)));//默认过期时间为 7200秒 if (token.HasError) { Logger.Error(token.ErrMsg); } return token.Token; })); }
private UploadMediaWxResponse UploadMaterial(string url, string name, byte[] buffers) { var response = url.GetResponseForJson <UploadMediaWxResponse>((http) => { http.Method = "POST"; http.ContentType = "application/x-www-form-urlencoded"; System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer(); http.CookieContainer = cookieContainer; http.AllowAutoRedirect = true; http.Method = "POST"; string boundary = System.DateTime.UtcNow.Ticks.ToString("X"); // 随机分隔线 http.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary; byte[] itemBoundaryBytes = System.Text.Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n"); byte[] endBoundaryBytes = System.Text.Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); //// TODO :need change default filename var sbHeader = new System.Text.StringBuilder(string.Format( "Content-Disposition:form-data;name=\"media\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", @"Enjoy.jpg")); byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString()); using (Stream postStream = http.GetRequestStream()) { postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length); postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); postStream.Write(buffers, 0, buffers.Length); postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length); postStream.Flush(); } return(http); }); response.Value = response.MediaId ?? response.Url; if (string.IsNullOrEmpty(response.MediaId) == false)//if has mediaid { this.OS.CreateMediaDirectoryIfNotExits(Constants.Directory_Media_Protocol_ROOT); var mediaFileName = this.OS.WorkContext.HttpContext.Server.MapPath(string.Concat(Constants.Directory_Media_Protocol_ROOT, "/", response.MediaId, ".jpg")); if (File.Exists(mediaFileName)) { File.Delete(mediaFileName); } using (var stream = new FileStream(mediaFileName, FileMode.Create)) { stream.Write(buffers, 0, buffers.Length); stream.Flush(); } } response.Url = string.IsNullOrEmpty(response.MediaId) ? response.Url : WeChatApiRequestBuilder.GenerateImageUrlByMediaId(response.MediaId); return(response); }
public NormalWxResponse TestwhiteList(string[] wechatids) { var request = WeChatApiRequestBuilder.GenerateWxtestwhitelist(this.WeChat.GetToken()); return(request.GetResponseForJson <NormalWxResponse>((http) => { http.Method = "POST"; http.ContentType = "application/json; encoding=utf-8"; var data = new { openid = new string[] { }, username = wechatids }; return http; })); }
/// <summary> /// /// </summary> /// <param name="submerchant"></param> /// <returns></returns> public WxResponseWapper <CreateSubmerchantResponse> CreateSubmerchant(WxRequestWapper <SubMerchant> submerchant) { var request = WeChatApiRequestBuilder.GenerateWxSubmerchantUrl(this.GetToken(), submerchant.Info.MerchantId == null); return(request.GetResponseForJson <WxResponseWapper <CreateSubmerchantResponse> >((http) => { http.Method = "POST"; http.ContentType = "application/json; encoding=utf-8"; using (var stream = http.GetRequestStream()) { var body = submerchant.SerializeToJson(); var buffers = UTF8Encoding.UTF8.GetBytes(body); stream.Write(buffers, 0, buffers.Length); stream.Flush(); } return http; })); }
public NormalWxResponse DeleteCardCoupon(string cardid) { var request = WeChatApiRequestBuilder.GenerateDeleteCardCoupon(GetToken()); return(request.GetResponseForJson <NormalWxResponse>((http) => { var data = new { card_id = cardid }; http.Method = "POST"; http.ContentType = "application/json; encoding=utf-8"; using (var stream = http.GetRequestStream()) { var body = data.SerializeToJson(); var buffers = UTF8Encoding.UTF8.GetBytes(body); stream.Write(buffers, 0, buffers.Length); stream.Flush(); } return http; })); }
public CreateCouponWxResponse Publish(long id) { var model = this.GetCardCounpon(id); var request = string.IsNullOrEmpty(model.WxNo) ? WeChatApiRequestBuilder.GenerateWxCreateCardUrl(this.WeChat.GetToken()) : WeChatApiRequestBuilder.GenerateWxUpdateCardUrl(this.WeChat.GetToken()); ////TODO : update has some error var result = request.GetResponseForJson <CreateCouponWxResponse>((http) => { http.Method = "POST"; http.ContentType = "application/json;encoding=utf-8"; using (var stream = http.GetRequestStream()) { var json = string.IsNullOrEmpty(model.WxNo) ? model.CardCoupon.GenreateCreatingWapper().SerializeToJson() : model.CardCoupon.GenreateUpgradeWpper().SerializeToJson(); var buffers = UTF8Encoding.UTF8.GetBytes(json); stream.Write(buffers, 0, buffers.Length); stream.Flush(); } return(http); }); if (result.HasError == false) { model.State = CardCouponStates.Approved; model.WxNo = result.CardId; model.CardCoupon.CardId = result.CardId; if (model.Type == CardTypes.MEMBER_CARD) { this.WeChat.SetMemberCardFieldIfActiveByWx(model.WxNo); } this.SaveOrUpdate(model); } else { model.State = CardCouponStates.PublishedError; this.SaveOrUpdate(model); } return(result); }
/// <summary> /// 提交审核 /// </summary> /// <param name="model"></param> /// <returns></returns> private void PushToWechat(MerchantModel model) { var request = WeChatApiRequestBuilder.GenerateWxSubmerchantUrl(this.WeChat.GetToken(), model.MerchantId == null); var wapper = new WxRequestWapper <SubMerchant>(); wapper.Info = new SubMerchant(model); wapper.Info.EndTime = model.EndTime; var wxrep = this.WeChat.CreateSubmerchant(wapper); if (wxrep.HasError == false) { model.Status = AuditStatus.CHECKING; model.MerchantId = wxrep.Info.MerchantId; model.ErrMsg = string.Empty; } else { model.Status = AuditStatus.UnCommitted; model.ErrMsg = wxrep.ErrMsg; } }
public void SetMemberCardFieldIfActiveByWx(string cardid) { var request = WeChatApiRequestBuilder.GenerateMemberActiveUserform(GetToken()); var result = request.GetResponseForJson <NormalWxResponse>((http) => { var data = new { card_id = cardid, //service_statement = new //{ // name = "会员守则", // url = "https://www.yourc.club/wap/statement"////TODO :需要完成 会员守则页面 //}, //bind_old_card = new //{ // name = "老会员绑定", // url = "https =//www.qq.com" //}, required_form = new { can_modify = false, common_field_id_list = new string[] { "USER_FORM_INFO_FLAG_MOBILE" } }, optional_form = new { can_modify = false, common_field_id_list = new string[] { "USER_FORM_INFO_FLAG_NAME", "USER_FORM_INFO_FLAG_SEX", "USER_FORM_INFO_FLAG_BIRTHDAY" } } }; http.Method = "POST"; http.ContentType = "application/json; encoding=utf-8"; using (var stream = http.GetRequestStream()) { var body = data.SerializeToJson(); var buffers = UTF8Encoding.UTF8.GetBytes(body); stream.Write(buffers, 0, buffers.Length); stream.Flush(); } return(http); }); /* * 字段值 描述 * USER_FORM_INFO_FLAG_MOBILE 手机号 * USER_FORM_INFO_FLAG_SEX 性别 * USER_FORM_INFO_FLAG_NAME 姓名 * USER_FORM_INFO_FLAG_BIRTHDAY 生日 * USER_FORM_INFO_FLAG_IDCARD 身份证 * USER_FORM_INFO_FLAG_EMAIL 邮箱 * USER_FORM_INFO_FLAG_LOCATION 详细地址 * USER_FORM_INFO_FLAG_EDUCATION_BACKGRO 教育背景 * USER_FORM_INFO_FLAG_INDUSTRY 行业 * USER_FORM_INFO_FLAG_INCOME 收入 * USER_FORM_INFO_FLAG_HABIT 兴趣爱好 */ }
public IWxAccessToken GetWxAccessToken(string appid, string secret) { var request = WeChatApiRequestBuilder.GenerateWxTokenRequestUrl(appid, secret); return(request.GetResponseForJson <WxAccessToken>()); }
public UploadMediaWxResponse UploadMaterial(string name, byte[] buffers) { var request = WeChatApiRequestBuilder.GenerateWxUploaMediaUrl(this.GetToken(), MediaUploadTypes.AuthMaterial); return(UploadMaterial(request, name, buffers)); }
public void CheckCardAgentQulification() { var request = WeChatApiRequestBuilder.GenerateCheckCardAgentRequest(GetToken()); var context = request.GetUriContentDirectly(); }
public UploadMediaWxResponse UploadMaterialToCDN(byte[] buffers) { return(UploadMaterial(WeChatApiRequestBuilder.GenerateWxUploaMediaUrl(this.GetToken(), MediaUploadTypes.Material) , "logo", buffers)); }