public void WriteReturnKQDetail(ReturnKQDetailInfo returnKQ) { System.Collections.Generic.List <System.Data.Common.DbParameter> list = new System.Collections.Generic.List <System.Data.Common.DbParameter>(); list.Add(base.Database.MakeInParam("strMerchantAcctID", returnKQ.MerchantAcctID)); list.Add(base.Database.MakeInParam("strVersion", returnKQ.Version)); list.Add(base.Database.MakeInParam("dwLanguage", returnKQ.Language)); list.Add(base.Database.MakeInParam("dwSignType", returnKQ.SignType)); list.Add(base.Database.MakeInParam("strPayType", returnKQ.PayType)); list.Add(base.Database.MakeInParam("strBankID", returnKQ.BankID)); list.Add(base.Database.MakeInParam("strOrderID", returnKQ.OrderID)); list.Add(base.Database.MakeInParam("dtOrderTime", returnKQ.OrderTime)); list.Add(base.Database.MakeInParam("fOrderAmount", returnKQ.OrderAmount)); list.Add(base.Database.MakeInParam("strDealID", returnKQ.DealID)); list.Add(base.Database.MakeInParam("strBankDealID", returnKQ.BankDealID)); list.Add(base.Database.MakeInParam("dtDealTime", returnKQ.DealTime)); list.Add(base.Database.MakeInParam("fPayAmount", returnKQ.PayAmount)); list.Add(base.Database.MakeInParam("fFee", returnKQ.Fee)); list.Add(base.Database.MakeInParam("strPayResult", returnKQ.PayResult)); list.Add(base.Database.MakeInParam("strErrCode", returnKQ.ErrCode)); list.Add(base.Database.MakeInParam("strSignMsg", returnKQ.SignMsg)); list.Add(base.Database.MakeInParam("strExt1", returnKQ.Ext1)); list.Add(base.Database.MakeInParam("strExt2", returnKQ.Ext2)); list.Add(base.Database.MakeInParam("CardNumber", returnKQ.CardNumber)); list.Add(base.Database.MakeInParam("CardPwd", returnKQ.CardPwd)); list.Add(base.Database.MakeInParam("BossType", returnKQ.BossType)); list.Add(base.Database.MakeInParam("ReceiveBossType", returnKQ.ReceiveBossType)); list.Add(base.Database.MakeInParam("ReceiverAcctId", returnKQ.ReceiverAcctId)); base.Database.RunProc("NET_PW_AddReturnKQInfo", list); }
/// <summary> /// 写快钱返回记录 /// </summary> /// <param name="returnKQ"></param> public void WriteReturnKQDetail(ReturnKQDetailInfo returnKQ) { var parms = new List <DbParameter>(); parms.Add(Database.MakeInParam("strMerchantAcctID", returnKQ.MerchantAcctID)); parms.Add(Database.MakeInParam("strVersion", returnKQ.Version)); parms.Add(Database.MakeInParam("dwLanguage", returnKQ.Language)); parms.Add(Database.MakeInParam("dwSignType", returnKQ.SignType)); parms.Add(Database.MakeInParam("strPayType", returnKQ.PayType)); parms.Add(Database.MakeInParam("strBankID", returnKQ.BankID)); parms.Add(Database.MakeInParam("strOrderID", returnKQ.OrderID)); parms.Add(Database.MakeInParam("dtOrderTime", returnKQ.OrderTime)); parms.Add(Database.MakeInParam("fOrderAmount", returnKQ.OrderAmount)); parms.Add(Database.MakeInParam("strDealID", returnKQ.DealID)); parms.Add(Database.MakeInParam("strBankDealID", returnKQ.BankDealID)); parms.Add(Database.MakeInParam("dtDealTime", returnKQ.DealTime)); parms.Add(Database.MakeInParam("fPayAmount", returnKQ.PayAmount)); parms.Add(Database.MakeInParam("fFee", returnKQ.Fee)); parms.Add(Database.MakeInParam("strPayResult", returnKQ.PayResult)); parms.Add(Database.MakeInParam("strErrCode", returnKQ.ErrCode)); parms.Add(Database.MakeInParam("strSignMsg", returnKQ.SignMsg)); parms.Add(Database.MakeInParam("strExt1", returnKQ.Ext1)); parms.Add(Database.MakeInParam("strExt2", returnKQ.Ext2)); parms.Add(Database.MakeInParam("CardNumber", returnKQ.CardNumber)); parms.Add(Database.MakeInParam("CardPwd", returnKQ.CardPwd)); parms.Add(Database.MakeInParam("BossType", returnKQ.BossType)); parms.Add(Database.MakeInParam("ReceiveBossType", returnKQ.ReceiveBossType)); parms.Add(Database.MakeInParam("ReceiverAcctId", returnKQ.ReceiverAcctId)); Database.RunProc("NET_PW_AddReturnKQInfo", parms); }
/// <summary> /// 获取快钱返回记录实体 /// </summary> /// <param name="detailID"></param> /// <returns></returns> public ReturnKQDetailInfo GetKQDetailInfo(int detailID) { string sqlQuery = string.Format("(NOLOCK) WHERE DetailID= {0}", detailID); ReturnKQDetailInfo detailInfo = aideKQDetailProvider.GetObject <ReturnKQDetailInfo>(sqlQuery); return(detailInfo); }
/// <summary> /// 写快钱返回记录 /// </summary> /// <param name="returnKQ"></param> public void WriteReturnKQDetail(ReturnKQDetailInfo returnKQ) { var parms = new List <DbParameter>(); parms.Add(Database.MakeInParam("strMerchantAcctID", returnKQ.MerchantAcctID)); parms.Add(Database.MakeInParam("strVersion", returnKQ.Version)); parms.Add(Database.MakeInParam("dwLanguage", returnKQ.Language)); parms.Add(Database.MakeInParam("dwSignType", returnKQ.SignType)); parms.Add(Database.MakeInParam("strPayType", returnKQ.PayType)); parms.Add(Database.MakeInParam("strBankID", returnKQ.BankID)); parms.Add(Database.MakeInParam("strOrderID", returnKQ.OrderID)); parms.Add(Database.MakeInParam("dtOrderTime", returnKQ.OrderTime)); parms.Add(Database.MakeInParam("dcOrderAmount", returnKQ.OrderAmount)); parms.Add(Database.MakeInParam("strDealID", returnKQ.DealID)); parms.Add(Database.MakeInParam("strBankDealID", returnKQ.BankDealID)); parms.Add(Database.MakeInParam("dtDealTime", returnKQ.DealTime)); parms.Add(Database.MakeInParam("dcPayAmount", returnKQ.PayAmount)); parms.Add(Database.MakeInParam("dcFee", returnKQ.Fee)); parms.Add(Database.MakeInParam("strPayResult", returnKQ.PayResult)); parms.Add(Database.MakeInParam("strErrCode", returnKQ.ErrCode)); parms.Add(Database.MakeInParam("strSignMsg", returnKQ.SignMsg)); parms.Add(Database.MakeInParam("strExt1", returnKQ.Ext1)); parms.Add(Database.MakeInParam("strExt2", returnKQ.Ext2)); Database.RunProc("WEB_WriteReturnKQDetail", parms); }
private void KQDetailDataBind() { if (id <= 0) { return; } //获取站点信息 ReturnKQDetailInfo kQDetailInfo = FacadeManage.aideTreasureFacade.GetKQDetailInfo(id); if (kQDetailInfo == null) { ShowError("信息不存在"); return; } CtrlHelper.SetText(litOrderID, "<a class='l' href='javascript:void(0)' onclick=\"javascript:openWindowOwn('OnLineOrderInfo.aspx?OrderID=" + kQDetailInfo.OrderID + "','online_" + kQDetailInfo.OrderID + "',600,465)\">" + kQDetailInfo.OrderID + "</a>"); CtrlHelper.SetText(litOrderTime, kQDetailInfo.OrderTime.ToString("yyyy-MM-dd HH:ss:mm")); CtrlHelper.SetText(litOrderAmount, kQDetailInfo.OrderAmount.ToString("N")); CtrlHelper.SetText(litPayAmount, kQDetailInfo.PayAmount.ToString("N")); CtrlHelper.SetText(litFee, kQDetailInfo.Fee.ToString("f3")); CtrlHelper.SetText(litRevenue, (kQDetailInfo.PayAmount - kQDetailInfo.Fee).ToString("f3")); if (kQDetailInfo.PayResult == "10") { CtrlHelper.SetText(litPayResult, "<span class='lan'>成功</span>"); } else { CtrlHelper.SetText(litPayResult, "<span class='hong'>失败</span>"); } CtrlHelper.SetText(litDealID, kQDetailInfo.DealID); CtrlHelper.SetText(litDealTime, kQDetailInfo.DealTime.ToString("yyyy-MM-dd HH:mm:ss")); CtrlHelper.SetText(litBankDealID, kQDetailInfo.BankDealID); CtrlHelper.SetText(litPayType, billPayType.GetBillPayType(kQDetailInfo.PayType.Trim())); CtrlHelper.SetText(litBankID, billBanks.GetBillBanksByCode(kQDetailInfo.BankID.Trim())); CtrlHelper.SetText(litErrCode, kQDetailInfo.ErrCode); CtrlHelper.SetText(litVersion, kQDetailInfo.Version); CtrlHelper.SetText(litLanguage, "中文"); CtrlHelper.SetText(litExt1, kQDetailInfo.Ext1 + " " + IPQuery.GetAddressWithIP(kQDetailInfo.Ext1)); CtrlHelper.SetText(litExt2, kQDetailInfo.Ext2); CtrlHelper.SetText(litSignType, "与提交订单时的签名类型保持一致"); CtrlHelper.SetText(litSignMsg, kQDetailInfo.SignMsg); }
/// <summary> /// 写快钱返回记录 /// </summary> /// <param name="returnKQ"></param> public void WriteReturnKQDetail(ReturnKQDetailInfo returnKQ) { treasureData.WriteReturnKQDetail(returnKQ); }
protected void Page_Load(object sender, EventArgs e) { //初始化结果及地址 ReturnKQDetailInfo result = new ReturnKQDetailInfo(); string showUrl = "http://" + HttpContext.Current.Request.Url.Authority + "/Pay/PayShow.aspx"; //获取网关账户号 string merchantAcctId = Request["merchantAcctId"].ToString().Trim(); result.MerchantAcctID = merchantAcctId; //设置网关密钥 ///区分大小写 string bossType1 = Request["bossType"].ToString().Trim();//根据获取的支付卡类型判断加载相应的密钥 string key = bossType1 == "0" ? ApplicationSettings.Get("keyValueYD") : bossType1 == "1" ? ApplicationSettings.Get("keyValueLT") : ApplicationSettings.Get("keyValueDX"); //获取网关版本.固定值 ///本代码版本号固定为v2.0 string version = Request["version"].ToString().Trim(); result.Version = version.Trim(); //获取语言种类.固定选择值。 ///只能选择1、2 ///1代表中文;2代表英文 string language = Request["language"].ToString().Trim(); result.Language = Convert.ToInt32(language.Trim()); //获取支付方式 ///可选择00、41、42、52 ///00 代表快钱默认支付方式,目前为神州行卡密支付和快钱账户支付;41 代表快钱账户支付;42 代表神州行卡密支付和快钱账户支付;52 代表神州行卡密支付 string payType = Request["payType"].ToString().Trim(); result.PayType = payType.Trim(); //神州行卡序号 ///如果通过神州行卡直接支付时返回 string cardNumber = Request["cardNumber"].ToString().Trim(); result.CardNumber = cardNumber; //获取神州行卡密码 ///如果通过神州行卡直接支付时返回 string cardPwd = Request["cardPwd"].ToString().Trim(); result.CardPwd = cardPwd; //获取商户订单号 string orderId = Request["orderId"].ToString().Trim(); result.OrderID = orderId.Trim(); //获取原始订单金额 ///订单提交到快钱时的金额,单位为分。 ///比方2 ,代表0.02元 string orderAmount = Request["orderAmount"].ToString().Trim(); result.OrderAmount = Convert.ToDecimal(orderAmount.Trim()) / 100; //获取快钱交易号 ///获取该交易在快钱的交易号 string dealId = Request["dealId"].ToString().Trim(); result.DealID = dealId.Trim(); //获取商户提交订单时的时间 ///14位数字。年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位] ///如:20080101010101 string orderTime = Request["orderTime"].ToString().Trim(); //获取扩展字段1 ///与商户提交订单时的扩展字段1保持一致 string ext1 = Request["ext1"].ToString().Trim(); result.Ext1 = ext1.Trim(); //获取扩展字段2 ///与商户提交订单时的扩展字段2保持一致 string ext2 = Request["ext2"].ToString().Trim(); result.Ext2 = ext2.Trim(); //获取实际支付金额 ///单位为分 ///比方 2 ,代表0.02元 string payAmount = Request["payAmount"].ToString().Trim(); result.PayAmount = Convert.ToDecimal(payAmount.Trim()) / 100; //获取快钱处理时间 string billOrderTime = Request["billOrderTime"].ToString().Trim(); //获取处理结果 ///10代表支付成功; 11代表支付失败 string payResult = Request["payResult"].ToString().Trim(); result.PayResult = payResult.Trim(); //获取签名类型 ///1代表MD5签名 ///当前版本固定为1 string signType = Request["signType"].ToString().Trim(); result.SignType = Convert.ToInt32(signType.Trim()); //充值卡类型 ////与提交订单时的充值卡类型保持一致 string bossType = Request["bossType"].ToString().Trim(); result.BossType = bossType; //支付卡类型 ////固定选择值:0、1、3、4、9,用户实际支付的卡类型 ////0 代表神州行充值卡 ////1 代表联通充值卡 ////3 代表电信充值卡 ////4 代表骏网一卡通 ////9 代表已开通任一卡类型 ////比喻商户提交bossType类型为9,用户实际支付卡类型为0,则receiveBossType返回为0 string receiveBossType = Request["receiveBossType"].ToString().Trim(); result.ReceiveBossType = receiveBossType; //实际收款账号 ////用户实际支付的卡类型对应收款帐号必须对应receiveBossType卡类型收款帐号 ////比如提交的merchantAcctId=1000300079902,bossType=9,是全部支付方式都有,但实际支付时选择的是联通充值卡支付 ////那返回的receiveBossType=1,返回的bossType,返回的merchantAcctId=1000300079902,返回的receiverAcctId=1000300079909 string receiverAcctId = Request["receiverAcctId"].ToString().Trim(); result.ReceiverAcctId = receiverAcctId; //获取加密签名串 string signMsg = Request["signMsg"].ToString().Trim(); result.SignMsg = signMsg.Trim(); //生成加密串。必须保持如下顺序。 string merchantSignMsgVal = ""; merchantSignMsgVal = AppendParam(merchantSignMsgVal, "merchantAcctId", merchantAcctId); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "version", version); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "language", language); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payType", payType); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "cardNumber", cardNumber); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "cardPwd", cardPwd); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderId", orderId); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderAmount", orderAmount); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "dealId", dealId); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderTime", orderTime); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "ext1", ext1); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "ext2", ext2); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payAmount", payAmount); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "billOrderTime", billOrderTime); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payResult", payResult); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "signType", signType); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "bossType", bossType); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "receiveBossType", receiveBossType); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "receiverAcctId", receiverAcctId); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "key", key); string merchantSignMsg = FormsAuthentication.HashPasswordForStoringInConfigFile(merchantSignMsgVal, "MD5").ToUpper(); //订单提交时间 orderTime = orderTime.Substring(0, 4) + "-" + orderTime.Substring(4, 2) + "-" + orderTime.Substring(6, 2) + " " + orderTime.Substring(8, 2) + ":" + orderTime.Substring(10, 2) + ":" + orderTime.Substring(12, 2); result.OrderTime = Convert.ToDateTime(orderTime); //快钱交易时间 billOrderTime = billOrderTime.Substring(0, 4) + "-" + billOrderTime.Substring(4, 2) + "-" + billOrderTime.Substring(6, 2) + " " + billOrderTime.Substring(8, 2) + ":" + billOrderTime.Substring(10, 2) + ":" + billOrderTime.Substring(12, 2); result.DealTime = Convert.ToDateTime(billOrderTime); //快钱支付结果入库 treasureFacade.WriteReturnKQDetail(result); //商家进行数据处理,并跳转回商家显示支付结果的页面 ///首先进行签名字符串验证 if (signMsg.ToUpper() == merchantSignMsg.ToUpper()) { switch (payResult) { case "10": /* * // 商户网站逻辑处理,比方更新订单支付状态为成功 * // 特别注意:只有signMsg.ToUpper() == merchantSignMsg.ToUpper(),且payResult=10,才表示支付成功! */ //报告给快钱处理结果,并提供将要重定向的地址。 rtnOk = 1; ShareDetialInfo detailInfo = new ShareDetialInfo(); detailInfo.OrderID = result.OrderID; detailInfo.IPAddress = Utility.UserIP; detailInfo.PayAmount = result.PayAmount; //写充值记录 try { Message msg = treasureFacade.FilliedOnline(detailInfo, 0); if (msg.Success) { rtnUrl = showUrl + "?msg=1"; //在线充值成功 } else { rtnUrl = showUrl + "?msg=2"; //在线充值成功,数据正在更新中 } } catch { rtnUrl = showUrl + "?msg=2"; //在线充值成功,数据正在更新中 } break; default: rtnOk = 1; rtnUrl = showUrl + "?msg=3"; //在线充值失败! break; } } else { rtnOk = 1; rtnUrl = showUrl + "?msg=3"; } }
protected void Page_Load(object sender, EventArgs e) { //初始化结果及地址 ReturnKQDetailInfo result = new ReturnKQDetailInfo( ); //获取充值卡网关账户号 String merchantAcctId = Request["merchantAcctId"].ToString( ).Trim( ); result.MerchantAcctID = merchantAcctId; //设置充值卡网关密钥 //区分大小写 String key = ApplicationSettings.Get("keyValueGame"); //获取处理结果 ///支付结果0为成功,3为失败 string payResult = Request["payResult"].ToString( ).Trim( ); result.PayResult = payResult; //获取快钱交易号 快钱多卡种订单号 ///获取该交易的交易号 String dealId = Request["dealId"].ToString( ).Trim( ); result.DealID = dealId; //获取商户订单号商户请求支付提交的订单号 String orderId = Request["orderId"].ToString( ).Trim( ); result.OrderID = orderId; //获取实际支付金额 ///单位为分 ///比方 2 ,代表0.02元 String payAmount = Request["payAmount"].ToString( ).Trim( ); result.PayAmount = Convert.ToDecimal(payAmount.Trim( )); //获取请求时充值卡卡号 String cardNumber = Request["cardNumber"].ToString( ).Trim( ); result.CardNumber = cardNumber.Trim( ); //获取商户扩展字段1 String ext1 = Request["ext1"].ToString( ).Trim( ); result.Ext1 = ext1.Trim( ); //获取商户扩展字段2 String ext2 = Request["ext2"].ToString( ).Trim( ); if (!string.IsNullOrEmpty(ext2)) { result.Ext2 = ext2.Trim( ).Split('/')[0]; //订单金额 result.OrderAmount = Convert.ToDecimal(ext2.Trim( ).Split('/')[1]); } else { result.Ext2 = ""; } //获取错误信息返回 String errInfo = Request["errInfo"].ToString( ).Trim( ); result.ErrCode = errInfo; //获取加密签名串 String signMsg = Request["signMsg"].ToString( ).Trim( ); result.SignMsg = signMsg; //生成加密串。必须保持如下顺序。 String merchantSignMsgVal = ""; merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payResult", payResult.ToString( )); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "dealId", dealId); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "merchantAcctId", merchantAcctId); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderId", orderId); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payAmount", payAmount); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "cardNumber", cardNumber); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "ext1", HttpUtility.UrlEncode(ext1, Encoding.GetEncoding("gb2312")).Trim( )); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "ext2", HttpUtility.UrlEncode(ext2, Encoding.GetEncoding("gb2312")).Trim( )); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "key", key); String merchantSignMsg = TextEncrypt.EncryptPassword(merchantSignMsgVal).ToUpper( ); //订单提交时间 result.OrderTime = DateTime.Now; //快钱交易时间 result.DealTime = DateTime.Now; //快钱支付结果入库 treasureFacade.WriteReturnKQDetail(result); //支付金额小于订单金额不做任何处理 //if( result.PayAmount != result.OrderAmount ) //{ // Response.Write( "OK" ); // Response.End( ); //} //商家进行数据处理,并跳转会商家显示支付结果的页面 ///首先进行签名字符串验证 if (signMsg.ToUpper( ) == merchantSignMsg.ToUpper( )) { switch (payResult) { case "0": /* * // 商户网站逻辑处理,比方更新订单支付状态为成功 * // 特别注意:只有signMsg.ToUpper() == merchantSignMsg.ToUpper(),且payResult=10,才表示支付成功! */ //报告给快钱处理结果,并提供将要重定向的地址。 ShareDetialInfo detailInfo = new ShareDetialInfo( ); detailInfo.OrderID = result.OrderID; detailInfo.PayAmount = result.PayAmount; detailInfo.IPAddress = Utility.UserIP; //写充值记录 Message msg = treasureFacade.FilliedOnline(detailInfo, 0); Response.Write("OK"); break; default: Response.Write("OK"); break; } } else { Response.Write("OK"); } }
protected void Page_Load(object sender, EventArgs e) { #region 获取快钱支付结果,并且保存在数据库中-->跳转 //初始化结果及地址 ReturnKQDetailInfo result = new ReturnKQDetailInfo(); string showUrl = "http://" + HttpContext.Current.Request.Url.Authority + "/Pay/PayShow.aspx"; //人民币网关账户号 String merchantAcctId = Request["merchantAcctId"]; if (String.IsNullOrEmpty(merchantAcctId)) { merchantAcctId = ApplicationSettings.Get("merchantIdRMB"); } result.MerchantAcctID = merchantAcctId.Trim(); //人民币网关密钥--区分大小写 String key = ApplicationSettings.Get("keyValueRMB"); //网关版本.固定值 ///快钱会根据版本号来调用对应的接口处理程序。 ///本代码版本号固定为v2.0 String version = Request["version"]; if (String.IsNullOrEmpty(version)) { version = "v2.0"; } result.Version = version.Trim(); //语言种类.固定选择值。 ///只能选择1、2、3 ///1代表中文;2代表英文 ///默认值为1 String language = Request["language"]; if (String.IsNullOrEmpty(language)) { language = "1"; } result.Language = Convert.ToInt32(language.Trim()); //签名类型.固定值--1代表MD5签名 ///当前版本固定为1 String signType = Request["signType"]; if (String.IsNullOrEmpty(signType)) { signType = "1"; } result.SignType = Convert.ToInt32(signType.Trim()); //支付方式--值为:10、11、12、13、14 //00:组合支付(网关支付页面显示快钱支持的各种支付方式,推荐使用)10:银行卡支付(网关支付页面只显示银行卡支付).11:电话银行支付(网关支付页面只显示电话支付).12:快钱账户支付(网关支付页面只显示快钱账户支付).13:线下支付(网关支付页面只显示线下支付方式).14:B2B支付(网关支付页面只显示B2B支付,但需要向快钱申请开通才能使用) String payType = Request["payType"]; if (String.IsNullOrEmpty(payType)) { payType = "00"; } result.PayType = payType.Trim(); //银行代码-参见银行代码列表 String bankId = Request["bankId"]; if (String.IsNullOrEmpty(bankId)) { bankId = ""; } result.BankID = bankId.Trim(); //商户订单号 String orderId = Request["orderId"]; //String orderId = "KQ20120321094644143608554"; if (String.IsNullOrEmpty(orderId)) { orderId = ""; } result.OrderID = orderId.Trim(); //订单提交时间 ///商户提交订单时的时间.14位数字。年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位] ///如:20080101010101 String orderTime = Request["orderTime"]; if (String.IsNullOrEmpty(orderTime)) { orderTime = "19000101010101"; } //原始订单金额-单位为分。 String orderAmount = Request["orderAmount"]; if (String.IsNullOrEmpty(orderAmount)) { orderAmount = "0"; } result.OrderAmount = Convert.ToDecimal(orderAmount.Trim()) / 100; //快钱交易号 String dealId = Request["dealId"]; if (String.IsNullOrEmpty(dealId)) { dealId = ""; } result.DealID = dealId.Trim(); //银行交易号--如未通过银行支付,则为空 String bankDealId = Request["bankDealId"]; if (String.IsNullOrEmpty(bankDealId)) { bankDealId = ""; } result.BankDealID = bankDealId.Trim(); //快钱交易时间-14位数字。年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位] ///如;20080101010101 String dealTime = Request["dealTime"]; if (String.IsNullOrEmpty(dealTime)) { dealTime = "19000101010101"; } //实际支付金额-单位为分 String payAmount = Request["payAmount"]; //String payAmount = "3000"; if (String.IsNullOrEmpty(payAmount)) { payAmount = "0"; } result.PayAmount = Convert.ToDecimal(payAmount.Trim()) / 100; //交易手续费-单位为分 String fee = Request["fee"]; //String fee = "30"; if (String.IsNullOrEmpty(fee)) { fee = "0"; } result.Fee = Convert.ToDecimal(fee.Trim()) / 100; //扩展字段1 --损耗比例 String ext1 = Request["ext1"]; //String ext1 = "10"; if (String.IsNullOrEmpty(ext1)) { ext1 = "0"; } result.Ext1 = ext1.Trim(); //扩展字段2 String ext2 = Request["ext2"]; //String ext2 = "1000"; if (String.IsNullOrEmpty(ext2)) { ext2 = ""; } result.Ext2 = ext2.Trim(); //处理结果 10:成功; 11:失败 String payResult = Request["payResult"]; //payResult = "10"; if (String.IsNullOrEmpty(payResult)) { payResult = "11"; } result.PayResult = payResult.Trim(); //错误代码 String errCode = Request["errCode"]; if (String.IsNullOrEmpty(errCode)) { errCode = ""; } result.ErrCode = errCode.Trim(); //加密签名 String signMsg = Request["signMsg"]; if (String.IsNullOrEmpty(signMsg)) { signMsg = ""; } result.SignMsg = signMsg.Trim(); //生成加密串 String merchantSignMsgVal = ""; merchantSignMsgVal = AppendParam(merchantSignMsgVal, "merchantAcctId", merchantAcctId); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "version", version); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "language", language); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "signType", signType); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payType", payType); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "bankId", bankId); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderId", orderId); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderTime", orderTime); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderAmount", orderAmount); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "dealId", dealId); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "bankDealId", bankDealId); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "dealTime", dealTime); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payAmount", payAmount); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "fee", fee); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "ext1", ext1); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "ext2", ext2); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payResult", payResult); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "errCode", errCode); merchantSignMsgVal = AppendParam(merchantSignMsgVal, "key", key); String merchantSignMsg = FormsAuthentication.HashPasswordForStoringInConfigFile(merchantSignMsgVal, "MD5"); //订单提交时间 orderTime = orderTime.Substring(0, 4) + "-" + orderTime.Substring(4, 2) + "-" + orderTime.Substring(6, 2) + " " + orderTime.Substring(8, 2) + ":" + orderTime.Substring(10, 2) + ":" + orderTime.Substring(12, 2); result.OrderTime = Convert.ToDateTime(orderTime); //快钱交易时间 dealTime = dealTime.Substring(0, 4) + "-" + dealTime.Substring(4, 2) + "-" + dealTime.Substring(6, 2) + " " + dealTime.Substring(8, 2) + ":" + dealTime.Substring(10, 2) + ":" + dealTime.Substring(12, 2); result.DealTime = Convert.ToDateTime(dealTime); //快钱支付结果入库 treasureFacade.WriteReturnKQDetail(result); ///签名验证 if (signMsg.ToUpper() == merchantSignMsg.ToUpper()) { switch (payResult) { case "10": /* 商户网站逻辑处理,比方更新订单支付状态为成功 * 特别注意:只有signMsg.ToUpper() == merchantSignMsg.ToUpper(),且payResult=10,才表示支付成功!同时将订单金额与提交订单前的订单金额进行对比校验。*/ //报告给快钱处理结果,并提供将要重定向的地址。 rtnOk = 1; ShareDetialInfo detailInfo = new ShareDetialInfo(); detailInfo.OrderID = result.OrderID; detailInfo.IPAddress = Utility.UserIP; detailInfo.PayAmount = result.PayAmount; //写充值记录 try { Message umsg = treasureFacade.FilliedOnline(detailInfo, 0); if (umsg.Success) { rtnUrl = showUrl + "?msg=1"; //在线充值成功 } else { rtnUrl = showUrl + "?msg=2"; //在线充值成功,数据正在更新中 } } catch { rtnUrl = showUrl + "?msg=2"; //在线充值成功,数据正在更新中 } break; default: rtnOk = 1; rtnUrl = showUrl + "?msg=3"; //在线充值失败! break; } } else { rtnOk = 1; rtnUrl = showUrl + "?msg=3"; } #endregion }