protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// ////////////////////////To receive the parameter form HTML form////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// //////////////////////////// Data signature //////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; if (sign_type == "RSA-S") //RSA-S签名方法 { //商家私钥 string merchant_private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALIgluJzrKhOw/+sKlUZW+GFISjeXCqNz45rhEd4pRhg92ZDwyJxsIWVMUggCJLjSAke2wmVOiYJB/V9rNwlCzal5BGCSD0y8VckUb8LMv5wnNxr3wjrXf6IbZWsgNOwZg1mo+Cji5LCwoKvYvbZNK33Nb9MwbBh1PHUVP8AsfM3AgMBAAECgYEAr6oyAtse39Dlu+OWz9u1X/+BhyNa82Bs20Au8KkK77LY6NJUw0gpVGOgeUeWDP31kYELdDTlZpMrdS9eZLBnj/QofFTx7GSeod+vV13cgA6rc0yzjTp25Dm7Xzihf15R5JiNIFzlSYC2TLz+HcJoprxY6Pf6I/1qBjZuoC67eEECQQDjDhEI7s010aXXYQy3xwC/RUDosnfMARqRCpYFCYmoyMiUZ7+ohIvWkkCcwHx7VNKnXfmF0ezdXNT2TCKfXj6hAkEAyNXFKkCPtbg+GFqUlxlfta1s7FJuC1b8ZyaA1ygqUK5PJUoEKR9UcDg0uCKx4Zofpm46WCHx8w8M0+Abss8a1wJAA5JqFDDli44zxLKjJ5T63wdw4PhFyDDQQS3gdE3VG5GlDiifrEABjyuX1p90leAcvENPNJq71jOqqgFCni02YQJAQ8q09SA54lNA0qOwyJhOEFtsCxGAB9/i70a18uqh7f4IxUOIyADFVeQDF6zOcqK90EYg96Ltsuf/on1hnCgAnQJBANGvRflfL1Xvelv2jb446Gnq83IwQ6WJvO8z7/awfMmDsC88MI2bE0xcWJ2QPZZEVJkgCmwOXc26G+z0eei/z/U="; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.vsdpay.com/query/dcard", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/is_success"); var merchantcode1 = el.XPathSelectElement("/merchant_code"); var orderno1 = el.XPathSelectElement("/order_no"); var ordertime1 = el.XPathSelectElement("/order_time"); var orderamount1 = el.XPathSelectElement("/order_amount"); var trade_no1 = el.XPathSelectElement("/trade_no"); var card_no1 = el.XPathSelectElement("/card_no"); var card_code1 = el.XPathSelectElement("/card_code"); var pay_date1 = el.XPathSelectElement("/pay_date"); var card_amount1 = el.XPathSelectElement("/trade/card_amount"); var card_actual_amount1 = el.XPathSelectElement("/card_actual_amount"); var dinpaysign1 = el.XPathSelectElement("/sign"); var trade_status1 = el.XPathSelectElement("/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string card_no = Regex.Match(card_no1.ToString(), "(?<=>).*?(?=<)").Value; string card_code = Regex.Match(card_code1.ToString(), "(?<=>).*?(?=<)").Value; string pay_date = Regex.Match(pay_date1.ToString(), "(?<=>).*?(?=<)").Value; string card_amount = Regex.Match(card_amount1.ToString(), "(?<=>).*?(?=<)").Value; string card_actual_amount = Regex.Match(card_actual_amount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string dinpaysign = Regex.Match(dinpaysign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "card_actual_amount=" + card_actual_amount + "&card_amount=" + card_amount + "&card_code=" + card_code + "&card_no=" + card_no + "&merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&pay_date=" + pay_date + "&trade_no=" + trade_no + "&trade_status=" + trade_status; //使用康付通公钥对数据验签 string dinpay_public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTE8YBexrEmn8oEqsASVgkZEUo/WTqKZlmr0MYDyIVgcNfvXJPUR9kD46RAT11UYKK681UI0IWcfi/uB+bL00bVzuW7x5YdT5zdDuca/i3H3MIbWMcAHXAqPQt38Z0yWoXoCJp0IZ975vBVSe/a70M7uh1aLSapQFKyUCO2i3hGwIDAQAB"; //将康付通公钥转换成C#专用格式 dinpay_public_key = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(dinpay_public_key); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, dinpay_public_key, dinpaysign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/108008008666.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.vsdpay.com/query/dcard", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/is_success"); var merchantcode1 = el.XPathSelectElement("/merchant_code"); var orderno1 = el.XPathSelectElement("/order_no"); var ordertime1 = el.XPathSelectElement("/order_time"); var orderamount1 = el.XPathSelectElement("/order_amount"); var trade_no1 = el.XPathSelectElement("/trade_no"); var card_no1 = el.XPathSelectElement("/card_no"); var card_code1 = el.XPathSelectElement("/card_code"); var pay_date1 = el.XPathSelectElement("/pay_date"); var card_amount1 = el.XPathSelectElement("/trade/card_amount"); var card_actual_amount1 = el.XPathSelectElement("/card_actual_amount"); var dinpaysign1 = el.XPathSelectElement("/sign"); var trade_status1 = el.XPathSelectElement("/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string card_no = Regex.Match(card_no1.ToString(), "(?<=>).*?(?=<)").Value; string card_code = Regex.Match(card_code1.ToString(), "(?<=>).*?(?=<)").Value; string pay_date = Regex.Match(pay_date1.ToString(), "(?<=>).*?(?=<)").Value; string card_amount = Regex.Match(card_amount1.ToString(), "(?<=>).*?(?=<)").Value; string card_actual_amount = Regex.Match(card_actual_amount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string dinpaysign = Regex.Match(dinpaysign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "card_actual_amount=" + card_actual_amount + "&card_amount=" + card_amount + "&card_code=" + card_code + "&card_no=" + card_no + "&merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&pay_date=" + pay_date + "&trade_no=" + trade_no + "&trade_status=" + trade_status; //验签 bool result = rsaWithH.VerifySign("108008008666", signsrc, dinpaysign); if (result == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; if (sign_type == "RSA-S") //RSA-S签名方法 { /** merchant_private_key,商户私钥,商户按照《密钥对获取工具说明》操作并获取商户私钥。获取商户私钥的同时,也要 * 获取商户公钥(merchant_public_key)并且将商户公钥上传到智通宝商家后台"公钥管理"(如何获取和上传请看《密钥对获取工具说明》), * 不上传商户公钥会导致调试的时候报错“签名错误”。 */ //demo提供的merchant_private_key是测试商户号123001002003的商户私钥,请自行获取商户私钥并且替换。 string merchant_private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALIgluJzrKhOw/+sKlUZW+GFISjeXCqNz45rhEd4pRhg92ZDwyJxsIWVMUggCJLjSAke2wmVOiYJB/V9rNwlCzal5BGCSD0y8VckUb8LMv5wnNxr3wjrXf6IbZWsgNOwZg1mo+Cji5LCwoKvYvbZNK33Nb9MwbBh1PHUVP8AsfM3AgMBAAECgYEAr6oyAtse39Dlu+OWz9u1X/+BhyNa82Bs20Au8KkK77LY6NJUw0gpVGOgeUeWDP31kYELdDTlZpMrdS9eZLBnj/QofFTx7GSeod+vV13cgA6rc0yzjTp25Dm7Xzihf15R5JiNIFzlSYC2TLz+HcJoprxY6Pf6I/1qBjZuoC67eEECQQDjDhEI7s010aXXYQy3xwC/RUDosnfMARqRCpYFCYmoyMiUZ7+ohIvWkkCcwHx7VNKnXfmF0ezdXNT2TCKfXj6hAkEAyNXFKkCPtbg+GFqUlxlfta1s7FJuC1b8ZyaA1ygqUK5PJUoEKR9UcDg0uCKx4Zofpm46WCHx8w8M0+Abss8a1wJAA5JqFDDli44zxLKjJ5T63wdw4PhFyDDQQS3gdE3VG5GlDiifrEABjyuX1p90leAcvENPNJq71jOqqgFCni02YQJAQ8q09SA54lNA0qOwyJhOEFtsCxGAB9/i70a18uqh7f4IxUOIyADFVeQDF6zOcqK90EYg96Ltsuf/on1hnCgAnQJBANGvRflfL1Xvelv2jb446Gnq83IwQ6WJvO8z7/awfMmDsC88MI2bE0xcWJ2QPZZEVJkgCmwOXc26G+z0eei/z/U="; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.ztbaopay.com/query", para, "UTF-8"); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhfsign = Regex.Match(zhfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; /** * 1)zhf_public_key,智通宝公钥,每个商家对应一个固定的智通宝公钥(不是使用工具生成的密钥merchant_public_key,不要混淆), * 即为智通宝商家后台"公钥管理"->"智通宝公钥"里的绿色字符串内容 * 2)demo提供的zhf_public_key是测试商户号123001002003的智通宝公钥,请自行复制对应商户号的智通宝公钥进行调整和替换。 */ string zhf_public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9R4Md8mcLZoSMQUuDLD7f1Rau7x+yfAsvmzPWyc98uI/ZwBbVuS3lGZk+YXy1Kwk+UywDr8vy3o3siymxW8XBzYFYR6CNWl6CEwfa1PwwoyefGH+7P/SVz9XZ+wJR/3fQ8JurscZmVQHrYUOqcCMUPyohzN2FTCz8oWbF3uQ1NwIDAQAB"; //将智通宝公钥转换成C#专用格式 zhf_public_key = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(zhf_public_key); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, zhf_public_key, zhfsign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/123001002003.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.ztbaopay.com/query", para, "UTF-8"); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhfsign = Regex.Match(zhfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; bool result = rsaWithH.VerifySign("123001002003", signsrc, zhfsign); if (result == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; if (sign_type == "RSA-S") //RSA-S签名方法 { /** merchant_private_key,商户私钥,商户按照《密钥对获取工具说明》操作并获取商户私钥。获取商户私钥的同时,也要 * 获取商户公钥(merchant_public_key)并且将商户公钥上传到商家后台"公钥管理"(如何获取和上传请看《密钥对获取工具说明》), * 不上传商户公钥会导致调试的时候报错“签名错误”。 */ //demo提供的merchant_private_key是测试商户号800004007888的商户私钥,请自行获取商户私钥并且替换。 string merchant_private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAOD/K22eGec3qNQmk9LwsjpbJDJE9JYfsTJJQGJhfWsKbcZ9UISKXZxuhSCVaf2z9/pEln5RoE7GNwOrYv8R00P8nRJONHNPaLcf0Y8+c6DBWGVewZKojUzn18uAEGGW5XMjLs5/OU//opRB4ieeSmBJ4jp954XfR4Z57bjOpe/3AgMBAAECgYEArCr2K2JQxfp0aSq/8SkX6Mm3T/QuCPZlXGprJx0coJ0RVVKtG07ZxQtZOY671VQyjEKRukVx2vWYQWmTTkVwl+U71fh1mmiu00Y3odNoERc02ZN0zJmrSuhbcuEv6F8kBATunB55wOZ3jlbkXD9h+KUyePBOkrPb+81LhJ6kZXkCQQD18nQ1U2m9laS8ROJmZ1LuecQ4maaHW3xFxHoM9sS1YcpB3peQuXBrKa483zYADIJV2NYstc0QXMMZIXleKFFzAkEA6jF+xx4q+p/lhH8M3rHucHmkgFce90Jh1eHTdx5czizl3LiOYZ5D7cNL8x7piJDMmzkVz8+OidXm0wf5aT82bQJAP9TSJjjk26hn3dj+7Vbppi0CKTJvjvfGdBD/IDg3a1/a72eG7K/EJnvl1bSUvkSA2yjwxR/V/eYlWHNgnXhXUwJBANA6h+3FfhNvXmSrjqbncAljrwdJ70eMJ29DpoFQZtYPB6Z0FmzniqB6OCqIPr7leHc/j4xBkQwvO1hBy9pvkRUCQEVOGouGVeiXL/MuupUdbdBSV4nkYb9hrqE11gzbLu4A+OCpV8Xwdqu5SqX9Js1mQ6vQwTHu63vyfpxxl7oN9Jw="; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.zdfmf.com/query", para, "UTF-8"); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhfsign = Regex.Match(zhfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; /** * 1)zhf_public_key,公钥,每个商家对应一个固定的公钥(不是使用工具生成的密钥merchant_public_key,不要混淆), * 即为商家后台"公钥管理"->"公钥"里的绿色字符串内容 * 2)demo提供的zhf_public_key是测试商户号800004007888的公钥,请自行复制对应商户号的公钥进行调整和替换。 */ string zhf_public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCZDDIp0i3Ai7hskWs03M8n9QXrz3FX+KXak/zhy+rO7IBCE2p7mqHgMzj2KTqPfeQyAJoF6WvNy9MT9Vf/MA1mcYpYp9vVXRlLZ9oCFGUHtL2VJJHPzKlit46OGhyU7z/jtWwDuRXqcO76+VPi0/1XOvsyR5lTDKB3LVQA4cPD3wIDAQAB"; //将公钥转换成C#专用格式 zhf_public_key = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(zhf_public_key); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, zhf_public_key, zhfsign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/800004007888.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.zdfmf.com/query", para, "UTF-8"); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhfsign = Regex.Match(zhfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; bool result = rsaWithH.VerifySign("800004007888", signsrc, zhfsign); if (result == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; if (sign_type == "RSA-S") //RSA-S签名方法 { /** merchant_private_key,商户私钥,商户按照《密钥对获取工具说明》操作并获取商户私钥。获取商户私钥的同时,也要 * 获取商户公钥(merchant_public_key)并且将商户公钥上传到商家后台"公钥管理"(如何获取和上传请看《密钥对获取工具说明》), * 不上传商户公钥会导致调试的时候报错“签名错误”。 */ //demo提供的merchant_private_key是测试商户号800003004321的商户私钥,请自行获取商户私钥并且替换。 string merchant_private_key = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBANilQBp9xg6KdgB+6jVnIFnMl34jR3sGguvDjAgTLTqYd/FhkSbNl24rbRKDjZ4jqDKxFFUbFlqMd0YuSzhE+Utb1jNcBROTyIn/2O0cCmN0tPFaSgL/ywYhXSjT1FlAWuFbBV+bggj8CLDUpTGm31BofJA/qmg9Kn/wW2aF8QjNAgMBAAECgYEAyALgiNSfeqM4SELjxcPc6SrqngjCIIGlczbI3FegBR3odlBmatWaPZsYCuSrZVl0GsDDjcMBQz21jHSG+38qS0WTxWrMgw/k88ygbfDXWEZQd1v8Em7CDIFN5rZ7InS2GZsDDl5HhBHFKp6eoGug+Xo7Z5O8GokYaGKCdOuVcUECQQD9NRF05NTp0BzGxfVkcWmJeYI23vH+No8nPed4OZSA2gNtpz7mZ2NE7lw05skznf4bVxWTanlynorYD32fejfdAkEA2wjzKggsxfiy4FkPpq9Q04FooQt+W8efD4EOWuYMOVNoOAJYmjzE8YY2XUkaEZ80NHnCJcEZ/UtSX4OqL/f9sQJBANcazTCr8cCL/tZSd8yTmF+krR1mOtiGiwiAS3LUH7dy/jSaPxJHRIrbn9OFN+o0zxl02qx4aKIZ08QHLOZdUrUCQQDagA4a8va/Mv42QYIUdLV7mI+of8+4fOWW0NZiJTUyhprjrKt4iYCps4pN+tuvkpLAemoLwZtMi7QLpkvC+G+xAkAtOkom2PugToM5QiM4MS7puinFV89SEsVQuGvHyyJ/iH8O6igd5XrH1AR7kL879onPTvARTz+Ai7bHq3mUD3Wr"; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.yuanruic.com/query", para, "UTF-8"); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhfsign = Regex.Match(zhfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; /** * 1)zhf_public_key,公钥,每个商家对应一个固定的公钥(不是使用工具生成的密钥merchant_public_key,不要混淆), * 即为商家后台"公钥管理"->"公钥"里的绿色字符串内容 * 2)demo提供的zhf_public_key是测试商户号800003004321的公钥,请自行复制对应商户号的公钥进行调整和替换。 */ string zhf_public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLYAY1pTXcMwKKagEgKxv0Wtq0EwcKxQdQ6X+duKWWY1ti+YMSKx5RwUNPSqm9u59GkbFCHScOw+pZvHnDl47uaOV0NcxJU9CuGQ4UkuN5zJS/g/Fi4IFtQpLJPM5pJGNvnBkJzfqAD8DGOPoAc0TypMq2/HEVRMWU6PYBIiFa+QIDAQAB"; //将公钥转换成C#专用格式 zhf_public_key = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(zhf_public_key); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, zhf_public_key, zhfsign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/800003004321.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.yuanruic.com/query", para, "UTF-8"); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhfsign = Regex.Match(zhfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; bool result = rsaWithH.VerifySign("800003004321", signsrc, zhfsign); if (result == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// ////////////////////////To receive the parameter form HTML form////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// //////////////////////////// Data signature //////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; if (sign_type == "RSA-S") //RSA-S签名方法 { //商家私钥 string merchant_private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALf/+xHa1fDTCsLYPJLHy80aWq3djuV1T34sEsjp7UpLmV9zmOVMYXsoFNKQIcEzei4QdaqnVknzmIl7n1oXmAgHaSUF3qHjCttscDZcTWyrbXKSNr8arHv8hGJrfNB/Ea/+oSTIY7H5cAtWg6VmoPCHvqjafW8/UP60PdqYewrtAgMBAAECgYEAofXhsyK0RKoPg9jA4NabLuuuu/IU8ScklMQIuO8oHsiStXFUOSnVeImcYofaHmzIdDmqyU9IZgnUz9eQOcYg3BotUdUPcGgoqAqDVtmftqjmldP6F6urFpXBazqBrrfJVIgLyNw4PGK6/EmdQxBEtqqgXppRv/ZVZzZPkwObEuECQQDenAam9eAuJYveHtAthkusutsVG5E3gJiXhRhoAqiSQC9mXLTgaWV7zJyA5zYPMvh6IviX/7H+Bqp14lT9wctFAkEA05ljSYShWTCFThtJxJ2d8zq6xCjBgETAdhiH85O/VrdKpwITV/6psByUKp42IdqMJwOaBgnnct8iDK/TAJLniQJABdo+RodyVGRCUB2pRXkhZjInbl+iKr5jxKAIKzveqLGtTViknL3IoD+Z4b2yayXg6H0g4gYj7NTKCH1h1KYSrQJBALbgbcg/YbeU0NF1kibk1ns9+ebJFpvGT9SBVRZ2TjsjBNkcWR2HEp8LxB6lSEGwActCOJ8Zdjh4kpQGbcWkMYkCQAXBTFiyyImO+sfCccVuDSsWS+9jrc5KadHGIvhfoRjIj2VuUKzJ+mXbmXuXnOYmsAefjnMCI6gGtaqkzl527tw="; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.wordfod.com/query", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var orginal_money1 = el.XPathSelectElement("/response/trade/orginal_money"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhihfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string orginal_money = Regex.Match(orginal_money1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhihfsign = Regex.Match(zhihfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&orginal_money=" + orginal_money + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; //使用公钥对数据验签 string zhihpayPubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCWOq5aHSTvdxGPDKZWSl6wrPpnMHW+8lOgVU71jB2vFGuA6dwa/RpJKnz9zmoGryZlgUmfHANnN0uztkgwb+5mpgmegBbNLuGqqHBpQHo2EsiAhgvgO3VRmWC8DARpzNxknsJTBhkUvZdy4GyrjnUrvsARg4VrFzKDWL0Yu3gunQIDAQAB"; //将公钥转换成C#专用格式 zhihpayPubKey = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(zhihpayPubKey); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, zhihpayPubKey, zhihfsign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/1111110166.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); //初始化。设置dinpayRSAKeyVersion的路径与证书路径一致即可 string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.wordfod.com/query", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhihfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhihfsign = Regex.Match(zhihfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; bool result = rsaWithH.VerifySign("1111110166", signsrc, zhihfsign); if (result == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// ////////////////////////To receive the parameter form HTML form////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// //////////////////////////// Data signature //////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; if (sign_type == "RSA-S") //RSA-S签名方法 { //商家私钥 string merchant_private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALf/+xHa1fDTCsLYPJLHy80aWq3djuV1T34sEsjp7UpLmV9zmOVMYXsoFNKQIcEzei4QdaqnVknzmIl7n1oXmAgHaSUF3qHjCttscDZcTWyrbXKSNr8arHv8hGJrfNB/Ea/+oSTIY7H5cAtWg6VmoPCHvqjafW8/UP60PdqYewrtAgMBAAECgYEAofXhsyK0RKoPg9jA4NabLuuuu/IU8ScklMQIuO8oHsiStXFUOSnVeImcYofaHmzIdDmqyU9IZgnUz9eQOcYg3BotUdUPcGgoqAqDVtmftqjmldP6F6urFpXBazqBrrfJVIgLyNw4PGK6/EmdQxBEtqqgXppRv/ZVZzZPkwObEuECQQDenAam9eAuJYveHtAthkusutsVG5E3gJiXhRhoAqiSQC9mXLTgaWV7zJyA5zYPMvh6IviX/7H+Bqp14lT9wctFAkEA05ljSYShWTCFThtJxJ2d8zq6xCjBgETAdhiH85O/VrdKpwITV/6psByUKp42IdqMJwOaBgnnct8iDK/TAJLniQJABdo+RodyVGRCUB2pRXkhZjInbl+iKr5jxKAIKzveqLGtTViknL3IoD+Z4b2yayXg6H0g4gYj7NTKCH1h1KYSrQJBALbgbcg/YbeU0NF1kibk1ns9+ebJFpvGT9SBVRZ2TjsjBNkcWR2HEp8LxB6lSEGwActCOJ8Zdjh4kpQGbcWkMYkCQAXBTFiyyImO+sfCccVuDSsWS+9jrc5KadHGIvhfoRjIj2VuUKzJ+mXbmXuXnOYmsAefjnMCI6gGtaqkzl527tw="; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.yuanruic.com/query/dcard", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/is_success"); var merchantcode1 = el.XPathSelectElement("/merchant_code"); var orderno1 = el.XPathSelectElement("/order_no"); var ordertime1 = el.XPathSelectElement("/order_time"); var orderamount1 = el.XPathSelectElement("/order_amount"); var trade_no1 = el.XPathSelectElement("/trade_no"); var card_no1 = el.XPathSelectElement("/card_no"); var card_code1 = el.XPathSelectElement("/card_code"); var pay_date1 = el.XPathSelectElement("/pay_date"); var card_amount1 = el.XPathSelectElement("/trade/card_amount"); var card_actual_amount1 = el.XPathSelectElement("/card_actual_amount"); var dinpaysign1 = el.XPathSelectElement("/sign"); var trade_status1 = el.XPathSelectElement("/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string card_no = Regex.Match(card_no1.ToString(), "(?<=>).*?(?=<)").Value; string card_code = Regex.Match(card_code1.ToString(), "(?<=>).*?(?=<)").Value; string pay_date = Regex.Match(pay_date1.ToString(), "(?<=>).*?(?=<)").Value; string card_amount = Regex.Match(card_amount1.ToString(), "(?<=>).*?(?=<)").Value; string card_actual_amount = Regex.Match(card_actual_amount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string dinpaysign = Regex.Match(dinpaysign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "card_actual_amount=" + card_actual_amount + "&card_amount=" + card_amount + "&card_code=" + card_code + "&card_no=" + card_no + "&merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&pay_date=" + pay_date + "&trade_no=" + trade_no + "&trade_status=" + trade_status; //使用公钥对数据验签 string dinpay_public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCBxRoYbPf95kv1l4av8Ggc/adZp22GVjZ+Al1UBUM2nxqaluPfQ8gnjcGNNEOAA+iWDkjrh9PVKgXSCRel3VbDiDtz0vrMRmhQ0W5CsBATBFrAlG4oh13FB4wTEP3qd1HST5nEdTBhdp06y8M16A59N5UY+s3oTwkF5KIJjuGdnQIDAQAB"; //将公钥转换成C#专用格式 dinpay_public_key = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(dinpay_public_key); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, dinpay_public_key, dinpaysign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/200001001888.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.yuanruic.com/query/dcard", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/is_success"); var merchantcode1 = el.XPathSelectElement("/merchant_code"); var orderno1 = el.XPathSelectElement("/order_no"); var ordertime1 = el.XPathSelectElement("/order_time"); var orderamount1 = el.XPathSelectElement("/order_amount"); var trade_no1 = el.XPathSelectElement("/trade_no"); var card_no1 = el.XPathSelectElement("/card_no"); var card_code1 = el.XPathSelectElement("/card_code"); var pay_date1 = el.XPathSelectElement("/pay_date"); var card_amount1 = el.XPathSelectElement("/trade/card_amount"); var card_actual_amount1 = el.XPathSelectElement("/card_actual_amount"); var dinpaysign1 = el.XPathSelectElement("/sign"); var trade_status1 = el.XPathSelectElement("/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string card_no = Regex.Match(card_no1.ToString(), "(?<=>).*?(?=<)").Value; string card_code = Regex.Match(card_code1.ToString(), "(?<=>).*?(?=<)").Value; string pay_date = Regex.Match(pay_date1.ToString(), "(?<=>).*?(?=<)").Value; string card_amount = Regex.Match(card_amount1.ToString(), "(?<=>).*?(?=<)").Value; string card_actual_amount = Regex.Match(card_actual_amount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string dinpaysign = Regex.Match(dinpaysign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "card_actual_amount=" + card_actual_amount + "&card_amount=" + card_amount + "&card_code=" + card_code + "&card_no=" + card_no + "&merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&pay_date=" + pay_date + "&trade_no=" + trade_no + "&trade_status=" + trade_status; //验签 bool result = rsaWithH.VerifySign("200001001888", signsrc, dinpaysign); if (result == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; if (sign_type == "RSA-S") //RSA-S签名方法 { /** merchant_private_key,商户私钥,商户按照《密钥对获取工具说明》操作并获取商户私钥。获取商户私钥的同时,也要 * 获取商户公钥(merchant_public_key)并且将商户公钥上传到商家后台"公钥管理"(如何获取和上传请看《密钥对获取工具说明》), * 不上传商户公钥会导致调试的时候报错“签名错误”。 */ //demo提供的merchant_private_key是测试商户号100100200200的商户私钥,请自行获取商户私钥并且替换。 string merchant_private_key = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAOlji/yfZS3DKefgXJandiPPlheoJeOPgiqdy7WO5kYDxpYIbcmJXp1sIxC0MqY5pyWIOyBlW/NHWDfRyTIYvFm6vxx9m/TeTYKRXHPNdCefXNeV5XoCB7s7gJoeqR1qwgBE0a2Sw4slMrKL4LSv0J0o3po9SgYhP06m3az9dZzDAgMBAAECgYEAgLGdvX1/Y06cyvnS1FgfMvwCvaTAz8yQcEN20vSrUaw/Uvfu4hTXkWLRqyJSU4qy+mU2hVSe8XVD1fPeR7uQD7TWqmXCaIC12DqWFvA2Eio/x4nIixj5t4PN4lbUVBHH/OnHypRWFNcQemR4OWcYCWi5/cYshEaOk9XQnUQKvcECQQD7ZBDA+d8IXM7jtlNNEp+ySw87iz8pKhBoVt3XrAkGczuM9A+ZY+ReViHVxuxqd5AgxSPj1hoQeFR0BnPEVKgzAkEA7ar8kvzp9sPMDujN9QSr+yq73CTlRr8W5q0vMCxsJagie6znvtsAzka3EkI0Srix5fHjRWrWWknblDat5CnpMQJAGfYLhOJJFiP/eaSqlZsGwvLdb9jBfQ7LAvt1jYBGrlPYIoZR1hVq0BM1C06vu479Y2T4f97scib7EcBY1D2p4QJALvdmOEngllI1BhE9ehj1P4o/W46y/FsQ1H8O3y84I+zo+5W8qjuvGhRhYytQGCANj8pQRkyJlYgY614u2PLrUQJAAv9neGYMeFdZnanlsdg6EepWAzvT2tv45WF74BQKJzZF+IFtE1XD85QcqkOJ3o8WgVwXK6/BCn5vNahImz+Ohg=="; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.suifupay.com/query", para, "UTF-8"); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhfsign = Regex.Match(zhfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; /** * 1)zhf_public_key,公钥,每个商家对应一个固定的公钥(不是使用工具生成的密钥merchant_public_key,不要混淆), * 即为商家后台"公钥管理"->"公钥"里的绿色字符串内容 * 2)demo提供的zhf_public_key是测试商户号100100101102的公钥,请自行复制对应商户号的公钥进行调整和替换。 */ string zhf_public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCP2DxiRIhY5JCpeQDQO9oJJ5iyZ/HviNzTY23N6XEp+P4tacdftFsgwh1DoR4Qa8MI5Lrmb2WTBlFsybLqM9LYLeBvODokFdAdoi+VOjkESJ4Y8XygiP4Sz7osOwB3MkvLVHAK8e2O8U09Sj2MI034snHvnhCpU3ye3BqkzetLkQIDAQAB"; //将公钥转换成C#专用格式 zhf_public_key = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(zhf_public_key); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, zhf_public_key, zhfsign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/100100101102.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.suifupay.com/query", para, "UTF-8"); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhfsign = Regex.Match(zhfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; bool result = rsaWithH.VerifySign("100100200200", signsrc, zhfsign); if (result == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// ////////////////////////To receive the parameter form HTML form////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// //////////////////////////// Data signature //////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; if (sign_type == "RSA-S") //RSA-S签名方法 { //商家私钥 string merchant_private_key = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBANilQBp9xg6KdgB+6jVnIFnMl34jR3sGguvDjAgTLTqYd/FhkSbNl24rbRKDjZ4jqDKxFFUbFlqMd0YuSzhE+Utb1jNcBROTyIn/2O0cCmN0tPFaSgL/ywYhXSjT1FlAWuFbBV+bggj8CLDUpTGm31BofJA/qmg9Kn/wW2aF8QjNAgMBAAECgYEAyALgiNSfeqM4SELjxcPc6SrqngjCIIGlczbI3FegBR3odlBmatWaPZsYCuSrZVl0GsDDjcMBQz21jHSG+38qS0WTxWrMgw/k88ygbfDXWEZQd1v8Em7CDIFN5rZ7InS2GZsDDl5HhBHFKp6eoGug+Xo7Z5O8GokYaGKCdOuVcUECQQD9NRF05NTp0BzGxfVkcWmJeYI23vH+No8nPed4OZSA2gNtpz7mZ2NE7lw05skznf4bVxWTanlynorYD32fejfdAkEA2wjzKggsxfiy4FkPpq9Q04FooQt+W8efD4EOWuYMOVNoOAJYmjzE8YY2XUkaEZ80NHnCJcEZ/UtSX4OqL/f9sQJBANcazTCr8cCL/tZSd8yTmF+krR1mOtiGiwiAS3LUH7dy/jSaPxJHRIrbn9OFN+o0zxl02qx4aKIZ08QHLOZdUrUCQQDagA4a8va/Mv42QYIUdLV7mI+of8+4fOWW0NZiJTUyhprjrKt4iYCps4pN+tuvkpLAemoLwZtMi7QLpkvC+G+xAkAtOkom2PugToM5QiM4MS7puinFV89SEsVQuGvHyyJ/iH8O6igd5XrH1AR7kL879onPTvARTz+Ai7bHq3mUD3Wr"; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.wordfod.com/query", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhihfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhihfsign = Regex.Match(zhihfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; //使用财猫快汇公钥对数据验签 string dinpayPubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8Jnb1n3YMhTtYY+6AxV6LXYjyrWPDt76mTGmRDWPqCq+aSGnrqU+5whBx3JW0EC5dCV4dKKxr1f7Xd+1zQKK+w3IVtPgjBXyYoCNVmcat10GL2+2KqZZHLLk5RdVdvNgu5uGI84+rI+eJwcYJgANAv8ckhtoPNQvP/Dhi+KN42wIDAQAB"; //将财猫快汇公钥转换成C#专用格式 dinpayPubKey = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(dinpayPubKey); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, dinpayPubKey, zhihfsign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/588001002211.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); //初始化。设置dinpayRSAKeyVersion的路径与证书路径一致即可 string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.wordfod.com/query", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhihfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhihfsign = Regex.Match(zhihfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; bool result = rsaWithH.VerifySign("588001002211", signsrc, zhihfsign); if (result == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// ////////////////////////To receive the parameter form HTML form////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); string trade_no = Request.Form["trade_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// //////////////////////////// Data signature //////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type + "&trade_no=" + trade_no; if (sign_type == "RSA-S") //RSA-S签名方法 { //商家私钥 string merchant_private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALf/+xHa1fDTCsLYPJLHy80aWq3djuV1T34sEsjp7UpLmV9zmOVMYXsoFNKQIcEzei4QdaqnVknzmIl7n1oXmAgHaSUF3qHjCttscDZcTWyrbXKSNr8arHv8hGJrfNB/Ea/+oSTIY7H5cAtWg6VmoPCHvqjafW8/UP60PdqYewrtAgMBAAECgYEAofXhsyK0RKoPg9jA4NabLuuuu/IU8ScklMQIuO8oHsiStXFUOSnVeImcYofaHmzIdDmqyU9IZgnUz9eQOcYg3BotUdUPcGgoqAqDVtmftqjmldP6F6urFpXBazqBrrfJVIgLyNw4PGK6/EmdQxBEtqqgXppRv/ZVZzZPkwObEuECQQDenAam9eAuJYveHtAthkusutsVG5E3gJiXhRhoAqiSQC9mXLTgaWV7zJyA5zYPMvh6IviX/7H+Bqp14lT9wctFAkEA05ljSYShWTCFThtJxJ2d8zq6xCjBgETAdhiH85O/VrdKpwITV/6psByUKp42IdqMJwOaBgnnct8iDK/TAJLniQJABdo+RodyVGRCUB2pRXkhZjInbl+iKr5jxKAIKzveqLGtTViknL3IoD+Z4b2yayXg6H0g4gYj7NTKCH1h1KYSrQJBALbgbcg/YbeU0NF1kibk1ns9+ebJFpvGT9SBVRZ2TjsjBNkcWR2HEp8LxB6lSEGwActCOJ8Zdjh4kpQGbcWkMYkCQAXBTFiyyImO+sfCccVuDSsWS+9jrc5KadHGIvhfoRjIj2VuUKzJ+mXbmXuXnOYmsAefjnMCI6gGtaqkzl527tw="; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.xhbill.com/query", para, "UTF-8"); _xml = HttpUtility.HtmlEncode(_xml); Response.Write(_xml); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/1111110166.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.xhbill.com/query", para, "UTF-8"); _xml = HttpUtility.HtmlEncode(_xml); Response.Write(_xml); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// ////////////////////////To receive the parameter form HTML form////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); string trade_no = Request.Form["trade_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// //////////////////////////// Data signature //////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type + "&trade_no=" + trade_no; if (sign_type == "RSA-S") //RSA-S签名方法 { //商家私钥 string merchant_private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAOD/K22eGec3qNQmk9LwsjpbJDJE9JYfsTJJQGJhfWsKbcZ9UISKXZxuhSCVaf2z9/pEln5RoE7GNwOrYv8R00P8nRJONHNPaLcf0Y8+c6DBWGVewZKojUzn18uAEGGW5XMjLs5/OU//opRB4ieeSmBJ4jp954XfR4Z57bjOpe/3AgMBAAECgYEArCr2K2JQxfp0aSq/8SkX6Mm3T/QuCPZlXGprJx0coJ0RVVKtG07ZxQtZOY671VQyjEKRukVx2vWYQWmTTkVwl+U71fh1mmiu00Y3odNoERc02ZN0zJmrSuhbcuEv6F8kBATunB55wOZ3jlbkXD9h+KUyePBOkrPb+81LhJ6kZXkCQQD18nQ1U2m9laS8ROJmZ1LuecQ4maaHW3xFxHoM9sS1YcpB3peQuXBrKa483zYADIJV2NYstc0QXMMZIXleKFFzAkEA6jF+xx4q+p/lhH8M3rHucHmkgFce90Jh1eHTdx5czizl3LiOYZ5D7cNL8x7piJDMmzkVz8+OidXm0wf5aT82bQJAP9TSJjjk26hn3dj+7Vbppi0CKTJvjvfGdBD/IDg3a1/a72eG7K/EJnvl1bSUvkSA2yjwxR/V/eYlWHNgnXhXUwJBANA6h+3FfhNvXmSrjqbncAljrwdJ70eMJ29DpoFQZtYPB6Z0FmzniqB6OCqIPr7leHc/j4xBkQwvO1hBy9pvkRUCQEVOGouGVeiXL/MuupUdbdBSV4nkYb9hrqE11gzbLu4A+OCpV8Xwdqu5SqX9Js1mQ6vQwTHu63vyfpxxl7oN9Jw="; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.zdfmf.com/query", para, "UTF-8"); _xml = HttpUtility.HtmlEncode(_xml); Response.Write(_xml); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/800004007888.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.zdfmf.com/query", para, "UTF-8"); _xml = HttpUtility.HtmlEncode(_xml); Response.Write(_xml); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; /** merchant_private_key,商户私钥,商户按照《密钥对获取工具说明》操作并获取商户私钥。获取商户私钥的同时,也要 * 获取商户公钥(merchant_public_key)并且将商户公钥上传到智付商家后台"公钥管理"(如何获取和上传请看《密钥对获取工具说明》), * 不上传商户公钥会导致调试的时候报错“签名错误”。 */ //demo提供的merchant_private_key是测试商户号200001001888的商户私钥,请自行获取商户私钥并且替换。 string merchant_private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALf/+xHa1fDTCsLYPJLHy80aWq3djuV1T34sEsjp7UpLmV9zmOVMYXsoFNKQIcEzei4QdaqnVknzmIl7n1oXmAgHaSUF3qHjCttscDZcTWyrbXKSNr8arHv8hGJrfNB/Ea/+oSTIY7H5cAtWg6VmoPCHvqjafW8/UP60PdqYewrtAgMBAAECgYEAofXhsyK0RKoPg9jA4NabLuuuu/IU8ScklMQIuO8oHsiStXFUOSnVeImcYofaHmzIdDmqyU9IZgnUz9eQOcYg3BotUdUPcGgoqAqDVtmftqjmldP6F6urFpXBazqBrrfJVIgLyNw4PGK6/EmdQxBEtqqgXppRv/ZVZzZPkwObEuECQQDenAam9eAuJYveHtAthkusutsVG5E3gJiXhRhoAqiSQC9mXLTgaWV7zJyA5zYPMvh6IviX/7H+Bqp14lT9wctFAkEA05ljSYShWTCFThtJxJ2d8zq6xCjBgETAdhiH85O/VrdKpwITV/6psByUKp42IdqMJwOaBgnnct8iDK/TAJLniQJABdo+RodyVGRCUB2pRXkhZjInbl+iKr5jxKAIKzveqLGtTViknL3IoD+Z4b2yayXg6H0g4gYj7NTKCH1h1KYSrQJBALbgbcg/YbeU0NF1kibk1ns9+ebJFpvGT9SBVRZ2TjsjBNkcWR2HEp8LxB6lSEGwActCOJ8Zdjh4kpQGbcWkMYkCQAXBTFiyyImO+sfCccVuDSsWS+9jrc5KadHGIvhfoRjIj2VuUKzJ+mXbmXuXnOYmsAefjnMCI6gGtaqkzl527tw="; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.yuanruic.com/query", para, "UTF-8"); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var dinpaysign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string dinpaysign = Regex.Match(dinpaysign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; /** * 1)dinpay_public_key,公钥,每个商家对应一个固定的智付公钥(不是使用工具生成的密钥merchant_public_key,不要混淆), * 即为商家后台"公钥管理"->"公钥"里的绿色字符串内容 * 2)demo提供的ddbill_public_key是测试商户号200001001888的公钥,请自行复制对应商户号的公钥进行调整和替换。 */ string ddbill_public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJQIEXUkjG2RoyCnfucMX1at7OPtOCDSiKZhtzHw5HOjXKteBpYBqEBOZc9pNjP/fKbvBNZ3Z7XxUn5ECfQbPCtH9y++c0WxAYPoZiPDEYeQmRJfqPR68c0aAtZN5Kh7H1SI2ZRvoMUdZGvvFy3vuPnTwm3R+aHq17bch/0ZAudwIDAQAB"; //将公钥转换成C#专用格式 ddbill_public_key = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(ddbill_public_key); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, ddbill_public_key, dinpaysign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// ////////////////////////To receive the parameter form HTML form////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// //////////////////////////// Data signature //////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; if (sign_type == "RSA-S") //RSA-S签名方法 { //商家私钥 string merchant_private_key = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAOlji/yfZS3DKefgXJandiPPlheoJeOPgiqdy7WO5kYDxpYIbcmJXp1sIxC0MqY5pyWIOyBlW/NHWDfRyTIYvFm6vxx9m/TeTYKRXHPNdCefXNeV5XoCB7s7gJoeqR1qwgBE0a2Sw4slMrKL4LSv0J0o3po9SgYhP06m3az9dZzDAgMBAAECgYEAgLGdvX1/Y06cyvnS1FgfMvwCvaTAz8yQcEN20vSrUaw/Uvfu4hTXkWLRqyJSU4qy+mU2hVSe8XVD1fPeR7uQD7TWqmXCaIC12DqWFvA2Eio/x4nIixj5t4PN4lbUVBHH/OnHypRWFNcQemR4OWcYCWi5/cYshEaOk9XQnUQKvcECQQD7ZBDA+d8IXM7jtlNNEp+ySw87iz8pKhBoVt3XrAkGczuM9A+ZY+ReViHVxuxqd5AgxSPj1hoQeFR0BnPEVKgzAkEA7ar8kvzp9sPMDujN9QSr+yq73CTlRr8W5q0vMCxsJagie6znvtsAzka3EkI0Srix5fHjRWrWWknblDat5CnpMQJAGfYLhOJJFiP/eaSqlZsGwvLdb9jBfQ7LAvt1jYBGrlPYIoZR1hVq0BM1C06vu479Y2T4f97scib7EcBY1D2p4QJALvdmOEngllI1BhE9ehj1P4o/W46y/FsQ1H8O3y84I+zo+5W8qjuvGhRhYytQGCANj8pQRkyJlYgY614u2PLrUQJAAv9neGYMeFdZnanlsdg6EepWAzvT2tv45WF74BQKJzZF+IFtE1XD85QcqkOJ3o8WgVwXK6/BCn5vNahImz+Ohg=="; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.syycwx.com/query", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhihfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhihfsign = Regex.Match(zhihfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; //使用亿宝通公钥对数据验签 string dinpayPubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCEhzRlWkMIy4uOvShL2vnduAnWCwcrCUnolr6/d+PT8uPsNiAMgsrJAxMEMi/obfWNGGxIFuZzTDUVdoys1UoSBSQxMNvNAgbL5sLD70VVESZ1j3DKNFX9YfrO4EnoLnOftWsFocebPYnI8abmG570lsSe4OaGtW7x5gk5DF7NuwIDAQAB"; //将亿宝通公钥转换成C#专用格式 dinpayPubKey = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(dinpayPubKey); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, dinpayPubKey, zhihfsign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/1111110166.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); //初始化。设置dinpayRSAKeyVersion的路径与证书路径一致即可 string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.syycwx.com/query", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhihfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhihfsign = Regex.Match(zhihfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; bool result = rsaWithH.VerifySign("1111110166", signsrc, zhihfsign); if (result == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// ////////////////////////To receive the parameter form HTML form////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// //////////////////////////// Data signature //////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; if (sign_type == "RSA-S") //RSA-S签名方法 { //商家私钥 string merchant_private_key = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAL8LxUg+Q4t96O4Y4hS/ZMDbZw8u9PIHGFJLjQyllfbM49ZsJw1hH3UD8imtzde7qE9D8zejQh5ZFqEKN5+rlFi8mTLZRVpkbiJ5HtuEjHRTCYtytG6uK8uFnQEmH2VudFIZ85NJA895eNizU0ms88upxpRy1I/8bsYzbjqzDKMhAgMBAAECgYBJleQQNoNXyFCe3RC/wxSwwBGLJKAOVTNGB3m1xFXl8PdVEOVd3un57WIqMZrWnJ5woZCd/pEqFVCFCOVx5+nENYDZAwPQ4F/lqwfifEPta0wsMHb17eicVIOitCRDk3O1nvFjv4kBQnP67UITMhCDaJWnTSOYiZ3rZTpA5HlLAQJBAOpzG09ZtSnLUvzKVBIGTV+GK5eGRvKDDTYtCvok7DWKq3iwpy2yBopKypkHIh4IsCWYBVUT3nni/Mh17AO0qNECQQDQm1JUehfOEG3A5AkApuRR3O2tc3pd4DwfoYpzqyE/kp3PdzRYSDamVOSU0Oaz03PwPPYF+3TCufsZZVjErelRAkBDtXCKrx657kWOSiSTfAx2bPpD7Xyp5x02qzWDXox1PhIdbe8qLELlR4pRPZUl1V6BzPClTHKxAtP8VMoPm+oxAkAtvyIa7Htz8R5ggqGGxxKi8TQeKYjYNWh5908Jdqnf6yM4cAfGpG93on5ONFGjdeei83twbGh6m5Z5R0RkPU9BAkAmFai5BykjZH0DJ/z2Du97J1X4btwTT3Ywjmd+OHpQ9weCkHPHd1IHj0YMt3cONBSOwZ+3B9zCjwy0x8POMb0e"; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.islpay.hk/query", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhihfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhihfsign = Regex.Match(zhihfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; //使用公钥对数据验签 string dinpayPubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLYAY1pTXcMwKKagEgKxv0Wtq0EwcKxQdQ6X+duKWWY1ti+YMSKx5RwUNPSqm9u59GkbFCHScOw+pZvHnDl47uaOV0NcxJU9CuGQ4UkuN5zJS/g/Fi4IFtQpLJPM5pJGNvnBkJzfqAD8DGOPoAc0TypMq2/HEVRMWU6PYBIiFa+QIDAQAB"; //将公钥转换成C#专用格式 dinpayPubKey = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(dinpayPubKey); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, dinpayPubKey, zhihfsign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/800003004321.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); //初始化。设置dinpayRSAKeyVersion的路径与证书路径一致即可 string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.islpay.cn/query", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhihfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhihfsign = Regex.Match(zhihfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; bool result = rsaWithH.VerifySign("800003004321", signsrc, zhihfsign); if (result == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// ////////////////////////To receive the parameter form HTML form////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// //////////////////////////// Data signature //////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; if (sign_type == "RSA-S") //RSA-S签名方法 { //商家私钥 string merchant_private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKn93SEpidIRKTYRqvjb6qW6iS8eorY/5nPwBE2xk7tdulDsWCZzLtt9oSCDZj6QTFXjXQZKO03cyvVPS5gZ1MIeW0ARkfcwdrJ6EawonKS909lIflCfCKCC9oCqHIhFXFmK9AU6UjcTwE5nwwb3K689Ng+6SEVjHMendtV3OTjDAgMBAAECgYBxx+QtADqpiqcE88p2i+yBRVvxWBYc2qSL0Ylv3348mT3OUIOoKMyiSXKB6rGTCs6tZmOrhCAxu6l1jL/SbOfEd33TSUmMSTAyLhq3Uc1kRa9D8u7hJHqHRJeG5NNU/rJy5t9ncBI9ktEKpWKQpix1WfqSsfeO+TKUfMNWOlDmIQJBANEqg7UrJ68n2rFpN281HDsVR12IQnBKyFtDqBZ33bWXR+yAXRexwLUvPZYaBuBEp9KcIBee9g0J6IY8W84Z5GsCQQDQDdsHOhAd01KhANnGz7FkIbac9vEohbovzlMeOPV7wXbsZR+ZrqJXzhbuvU8sjCGDItf5KRCtT+rjIofGJNMJAkEAos1WinK2hqycma3tic9q08nyLCjcnY53eCGm+SX/GVJQlxIqY0DlX6EPbH+Bjpmhjloa2IfPt8JYi/L6+eZJVQJANCfVCXm/wopQQ3ZAIbu9H3noGm85Q0xKwWM6qO/kcjKsilRLWK5TmilazFx+tY8nc4VPmPF3ccr/+hKU8NIYaQJBAL+bKSa+9N3aR1OnCfBf7Tf5hvCVCR7gKoo5llOH3yo+pNLBDdI4TDDueSoK0UD8t1nodrgZMc/sbch+9zWswQA="; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.wordfod.com/query", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhihfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhihfsign = Regex.Match(zhihfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; //使用公钥对数据验签 string dinpayPubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZDirdU1syeYUoKJqt2QoxDHiWE4WNoewR0DBWlqMtQRC0GK9+v9QGG+WDTcIRiJr5tVusJo4hK/B5YYWlJs7ubrMSqFs7dWPrfplPYZUmR6J667c46tR6aDuD3vmoPviUXrIgrJRxgYCfl5wETvL8FIH2datclMtJuSba9+73nwIDAQAB"; //将公钥转换成C#专用格式 dinpayPubKey = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(dinpayPubKey); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, dinpayPubKey, zhihfsign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } else //RSA签名方法 { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/Z800001001001.pfx"; //证书路径 string password = "******"; //证书密码 RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); //初始化。设置dinpayRSAKeyVersion的路径与证书路径一致即可 string signData = rsaWithH.Sign(signStr); //签名 signData = HttpUtility.UrlEncode(signData); //将signData进行UrlEncode编码 //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.HttpPost("https://query.wordfod.com/query", para); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var zhihfsign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string zhihfsign = Regex.Match(zhihfsign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; bool result = rsaWithH.VerifySign("Z800001001001", signsrc, zhihfsign); if (result == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { /////////////////////////////////接收表单提交参数////////////////////////////////////// string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); ///////////////////////////// 数据签名 ///////////////////////////////// string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; /** merchant_private_key,商户私钥,商户按照《密钥对获取工具说明》操作并获取商户私钥。获取商户私钥的同时,也要 * 获取商户公钥(merchant_public_key)并且将商户公钥上传到智付商家后台"公钥管理"(如何获取和上传请看《密钥对获取工具说明》), * 不上传商户公钥会导致调试的时候报错“签名错误”。 */ //demo提供的merchant_private_key是测试商户号666007008010的商户私钥,请自行获取商户私钥并且替换。 string merchant_private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAM1kayU03wSU+TuYDv0A3G99MMjUnzhqBE0HUi8xSKviBuB2Gv/ZfrHeK8mdvhn7WwTQzNHBS/2hzJjQkkVkzL+EDeI+1OGIfcWTtlm1wCGoyhjE35Eff01HGgwTWmO144W4mqjmCzOaobl0qmHHUYQTKXFPV6mRWJ7CaFf3v7y/AgMBAAECgYBkXOVeUO+JNaJz1GG+j2UntWzZNcx3rJZdbW5jURnJo7Dojc2zp3uZPo72/fWejIx1VfI/rMyNKzrmkURoVFEXguWqr6xRlZFqn2RaweHbsKfbp8BL1iUw8Z//nCUn3M6lmCkldKXJ2iwYppsLRV3pdt1OHV6tVNLvhPnmlj8nQQJBAP/dsd7/ab3GpbedESHVmP3awf48T+le/BlGGHNCEvDf2o2zx49EvSoc/Lo54nd9GvXR+dHsseSxHbowcoIZ7G0CQQDNf/TbNI3312swVO7+vjwId+fzPqEm5b6L5NM7hjeOigM9M8UGng6U7HHh/wgJupVUzERvT2HvSkqLsT+x2DpbAkBy/yHldugAilqK1sYPbd/QIFTWPicwXSdy+IUesFCw//tLesSzSJK4bcTMsh1t1MWcPB5K0lX10gDpYMLmZF5VAkEAgk0XIgMx3avPAIdqP0a6ZBg7j+XvYu2cI7IFKiIRiiUCpsTzsh14W3+NOmJuY1TWqT0YS4gHLiZqHCdYntjfLwJBANbxHhlQMXgHOxh+zX0BkDIjk3FQW8Z0Rm1kiK9SbZVqEILlotdJltqWnZx1cEKj+2Zdyx4IfQu30CgOuIBcla0="; //私钥转换成C#专用私钥 merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); //签名 string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); //将signData进行UrlEncode编码 signData = HttpUtility.UrlEncode(signData); //组装字符串 string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; //用HttpPost方式提交 string _xml = HttpHelp.httppost("https://query.shinespay.com/query", para, "UTF-8"); //将返回的xml中的参数提取出来 var el = XElement.Load(new StringReader(_xml)); //提取参数 var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var dinpaysign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); //去掉首尾的标签并转换成string string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; //不参与验签 if (is_success == "F") { Response.Write("查询失败:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string dinpaysign = Regex.Match(dinpaysign1.ToString(), "(?<=>).*?(?=<)").Value; //组装字符串 string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; /** * 1)dinpay_public_key,公钥,每个商家对应一个固定的智付公钥(不是使用工具生成的密钥merchant_public_key,不要混淆), * 即为商家后台"公钥管理"->"公钥"里的绿色字符串内容 * 2)demo提供的ddbill_public_key是测试商户号666007008010的公钥,请自行复制对应商户号的公钥进行调整和替换。 */ string ddbill_public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCc7Lq3TKE0JHunYkzN4yuFKxDU24zDRf76Fhr/dAldQac0yIb+NfhAHn3+M/waJZrjd5ARlI+hnPK/SBejL2GH+lduu7ZEzfAXPjhaUWClT/Wqn4BRta94sYAcNvqgVLBzxQUhkGFTG4u73ZapB3rCoZBa0OK5zRFSc2juaYPukQIDAQAB"; //将公钥转换成C#专用格式 ddbill_public_key = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(ddbill_public_key); //验签 bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, ddbill_public_key, dinpaysign); if (validateResult == false) { Response.Write("验签失败"); Response.End(); } Response.Write("验签成功"); } finally { } }
protected void Page_Load(object sender, EventArgs e) { try { string merchant_code = Request.Form["merchant_code"].ToString().Trim(); string service_type = Request.Form["service_type"].ToString().Trim(); string sign_type = Request.Form["sign_type"].ToString().Trim(); string interface_version = Request.Form["interface_version"].ToString().Trim(); string order_no = Request.Form["order_no"].ToString().Trim(); string signStr = "interface_version=" + interface_version + "&merchant_code=" + merchant_code + "&order_no=" + order_no + "&service_type=" + service_type; if (sign_type == "RSA-S") //for sign_type = "RSA-S" { //1)merchant_private_key,get it from the tools for getting keys,please refer to the file call <how to get the keys> //2)you also need to get the merchant_public_key and upload it on Dinpay mechant system,also refer to <how to get the keys> //this merchant_private_key is for merchant ID 1111110166 string merchant_private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALf/+xHa1fDTCsLYPJLHy80aWq3djuV1T34sEsjp7UpLmV9zmOVMYXsoFNKQIcEzei4QdaqnVknzmIl7n1oXmAgHaSUF3qHjCttscDZcTWyrbXKSNr8arHv8hGJrfNB/Ea/+oSTIY7H5cAtWg6VmoPCHvqjafW8/UP60PdqYewrtAgMBAAECgYEAofXhsyK0RKoPg9jA4NabLuuuu/IU8ScklMQIuO8oHsiStXFUOSnVeImcYofaHmzIdDmqyU9IZgnUz9eQOcYg3BotUdUPcGgoqAqDVtmftqjmldP6F6urFpXBazqBrrfJVIgLyNw4PGK6/EmdQxBEtqqgXppRv/ZVZzZPkwObEuECQQDenAam9eAuJYveHtAthkusutsVG5E3gJiXhRhoAqiSQC9mXLTgaWV7zJyA5zYPMvh6IviX/7H+Bqp14lT9wctFAkEA05ljSYShWTCFThtJxJ2d8zq6xCjBgETAdhiH85O/VrdKpwITV/6psByUKp42IdqMJwOaBgnnct8iDK/TAJLniQJABdo+RodyVGRCUB2pRXkhZjInbl+iKr5jxKAIKzveqLGtTViknL3IoD+Z4b2yayXg6H0g4gYj7NTKCH1h1KYSrQJBALbgbcg/YbeU0NF1kibk1ns9+ebJFpvGT9SBVRZ2TjsjBNkcWR2HEp8LxB6lSEGwActCOJ8Zdjh4kpQGbcWkMYkCQAXBTFiyyImO+sfCccVuDSsWS+9jrc5KadHGIvhfoRjIj2VuUKzJ+mXbmXuXnOYmsAefjnMCI6gGtaqkzl527tw="; merchant_private_key = testOrderQuery.HttpHelp.RSAPrivateKeyJava2DotNet(merchant_private_key); string signData = testOrderQuery.HttpHelp.RSASign(signStr, merchant_private_key); signData = HttpUtility.UrlEncode(signData); string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; string _xml = HttpHelp.httppost("https://query.xhbill.com/query", para, "UTF-8"); var el = XElement.Load(new StringReader(_xml)); var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var dinpaysign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; if (is_success == "F") { Response.Write("query failed:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string dinpaysign = Regex.Match(dinpaysign1.ToString(), "(?<=>).*?(?=<)").Value; string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; //dinpay_public_key,copy it form Dinpay merchant system,find it on "Payment Management"->"Public Key Management"->"Dinpay Public Key" // this dinpay_public_key is for merchant ID 1111110166 string dinpay_public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCWOq5aHSTvdxGPDKZWSl6wrPpn" + "MHW+8lOgVU71jB2vFGuA6dwa/RpJKnz9zmoGryZlgUmfHANnN0uztkgwb+5mpgme" + "gBbNLuGqqHBpQHo2EsiAhgvgO3VRmWC8DARpzNxknsJTBhkUvZdy4GyrjnUrvsAR" + "g4VrFzKDWL0Yu3gunQIDAQAB"; dinpay_public_key = testOrderQuery.HttpHelp.RSAPublicKeyJava2DotNet(dinpay_public_key); bool validateResult = testOrderQuery.HttpHelp.ValidateRsaSign(signsrc, dinpay_public_key, dinpaysign); if (validateResult == false) { Response.Write("verify failed"); Response.End(); } Response.Write("verify successful"); } else //for sign_type = "RSA" { RSAWithHardware rsa = new RSAWithHardware(); string merPubKeyDir = "D:/1111110166.pfx"; //get the pfx cetification on Dinpay mechant system,"Payment Management"->"Download Cetification" string password = "******"; RSAWithHardware rsaWithH = new RSAWithHardware(); rsaWithH.Init(merPubKeyDir, password, "D:/dinpayRSAKeyVersion"); string signData = rsaWithH.Sign(signStr); signData = HttpUtility.UrlEncode(signData); string para = signStr + "&sign_type=" + sign_type + "&sign=" + signData; string _xml = HttpHelp.httppost("https://query.xhbill.com/query", para, "UTF-8"); var el = XElement.Load(new StringReader(_xml)); var is_success1 = el.XPathSelectElement("/response/is_success"); var merchantcode1 = el.XPathSelectElement("/response/trade/merchant_code"); var orderno1 = el.XPathSelectElement("/response/trade/order_no"); var ordertime1 = el.XPathSelectElement("/response/trade/order_time"); var orderamount1 = el.XPathSelectElement("/response/trade/order_amount"); var trade_no1 = el.XPathSelectElement("/response/trade/trade_no"); var trade_time1 = el.XPathSelectElement("/response/trade/trade_time"); var dinpaysign1 = el.XPathSelectElement("/response/sign"); var trade_status1 = el.XPathSelectElement("/response/trade/trade_status"); string is_success = Regex.Match(is_success1.ToString(), "(?<=>).*?(?=<)").Value; if (is_success == "F") { Response.Write("query failed:" + _xml + "<br/>"); Response.End(); } string merchantcode = Regex.Match(merchantcode1.ToString(), "(?<=>).*?(?=<)").Value; string orderno = Regex.Match(orderno1.ToString(), "(?<=>).*?(?=<)").Value; string ordertime = Regex.Match(ordertime1.ToString(), "(?<=>).*?(?=<)").Value; string orderamount = Regex.Match(orderamount1.ToString(), "(?<=>).*?(?=<)").Value; string trade_no = Regex.Match(trade_no1.ToString(), "(?<=>).*?(?=<)").Value; string trade_time = Regex.Match(trade_time1.ToString(), "(?<=>).*?(?=<)").Value; string trade_status = Regex.Match(trade_status1.ToString(), "(?<=>).*?(?=<)").Value; string dinpaysign = Regex.Match(dinpaysign1.ToString(), "(?<=>).*?(?=<)").Value; string signsrc = "merchant_code=" + merchantcode + "&order_amount=" + orderamount + "&order_no=" + orderno + "&order_time=" + ordertime + "&trade_no=" + trade_no + "&trade_status=" + trade_status + "&trade_time=" + trade_time; bool result = rsaWithH.VerifySign("1111110166", signsrc, dinpaysign); if (result == false) { Response.Write("verify failed"); Response.End(); } Response.Write("verify successful"); } } finally { } }