public string Payment()
        {
            int state;
            DateTime dt_now = DateTime.Now;
            Recharge rechargeInfo = new Recharge();
            TryUpdateModel(rechargeInfo);

            if (!ModelState.IsValid)
            {
                return "输入错误!";
            }

            rechargeInfo = (Recharge)Session["rechargeInfo"];


            if (null == rechargeInfo)
            {
                return "输入错误!";
            }

            SqlConnection sqlCnt = DBHelper.getConnection();
            SqlCommand cmd = null;
            SqlTransaction sqlTransaction = null;


            //---------------------------------手机Wap
            //支付宝网关地址
            string GATEWAY_NEW = "http://wappaygw.alipay.com/service/rest.htm?";

            ////////////////////////////////////////////调用授权接口alipay.wap.trade.create.direct获取授权码token////////////////////////////////////////////

            //返回格式
            string format = "xml";
            //必填,不需要修改

            //返回格式
            string v = "2.0";
            //必填,不需要修改

            //请求号
            string req_id = dt_now.ToString("yyyyMMddHHmmss");
            //必填,须保证每次请求都是唯一

            //req_data详细信息

            //服务器异步通知页面路径
            string notify_url = "http://122.226.141.18:28810/Alipay/Notify";
            //需http://格式的完整路径,不允许加?id=123这类自定义参数

            //页面跳转同步通知页面路径
            string call_back_url = "http://122.226.141.18:28810/Alipay/Success";
            //需http://格式的完整路径,不允许加?id=123这类自定义参数

            //操作中断返回地址
            string merchant_url = "http://122.226.141.18:28810/Alipay/Error";
            //用户付款中途退出返回商户的地址。需http://格式的完整路径,不允许加?id=123这类自定义参数

            //商户订单号
            string out_trade_no = rechargeInfo.flowid;
            //Request.Form["flowid"];//"testID00008";//   WIDout_trade_no.Text.Trim();
            //商户网站订单系统中唯一订单号,必填

            //订单名称
            string subject = "预交款:流水号:["+rechargeInfo.desc+"],mrn:{"+rechargeInfo.mrn+"}";
            //Request.Form["desc"]; //"testItem0000008";// //WIDsubject.Text.Trim();
            //必填

            //付款金额
            string total_fee = rechargeInfo.fee.ToString("f2");
            //Request.Form["fee"]; //"0.01";//WIDtotal_fee.Text.Trim();
            //必填

            //订单超时时间
            string pay_expir = "1";
            // 1 min

            //请求业务参数详细
            string req_dataToken = "<direct_trade_create_req><notify_url>" + notify_url + "</notify_url><call_back_url>" + call_back_url + "</call_back_url><seller_account_name>" + Config.Seller_email + "</seller_account_name><out_trade_no>" + out_trade_no + "</out_trade_no><subject>" + subject + "</subject><total_fee>" + total_fee + "</total_fee><merchant_url>" + merchant_url + "</merchant_url><pay_expire>" + pay_expir + "</pay_expire></direct_trade_create_req>";
            //必填

            Guid guid = new Guid();
            try
            {
                guid = new Guid(out_trade_no);
            }
            catch (Exception e)
            {
                //取不到支付宝预交款订单信息
                return "输入错误的订单号。"+e.Message;
            }






            //把请求参数打包成数组
            Dictionary<string, string> sParaTempToken = new Dictionary<string, string>();
            sParaTempToken.Add("partner", Config.Partner);
            sParaTempToken.Add("_input_charset", Config.Input_charset.ToLower());
            sParaTempToken.Add("sec_id", Config.Sign_type.ToUpper());
            sParaTempToken.Add("service", "alipay.wap.trade.create.direct");
            sParaTempToken.Add("format", format);
            sParaTempToken.Add("v", v);
            sParaTempToken.Add("req_id", req_id);
            sParaTempToken.Add("req_data", req_dataToken);

            //建立请求
            string sHtmlTextToken = Submit.BuildRequest(GATEWAY_NEW, sParaTempToken);
            //URLDECODE返回的信息
            Encoding code = Encoding.GetEncoding(Config.Input_charset);
            sHtmlTextToken = HttpUtility.UrlDecode(sHtmlTextToken, code);

            //解析远程模拟提交后返回的信息
            Dictionary<string, string> dicHtmlTextToken = Submit.ParseResponse(sHtmlTextToken);

            //获取token
            string request_token = dicHtmlTextToken["request_token"];

            ////////////////////////////////////////////根据授权码token调用交易接口alipay.wap.auth.authAndExecute////////////////////////////////////////////


            //业务详细
            string req_data = "<auth_and_execute_req><request_token>" + request_token + "</request_token></auth_and_execute_req>";
            //必填

            //把请求参数打包成数组
            Dictionary<string, string> sParaTemp = new Dictionary<string, string>();
            sParaTemp.Add("partner", Config.Partner);
            sParaTemp.Add("_input_charset", Config.Input_charset.ToLower());
            sParaTemp.Add("sec_id", Config.Sign_type.ToUpper());
            sParaTemp.Add("service", "alipay.wap.auth.authAndExecute");
            sParaTemp.Add("format", format);
            sParaTemp.Add("v", v);
            sParaTemp.Add("req_data", req_data);

            //建立请求
            string sHtmlText = Submit.BuildRequest(GATEWAY_NEW, sParaTemp, "get", "确认");
            //写html
            //Response.Write(sHtmlText);


            //=======================================================================================



            //本地记录xml
            
            try
            {
                sqlCnt.Open();

                cmd = sqlCnt.CreateCommand();              //创建SqlCommand对象
                cmd.CommandType = CommandType.Text;
                //cmd.CommandText = "select COUNT(*) from BankMsgSwitch where GUID =@GUID";   //sql语句

                cmd.Parameters.Add("@GUID", SqlDbType.UniqueIdentifier);
                cmd.Parameters["@GUID"].Value = guid;

                cmd.Parameters.Add("@HospSerial", SqlDbType.NChar);
                cmd.Parameters["@HospSerial"].Value = rechargeInfo.desc;

                cmd.Parameters.Add("@TMsg_xml", SqlDbType.Xml);
                cmd.Parameters["@TMsg_xml"].Value = req_dataToken;

                cmd.Parameters.Add("@TMsg_txt", SqlDbType.Text);
                cmd.Parameters["@TMsg_txt"].Value = req_dataToken;

                cmd.Parameters.Add("@Tdatetime", SqlDbType.DateTime);
                cmd.Parameters["@TDatetime"].Value = dt_now;



                sqlTransaction = sqlCnt.BeginTransaction();
                cmd.Transaction   =   sqlTransaction;
                cmd.CommandText = "insert into BankMsgSwitch (GUID,TransType,HospSerialNo,BankID,TMsg,TMsgText,TDateTime) values (@GUID,'I-paPref',@HospSerial,'100040',@TMsg_xml,@TMsg_txt,GETDATE())";   //sql语句
                try
                {
                    cmd.ExecuteNonQuery();
                    sqlTransaction.Commit();
                    state = 1;
                }
                catch (Exception e)
                {
                    sqlTransaction.Rollback();
                    state = -1;
                    log4netHelper.error("转支付宝失败", "--2--前端发起支付宝交易失败:[GUID]" + guid + "__[ERROR]" + e.Message.ToString());
                }
                   
                
            }
            catch (Exception e)
            {
                state = -3;
                log4netHelper.error("转支付宝失败", "--1--前端获取订单信息失败:[GUID]" + guid + "__[ERROR]" + e.Message.ToString());
            }
            finally
            {
                if (null != sqlTransaction)
                {
                    
                    sqlTransaction.Dispose();
                    sqlTransaction = null;
                }
                
               
                if (null != cmd)
                {
                    
                    cmd.Dispose();
                    cmd = null;
                }
                sqlCnt.Close();

            }

            switch (state) {
                case 1:
                    return sHtmlText;
                    break;
                case -1:
                    return "失败";
                default:
                    return "失败";

            }
            
            
        }
        public ActionResult Index(string guidString, long mrn, string flowNo, decimal fee)
        {
            int state = -1;
            Guid guid = new Guid();
            try
            {
                guid = new Guid(guidString);
            }
            catch (Exception e)
            {
                //取不到支付宝预交款订单信息
                ViewBag.errorMessage = "输入错误的订单号!";
                return View("Error");
            }


            Recharge rechargeInfo = new Recharge();

            rechargeInfo.mrn = mrn;
            rechargeInfo.flowid = guidString;
            rechargeInfo.fee = fee;
            rechargeInfo.desc = flowNo;

            Session.Add("rechargeInfo", rechargeInfo);

            state = 1;


            switch (state)
            {
                case 1:
                    //正常
                    return View("View",rechargeInfo);
                    break;
                case -2:
                    //取不到支付宝预交款订单信息
                    ViewBag.errorMessage = "获取不到支付宝预交款订单信息!";
                    return View("Error");
                    break;
                case -1:
                    //获取相应支付宝预交款日志信息
                    ViewBag.errorMessage = "获取相应支付宝预交款日志信息!";
                    return View("Error");
                    break;
                case -3:
                    //操作数据库有误
                    ViewBag.errorMessage = "操作数据库有误!";
                    return View("Error");
                    break;

                default:
                    //其他
                    ViewBag.errorMessage = "其他操作有误!";
                    return View("Error");
                    break;
            }
        }
        public string Index()
        {
            //调用log4net
            //
            //调用1
            //LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Error("logtest");
            //调用2
            //logger.Error("111111111111");
            //调用3
            //log4netHelper.error(this.GetType(), "321");

            //

            Recharge rechargeInfo = new Recharge();
            TryUpdateModel(rechargeInfo);

            if (!ModelState.IsValid)
            {
                return "失败";
            }



           
            //---------------------------------手机Wap
            //支付宝网关地址
            string GATEWAY_NEW = "http://wappaygw.alipay.com/service/rest.htm?";

            ////////////////////////////////////////////调用授权接口alipay.wap.trade.create.direct获取授权码token////////////////////////////////////////////

            //返回格式
            string format = "xml";
            //必填,不需要修改

            //返回格式
            string v = "2.0";
            //必填,不需要修改

            //请求号
            string req_id = DateTime.Now.ToString("yyyyMMddHHmmss");
            //必填,须保证每次请求都是唯一

            //req_data详细信息

            //服务器异步通知页面路径
            string notify_url = "http://localhost:3056/alipay/success02";
            //需http://格式的完整路径,不允许加?id=123这类自定义参数

            //页面跳转同步通知页面路径
            string call_back_url = "http://localhost:3056/alipay/success01";
            //需http://格式的完整路径,不允许加?id=123这类自定义参数

            //操作中断返回地址
            string merchant_url = "http://localhost:3056/WS_WAP_PAYWAP-CSHARP-UTF-8/xxxxx.aspx";
            //用户付款中途退出返回商户的地址。需http://格式的完整路径,不允许加?id=123这类自定义参数

            //商户订单号
            string out_trade_no = rechargeInfo.flowid;
            //Request.Form["flowid"];//"testID00008";//   WIDout_trade_no.Text.Trim();
            //商户网站订单系统中唯一订单号,必填

            //订单名称
            string subject = rechargeInfo.desc;
            //Request.Form["desc"]; //"testItem0000008";// //WIDsubject.Text.Trim();
            //必填

            //付款金额
            string total_fee = rechargeInfo.fee.ToString();
            //Request.Form["fee"]; //"0.01";//WIDtotal_fee.Text.Trim();
            //必填

            //请求业务参数详细
            string req_dataToken = "<direct_trade_create_req><notify_url>" + notify_url + "</notify_url><call_back_url>" + call_back_url + "</call_back_url><seller_account_name>" + Config.Seller_email + "</seller_account_name><out_trade_no>" + out_trade_no + "</out_trade_no><subject>" + subject + "</subject><total_fee>" + total_fee + "</total_fee><merchant_url>" + merchant_url + "</merchant_url></direct_trade_create_req>";
            //必填

            //把请求参数打包成数组
            Dictionary<string, string> sParaTempToken = new Dictionary<string, string>();
            sParaTempToken.Add("partner", Config.Partner);
            sParaTempToken.Add("_input_charset", Config.Input_charset.ToLower());
            sParaTempToken.Add("sec_id", Config.Sign_type.ToUpper());
            sParaTempToken.Add("service", "alipay.wap.trade.create.direct");
            sParaTempToken.Add("format", format);
            sParaTempToken.Add("v", v);
            sParaTempToken.Add("req_id", req_id);
            sParaTempToken.Add("req_data", req_dataToken);

            //建立请求
            string sHtmlTextToken = Submit.BuildRequest(GATEWAY_NEW, sParaTempToken);
            //URLDECODE返回的信息
            Encoding code = Encoding.GetEncoding(Config.Input_charset);
            sHtmlTextToken = HttpUtility.UrlDecode(sHtmlTextToken, code);

            //解析远程模拟提交后返回的信息
            Dictionary<string, string> dicHtmlTextToken = Submit.ParseResponse(sHtmlTextToken);

            //获取token
            string request_token = dicHtmlTextToken["request_token"];

            ////////////////////////////////////////////根据授权码token调用交易接口alipay.wap.auth.authAndExecute////////////////////////////////////////////


            //业务详细
            string req_data = "<auth_and_execute_req><request_token>" + request_token + "</request_token></auth_and_execute_req>";
            //必填

            //把请求参数打包成数组
            Dictionary<string, string> sParaTemp = new Dictionary<string, string>();
            sParaTemp.Add("partner", Config.Partner);
            sParaTemp.Add("_input_charset", Config.Input_charset.ToLower());
            sParaTemp.Add("sec_id", Config.Sign_type.ToUpper());
            sParaTemp.Add("service", "alipay.wap.auth.authAndExecute");
            sParaTemp.Add("format", format);
            sParaTemp.Add("v", v);
            sParaTemp.Add("req_data", req_data);

            //建立请求
            string sHtmlText = Submit.BuildRequest(GATEWAY_NEW, sParaTemp, "get", "确认");
            //写html
            //Response.Write(sHtmlText);
            return sHtmlText;
            

           
        }