public void CallBack(YeePayCallBack yeePayCallBack) { try { //1.记录请求日志 Log.RecordLog("YeePayCallBackController", " resp: " + yeePayCallBack.resp + " sign: " + yeePayCallBack.sign, false); StringBuilder postData = new StringBuilder(); postData.Append("req=" + dataFornat.UrlEncode(yeePayCallBack.resp)); //编码 postData.Append("&sign=" + dataFornat.UrlEncode(yeePayCallBack.sign)); //编码 //Log.RecordLog("YeePayCallBackController", "(postData):" + postData.ToString(), false); string strHttpPost = yeePay.HttpPost(yeePayConfig._verifyUrl, postData.ToString()); // 2. 验证签名 if (strHttpPost.Contains("SUCCESS")) { Log.RecordLog("YeePayCallBackController", "验证签名通过(strHttpPost):" + strHttpPost, false); } else { Log.RecordLog("YeePayCallBackController", "验证签名不通过(strHttpPost):" + strHttpPost, false); } //序列化 XML 转 实体 // MoneyCarCar.Models.YeePay.response _response = yeePayCallBack.resp.XmlDeserialize<MoneyCarCar.Models.YeePay.response>(); } catch (Exception) { } }
public ActionResult UnbindBankCardCallBack(YeePayCallBack id) { StringBuilder postData = new StringBuilder(); postData.Append("req=" + dataFornat.UrlEncode(id.resp)); //编码 postData.Append("&sign=" + dataFornat.UrlEncode(id.sign)); //编码 MoneyCarCar.Models.YeePay.response _response = id.resp.XmlDeserialize <MoneyCarCar.Models.YeePay.response>(); if (_response.code.Equals("1") && _response.service.Equals(EnumServiceType.toUnbindBankCard.ToEnumDesc())) { string strHttpPost = HttpHelper.CreatHelper().HttpPost(yeePayConfig._verifyUrl, postData.ToString()); // 2. 验证签名 if (strHttpPost.Contains("SUCCESS")) { SystemUsers userInfo = (SystemUsers)Session["UserInfo"]; HttpHelper.CreatHelper().DoGetObject <BaseResultDto <bool> >(ApplicationPropertys.WEBAPI_URL + "/User/UnBindBank/" + userInfo.ID); ViewBag.ResultStatu = true; ViewBag.Message = "恭喜你,取消绑卡成功。"; } else { ViewBag.Message = "对不起,签名验证失败。"; } } else { ViewBag.Message = "对不起,取消绑卡失败。"; } return(View("Index")); }
public void MyTestMethod() { YeePayNotify yeePayNotify = new YeePayNotify(); YeePay yeePay = new YeePay(); string xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<notify>" + "<requestNo>c81d5f6f03d14a1ab2b1f4ae6f1b335f</requestNo>" + "<platformNo>10012425968</platformNo>" + "<bizType>REGISTER</bizType>" + "<code>1</code>" + "<message>注册成功</message>" + "<platformUserNo>cd01</platformUserNo>" + "</notify>"; xmlStr = readFile(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "\\notify.txt"); string sign = readFile(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "\\sign.txt");//@"MIIFLQYJKoZIhvcNAQcCoIIFHjCCBRoCAQExCzAJBgUrDgMCGgUAMC8GCSqGSIb3DQEHAaAiBCAyNzVhODM3MDk1N2YxMTc3M2YxMjY2NDQyNzMyOGVkYqCCA+8wggPrMIIDVKADAgECAhBdhWwmCJ6J4I7FOXDt/QXLMA0GCSqGSIb3DQEBBQUAMCoxCzAJBgNVBAYTAkNOMRswGQYDVQQKExJDRkNBIE9wZXJhdGlvbiBDQTIwHhcNMTQwMzMxMDgxMzM0WhcNMTcwMzMxMDgxMzM0WjCBhjELMAkGA1UEBhMCQ04xGzAZBgNVBAoTEkNGQ0EgT3BlcmF0aW9uIENBMjEWMBQGA1UECxMNcmEueWVlcGF5LmNvbTEUMBIGA1UECxMLRW50ZXJwcmlzZXMxLDAqBgNVBAMUIzA0MUBaeWVlcGF5LmNvbUB5ZWVwYXkuY29tQDAwMDAwMDAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUVZmAbx6za66GdcZS9T09zwWTNxHb/M56UG6/o/ejgWqSytKm/GIYlYc03nZs1Isbvz/WKUrf/TmJ7RjyoXKEyaNMecVqwN2V5me/58n023R5CUO09X0t4jhGRtY6PQkqMt0v+HjjtNNXyVrPi8TseI7Za1GF+pAVkSEqjFnX8QIDAQABo4IBszCCAa8wHwYDVR0jBBgwFoAU8I3ts0G7++8IHlUCwzE37zwUTs0wHQYDVR0OBBYEFM+Hqel2sjNtEREEhcOw/+HGRazZMAsGA1UdDwQEAwIE8DAMBgNVHRMEBTADAQEAMDsGA1UdJQQ0MDIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCDCB/wYDVR0fBIH3MIH0MFegVaBTpFEwTzELMAkGA1UEBhMCQ04xGzAZBgNVBAoTEkNGQ0EgT3BlcmF0aW9uIENBMjEMMAoGA1UECxMDQ1JMMRUwEwYDVQQDEwxjcmwxMDRfMTA2ODIwgZiggZWggZKGgY9sZGFwOi8vY2VydDg2My5jZmNhLmNvbS5jbjozODkvQ049Y3JsMTA0XzEwNjgyLE9VPUNSTCxPPUNGQ0EgT3BlcmF0aW9uIENBMixDPUNOP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RjbGFzcz1jUkxEaXN0cmlidXRpb25Qb2ludDATBgMqVgEEDBMKeWVlcGF5LmNvbTANBgkqhkiG9w0BAQUFAAOBgQBoIXByRAavrQaQ4blG0X6+n0Z6IOhdhkabLWobkK49l3Fhv2KuUsU+4vNCFa99cDWPKaV+IlNpk29f1i849GXPefAiWMCFggZkJOxUIdJU6gm8OZCEtteCiTq1Z8M6ywktM5Jmm5/y/aYeKSbHNcHMbIbs+BrS6IkZUssl4S1mcTGB4zCB4AIBATA+MCoxCzAJBgNVBAYTAkNOMRswGQYDVQQKExJDRkNBIE9wZXJhdGlvbiBDQTICEF2FbCYInongjsU5cO39BcswCQYFKw4DAhoFADANBgkqhkiG9w0BAQEFAASBgDUircc2OtIL19e0kR3FpNkO+EKRDDTxc15vl3pzs0MQffngdy7D+JcY6bixp/E9aDrrgkxMSLkgPn/YVKmNhyLEdP7cYsEsrbKp0QFesMPSY2E6oBzMSmqFlSaSRmGc4+z3yZpng1VvDF3a8t6Xjy9OWRJGvwTdmcXV5ZSQ1bdw"; //string url = "http://211.149.204.89:8088/verify"; //string strHttpPost = yeePay.HttpPost(url, "req=" + xmlStr + "&sign=" + sign); DataFornat http = new DataFornat(); xmlStr = http.UrlEncode(xmlStr); sign = http.UrlEncode(sign); string postData = string.Format("sign={0}¬ify={1}", sign, xmlStr); //string postData = string.Format("url={0}&type=post&sign={1}¬ify={2}", "http://211.149.204.89:81/YeePayNotify/Notify", sign, xmlStr); //string TestUrl = "http://211.149.204.89:81/TransData.aspx"; string TestUrl = "http://211.149.204.89:81/YeePayNotify/Notify"; string dd = http.HttpPost(TestUrl, postData); }
public void MyTestMethods() { string dir = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "//2015-01-151.txt"; System.IO.StreamReader sr = new StreamReader(dir, System.Text.Encoding.Default); string str = sr.ReadToEnd(); string xml = str; string dir2 = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "//2015-01-152.txt"; System.IO.StreamReader sr2 = new StreamReader(dir2, System.Text.Encoding.Default); string sign = sr2.ReadToEnd(); string url = "http://211.149.204.89:81/YeePayNotify/Notify"; YeePay yeepay = new YeePay(); DataFornat df = new DataFornat(); sign = df.UrlEncode(sign); //xml = df.UrlEncode(xml); string stringNoty = yeepay.HttpPost(url, "notify=" + xml + "&sign=" + sign); stringNoty = stringNoty + ""; }
public string Notify(YeePayNotify yeePayNotify) { bool reuslt = false; StringBuilder sbLog = new StringBuilder(); try { //1.记录请求日志 //sbLog.Append("\r\n 1、请求参数:" + " notify(XML): " + yeePayNotify.notify + " \r\n sign: " + yeePayNotify.sign); // 1.记录请求日志(不记录签名数据,只记录XML数据) sbLog.Append("\r\n 1、请求参数:" + " notify(XML): " + yeePayNotify.notify); StringBuilder postData = new StringBuilder(); postData.Append("req=" + dataFornat.UrlEncode(yeePayNotify.notify)); //编码 postData.Append("&sign=" + dataFornat.UrlEncode(yeePayNotify.sign)); //编码 string strHttpPost = yeePay.HttpPost(yeePayConfig._verifyUrl, postData.ToString()); sbLog.Append("\r\n 2. 验证签名状态:" + strHttpPost); // 2. 验证签名 if (strHttpPost.Contains("SUCCESS")) { // 解析XML XElement root = XElement.Parse(yeePayNotify.notify); string bizType = root.Element("bizType").Value; string code = root.Element("code").Value; notify _baseNotify = null; #region 3.业务处理 if (code == ((int)EnumCode.CodeTrue).ToString()) { #region if (bizType == EnumNotifyBizType.REGISTER.ToEnumDesc()) //2.1 注册( 2.6企业注册) ok { _baseNotify = yeePayNotify.notify.XmlDeserialize <notify>(); //序列化 XML 转 实体 reuslt = yeePayOper.ToRegister(_baseNotify.platformUserNo); } else if (bizType == EnumNotifyBizType.RECHARGE.ToEnumDesc())//2.2 充值 ok { _baseNotify = yeePayNotify.notify.XmlDeserialize <notify>(); reuslt = yeePayOper.ToRecharge(_baseNotify.platformUserNo, _baseNotify.requestNo); } else if (bizType == EnumNotifyBizType.WITHDRAW.ToEnumDesc()) // 2.3 提现 ok { MoneyCarCar.Models.YeePay.NotifyModel.toWithdraw.notify _notify = yeePayNotify.notify.XmlDeserialize <MoneyCarCar.Models.YeePay.NotifyModel.toWithdraw.notify>(); reuslt = yeePayOper.ToWithdraw(_baseNotify.platformUserNo, _baseNotify.requestNo); } else if (bizType == EnumNotifyBizType.BIND_BANK_CARD.ToEnumDesc())// 2.4 绑卡 ok { MoneyCarCar.Models.YeePay.NotifyModel.toBindBankCard.notify _notify = yeePayNotify.notify.XmlDeserialize <MoneyCarCar.Models.YeePay.NotifyModel.toBindBankCard.notify>(); string BankName = _notify.bank.ToEnum <EnumBank>().ToEnumDesc(); reuslt = yeePayOper.ToBindBank(_notify.cardNo, BankName, _notify.platformUserNo, _notify.requestNo); } else if (bizType == EnumNotifyBizType.UNBIND_BANK_CARD.ToEnumDesc()) { //2.5 同步处理 } else if (bizType == EnumNotifyBizType.TRANSACTION.ToEnumDesc()) { //2.7 转账、投标、还款、债权转让 _baseNotify = yeePayNotify.notify.XmlDeserialize <notify>(); if (_baseNotify.status == EnumNotifyStatus.PREAUTH.ToEnumDesc()) { BaseHelper baseHelper = new BaseHelper(); // 调用存储过程 :业务处理 string errorMsg = ""; reuslt = yeePayOper.ToCpTransaction(_baseNotify.requestNo, out errorMsg); if (reuslt) { #region 自动调用转账确认 MoneyCarCar.Models.YeePay.RequestModel.Complete_Transaction complete_Transaction = new MoneyCarCar.Models.YeePay.RequestModel.Complete_Transaction(); complete_Transaction.platformUserNo = _baseNotify.platformUserNo; complete_Transaction.requestNo = _baseNotify.requestNo; complete_Transaction.mode = EnumModeCOMPLETETRANSACTION.CONFIRM.ToString(); BaseResultDto <MoneyCarCar.Models.YeePay.Response.COMPLETE_TRANSACTION.response> baseResultDtoResponse = new BaseResultDto <MoneyCarCar.Models.YeePay.Response.COMPLETE_TRANSACTION.response>(); YeePay yeepay = new YeePay(); baseResultDtoResponse = yeepay.COMPLETE_TRANSACTION(complete_Transaction); string str = baseResultDtoResponse.ErrorMsg;//XML 数据 #endregion } else { sbLog.Append("\r\n (2.7 转账、投标、还款、债权转让)业务处理失败,不自动调用<转账确认>接口"); } } else if (_baseNotify.status == EnumNotifyStatus.DIRECT.ToEnumDesc()) { // 3.4 直接转账(平台转款)、 _baseNotify = yeePayNotify.notify.XmlDeserialize <notify>(); YeePayOper yeep = new YeePayOper(); reuslt = yeep.Direct_Transaction(_baseNotify.requestNo); } else if (_baseNotify.status == EnumNotifyStatus.CONFIRM.ToEnumDesc()) { // 3.5 自动转账(自动还款)单独调用, 与 3.7 无关 _baseNotify = yeePayNotify.notify.XmlDeserialize <notify>(); YeePayOper yeep = new YeePayOper(); reuslt = yeep.Direct_Transaction(_baseNotify.requestNo); if (reuslt) { #region 自动调用转账确认 MoneyCarCar.Models.YeePay.RequestModel.Complete_Transaction complete_Transaction = new MoneyCarCar.Models.YeePay.RequestModel.Complete_Transaction(); complete_Transaction.platformUserNo = _baseNotify.platformUserNo; complete_Transaction.requestNo = _baseNotify.requestNo; complete_Transaction.mode = EnumModeCOMPLETETRANSACTION.CONFIRM.ToString(); BaseResultDto <MoneyCarCar.Models.YeePay.Response.COMPLETE_TRANSACTION.response> baseResultDtoResponse = new BaseResultDto <MoneyCarCar.Models.YeePay.Response.COMPLETE_TRANSACTION.response>(); YeePay yeepay = new YeePay(); baseResultDtoResponse = yeepay.COMPLETE_TRANSACTION(complete_Transaction); string str = baseResultDtoResponse.ErrorMsg;//XML 数据 #endregion } else { sbLog.Append("\r\n (3.5 自动转账)业务处理失败,不自动调用<转账确认>接口"); } } else { sbLog.Append("\r\n 验证状态(status)失败:不处理"); } } else if (bizType == EnumNotifyBizType.AUTHORIZE_AUTO_TRANSFER.ToEnumDesc()) { //2.8 转账授权 _baseNotify = yeePayNotify.notify.XmlDeserialize <notify>(); // 调用存储过程 :业务处理 } else if (bizType == EnumNotifyBizType.AUTHORIZE_AUTO_REPAYMENT.ToEnumDesc()) { //2.9. 自动还款授权 _baseNotify = yeePayNotify.notify.XmlDeserialize <notify>(); // 调用存储过程 :业务处理 } else { sbLog.Append("\r\n 验证状态(bizType)失败:不处理"); } #endregion } else { sbLog.Append("\r\n 验证状态(code)失败:不处理"); } #endregion } } catch (Exception e) { sbLog.Append("\r\n 业务处理异常(catch):" + e.ToString()); } finally { sbLog.Append("\r\n 返回状态:" + (reuslt == true ? "SUCCESS" : "FALE")); Log.RecordLog("YeePayNotifyController", sbLog.ToString(), false); } if (reuslt == true) { return("SUCCESS"); //成功 } else { return("FALE"); //失败 } }
protected void Page_Load(object sender, EventArgs e) { string result = string.Empty; StringBuilder sbLog = new StringBuilder(); try { if (Request["url"] != null) { DataFornat dataFornat = new DataFornat(); string strUrl = dataFornat.UrlDecode(Request["url"].ToString()); string strRequestType = Request["type"].ToString(); sbLog.AppendFormat("转发类型:{0}\r\n", strRequestType); string strResult = string.Empty; NameValueCollection nv = new NameValueCollection(); List <string> datalist = new List <string>(); if (strRequestType.ToUpper() == "GET") { nv = Request.QueryString; StringBuilder sbData = new StringBuilder(); foreach (string key in nv.Keys) { if (key != "url" && key != "type") { if (key == "sign") { datalist.Add(key + "=" + dataFornat.UrlEncode(dataFornat.HtmlDiscode(dataFornat.UrlDecode(nv[key])))); } else { datalist.Add(key + "=" + dataFornat.HtmlDiscode(nv[key])); } } } sbData.AppendFormat("{0}?{1}", strUrl, string.Join("&", datalist.ToArray())); sbLog.AppendFormat("转发数据:{0}\r\n", sbData.ToString()); HttpHelper helper = new HttpHelper(); result = helper.DoGet(sbData.ToString(), 60); } else if (strRequestType.ToUpper() == "POST") { nv = Request.Form; foreach (string key in nv.Keys) { if (key != "url" && key != "type") { if (key == "sign") { datalist.Add(key + "=" + dataFornat.UrlEncode(nv[key])); } else if (key == "notify") { datalist.Add(key + "=" + dataFornat.UrlEncode(nv[key])); } else { if (key == "req") { string aa = dataFornat.HtmlDiscode(nv[key]); datalist.Add(key + "=" + dataFornat.UrlEncode(aa)); } else { datalist.Add(key + "=" + dataFornat.UrlEncode(dataFornat.HtmlDiscode(nv[key]))); } } } } sbLog.AppendFormat("转发Url:{0}\r\n", strUrl); sbLog.AppendFormat("转发数据:{0}\r\n", string.Join("&", datalist.ToArray())); result = dataFornat.HttpPost(strUrl, string.Join("&", datalist.ToArray())); } sbLog.AppendFormat("返回结果:{0}\r\n", result); } else { sbLog.Append("没有此方法"); } } catch (Exception ex) { sbLog.Append(ex.Message); } finally { Log.RecordLog("TransData", sbLog.ToString(), false); Response.Write(result); } }