public static WeChatPayOrder GetWeChatPayOrder() { WeChatPayOrder weChatPayOrder = new WeChatPayOrder(); weChatPayOrder.nonce_str = Guid.NewGuid().ToString("N"); weChatPayOrder.notify_url = WeChatPayCallBack; return(weChatPayOrder); }
/// <summary> /// 获取签名 /// 第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下: ///stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA"; ///第二步:拼接API密钥: ///stringSignTemp=stringA+"&key=192006250b4c09247ec02edce69f6a2d" //注:key为商户平台设置的密钥key ///sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7" //注:MD5签名方式 ///sign=hash_hmac("sha256", stringSignTemp, key).toUpperCase()="6A9AE1657590FD6257D693A078E1C3E4BB6BA4DC30B23E0EE2496E54170DACD6" //注:HMAC-SHA256签名方式 /// </summary> /// <returns></returns> static void SetSign(WeChatPayOrder order) { var d = JsonConvert.DeserializeObject <Dictionary <string, string> >(JsonConvert.SerializeObject(order)); 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; order.sign = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(stringA, "MD5").ToUpper(); }
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); }