⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 md5pay.cs

📁 如果不使用IIS,请先运行 XSP.exe,待提示已侦听 8080端口后
💻 CS
📖 第 1 页 / 共 2 页
字号:
                + "&transaction_id=" + Transaction_id + "&sp_billno=" + sp_billno + "&total_fee="
                + total_fee + "&fee_type=" + fee_type + "&return_url=" + return_url + "&attach=" + Attach;
            if (spbill_create_ip != "")
            {
                sign_text += "&spbill_create_ip=" + spbill_create_ip;
            }
            sign_text += "&key=" + key;

            return GetMD5(sign_text);
        }

        /// <summary>
        /// 获取支付结果签名
        /// </summary>
        /// <returns>根据参数得到签名</returns>
        private string GetPayResultSign()
        {
            string sign_text = "cmdno=" + cmdno + "&pay_result=" + pay_result + "&date=" + date + "&transaction_id=" + transaction_id
                + "&sp_billno=" + sp_billno + "&total_fee=" + total_fee + "&fee_type=" + fee_type + "&attach=" + attach + "&key=" + key;

            return GetMD5(sign_text);
        }


        /// <summary>
        /// 获取支付页面URL
        /// </summary>
        /// <param name="url">如果函数返回真,是支付URL,如果函数返回假,是错误信息</param>
        /// <returns>函数执行是否成功</returns>
        public bool GetPayUrl(out string url)
        {
            try
            {
                string sign = GetPaySign();

                url = paygateurl + "?cmdno=" + cmdno + "&date=" + date + "&bank_type=0&desc=" + desc + "&purchaser_id=&bargainor_id="
                    + bargainor_id + "&transaction_id=" + transaction_id + "&sp_billno=" + sp_billno + "&total_fee=" + total_fee
                    + "&fee_type=" + fee_type + "&return_url=" + return_url + "&attach=" + attach;
                if (spbill_create_ip != "")
                {
                    url += "&spbill_create_ip=" + spbill_create_ip;
                }
                url += "&sign=" + sign;

                return true;
            }
            catch (Exception err)
            {
                url = "创建URL时出错,错误信息:" + err.Message;
                return false;
            }
        }

        /// <summary>
        /// 从支付结果页面的URL请求参数中获取结果信息
        /// </summary>
        /// <param name="querystring">支付结果页面的URL请求参数</param>
        /// <param name="errmsg">函数执行不成功的话,返回错误信息</param>
        /// <returns>函数执行是否成功</returns>
        public bool GetPayValueFromUrl(NameValueCollection querystring, out string errmsg)
        {
            //结果URL参数样例如下
            /*
            ?cmdno=1&pay_result=0&pay_info=OK&date=20070423&bargainor_id=1201143001&transaction_id=1201143001200704230000000013
            &sp_billno=13&total_fee=1&fee_type=1&attach=%D5%E2%CA%C7%D2%BB%B8%F6%B2%E2%CA%D4%BD%BB%D2%D7%B5%A5				
            &sign=ADD7475F2CAFA793A3FB35051869E301
            */

            #region 进行参数校验

            if (querystring == null || querystring.Count == 0)
            {
                errmsg = "参数为空";
                return false;
            }

            if (querystring["cmdno"] == null || querystring["cmdno"].ToString().Trim() != cmdno.ToString())
            {
                errmsg = "没有cmdno参数或cmdno参数不正确";
                return false;
            }

            if (querystring["pay_result"] == null)
            {
                errmsg = "没有pay_result参数";
                return false;
            }

            if (querystring["date"] == null)
            {
                errmsg = "没有date参数";
                return false;
            }

            if (querystring["pay_info"] == null)
            {
                errmsg = "没有pay_info参数";
                return false;
            }

            if (querystring["bargainor_id"] == null)
            {
                errmsg = "没有bargainor_id参数";
                return false;
            }

            if (querystring["transaction_id"] == null)
            {
                errmsg = "没有transaction_id参数";
                return false;
            }

            if (querystring["sp_billno"] == null)
            {
                errmsg = "没有sp_billno参数";
                return false;
            }

            if (querystring["total_fee"] == null)
            {
                errmsg = "没有total_fee参数";
                return false;
            }

            if (querystring["fee_type"] == null)
            {
                errmsg = "没有fee_type参数";
                return false;
            }

            if (querystring["attach"] == null)
            {
                errmsg = "没有attach参数";
                return false;
            }

            if (querystring["sign"] == null)
            {
                errmsg = "没有sign参数";
                return false;
            }

            #endregion

            errmsg = "";

            try
            {
                pay_result = Int32.Parse(querystring["pay_result"].Trim());

                payerrmsg = UrlDecode(querystring["pay_info"].Trim());
                Date = querystring["date"];
                transaction_id = querystring["transaction_id"];
                sp_billno = querystring["sp_billno"];
                total_fee = long.Parse(querystring["total_fee"]);
                fee_type = Int32.Parse(querystring["fee_type"]);
                attach = querystring["attach"];

                if (querystring["bargainor_id"] != bargainor_id)
                {
                    pay_result = PAYSPERROR;
                    return true;
                }

                string strsign = querystring["sign"];
                string sign = GetPayResultSign();

                if (sign != strsign)
                {
                    pay_result = PAYMD5ERROR;
                }

                return true;
            }
            catch (Exception err)
            {
                errmsg = "解析参数出错:" + err.Message;
                return false;
            }
        }


        /// <summary>
        /// 查询请求设置参数函数
        /// </summary>
        /// <param name="adate">支付日期</param>
        /// <param name="atransaction_id">交易单号</param>
        /// <param name="asp_billno">商户订单号</param>
        /// <param name="aattach">指令标识数据</param>
        public void InitQueryParam(string adate, string atransaction_id, string asp_billno, string aattach)
        {
            Date = adate;
            Sp_billno = asp_billno;
            Transaction_id = atransaction_id;
            Attach = aattach;
        }

        /// <summary>
        /// 获取查询签名
        /// </summary>
        /// <returns>根据参数得到签名</returns>
        private string GetQuerySign()
        {
            string sign_text = "cmdno=" + querycmdno + "&date=" + date + "&bargainor_id=" + bargainor_id + "&transaction_id="
                + transaction_id + "&sp_billno=" + sp_billno + "&return_url=" + queryreturn_url + "&attach=" + Attach + "&key=" + key;

            return GetMD5(sign_text);
        }

        /// <summary>
        /// 获取查询结果签名
        /// </summary>
        /// <returns>根据参数得到签名</returns>
        private string GetQueryResultSign()
        {
            string sign_text = "cmdno=" + querycmdno + "&pay_result=" + pay_result + "&date=" + date + "&transaction_id=" + transaction_id
                + "&sp_billno=" + sp_billno + "&total_fee=" + total_fee + "&fee_type=" + fee_type + "&attach=" + attach + "&key=" + key;

            return GetMD5(sign_text);
        }

        /// <summary>
        /// 获取查询页面URL
        /// </summary>
        /// <param name="url">如果函数返回真,是查询URL,如果函数返回假,是错误信息</param>
        /// <returns>函数执行是否成功</returns>
        public bool GetQueryUrl(out string url)
        {

            try
            {
                string sign = GetQuerySign();

                url = querygateurl + "?cmdno=" + querycmdno + "&date=" + date + "&bargainor_id=" + bargainor_id + "&transaction_id="
                    + transaction_id + "&sp_billno=" + sp_billno + "&return_url=" + queryreturn_url + "&attach=" + attach + "&sign=" + sign;

                return true;
            }
            catch (Exception err)
            {
                url = "创建URL时出错,错误信息:" + err.Message;
                return false;
            }
        }

        /// <summary>
        /// 从查询结果页面的URL请求参数中获取结果信息
        /// </summary>
        /// <param name="querystring">查询结果页面的URL请求参数</param>
        /// <param name="errmsg">函数执行不成功的话,返回错误信息</param>
        /// <returns>函数执行是否成功</returns>
        public bool GetQueryValueFromUrl(NameValueCollection querystring, out string errmsg)
        {
            //结果URL参数样例如下
            /*
            ?cmdno=2&pay_result=0&pay_info=OK&date=20070423&bargainor_id=1201143001&transaction_id=1201143001200704230000000001
            &sp_billno=1&total_fee=1&fee_type=1&attach=test11&sign=E80632F587263EF0AFA4A8EEC84A467C&PcacheTime=353851
            */

            #region 进行参数校验

            if (querystring == null || querystring.Count == 0)
            {
                errmsg = "参数为空";
                return false;
            }

            if (querystring["cmdno"] == null || querystring["cmdno"].ToString().Trim() != querycmdno.ToString())
            {
                errmsg = "没有cmdno参数或cmdno参数不正确";
                return false;
            }

            if (querystring["pay_result"] == null)
            {
                errmsg = "没有pay_result参数";
                return false;
            }

            if (querystring["date"] == null)
            {
                errmsg = "没有date参数";
                return false;
            }

            if (querystring["pay_info"] == null)
            {
                errmsg = "没有pay_info参数";
                return false;
            }

            if (querystring["bargainor_id"] == null)
            {
                errmsg = "没有bargainor_id参数";
                return false;
            }

            if (querystring["transaction_id"] == null)
            {
                errmsg = "没有transaction_id参数";
                return false;
            }

            if (querystring["sp_billno"] == null)
            {
                errmsg = "没有sp_billno参数";
                return false;
            }

            if (querystring["total_fee"] == null)
            {
                errmsg = "没有total_fee参数";
                return false;
            }

            if (querystring["fee_type"] == null)
            {
                errmsg = "没有fee_type参数";
                return false;
            }

            if (querystring["attach"] == null)
            {
                errmsg = "没有attach参数";
                return false;
            }

            if (querystring["sign"] == null)
            {
                errmsg = "没有sign参数";
                return false;
            }

            #endregion

            errmsg = "";

            try
            {
                pay_result = Int32.Parse(querystring["pay_result"].Trim());

                payerrmsg = UrlDecode(querystring["pay_info"].Trim());
                Date = querystring["date"];
                transaction_id = querystring["transaction_id"];
                sp_billno = querystring["sp_billno"];
                total_fee = long.Parse(querystring["total_fee"]);
                fee_type = Int32.Parse(querystring["fee_type"]);
                attach = querystring["attach"];

                if (querystring["bargainor_id"] != bargainor_id)
                {
                    pay_result = PAYSPERROR;
                    return true;
                }

                string strsign = querystring["sign"];
                string sign = GetQueryResultSign();

                if (sign != strsign)
                {
                    pay_result = PAYMD5ERROR;
                }

                return true;
            }
            catch (Exception err)
            {
                errmsg = "解析参数出错:" + err.Message;
                return false;
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -