/// <summary> /// 代付返回 /// </summary> /// <param name="strResult"></param> /// <returns></returns> public string DFCallBackHandle(string strResult) { try { /* * {"amount":"10000","merchNo":"XF201806040000","msg":"提交成功","orderNo":"201808011041370902x0S","sign":"289B38555EB6A987A320DB4BC12F644E","stateCode":"00"} */ //Log.WriteTextLog("RuiFuDaiFuInfo", "DFCallBackHandle()返回==>" + strResult, DateTime.Now); if (string.IsNullOrEmpty(strResult)) { return(""); } if (strResult == "银行不支持") { return(""); } Dictionary <string, string> paramsDic = new Dictionary <string, string>(); LitJson.JsonData jd = JsonMapper.ToObject(strResult); if (jd == null) { return(""); } if ((string)jd["stateCode"] != "00") { return(string.Format("错误,响应码:{0},响应消息:{1}", (string)jd["stateCode"], (string)jd["msg"])); } paramsDic.Add("merchNo", (string)jd["merchNo"]); paramsDic.Add("stateCode", (string)jd["stateCode"]); paramsDic.Add("msg", (string)jd["msg"]); paramsDic.Add("orderNo", (string)jd["orderNo"]); paramsDic.Add("amount", (string)jd["amount"]); paramsDic = paramsDic.OrderBy(o => o.Key).ToDictionary(o => o.Key, pp => pp.Value); string sourceStr = "{"; foreach (KeyValuePair <string, string> v in paramsDic) { sourceStr += string.Format("\"{0}\":\"{1}\",", v.Key, v.Value); } sourceStr = sourceStr.Substring(0, sourceStr.Length - 1) + "}" + userId; if (MD5Encrypt.MD5(sourceStr, false).ToUpper().Equals((string)jd["sign"]) == false) { return("验签失败!"); } string result = string.Format("金额:{0},状态:{1},消息:{2}", (Convert.ToDecimal((string)jd["amount"])) / 100, (string)jd["stateCode"], (string)jd["msg"]); return(result); } catch (Exception ex) { return(ex.Message); } }
/// <summary> /// 代付查询 /// </summary> /// <returns></returns> public string SelectSubmit() { try { int Entrustid = 0;//出款订单ID Dictionary <String, String> paramdic = new Dictionary <String, String>(); paramdic.Add("merchNo", userId); paramdic.Add("orderNo", DateTime.Now.ToString("yyyyMMdd_") + Entrustid); paramdic.Add("amount", 100.ToString()); paramdic.Add("remitDate", DateTime.Now.ToString("yyyy-MM-dd")); paramdic = paramdic.OrderBy(o => o.Key).ToDictionary(o => o.Key, pp => pp.Value); string sourceStr = "{"; foreach (KeyValuePair <string, string> v in paramdic) { sourceStr += string.Format("\"{0}\":\"{1}\",", v.Key, v.Value); } sourceStr = sourceStr.Substring(0, sourceStr.Length - 1) + "}" + "MD5Key"; paramdic.Add("sign", MD5Encrypt.MD5(sourceStr, false).ToUpper()); paramdic = paramdic.OrderBy(o => o.Key).ToDictionary(o => o.Key, pp => pp.Value); sourceStr = "{"; foreach (KeyValuePair <string, string> v in paramdic) { sourceStr += string.Format("\"{0}\":\"{1}\",", v.Key, v.Value); } sourceStr = sourceStr.Substring(0, sourceStr.Length - 1) + "}"; string publicKey = "RSA代付公钥";// base.GateUserEmail; string cipher_data = ""; publicKey = RSAEncodHelper.RSAPublicKeyJava2DotNet(publicKey); byte[] cdatabyte = RSAEncodHelper.RSAPublicKeySignByte(sourceStr, publicKey); cipher_data = Convert.ToBase64String(cdatabyte); string paramstr = "data=" + System.Web.HttpUtility.UrlEncode(cipher_data) + "&merchNo=" + userId + "&version=" + version; //string p = HttpUtil.BuildQuery(paramdic, true); string strResult = HttpPost.SendPost("http://127.0.0.1/api/queryRemitResult.action", paramstr, 5000); return(strResult); } catch (Exception ex) { return(ex.Message); } }
/// <summary> /// 查询返回 /// </summary> /// <param name="strResult"></param> /// <returns></returns> public string SelectCallBackHandle(string strResult) { try { Dictionary <string, string> paramsDic = new Dictionary <string, string>(); LitJson.JsonData jd = JsonMapper.ToObject(strResult); if (jd == null) { return(""); } if ((string)jd["stateCode"] != "00") { return(string.Format("错误,响应码:{0},响应消息:{1}", (string)jd["stateCode"], (string)jd["msg"])); } paramsDic.Add("merchNo", (string)jd["merchNo"]); paramsDic.Add("stateCode", (string)jd["stateCode"]); paramsDic.Add("orderNo", (string)jd["orderNo"]); paramsDic.Add("amount", (string)jd["amount"]); paramsDic.Add("msg", (string)jd["msg"]); paramsDic.Add("remitStateCode", (string)jd["remitStateCode"]); paramsDic = paramsDic.OrderBy(o => o.Key).ToDictionary(o => o.Key, pp => pp.Value); string sourceStr = "{"; foreach (KeyValuePair <string, string> v in paramsDic) { sourceStr += string.Format("\"{0}\":\"{1}\",", v.Key, v.Value); } sourceStr = sourceStr.Substring(0, sourceStr.Length - 1) + "}" + "MD5Key"; if (MD5Encrypt.MD5(sourceStr, false).ToUpper().Equals((string)jd["sign"]) == false) { return("验签失败!"); } //return string.Format("代付状态:{0},消息:{1}",(string)jd["remitStateCode"],ReturnStatusByCode((string)jd["remitStateCode"])); string result = string.Format("金额:{0},代付状态:{1}", (Convert.ToDecimal((string)jd["amount"])) / 100, (string)jd["remitStateCode"]); return(result); } catch (Exception ex) { return(ex.Message); } }
/// <summary> /// 入款支付 /// </summary> private string PaySubmit() { string payurl = "http://47.94.6.240:9003/api/pay"; //请求地址 string userId = "LFP201808250000"; //商户ID string orderNo = dateStr + "test"; Dictionary <String, String> paramdic = new Dictionary <String, String>(); paramdic.Add("merchNo", userId); paramdic.Add("netwayType", "WX"); paramdic.Add("randomNo", new Random().Next(1000, 9999).ToString()); //随机号 可以重复 paramdic.Add("orderNo", orderNo); //订单交易号 paramdic.Add("amount", "100"); //订单金额 单位分 paramdic.Add("goodsName", "家具配套"); //商品名称 paramdic.Add("notifyUrl", "http://www.xxx.com/api/callback.aspx"); //支付结果异步通知地址 paramdic.Add("notifyViewUrl", "http://www.xxx.com/api/callback.aspx"); //回显地址 paramdic = paramdic.OrderBy(o => o.Key).ToDictionary(o => o.Key, pp => pp.Value); string sourceStr = "{"; foreach (KeyValuePair <string, string> v in paramdic) { sourceStr += string.Format("\"{0}\":\"{1}\",", v.Key, v.Value); } sourceStr = sourceStr.Substring(0, sourceStr.Length - 1) + "}" + "MD5Key"; paramdic.Add("sign", MD5Encrypt.MD5(sourceStr, false).ToUpper()); paramdic = paramdic.OrderBy(o => o.Key).ToDictionary(o => o.Key, pp => pp.Value); sourceStr = "{"; foreach (KeyValuePair <string, string> v in paramdic) { sourceStr += string.Format("\"{0}\":\"{1}\",", v.Key, v.Value); } sourceStr = sourceStr.Substring(0, sourceStr.Length - 1) + "}"; string publicKey = "RSA支付公钥";// base.GateUserEmail; string cipher_data = ""; publicKey = RSAEncodHelper.RSAPublicKeyJava2DotNet(publicKey); byte[] cdatabyte = RSAEncodHelper.RSAPublicKeySignByte(sourceStr, publicKey); cipher_data = Convert.ToBase64String(cdatabyte); string paramstr = "data=" + System.Web.HttpUtility.UrlEncode(cipher_data) + "&merchNo=" + userId + "&version=" + version; //string p = HttpUtil.BuildQuery(paramdic, true); string strResult = HttpPost.SendPost(payurl, paramstr, 5000); //支付返回 #region 支付返回 try { /* * data={“key1":"val1","key2":"val2","sign":"1111111111111"} * key= AiYLumB03Fingt3R3ULdvFzS * metaSign={“key1":"val1","key2":"val2"}key,去除 sign 字段 * sign=MD5(metaSign) */ //strResult="{\"merchNo\":\"XF201806040000\",\"msg\":\"提交成功\",\"orderNo\":\"20180801102543215VCqeRK\",\"qrcodeUrl\":\"https://qr.alipay.com/bax04012imdorbvgrls78018\",\"sign\":\"96DCC7A5140BF58CD02D18D518B770E9\",\"stateCode\":\"00\"}"; if (string.IsNullOrEmpty(strResult)) { return(""); } Dictionary <string, string> paramsDic = new Dictionary <string, string>(); LitJson.JsonData jd = JsonMapper.ToObject(strResult); if (jd == null) { return(""); } if ((string)jd["stateCode"] != "00") { return((string)jd["msg"]); } paramsDic.Add("merchNo", (string)jd["merchNo"]); paramsDic.Add("stateCode", (string)jd["stateCode"]); paramsDic.Add("msg", (string)jd["msg"]); paramsDic.Add("orderNo", (string)jd["orderNo"]); paramsDic.Add("qrcodeUrl", (string)jd["qrcodeUrl"]); paramsDic = paramsDic.OrderBy(o => o.Key).ToDictionary(o => o.Key, pp => pp.Value); sourceStr = "{"; foreach (KeyValuePair <string, string> v in paramsDic) { sourceStr += string.Format("\"{0}\":\"{1}\",", v.Key, v.Value); } sourceStr = sourceStr.Substring(0, sourceStr.Length - 1) + "}" + "MD5Key"; if (MD5Encrypt.MD5(sourceStr, false).ToUpper().Equals((string)jd["sign"]) == false) { //Log.WriteTextLog("RuiFuPayInfo", "PayCallBackHandle验签失败:返回原文:" + sourceStr + ";返回密钥:" + (string)jd["sign"] + "", DateTime.Now); return("验签失败!" + strResult); } return((string)jd["qrcodeUrl"]); } catch (Exception ex) { //Log.WriteTextLog("RuiFuPayInfo", "PayCallBackHandle失败::" + ex.Message, DateTime.Now); return(ex.Message); } #endregion }
//入款支付查询 private string PaySelect() { try { string orderSelectUrl = "http://127.0.0.1/api/queryPayResult"; string netwayType = "ZFB"; string userId = "HFB201808250000"; Dictionary <String, String> paramdic = new Dictionary <String, String>(); paramdic.Add("merchNo", userId); paramdic.Add("netwayType", netwayType); paramdic.Add("orderNo", dateStr + "test"); //订单交易号 paramdic.Add("amount", "100"); //订单金额 paramdic.Add("goodsName", "家具配套"); //商品名称 paramdic.Add("payDate", DateTime.Now.ToString("yyyy-MM-dd")); paramdic = paramdic.OrderBy(o => o.Key).ToDictionary(o => o.Key, pp => pp.Value); string sourceStr = "{"; foreach (KeyValuePair <string, string> v in paramdic) { sourceStr += string.Format("\"{0}\":\"{1}\",", v.Key, v.Value); } sourceStr = sourceStr.Substring(0, sourceStr.Length - 1) + "}" + "MD5Key"; paramdic.Add("sign", MD5Encrypt.MD5(sourceStr, false).ToUpper()); paramdic = paramdic.OrderBy(o => o.Key).ToDictionary(o => o.Key, pp => pp.Value); sourceStr = "{"; foreach (KeyValuePair <string, string> v in paramdic) { sourceStr += string.Format("\"{0}\":\"{1}\",", v.Key, v.Value); } sourceStr = sourceStr.Substring(0, sourceStr.Length - 1) + "}"; string publicKey = "RSA支付公钥";// base.GateUserEmail; string cipher_data = ""; publicKey = RSAEncodHelper.RSAPublicKeyJava2DotNet(publicKey); byte[] cdatabyte = RSAEncodHelper.RSAPublicKeySignByte(sourceStr, publicKey); cipher_data = Convert.ToBase64String(cdatabyte); string paramstr = "data=" + System.Web.HttpUtility.UrlEncode(cipher_data) + "&merchNo=" + userId + "&version=" + version; //string p = HttpUtil.BuildQuery(paramdic, true); string strResult = HttpPost.SendPost(orderSelectUrl, paramstr, 5000); #region 查询返回 LitJson.JsonData jd = JsonMapper.ToObject(strResult); if (jd == null) { return(""); } if ((string)jd["stateCode"] != "00") { return(string.Format("查询失败,状态:{0},消息:{1}", (string)jd["stateCode"], (string)jd["msg"])); } Dictionary <string, string> paramsDic = new Dictionary <string, string>(); paramsDic.Add("merchNo", (string)jd["merchNo"]); paramsDic.Add("msg", (string)jd["msg"]); paramsDic.Add("stateCode", (string)jd["stateCode"]); paramsDic.Add("orderNo", (string)jd["orderNo"]); paramsDic.Add("payStateCode", (string)jd["payStateCode"]); paramsDic = paramsDic.OrderBy(o => o.Key).ToDictionary(o => o.Key, pp => pp.Value); sourceStr = "{"; foreach (KeyValuePair <string, string> v in paramsDic) { sourceStr += string.Format("\"{0}\":\"{1}\",", v.Key, v.Value); } sourceStr = sourceStr.Substring(0, sourceStr.Length - 1) + "}" + userId; if (MD5Encrypt.MD5(sourceStr, false).ToUpper().Equals((string)jd["sign"]) == false) { return("验签失败!"); } return(string.Format("订单状态:{0}(00:支付成功;06:初始,50:网络异常,04:其他错误,03:签名错误,01:失败,99:未支付,05:未知),消息:{1}", (string)jd["payStateCode"], ReturnStatusByCode((string)jd["payStateCode"]))); #endregion } catch (Exception ex) { return(ex.Message); } }
/// <summary> /// 代付 /// </summary> /// <returns></returns> public string DFSubmit() { try { string Entrustid = "自己代付出款对应id"; string m_bankcode = ""; string EntrusBankName = "自己项目对应银行编号"; for (var i = 0; i < bankcodeArray.GetLength(0); i++) { if (EntrusBankName.Contains(bankcodeArray[i, 1])) { m_bankcode = bankcodeArray[i, 0]; break; } } if (m_bankcode == "") { return("银行不支持"); } Dictionary <String, String> paramdic = new Dictionary <String, String>(); paramdic.Add("merchNo", userId); paramdic.Add("orderNo", DateTime.Now.ToString("yyyyMMdd_") + Entrustid); paramdic.Add("amount", "100"); paramdic.Add("bankCode", m_bankcode); paramdic.Add("bankAccountName", "张三"); //开户名 paramdic.Add("bankAccountNo", "00000000000000"); //银行卡号 paramdic.Add("notifyUrl", "http://127.0.0.1/callBackUrl"); // 回调地址 //排序 paramdic = paramdic.OrderBy(o => o.Key).ToDictionary(o => o.Key, pp => pp.Value); string sourceStr = "{"; foreach (KeyValuePair <string, string> v in paramdic) { sourceStr += string.Format("\"{0}\":\"{1}\",", v.Key, v.Value); } //{"key":"value"}md5key sourceStr = sourceStr.Substring(0, sourceStr.Length - 1) + "}" + "MD5Key"; paramdic.Add("sign", MD5Encrypt.MD5(sourceStr, false).ToUpper()); paramdic = paramdic.OrderBy(o => o.Key).ToDictionary(o => o.Key, pp => pp.Value); sourceStr = "{"; foreach (KeyValuePair <string, string> v in paramdic) { sourceStr += string.Format("\"{0}\":\"{1}\",", v.Key, v.Value); } //{"key":"value"..."sign":""} sourceStr = sourceStr.Substring(0, sourceStr.Length - 1) + "}"; //Log.WriteTextLog("RuiFuDaiFuInfo", "代付提交md5加密后:" + sourceStr, DateTime.Now); string publicKey = "加密私钥";// base.GateUserEmail; string cipher_data = ""; publicKey = RSAEncodHelper.RSAPublicKeyJava2DotNet(publicKey); byte[] cdatabyte = RSAEncodHelper.RSAPublicKeySignByte(sourceStr, publicKey); cipher_data = Convert.ToBase64String(cdatabyte); string paramstr = "data=" + System.Web.HttpUtility.UrlEncode(cipher_data) + "&merchNo=" + userId + "&version=" + version; //Log.WriteTextLog("RuiFuDaiFuInfo", "请求参数:" + paramstr, DateTime.Now); //string p = HttpUtil.BuildQuery(paramdic, true); string d = paramstr; string strResult = HttpPost.SendPost("http://47.94.6.240:9003/api/remit", paramstr, 5000); return(strResult); } catch (Exception ex) { //Log.WriteTextLog("RuiFuDaiFuInfo", "DFSubmit()==>" + ex.Message, DateTime.Now); return(ex.Message); } }