public static PayOrderResult CreateOrder(WeChatPayOrder order) { HttpHelper httpHelper = new HttpHelper(); SetSign(order); string data = CreateXmlParam(JsonConvert.DeserializeObject <Dictionary <string, string> >(JsonConvert.SerializeObject(order))); HttpResult result = httpHelper.GetHtml(new HttpItem() { URL = "https://api.mch.weixin.qq.com/pay/unifiedorder", Postdata = data, Method = "Post", PostEncoding = Encoding.UTF8, Encoding = Encoding.UTF8, ContentType = "text/xml;" }); PayOrderResult payOrderResult = XmlHelper.DeserializeToObject <PayOrderResult>(result.Html); payOrderResult.timeStamp = GetTimeStamp(DateTime.Now).ToString(); SetPaySign(payOrderResult); return(payOrderResult); }
/// <summary> /// MD5(appId=wxd678efh567hg6787& /// nonceStr=5K8264ILTKCH16CQ2502SI8ZNMTM67VS& /// package=prepay_id=wx2017033010242291fcfe0db70013231072& /// signType=MD5& /// timeStamp=1490840662& /// key=qazwsxedcrfvtgbyhnujmikolp111111) /// </summary> /// <param name="o"></param> static void SetPaySign(PayOrderResult o) { Dictionary <string, string> d = new Dictionary <string, string>(); d.Add("appId", AppID); d.Add("nonceStr", o.nonce_str); d.Add("package", "prepay_id=" + o.prepay_id); d.Add("signType", "MD5"); d.Add("timeStamp", o.timeStamp); var vDic = (from objDic in d orderby objDic.Key ascending select objDic); string stringA = ""; foreach (var item in vDic) { string val = item.Value; string key = item.Key; if (!string.IsNullOrEmpty(val)) { stringA += $"{key}={val}&"; } } stringA = stringA.Trim('&') + "&key=" + SHSercret; o.paySign = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(stringA, "MD5").ToUpper(); }