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

📄 md5pay.cs

📁 易想商城系统
💻 CS
📖 第 1 页 / 共 2 页
字号:
			return GetMD5(sign_text);
		}


		/// <summary>
		/// 获取支付页面URL
		/// </summary>
		/// <param name="url">如果函数返回真,是支付URL,如果函数返回假,是错误信息</param>
		/// <returns>函数执行是否成功</returns>
		public bool GetPayUrl(out string url)
		{
			if(sp_billno <= 0)
			{
				url = "请给出正确的订单号,最长10位的正整数.";
				return false;
			}

			if(total_fee <= 0)
			{
				url = "请给出正确的订单金额,大于等于1的正整数";
				return false;
			}

			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 + "&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
			{
				payresult = Int32.Parse(querystring["pay_result"].Trim());
                
				payerrmsg = UrlDecode(querystring["pay_info"].Trim());
				Date = querystring["date"];
				transaction_id = querystring["transaction_id"];
				sp_billno = long.Parse(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)
				{
					payresult = PAYSPERROR;
					return true;
				}

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

				if(sign != strsign)
				{
					payresult = 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, long 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=" + payresult + "&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)
		{
			if(sp_billno <= 0)
			{
				url = "请给出正确的订单号,最长10位的正整数.";
				return false;
			}

			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
			{
				payresult = Int32.Parse(querystring["pay_result"].Trim());
                
				payerrmsg = UrlDecode(querystring["pay_info"].Trim());
				Date = querystring["date"];
				transaction_id = querystring["transaction_id"];
				sp_billno = long.Parse(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)
				{
					payresult = PAYSPERROR;
					return true;
				}

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

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

⌨️ 快捷键说明

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