/// <summary> /// 优惠券接口(同步方法) /// 算法 /// 1:key-value 降序排列(a-z) /// 2:对value url编码 /// 3:value url编码结果小写全部转换为大写 /// 4:url参数+key MD5 32加密生成sign作为参数 /// </summary> /// <param name="memberOrder"></param> /// <param name="doPost"></param> public static string ConfirmMemberOrder(ConfirmMemberOrder memberOrder) { using (var client = new HttpClient()) { var url = ConfigHelper.GetAppConfig("MemberOrderConfirm"); var paramaters = new List <KeyValuePair <string, string> >(); paramaters.Add(new KeyValuePair <string, string>("appid", 1002.ToString())); paramaters.Add(new KeyValuePair <string, string>("product_fee", memberOrder.product_fee.ToString())); paramaters.Add(new KeyValuePair <string, string>("products", Newtonsoft.Json.JsonConvert.SerializeObject(memberOrder.products))); paramaters.Add(new KeyValuePair <string, string>("shop_name", memberOrder.shop_name)); paramaters.Add(new KeyValuePair <string, string>("shop_sn", memberOrder.shop_sn)); paramaters.Add(new KeyValuePair <string, string>("uid", memberOrder.uid.ToString())); paramaters = paramaters.OrderBy(item => item.Key).ToList(); var paramString = string.Empty; paramaters.ForEach(item => { paramString += $"{item.Key}={Ingpal.BusinessStore.Infrastructure.Encodetool.UrlEncode((item.Value??""))}&"; }); int pos = paramString.LastIndexOf("&"); paramString = paramString.Remove(pos); var urlString = paramString.Trim() + $"6196248fb93d30b7de7553749857300c"; var sign = Encodetool.Md5_32(urlString); paramString += $"&sign={sign}"; Task <HttpResponseMessage> resonse = client.GetAsync(url + paramString); var resString = resonse.Result.Content.ReadAsStringAsync().GetAwaiter().GetResult(); return(resString); } }
/// <summary> /// 会员查询接口 /// </summary> /// <param name="member"></param> /// <param name="doPost"></param> /// <param name="queryType"></param> public async static void ValidMemberInfo(MemberParams member, Func <string, bool> doPost, MemberQueryType queryType = MemberQueryType.Mobile) { using (var client = new HttpClient()) { bool isMobileQuery = queryType == MemberQueryType.Mobile; var queryTypeName = isMobileQuery ? "mobile" : "cardid"; var interfaceName = isMobileQuery ? MemberInterface.mobile : MemberInterface.card; var url = string.Format(ConfigHelper.GetAppConfig("MemberGateway"), interfaceName); member.url = url; member.appid = ConfigHelper.GetAppConfig("appid"); member.secret_key = ConfigHelper.GetAppConfig("Secretkey"); var sign = Encodetool.Md5_32($"appid={member.appid}&{queryTypeName}={member.queryid}{member.secret_key}"); member.sign = sign; var values = new List <KeyValuePair <string, string> >(); values.Add(new KeyValuePair <string, string>(queryTypeName, member.queryid)); values.Add(new KeyValuePair <string, string>("appid", member.appid)); values.Add(new KeyValuePair <string, string>("sign", sign)); var content = new FormUrlEncodedContent(values); var response = await client.PostAsync(member.url, content); var resString = await response.Content.ReadAsStringAsync(); doPost(resString); } }