Esempio n. 1
0
    /// <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) ? "" : "&currentPage=" + 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;
    }
Esempio n. 2
0
    /// <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) ? "" : "&currentPage=" + 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);
    }