工商銀行オンライン支払いインタフェース

121227 ワード


以下のブログを参考にしました.http://www.cnblogs.com/gonganruyi/archive/2011/07/01/2095463.html
1、まず工商銀行が提供するICBCEBankUtil.dllを登録し、ICBCEBankUtil.dllとinfosecapi.dllをsystem 32フォルダの下CMDにコピーしてregsvr 32 ICBCEBankUtil.dll登録コントロールを入力する.WINDOWS SERVER 2008/2012などのシステムでは、管理者コマンドプロンプトを実行する必要があります.
2、銀行が提供する.pfx証明書ファイルを分割し、.keyと.crtの2つのファイルを生成し、分割時に設定した秘密鍵のパスワードを記憶する.ebb 2 cpublic.crt(公開鍵ファイル)、Name.key、Name.crtの3つのファイルを指定したディレクトリにコピーします.
3、次はコード

 
"post"action=""id="order">
"width: 500px; margin: auto auto; padding: 10px; line-height: 30px;">
工商銀行の支払い住所にジャンプしています.....
"hidden"name="interfaceName"value=""/>
"hidden"name="interfaceVersion"value=""/>
"hidden"name="tranData"value=""/>
"hidden"name="merSignMsg"value=""/>
"hidden"name="merCert"value=""/>
"</span><span style="color:#800000;">text/javascript</span><span style="color:#800000;">"</span>> document.getElementById(<span style="color:#800000;">"</span><span style="color:#800000;">order</span><span style="color:#800000;">"</span>).submit();
支払いインタフェースHTML

            //    (   )
            this.userIdCardNumber = Request.QueryString["userIdCardNumber"];
            //    ,(          )
            // this.money = (Convert.ToInt32(Request.QueryString["payMnoney"]) * 100).ToString();
            this.money = "1";
            //     
            string orderId = DateTime.Now.ToString("yyyyMMddHHmmss") + userIdCardNumber.Substring(userIdCardNumber.Length - 5, 5) + Inhua.Common.Rand.Number(5);
            
            StringBuilder strXml = new StringBuilder();
            strXml.Append("");
            strXml.Append("");
            //    
            strXml.Append("" + icmcModel.InterfaceName + "");
            //     
            strXml.Append("" + icmcModel.InterfaceVersion + "");
            //    
            strXml.Append("");
            //      
            strXml.Append("" + icmcModel.OrderDate + "");
            //    
            strXml.Append("" + icmcModel.CurType + "");
            //    
            strXml.Append("" + icmcModel.MerID + "");
            //      
            strXml.Append("");
            //    
            strXml.Append("");
            //    
            strXml.Append("" + orderId + "");
            //    
            //strXml.Append("" + user.ExaminationModel.Examination_fees.ToString("0.00") + " ");
            strXml.Append("" + money + " ");
            //       1      
            strXml.Append("1");
            //    
            strXml.Append("" + icmcModel.MerAcct + "");
            //    
            strXml.Append("" + icmcModel.Orderid + "");
            //    
            strXml.Append("    ");
            //    
            strXml.Append("1");
            //      
            strXml.Append("");
            strXml.Append("");
            strXml.Append("");
            strXml.Append("");
            strXml.Append("");
            //         “1”:     ,              
            strXml.Append("" + icmcModel.VerifyJoinFlag + "");
            //       :“EN_US”    ;  :“ZH_CN”       
            strXml.Append("ZH_CN");
            strXml.Append("");
            strXml.Append("");
            //            
            strXml.Append("2");
            //    
            strXml.Append("" + icmcModel.NotifyType + "");
            //      
            strXml.Append("" + icmcModel.ResultType + "");
            //  reference
            strXml.Append("" + icmcModel.MerReference + "");
            //   IP    reference    ,    
            strXml.Append("" + icmcModel.MerIP + "");
            //    /          “0”:       “1”,    
            strXml.Append("0");
            //     
            strXml.Append("");
            //      
            strXml.Append("");
            //    
            strXml.Append("");
            //    
            strXml.Append("");
            //    
            strXml.Append("");
            //    1
            strXml.Append("");
            //    2
            strXml.Append("");
            //    URL
            //strXml.Append("http://localhost/");
            //string url = tools.GetRootVirtualPath();System.Configuration.ConfigurationManager.AppiiciSettings["aa"]
            string merURL = "http://" + icmcModel.MerIP + "/PayOnline/ReturnPayment.aspx";
            strXml.Append("" + merURL + "");
            //      
            strXml.Append("" + Inhua.Common.Encryption.Encrypt(userIdCardNumber) + "");
            strXml.Append("");
            strXml.Append("");

            //        
            icmcModel.TranData = strXml.ToString();
            CBCOnlinePayment.CBCPayOnline.GetCheckInfo(icmcModel);

支払インタフェースバックグラウンドコード

    public class ICBC
    {
        private string _orderPostUrl = "https://B2C.icbc.com.cn/servlet/ICBCINBSEBusinessServlet";
        private string _interfaceName = "ICBC_PERBANK_B2C";
        private string _interfaceVersion = "1.0.0.11";
        private string _orderid;
        /// 
        ///     
        /// 
        private string _amount;
        /// 
        ///     
        /// 
        private string _curType = "001";
        /// 
        ///     
        /// 
        private string _merID = "     ";
        /// 
        ///     
        /// 
        private string _merAcct = "    ";
        /// 
        ///       
        ///   “1”:     ,              ,         ,         ;  “0”:            ,       。
        /// 
        private string _verifyJoinFlag = "0";
        /// 
        ///     
        //////   “HS”:              HTTP  POST  ,       ,                         URL     merURL  ;
        ///   “AG”:           。             B2C      ,              API        。
        /// 
        private string _notifyType = "HS";
        /// 
        ///     URL
        ///      URL,    ,          url,        post           URL
        ///   : URL   http  (    https  ),     80    。
        /// 
        private string _merURL;
        /// 
        ///       
        ///   
        ///   “0”:          ,              ;
        ///   “1”,                 。
        ///        HS     ,    AG  ,      ,            ,     。
        /// 
        private string _resultType = "1";
        /// 
        ///     
        /// 
        private string _orderDate = System.DateTime.Now.ToString("yyyyMMddHHmmss");

        /// 
        ///       
        //////           API      tranData xml       ,         ,    BASE64        merSignMsg;
        ///  :      tranData xml  ,   tranData  BASE64     ;
        /// 
        private string _merSignMsg;

        /// 
        ///       
        ///                  ,  BASE64         ;
        /// 
        private string _merCert;

        /// 
        ///     
        /// 
        private string _goodsID = "001";
        /// 
        ///     
        /// 
        private string _goodsName = "";
        /// 
        ///     
        /// 
        private string _goodsNum = "1";

        /// 
        ///       
        /// 
        private string _carriageAmt;

        /// 
        ///     1
        /// 
        private string _remark1;


        /// 
        ///     2
        /// 
        private string _remark2;

        /// 
        ///     
        /// 
        private string _merHint;

        /// 
        ///            xml   ,  BASE64  ;
        /////////   xml   ;      BASE64  ;
        /// xml              ;
        /// 
        private string _tranData;

        /// 
        ///         (     ,  “*. B2C  .com”),    ,           ,                             。
        /// 
        private string _merReference = System.Configuration.ConfigurationManager.AppSettings["WebUrl"];

        private string _merIP = System.Configuration.ConfigurationManager.AppSettings["WebIP"];


        private bool _isCheck = false;

        /// 
        ///       
        /// 
        public bool IsCheck
        {
            get { return _isCheck; }
            set { _isCheck = value; }
        }

        /// 
        ///     
        /// 
        public string MerReference
        {
            get { return _merReference; }
            set { _merReference = value; }
        }

        /// 
        ///   IP
        /// 
        public string MerIP
        {
            get { return _merIP; }
            set { _merIP = value; }
        }

        /// 
        ///     
        /// 
        public string TranData
        {
            get { return _tranData; }
            set { _tranData = value; }
        }

        /// 
        ///         
        /// 
        public string OrderPostUrl
        {
            get { return _orderPostUrl; }
            set { _orderPostUrl = value; }
        }

        /// 
        ///     
        /// 
        public string InterfaceName
        {
            get { return _interfaceName; }
            set { _interfaceName = value; }
        }

        /// 
        ///      
        /// 
        public string InterfaceVersion
        {
            get { return _interfaceVersion; }
            set { _interfaceVersion = value; }
        }

        /// 
        ///    
        /// 
        public string Orderid
        {
            get { return _orderid; }
            set { _orderid = value; }
        }

        /// 
        ///     
        /// 
        public string Amount
        {
            get { return _amount; }
            set { _amount = value; }
        }

        /// 
        ///      RMB:001
        /// 
        public string CurType
        {
            get { return _curType; }
            set { _curType = value; }
        }

        /// 
        ///     
        /// 
        public string MerID
        {
            get { return _merID; }
            set { _merID = value; }
        }

        /// 
        ///     
        /// 
        public string MerAcct
        {
            get { return _merAcct; }
            set { _merAcct = value; }
        }

        /// 
        ///        
        ///   “1”:     ,              ,         ,         ;
        ///   “0”:            ,       。
        /// 
        public string VerifyJoinFlag
        {
            get { return _verifyJoinFlag; }
            set { _verifyJoinFlag = value; }
        }

        /// 
        ///     
        ///   “HS”:              HTTP  POST  ,       ,                         URL     merURL  ;
        ///   “AG”:           。             B2C      ,              API        。
        /// 
        public string NotifyType
        {
            get { return _notifyType; }
            set { _notifyType = value; }
        }

        /// 
        ///     URL
        /// 
        public string MerURL
        {
            get { return _merURL; }
            set { _merURL = value; }
        }

        /// 
        ///       
        /// 
        public string ResultType
        {
            get { return _resultType; }
            set { _resultType = value; }
        }

        /// 
        ///       
        /// 
        public string OrderDate
        {
            get { return _orderDate; }
            set { _orderDate = value; }
        }

        /// 
        ///       
        /// 
        public string MerSignMsg
        {
            get { return _merSignMsg; }
            set { _merSignMsg = value; }
        }

        /// 
        ///       
        /// 
        public string MerCert
        {
            get { return _merCert; }
            set { _merCert = value; }
        }

        /// 
        ///     
        /// 
        public string GoodsID
        {
            get { return _goodsID; }
            set { _goodsID = value; }
        }

        /// 
        ///     
        /// 
        public string GoodsName
        {
            get { return _goodsName; }
            set { _goodsName = value; }
        }

        /// 
        ///     
        /// 
        public string GoodsNum
        {
            get { return _goodsNum; }
            set { _goodsNum = value; }
        }

        /// 
        ///       
        /// 
        public string CarriageAmt
        {
            get { return _carriageAmt; }
            set { _carriageAmt = value; }
        }

        /// 
        ///     1
        /// 
        public string Remark1
        {
            get { return _remark1; }
            set { _remark1 = value; }
        }

        /// 
        ///     2
        /// 
        public string Remark2
        {
            get { return _remark2; }
            set { _remark2 = value; }
        }

        /// 
        ///     
        /// 
        public string MerHint
        {
            get { return _merHint; }
            set { _merHint = value; }
        }
    }
    public static class CBCPayOnline
    {
        private static string amount;

        /// 
        ///         
        /// 
        static string strCertFN = HttpContext.Current.Server.MapPath("    ");

        /// 
        ///         
        /// 
        static string strCertFNM = HttpContext.Current.Server.MapPath("    ");

        /// 
        ///      
        /// 
        static string strKeyFN = HttpContext.Current.Server.MapPath("    ");

        /// 
        ///     
        /// 
        static string strKey = "    ";
        static string api_url = "https://corporbank.icbc.com.cn/servlet/ICBCINBSEBusinessServlet";
        static string post_params = "APIName=EAPI&APIVersion=001.001.002.001&MerReqData=";
        static string cert_path = HttpContext.Current.Server.MapPath("~/..");
        //     HttpContext.Current.Server.MapPath("~/..");

        public static void Load()
        {
            System.Threading.Thread t = new System.Threading.Thread(CheckOrder);
            t.Start();
        }

        static CBCPayOnline()
        {

        }
        /// 
        ///        
        /// 
        public static void CheckOrder()
        {
            var query = SpringFactory.BusinessFactory.GetBusinessAnonymousUser();
            while (true)
            {
                var list = query.GetOrderPayList();
                ICBC icbcInfo = new ICBC();
                string outMess = "";
                foreach (var l1 in list)
                {
                    try
                    {
                        var user = SpringFactory.BusinessFactory.GetStudent(l1.userName);
                        string mess = CheckOrder(l1.OrderID, l1.PayDate.ToString("yyyyMMdd"), icbcInfo.MerID, icbcInfo.MerAcct, out outMess);
                        if (mess.Length > 5)//    ,       ,  xml  
                        {
                            DataSet myds = new DataSet();
                            StringReader strReader = new StringReader(mess);
                            myds.ReadXml(strReader);
                            string stat = myds.Tables["out"].Rows[0]["tranStat"].ToString();
                            if (stat == "1" || stat == "0")
                            {
                                amount = myds.Tables["out"].Rows[0]["amount"].ToString();
                                user.PaymentSucceed(amount, l1.OrderID);
                            }
                            else//    
                            {
                                SpringFactory.BusinessFactory.GetStudent(l1.userName).OrderFaild(l1.OrderID);
                            }
                        }
                        else
                        {
                            string pays = "";
                            switch (mess)
                            {
                                case "40972": pays = "API        "; break;
                                case "40973": pays = "API         "; break;
                                case "40976": pays = "API      "; break;
                                case "40977": pays = "       "; break;
                                case "40978": pays = "          "; break;
                                case "40979": pays = "        "; break;
                                case "40980": pays = "API         "; break;
                                case "40981": pays = "          "; break;

                                case "40982": pays = "    "; break;
                                case "40983": pays = "        "; break;
                                case "40987": pays = "            "; break;
                                case "40947": pays = "          "; break;
                                case "40948": pays = "      "; break;
                                case "40949": pays = "      "; break;

                                case "40950": pays = "        "; break;
                                case "40951": pays = "    id    "; break;
                                case "40952": pays = "    id   "; break;
                                case "40953": pays = "  id    "; break;
                                case "40954": pays = "            "; break;
                            }
                            //        
                            if (mess == "40972")
                            {
                                var result = SpringFactory.BusinessFactory.GetStudent(l1.userName);
                                result.OrderFaild(l1.OrderID);

                            }
                            else//        
                            {
                                var result = SpringFactory.BusinessFactory.GetStudent(l1.userName);
                                result.AddOrderLogs(l1.Amount.ToString(), false, l1.OrderID, "" + mess + pays);
                            }
                        }
                    }
                    catch (Exception e)
                    {

                        var result = SpringFactory.BusinessFactory.GetStudent(l1.userName);
                        result.AddOrderLogs("0", false, l1.OrderID, e.ToString());
                    }
                }

                System.Threading.Thread.Sleep(1000 * 60 * 30);

            }

        }

        /// 
        ///          
        /// 
        /// 
        /// 
        public static string ChenkOrder(string orderID, DateTime? payDate, string userIdCardNumber)
        {
            if (orderID.Length != 24)
            {
                return "      ,   24    ";
            }
            ICBC icbcInfo = new ICBC();
            //      
            var payModel = SpringFactory.BusinessFactory.GetBusinessAnonymousUser().GetOrderModel(orderID, userIdCardNumber);
            //      
            var logModel = SpringFactory.BusinessFactory.GetBusinessAnonymousUser().GetPayLogsByOrderId(orderID, userIdCardNumber);
            if (logModel != null)
            {
                return "     ,         。";
            }
            string outMess = "";
            string zfrq = orderID.Substring(0, 8);
            if (payDate != null)
            {
                zfrq = payDate.Value.ToString("yyyyMMdd");
            }
            else
            {
                if (payModel != null)
                {
                    zfrq = payModel.PayDate.ToString("yyyyMMdd");
                }
            }
            string mess = CheckOrder(orderID, zfrq, icbcInfo.MerID, icbcInfo.MerAcct, out outMess);
            if (mess.Length > 5)//    ,       ,  xml  
            {
                DataSet myds = new DataSet();
                StringReader strReader = new StringReader(mess);
                try
                {
                    myds.ReadXml(strReader);
                }
                catch
                {
                    throw new Exception("" + mess);
                }

                var user = SpringFactory.BusinessFactory.GetStudent(payModel.userName);
                string stat = myds.Tables["out"].Rows[0]["tranStat"].ToString();
                if (stat == "1" || stat == "0")
                {
                    if (payModel != null)
                    {
                        amount = myds.Tables["out"].Rows[0]["amount"].ToString();
                        user.PaymentSucceed(amount, orderID);
                        return "    !\r
" + orderID + "\r
" + amount; } else { return ""; } } else { string pays = ""; if (stat == "2") pays = " "; else pays = " "; if (payModel != null) { var result = SpringFactory.BusinessFactory.GetStudent(payModel.userName); result.OrderFaild(orderID); } return pays; } } else { string pays = ""; switch (mess) { case "40972": pays = "API "; break; case "40973": pays = "API "; break; case "40976": pays = "API "; break; case "40977": pays = " "; break; case "40978": pays = " "; break; case "40979": pays = " "; break; case "40980": pays = "API "; break; case "40981": pays = " "; break; case "40982": pays = " "; break; case "40983": pays = " "; break; case "40987": pays = " "; break; case "40947": pays = " "; break; case "40948": pays = " "; break; case "40949": pays = " "; break; case "40950": pays = " "; break; case "40951": pays = " id "; break; case "40952": pays = " id "; break; case "40953": pays = " id "; break; case "40954": pays = " "; break; } // if (mess == "40972") { if (payModel != null) { var result = SpringFactory.BusinessFactory.GetStudent(payModel.userName); result.OrderFaild(orderID); } } else// { if (payModel != null) { var result = SpringFactory.BusinessFactory.GetStudent(payModel.userName); result.AddOrderLogs(payModel.Amount.ToString(), false, orderID, "" + mess + pays); } } return pays; } } ///
/// /// /// /// public static DataTransfer.ICBC GetCheckInfo(DataTransfer.ICBC argIcbc) { string strMerSignMsg = string.Empty; B2CUtil icbcObj = new B2CUtil(); int jg = icbcObj.init(strCertFN, strCertFNM, strKeyFN, strKey); if (jg == 0) { argIcbc.MerSignMsg = icbcObj.signC(argIcbc.TranData, argIcbc.TranData.Length); if (argIcbc.MerSignMsg == "") { int returnCode = icbcObj.getRC(); SpringFactory.BusinessFactory.GetBusinessAnonymousUser().AddLogs(" :" + returnCode + ""); } argIcbc.MerCert = icbcObj.getCert(1); byte[] bytes = Encoding.Default.GetBytes(argIcbc.TranData); argIcbc.TranData = Convert.ToBase64String(bytes); } else { SpringFactory.BusinessFactory.GetBusinessAnonymousUser().AddLogs(jg.ToString() + ", "); } return argIcbc; } /// /// /// /// /// public static DataTransfer.ICBC GetCheckReturnInfo(DataTransfer.ICBC argIcbc) { string strMerSignMsg = string.Empty; B2CUtil icbcObj = new B2CUtil(); if (icbcObj.init(strCertFN, strCertFNM, strKeyFN, strKey) == 0) { argIcbc.TranData = Decode(argIcbc.TranData); // if (icbcObj.verifySignC(argIcbc.TranData, argIcbc.TranData.Length, argIcbc.MerSignMsg, argIcbc.MerSignMsg.Length) == 0) { argIcbc.IsCheck = true; } else argIcbc.IsCheck = true; } else { argIcbc.IsCheck = false; } return argIcbc; } /// /// /// /// /// public static string Encode(string data) { try { return Inhua.Common.Encryption.Encrypt(data); } catch (Exception e) { throw new Exception(e.Message); } } /// /// /// /// /// public static string Decode(string str) { byte[] outputb = Convert.FromBase64String(str); string orgStr = Encoding.Default.GetString(outputb); return orgStr; } /// /// /// /// /// /// /// /// /// public static string CheckOrder(string strOrderNum, string strTranDate, string strShopCode, string strShopAccount, out string errInfo) { try { errInfo = string.Empty; StringBuilder sb = new StringBuilder(); sb.Append(""); sb.Append(strOrderNum); sb.Append(""); sb.Append(strTranDate); sb.Append(""); sb.Append(strShopCode); sb.Append(""); sb.Append(strShopAccount); sb.Append(""); string post_data = post_params + sb.ToString(); string retruenstring = PostDataBySSL(post_data, api_url, cert_path, strKey, out errInfo); //var result = SpringFactory.BusinessFactory.GetBusinessAnonymousUser(); //result.AddLogs(" 3:" + (retruenstring.Length > 400 ? retruenstring.Substring(0, 400) : retruenstring)); if (retruenstring.Length <= 5) { return retruenstring; } return HttpUtility.UrlDecode(retruenstring); } catch (Exception ex) { var result = SpringFactory.BusinessFactory.GetBusinessAnonymousUser(); result.AddLogs(" 1:" + " " + ex.Message); errInfo = " "; return "99"; } } /// /// SSL /// /// /// /// /// /// /// public static string PostDataBySSL(string post_data, string url, string cert_path, string cert_password, out string errInfo) { errInfo = string.Empty; try { ASCIIEncoding encoding = new ASCIIEncoding(); byte[] data = encoding.GetBytes(post_data); if (cert_path != string.Empty) ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate); WebRequest webRequest = WebRequest.Create(url); HttpWebRequest httpRequest = webRequest as HttpWebRequest; if (cert_path.ToLower().EndsWith(".cer")) { httpRequest.ClientCertificates.Add(X509Certificate.CreateFromCertFile(cert_path)); } else { //SpringFactory.BusinessFactory.GetBusinessAnonymousUser().AddLogs(cert_path); httpRequest.ClientCertificates.Add(new X509Certificate2(cert_path, cert_password, X509KeyStorageFlags.MachineKeySet)); } httpRequest.KeepAlive = true; httpRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)"; httpRequest.ContentType = "application/x-www-form-urlencoded"; httpRequest.Method = "POST"; httpRequest.ContentLength = data.Length; Stream requestStream = httpRequest.GetRequestStream(); requestStream.Write(data, 0, data.Length); requestStream.Close(); Stream responseStream = null; responseStream = httpRequest.GetResponse().GetResponseStream(); string stringResponse = string.Empty; if (responseStream != null) { using (StreamReader responseReader = new StreamReader(responseStream, Encoding.GetEncoding("GBK"))) { stringResponse = responseReader.ReadToEnd(); } responseStream.Close(); } return stringResponse; } catch (Exception e) { errInfo = e.Message; SpringFactory.BusinessFactory.GetBusinessAnonymousUser().AddLogs(e.Message); return string.Empty; } } public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; } }
  if (Request.Form["notifyData"] != null)
            {
                try
                {
                    ICBC icbcInfo = new ICBC();
                    icbcInfo.TranData = Request.Form["notifyData"];
                    icbcInfo.MerSignMsg = Request.Form["signMsg"].ToString();
                    icbcInfo = CBCOnlinePayment.CBCPayOnline.GetCheckReturnInfo(icbcInfo);
                    //        
                    this.userIdCardNumber = Inhua.Common.Encryption.Decrypt(Request.Form["merVAR"].ToString());
                    var query = SpringFactory.BusinessFactory.GetStudent(userIdCardNumber);
                    if (icbcInfo.IsCheck)
                    {
                        DataSet myds = new DataSet();
                        StringReader strReader = new StringReader(icbcInfo.TranData);
                        myds.ReadXml(strReader);
                        DataTable mytable = new DataTable();
                        mytable = myds.Tables["bank"];
                        string payDate = myds.Tables["orderInfo"].Rows[0]["orderDate"].ToString().Trim();
                        string amount = myds.Tables["subOrderInfo"].Rows[0]["amount"].ToString().Trim();
                        string orderid = myds.Tables["subOrderInfo"].Rows[0]["orderid"].ToString().Trim();
                        if (null != mytable && mytable.Rows.Count > 0)
                        {
                            if (mytable.Rows[0]["tranStat"].ToString().Trim() == "1")
                            {
                                //       
                                string s2 = payDate.Substring(0, 4) + "-" + payDate.Substring(4, 2) + "-" + payDate.Substring(6, 2) + " " + payDate.Substring(8, 2) + ":" + payDate.Substring(10, 2);
                                DateTime time1 = DateTime.Parse(s2);
                                query.PaymentSucceed(amount, orderid);//
                            }
                            else
                            {
                                SpringFactory.BusinessFactory.GetStudent(this.userIdCardNumber).AddOrderLogs("0", false, "", "    ");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    SpringFactory.BusinessFactory.GetStudent(this.userIdCardNumber).AddOrderLogs("0", false, "", ex.Message);
                }
            }
            else
            {
                var result = SpringFactory.BusinessFactory.GetBusinessAnonymousUser();
                result.AddLogs("        ,      !");
            }

        }

コールバックページコード
  、 する のある について します( はwindows server 2012のサーバーにエラーが しました):
1、サービスに した 、 いページタイムズの の に すエラーにジャンプします.
          _ 1
の にICBCEBankUtil.dllが されていない だと われましたが、 に も したことがあり、 を しています. してやっとこの を し、IIS を き、アプリケーションプール-あなたのプログラムが するアプリケーションプールを - クリック- -32ビットアプリケーション をTrue(デフォルトFalse)に することを にします.
の に します.
          _ 2
2、 はインタフェースを する にローカルで がなくて、サーバーに してからずっとシステムを えて のファイルが つからないことを して、サーバーの で のファイルは して、どういうことで、したことがありますか? けを めますコードは のとおりです.
だと べた httpRequest.ClientCertificates.Add(new X509Certificate2(cert_path, cert_password));このコードの 、「 されたファイルが つからない」という が てきましたが、 ファイルはすでにサーバーに されています.Nを り して い しました. のX 509 Certificate 2 cert=new X 509 Certificate 2(cert_path、「12345678」)に しました.パラメータを して、X 509 Certificate 2 cert=   X 509 Certificate 2(cert_path,cert_password,X 509 KeyStorageFlags.MachineKeySet). な は の を にしてください.http://q.cnblogs.com/q/54288/