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; }