工行支付api查询asp.net C# 实现
2011-03-23 10:57
453 查看
工行的测试环境真是非常地烂,给的api查询居然是c++的,还写着dotnet的名字,这里我给出一个asp.net c#的实现
public class ICBC_API
{
static string apiUrl = "https://corporbank3.dccnet.com.cn/servlet/ICBCINBSEBusinessServlet";
static string cerPath = ConfigurationManager.AppSettings["CertPath"];
static string cerPwd = ConfigurationManager.AppSettings["CertPwd"];
public ICBC_API()
{
}
/// <summary>
/// 订单查询
/// </summary>
/// <param name="orderNum">订单号</param>
/// <param name="tradeDate">订单日期(yyyyMMdd)</param>
/// <param name="shopCode">商户代码</param>
/// <param name="shopAccount">商户帐号</param>
/// <returns></returns>
public static string B2C(string orderNum,string tradeDate,string shopCode,string shopAccount)
{
//gen post data
string postParams = "APIName=EAPI&APIVersion=001.001.002.001&MerReqData={0}";
StringBuilder sb = new StringBuilder();
sb.Append("<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\" ?><ICBCAPI><in><orderNum>");
sb.Append(orderNum);
sb.Append("</orderNum><tranDate>");
sb.Append(tradeDate);
sb.Append("</tranDate><ShopCode>");
sb.Append(shopCode);
sb.Append("</ShopCode><ShopAccount>");
sb.Append(shopAccount);
sb.Append("</ShopAccount></in></ICBCAPI>");
string postData = string.Format(postParams, sb.ToString());
//验证证书,默认有效
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
//配置请求参数
HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create(apiUrl);
wReq.ContentType = "application/x-www-form-urlencoded";
wReq.Method = "POST";
wReq.ClientCertificates.Add(new X509Certificate2(HttpContext.Current.Server.MapPath(cerPath), cerPwd));
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(postData);
wReq.ContentLength = data.Length;
Stream reqStream = wReq.GetRequestStream();
reqStream.Write(data, 0, data.Length);
reqStream.Close();
//获取结果
WebResponse wResp = wReq.GetResponse();
Stream respStream = wResp.GetResponseStream();
string stringResp = string.Empty;
if (respStream != null)
{
using (StreamReader respReader = new StreamReader(respStream,Encoding.GetEncoding("GBK")))
{
stringResp = respReader.ReadToEnd();
}
respStream.Close();
}
return stringResp;
}
}
public class ICBC_API
{
static string apiUrl = "https://corporbank3.dccnet.com.cn/servlet/ICBCINBSEBusinessServlet";
static string cerPath = ConfigurationManager.AppSettings["CertPath"];
static string cerPwd = ConfigurationManager.AppSettings["CertPwd"];
public ICBC_API()
{
}
/// <summary>
/// 订单查询
/// </summary>
/// <param name="orderNum">订单号</param>
/// <param name="tradeDate">订单日期(yyyyMMdd)</param>
/// <param name="shopCode">商户代码</param>
/// <param name="shopAccount">商户帐号</param>
/// <returns></returns>
public static string B2C(string orderNum,string tradeDate,string shopCode,string shopAccount)
{
//gen post data
string postParams = "APIName=EAPI&APIVersion=001.001.002.001&MerReqData={0}";
StringBuilder sb = new StringBuilder();
sb.Append("<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\" ?><ICBCAPI><in><orderNum>");
sb.Append(orderNum);
sb.Append("</orderNum><tranDate>");
sb.Append(tradeDate);
sb.Append("</tranDate><ShopCode>");
sb.Append(shopCode);
sb.Append("</ShopCode><ShopAccount>");
sb.Append(shopAccount);
sb.Append("</ShopAccount></in></ICBCAPI>");
string postData = string.Format(postParams, sb.ToString());
//验证证书,默认有效
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
//配置请求参数
HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create(apiUrl);
wReq.ContentType = "application/x-www-form-urlencoded";
wReq.Method = "POST";
wReq.ClientCertificates.Add(new X509Certificate2(HttpContext.Current.Server.MapPath(cerPath), cerPwd));
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(postData);
wReq.ContentLength = data.Length;
Stream reqStream = wReq.GetRequestStream();
reqStream.Write(data, 0, data.Length);
reqStream.Close();
//获取结果
WebResponse wResp = wReq.GetResponse();
Stream respStream = wResp.GetResponseStream();
string stringResp = string.Empty;
if (respStream != null)
{
using (StreamReader respReader = new StreamReader(respStream,Encoding.GetEncoding("GBK")))
{
stringResp = respReader.ReadToEnd();
}
respStream.Close();
}
return stringResp;
}
}
相关文章推荐
- asp.net(C#)中实现多个DropDownList及多个TextBox的多条件查询
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- Asp.net使用C#代码实现万年历查询
- 微信扫码支付asp.net(C#)实现步骤
- 微信扫码支付asp.net(C#)实现步骤
- ASP.NET域名查询系统源代码,域名Whois查询,(.Com/.Net/.Org/.Cn),c#语言实现域名Whois信息查询
- 微信扫码支付asp.net(C#)实现步骤
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- Asp.Net/C#/WCF - C#实现谷歌相似图片查询算法
- 微信扫码支付asp.net(C#)实现步骤
- [转]在ASP.NET中如何用C#.NET实现基于表单的验证(一)
- 在asp.net(c#)下实现调用cmd的方法
- 晚上无聊象征性收取了网友100元辛苦费,实现支持多语言功能的XML语言包版的C#的ASP.NET多语言支持例子程序
- Google Map开发(一) ASP.NET中调用Google Map API实现简单的地图显示
- asp.net(c#)实现邀请码机制
- C# asp.net 搭建微信公众平台(可实现关注消息与消息自动回复)
- ASP.NET(c#)实现重定向的三种方法的总结
- ASP.NET网站权限设计实现(三)——套用JQuery EasyUI列表显示数据、分页、查询
- asp.net实现C#代码加亮显示
- 我的一个ASP.net简单查询实现