工商银行在线支付接口代码

页面代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ICBCBankPay.aspx.cs" Inherits="ICBCBankPay" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body onload="javascript:document.frm1.submit();">
    <form action="https://B2C.icbc.com.cn/servlet/ICBCINBSEBusinessServlet" method="POST"
    name="frm1" id="frm1">
    <input name="interfaceName" type="text" value="ICBC_PERBANK_B2C" />
    <input name="interfaceVersion" type="text" value="1.0.0.11" />
    <input name="tranData" type="text" id="tranData" runat="server" value="" />
    <input name="merSignMsg" type="text" id="merSignMsg" runat="server" value="" />
    <input name="merCert" type="text" id="merCert" runat="server" value="" />
    <input name="merReference" id="merReference" runat="server" type="hidden" value="" />
    <input name="merCustomIp" id="merCustomIp" type="hidden" runat="server" value="" />
    <input name="merURL" id="merURL" type="hidden" runat="server" value="" />
    </form>
</body>
</html>

页面方法:

protected void Page_Load(object sender, EventArgs e)
        {
                string src = string.Empty;
                string _ORDERID = ""//订单号
                string _PAYMENT=""//订单金额
              
                    StringBuilder strSet = new StringBuilder();
                    strSet.Append("<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\"?>");
                    strSet.Append("<B2CReq>");
                    strSet.Append("<interfaceName>ICBC_PERBANK_B2C</interfaceName>");
                    strSet.Append("<interfaceVersion>1.0.0.11</interfaceVersion>");
                    strSet.Append("<orderInfo>");
                    strSet.Append("<orderDate>" + DateTime.Now.ToString("yyyyMMddHHmmss") + "</orderDate>");
                    strSet.Append("<curType>001</curType>");//支付币种
                    strSet.Append("<merID>1111111111</merID>");//商户代码
                    strSet.Append("<subOrderInfoList>");
                    strSet.Append("<subOrderInfo>");
                    strSet.Append("<orderid>" + _ORDERID + "</orderid>");//订单号
                    strSet.Append("<amount>" + _PAYMENT + "</amount>");
                    strSet.Append("<installmentTimes>1</installmentTimes>");//分期付款期数    
                    strSet.Append("<merAcct>11111111111</merAcct>");//商户账号
                    strSet.Append("<goodsID>001</goodsID>");//商品编号
                    strSet.Append("<goodsName></goodsName>");//商品名称
                    strSet.Append("<goodsNum>1</goodsNum>");//商品数量
                    strSet.Append("<carriageAmt></carriageAmt>");//已含运费金额
                    strSet.Append("</subOrderInfo>");
                    strSet.Append("</subOrderInfoList>");
                    strSet.Append("</orderInfo>");
                    strSet.Append("<custom>");
                    strSet.Append("<verifyJoinFlag>0</verifyJoinFlag>");//检验联名标志
                    strSet.Append("<Language>ZH_CN</Language>");//语言版本
                    strSet.Append("</custom>");
                    strSet.Append("<message>");
                    strSet.Append("<creditType>2</creditType>");//支持订单支付的银行卡种类    
                    strSet.Append("<notifyType>HS</notifyType>");
                    strSet.Append("<resultType>0</resultType>");//结果发送类型
                    strSet.Append("<merReference>" + merReference.Value + "</merReference>");//商户reference
                    strSet.Append("<merCustomIp>" + merCustomIp.Value + "</merCustomIp>");//客户端IP
                    strSet.Append("<goodsType>1</goodsType>");//虚拟商品/实    
                    strSet.Append("<merCustomID></merCustomID>");//买家用户号    
                    strSet.Append("<merCustomPhone></merCustomPhone>");//买家联系电话    
                    strSet.Append("<goodsAddress></goodsAddress>");//收货地址    
                    strSet.Append("<merOrderRemark></merOrderRemark>");//订单备注    
                    strSet.Append("<merHint></merHint>");//商城提示    
                    strSet.Append("<remark1></remark1>");
                    strSet.Append("<remark2></remark2>");
                    strSet.Append("<merURL>" + merURL.Value + "</merURL>");
                    strSet.Append("<merVAR>icbc</merVAR>");
                    strSet.Append("</message>");
                    strSet.Append("</B2CReq>");

                    src = strSet.ToString();
                    var icbc = new ICBCEBANKUTILLib.B2CUtilClass();
                    int log = icbc.init("E:\\shyg10.crt", "E:\\shyg10.crt", "E:\\shyg10.key", "11111111");
                    if (log != 0)
                        icbc.getRC();


                    tranData.Value = EncodeBase64(Encoding.Default,src.Trim());
                    string mer = icbc.signC(src, src.Length);
                    merSignMsg.Value = mer;
                    string ff = icbc.verifySignC(src, src.Length, mer, mer.Length).ToString();
                    merCert.Value = icbc.getCert(1);
                    var aa = icbc.getRC();
        }

/// <summary>
        /// Base64加密
        /// </summary>
        /// <param name="codeName">加密采用的编码方式</param>
        /// <param name="source">待加密的明文</param>
        /// <returns></returns>
        public static string EncodeBase64(Encoding encode, string source)
        {
            string decode = string.Empty;
            byte[] bytes = encode.GetBytes(source);
            try
            {
                decode = Convert.ToBase64String(bytes);
            }
            catch
            {
                decode = source;
            }
            return decode;
        }

 

 

支付结果返回页面方法:

支付结果接受:

 if (!string.IsNullOrEmpty(Request["merVAR"]) && Request["merVAR"].ToString().Equals("icbc"))
                {
                    string xml = DecodeBase64(Encoding.Default, Request["notifyData"].ToString());
                   
                    XmlDocument xmldoc = new XmlDocument();
                    xmldoc.LoadXml(xml);
                    string paystate = xmldoc.DocumentElement.SelectSingleNode("/B2CRes/bank/tranStat").InnerText;

                    string orderid= xmldoc.DocumentElement.SelectSingleNode("/B2CRes/orderInfo/subOrderInfoList/subOrderInfo/orderid").InnerText;


                }

/// <summary>
        /// Base64解密
        /// </summary>
        /// <param name="codeName">解密采用的编码方式,注意和加密时采用的方式一致</param>
        /// <param name="result">待解密的密文</param>
        /// <returns>解密后的字符串</returns>
        public static string DecodeBase64(Encoding encode, string result)
        {
            string decode = "";
            byte[] bytes = Convert.FromBase64String(result);
            try
            {
                decode = encode.GetString(bytes);
            }
            catch
            {
                decode = result;
            }
            return decode;
        }

注意:项目需要引用ICBCEBANKUTILLib.DLL,该DLL银行都会提供,在这就不上传了。

posted @ 2012-02-02 16:31  tongle  阅读(1842)  评论(0编辑  收藏  举报