/// <summary> /// 查询快钱冲记录是否冲值成功 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected bool Check99BillPay(long payNumber,ref string DealID, ref string ErrorMessage) { SystemOptions so = new SystemOptions(); string key = so["OnlinePay_99Bill_QueryMD5Key"].Value.ToString(); string myMerchantAcctId = so["OnlinePay_99Bill_UserNumber"].Value.ToString(); #region 构造请求付款数组 //生成请求对象 //GatewayOrderQueryRequest orderQueryRequest = new GatewayOrderQueryRequest(); Interface99Bill.GatewayOrderQueryRequest orderQueryRequest = new Interface99Bill.GatewayOrderQueryRequest(); //orderQueryRequest. //字符集 //固定值:1 //1代表UTF-8 orderQueryRequest.inputCharset = "1"; //查询接口版本 //固定值:v2.0 //注意为小写字母 orderQueryRequest.version = "v2.0"; //签名类型 //固定值:1 //1代表MD5加密签名方式 orderQueryRequest.signType = 1; //人民币账号 //数字串 //本参数用来指定接收款项的快钱用户的人民币账号 orderQueryRequest.merchantAcctId = myMerchantAcctId; //查询方式 //固定选择值:0、1 //0按商户订单号单笔查询(返回该订单信息) //1按交易结束时间批量查询(只返回成功订单) orderQueryRequest.queryType = 0; //查询模式 //固定值:1 //1代表简单查询(返回基本订单信息) orderQueryRequest.queryMode = 1; //交易开始时间 //数字串,一共14位 //格式为:年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位],例如:20071117020101 //orderQueryRequest.startTime ="";// PayDateTime.ToString("yyyyMMddHHmmss");// "20080303000000"; //交易结束时间 //数字串,一共14位 //格式为:年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位],例如:20071117020101 //orderQueryRequest.endTime = "";// PayDateTime.AddDays(1).ToString("yyyyMMddHHmmss");// 查询从冲时间起一天内的 //请求记录集页码 //数字串 //在查询结果数据总量很大时,快钱会将支付结果分多次返回。本参数表示商户需要得到的记录集页码。 //默认为1,表示第1页。 orderQueryRequest.requestPage = "1"; //商户订单号 //字符串 //只允许使用字母、数字、- 、_,并以字母或数字开头 orderQueryRequest.orderId = payNumber.ToString(); //构造签名字符串 string tempMac = "inputCharset=" + orderQueryRequest.inputCharset + "&version=" + orderQueryRequest.version + "&signType=" + orderQueryRequest.signType + "&merchantAcctId=" + orderQueryRequest.merchantAcctId + "&queryType=" + orderQueryRequest.queryType + "&queryMode=" + orderQueryRequest.queryMode + //"&startTime=" + orderQueryRequest.startTime + //"&endTime=" + orderQueryRequest.endTime + "&requestPage=" + orderQueryRequest.requestPage + "&orderId=" + orderQueryRequest.orderId + "&key=" + key; orderQueryRequest.signMsg = GetMD5(tempMac, "utf-8").ToUpper(); #endregion 构造请求付款数组 //GatewayOrderQueryService orderQueryService = new GatewayOrderQueryService(); Interface99Bill.GatewayOrderQueryService orderQueryService = new Interface99Bill.GatewayOrderQueryService(); //调用gatewayOrderQuery()方法 Interface99Bill.GatewayOrderQueryResponse orderQueryResponse = orderQueryService.gatewayOrderQuery(orderQueryRequest); if (orderQueryResponse.errCode != "")//返回接口的错误码 { //return false; } //打印支付结果数据 if (orderQueryResponse != null) { string msgSginSource = ""; //网关版本 //固定值:v2.0 //与提交时的查询版本号保持一致 msgSginSource += "version=" + orderQueryResponse.version; //签名类型 //固定值:1 //与提交时的签名类型保持一致 msgSginSource += "&signType=" + orderQueryResponse.signType; //人民币账号 msgSginSource += "&merchantAcctId=" + orderQueryResponse.merchantAcctId; //错误代码 msgSginSource +=string.IsNullOrEmpty(orderQueryResponse.errCode)? "": "&errCode=" + orderQueryResponse.errCode; //记录集当前页码 msgSginSource += string.IsNullOrEmpty(orderQueryResponse.currentPage) ? "" : "¤tPage=" + orderQueryResponse.currentPage; //记录集总页码 msgSginSource += string.IsNullOrEmpty(orderQueryResponse.pageCount) ? "" : "&pageCount=" + orderQueryResponse.pageCount; //记录集当页条数 msgSginSource += string.IsNullOrEmpty(orderQueryResponse.pageSize) ? "" : "&pageSize=" + orderQueryResponse.pageSize; //记录集总条数 msgSginSource += string.IsNullOrEmpty(orderQueryResponse.recordCount) ? "" : "&recordCount=" + orderQueryResponse.recordCount; msgSginSource += "&key="+key; string myMsgSign = GetMD5(msgSginSource, "utf-8").ToUpper(); //签名验证 if (myMsgSign != orderQueryResponse.signMsg) { ErrorMessage= "[快钱]查询结果数据签名验证失败."; return false; } if (orderQueryResponse.orders == null || orderQueryResponse.orders.Length == 0) { ErrorMessage = "[快钱]没有此支付成功记录."; return false; } if(orderQueryResponse.orders.Length==1) { //商户订单号 string msgSginSource2=""; msgSginSource2+="orderId="+orderQueryResponse.orders[0].orderId; //商户订单金额,(整型数字)以分为单位 msgSginSource2+="&orderAmount="+orderQueryResponse.orders[0].orderAmount; //商户订单提交时间, 数字串, 与提交订单时的商户订单提交时间保持一致 msgSginSource2+="&orderTime="+orderQueryResponse.orders[0].orderTime; //快钱交易时间//数字串//快钱接收该笔交易并进行处理的最后时间。//格式为:年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位],例如:20071117020101 msgSginSource2+="&dealTime="+orderQueryResponse.orders[0].dealTime; //处理结果//固定选择值:10、11、20//10:支付成功//只返回支付成功的记录 msgSginSource2+="&payResult="+orderQueryResponse.orders[0].payResult; //支付方式//固定选择值:00、10、11、12、13、14//10:银行卡支付//11:电话银行支付//12:快钱人民币账户支付//13:线下支付//14:B2B支付 msgSginSource2+="&payType="+orderQueryResponse.orders[0].payType; //订单实际支付金额 整型数字 返回在使用优惠券等情况后,用户实际支付的金额 以分为单位。比方10元,提交时金额应为1000 msgSginSource2+="&payAmount="+orderQueryResponse.orders[0].payAmount; //费用 数字串 快钱收取商户的手续费,单位为分。 msgSginSource2+="&fee="+orderQueryResponse.orders[0].fee; //快钱交易号 数字串 该交易在快钱系统中对应的交易号d; msgSginSource2 +="&dealId="+orderQueryResponse.orders[0].dealId; msgSginSource2 += "&key="+key; string myMsgInfo = GetMD5(msgSginSource2, "utf-8").ToUpper(); //签名验证 if (myMsgInfo != orderQueryResponse.orders[0].signInfo) { ErrorMessage = "[快钱]查询支付记录的签名验证失败." + msgSginSource2; return false; } if(orderQueryResponse.orders[0].orderId != payNumber.ToString())//比较返回的结果支付号与当前支付号 { ErrorMessage = "[快钱]返回的订单号不一致." + msgSginSource2; return false; } if (orderQueryResponse.orders[0].payResult != "10") { ErrorMessage = "[快钱]此支付记录没有成功."; return false; } else { DealID = orderQueryResponse.orders[0].dealId;//快钱交易号 return true; } } } ErrorMessage = "[快钱]未知原因"; return false; }
/// <summary> /// 查询快钱冲记录是否冲值成功 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected bool Check99BillPay(long payNumber, ref string DealID, ref string ErrorMessage) { SystemOptions so = new SystemOptions(); string key = so["OnlinePay_99Bill_QueryMD5Key"].Value.ToString(); string myMerchantAcctId = so["OnlinePay_99Bill_UserNumber"].Value.ToString(); #region 构造请求付款数组 //生成请求对象 //GatewayOrderQueryRequest orderQueryRequest = new GatewayOrderQueryRequest(); Interface99Bill.GatewayOrderQueryRequest orderQueryRequest = new Interface99Bill.GatewayOrderQueryRequest(); //orderQueryRequest. //字符集 //固定值:1 //1代表UTF-8 orderQueryRequest.inputCharset = "1"; //查询接口版本 //固定值:v2.0 //注意为小写字母 orderQueryRequest.version = "v2.0"; //签名类型 //固定值:1 //1代表MD5加密签名方式 orderQueryRequest.signType = 1; //人民币账号 //数字串 //本参数用来指定接收款项的快钱用户的人民币账号 orderQueryRequest.merchantAcctId = myMerchantAcctId; //查询方式 //固定选择值:0、1 //0按商户订单号单笔查询(返回该订单信息) //1按交易结束时间批量查询(只返回成功订单) orderQueryRequest.queryType = 0; //查询模式 //固定值:1 //1代表简单查询(返回基本订单信息) orderQueryRequest.queryMode = 1; //交易开始时间 //数字串,一共14位 //格式为:年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位],例如:20071117020101 //orderQueryRequest.startTime ="";// PayDateTime.ToString("yyyyMMddHHmmss");// "20080303000000"; //交易结束时间 //数字串,一共14位 //格式为:年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位],例如:20071117020101 //orderQueryRequest.endTime = "";// PayDateTime.AddDays(1).ToString("yyyyMMddHHmmss");// 查询从冲时间起一天内的 //请求记录集页码 //数字串 //在查询结果数据总量很大时,快钱会将支付结果分多次返回。本参数表示商户需要得到的记录集页码。 //默认为1,表示第1页。 orderQueryRequest.requestPage = "1"; //商户订单号 //字符串 //只允许使用字母、数字、- 、_,并以字母或数字开头 orderQueryRequest.orderId = payNumber.ToString(); //构造签名字符串 string tempMac = "inputCharset=" + orderQueryRequest.inputCharset + "&version=" + orderQueryRequest.version + "&signType=" + orderQueryRequest.signType + "&merchantAcctId=" + orderQueryRequest.merchantAcctId + "&queryType=" + orderQueryRequest.queryType + "&queryMode=" + orderQueryRequest.queryMode + //"&startTime=" + orderQueryRequest.startTime + //"&endTime=" + orderQueryRequest.endTime + "&requestPage=" + orderQueryRequest.requestPage + "&orderId=" + orderQueryRequest.orderId + "&key=" + key; orderQueryRequest.signMsg = GetMD5(tempMac, "utf-8").ToUpper(); #endregion 构造请求付款数组 //GatewayOrderQueryService orderQueryService = new GatewayOrderQueryService(); Interface99Bill.GatewayOrderQueryService orderQueryService = new Interface99Bill.GatewayOrderQueryService(); //调用gatewayOrderQuery()方法 Interface99Bill.GatewayOrderQueryResponse orderQueryResponse = orderQueryService.gatewayOrderQuery(orderQueryRequest); if (orderQueryResponse.errCode != "")//返回接口的错误码 { //return false; } //打印支付结果数据 if (orderQueryResponse != null) { string msgSginSource = ""; //网关版本 //固定值:v2.0 //与提交时的查询版本号保持一致 msgSginSource += "version=" + orderQueryResponse.version; //签名类型 //固定值:1 //与提交时的签名类型保持一致 msgSginSource += "&signType=" + orderQueryResponse.signType; //人民币账号 msgSginSource += "&merchantAcctId=" + orderQueryResponse.merchantAcctId; //错误代码 msgSginSource += string.IsNullOrEmpty(orderQueryResponse.errCode)? "": "&errCode=" + orderQueryResponse.errCode; //记录集当前页码 msgSginSource += string.IsNullOrEmpty(orderQueryResponse.currentPage) ? "" : "¤tPage=" + orderQueryResponse.currentPage; //记录集总页码 msgSginSource += string.IsNullOrEmpty(orderQueryResponse.pageCount) ? "" : "&pageCount=" + orderQueryResponse.pageCount; //记录集当页条数 msgSginSource += string.IsNullOrEmpty(orderQueryResponse.pageSize) ? "" : "&pageSize=" + orderQueryResponse.pageSize; //记录集总条数 msgSginSource += string.IsNullOrEmpty(orderQueryResponse.recordCount) ? "" : "&recordCount=" + orderQueryResponse.recordCount; msgSginSource += "&key=" + key; string myMsgSign = GetMD5(msgSginSource, "utf-8").ToUpper(); //签名验证 if (myMsgSign != orderQueryResponse.signMsg) { ErrorMessage = "[快钱]查询结果数据签名验证失败."; return(false); } if (orderQueryResponse.orders == null || orderQueryResponse.orders.Length == 0) { ErrorMessage = "[快钱]没有此支付成功记录."; return(false); } if (orderQueryResponse.orders.Length == 1) { //商户订单号 string msgSginSource2 = ""; msgSginSource2 += "orderId=" + orderQueryResponse.orders[0].orderId; //商户订单金额,(整型数字)以分为单位 msgSginSource2 += "&orderAmount=" + orderQueryResponse.orders[0].orderAmount; //商户订单提交时间, 数字串, 与提交订单时的商户订单提交时间保持一致 msgSginSource2 += "&orderTime=" + orderQueryResponse.orders[0].orderTime; //快钱交易时间//数字串//快钱接收该笔交易并进行处理的最后时间。//格式为:年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位],例如:20071117020101 msgSginSource2 += "&dealTime=" + orderQueryResponse.orders[0].dealTime; //处理结果//固定选择值:10、11、20//10:支付成功//只返回支付成功的记录 msgSginSource2 += "&payResult=" + orderQueryResponse.orders[0].payResult; //支付方式//固定选择值:00、10、11、12、13、14//10:银行卡支付//11:电话银行支付//12:快钱人民币账户支付//13:线下支付//14:B2B支付 msgSginSource2 += "&payType=" + orderQueryResponse.orders[0].payType; //订单实际支付金额 整型数字 返回在使用优惠券等情况后,用户实际支付的金额 以分为单位。比方10元,提交时金额应为1000 msgSginSource2 += "&payAmount=" + orderQueryResponse.orders[0].payAmount; //费用 数字串 快钱收取商户的手续费,单位为分。 msgSginSource2 += "&fee=" + orderQueryResponse.orders[0].fee; //快钱交易号 数字串 该交易在快钱系统中对应的交易号d; msgSginSource2 += "&dealId=" + orderQueryResponse.orders[0].dealId; msgSginSource2 += "&key=" + key; string myMsgInfo = GetMD5(msgSginSource2, "utf-8").ToUpper(); //签名验证 if (myMsgInfo != orderQueryResponse.orders[0].signInfo) { ErrorMessage = "[快钱]查询支付记录的签名验证失败." + msgSginSource2; return(false); } if (orderQueryResponse.orders[0].orderId != payNumber.ToString())//比较返回的结果支付号与当前支付号 { ErrorMessage = "[快钱]返回的订单号不一致." + msgSginSource2; return(false); } if (orderQueryResponse.orders[0].payResult != "10") { ErrorMessage = "[快钱]此支付记录没有成功."; return(false); } else { DealID = orderQueryResponse.orders[0].dealId;//快钱交易号 return(true); } } } ErrorMessage = "[快钱]未知原因"; return(false); }