using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
//---------------------------------------------------------
//财付通即时到帐支付请求示例，商户按照此文档进行开发即可
//---------------------------------------------------------

namespace tenpay
{
	/// <summary>
	/// index 的摘要说明。
	/// </summary>
	public class index : System.Web.UI.Page
	{
	
		private void Page_Load(object sender, System.EventArgs e)
		{

			//商户号
			string bargainor_id = "1900000109";

			//密钥
			string key ="8934e7d15453e97507ef794cf7b0519d";

			//当前时间 yyyyMMdd
			string date = DateTime.Now.ToString("yyyyMMdd");

			//生成订单10位序列号，此处用时间和随机数生成，商户根据自己调整，保证唯一
			string strReq = "" + DateTime.Now.ToString("HHmmss") + TenpayUtil.BuildRandomStr(4);

			//商户订单号，不超过32位，财付通只做记录，不保证唯一性
			string sp_billno = strReq;

			//财付通订单号，10位商户号+8位日期+10位序列号，需保证全局唯一
			string transaction_id = bargainor_id + date + strReq;
			string return_url = "http://localhost/tenpayApp/return_url.aspx";

			//创建PayRequestHandler实例
			PayRequestHandler reqHandler = new PayRequestHandler(Context);

			//设置密钥
			reqHandler.setKey(key);

			//初始化
			reqHandler.init();

			//-----------------------------
			//设置支付参数
			//-----------------------------
			reqHandler.setParameter("bargainor_id", bargainor_id);			//商户号
			reqHandler.setParameter("sp_billno", sp_billno);				//商家订单号
			reqHandler.setParameter("transaction_id", transaction_id);		//财付通交易单号
			reqHandler.setParameter("return_url", return_url);				//支付通知url
			reqHandler.setParameter("desc", "订单号：" + transaction_id);	//商品名称
			reqHandler.setParameter("total_fee", "1");						//商品金额,以分为单位




			//用户ip,测试环境时不要加这个ip参数，正式环境再加此参数
			//reqHandler.setParameter("spbill_create_ip",Page.Request.UserHostAddress);

			//获取请求带参数的url
			string requestUrl = reqHandler.getRequestURL();

			string a_link = "<a target=\"_blank\" href=\"" + requestUrl + "\">" + "财付通支付" + "</a>";

			Response.Write(a_link);
			

			//post实现方式
			/*
			reqHandler.getRequestURL();
			Response.Write("<form method=\"post\" action=\""+ reqHandler.getGateUrl() + "\" >\n");
			Hashtable ht = reqHandler.getAllParameters();
			foreach(DictionaryEntry de in ht) 
			{
				Response.Write("<input type=\"hidden\" name=\"" + de.Key + "\" value=\"" + de.Value + "\" >\n");
			}
			Response.Write("<input type=\"submit\" value=\"财付通支付\" >\n</form>\n");
			*/
			
			//获取debug信息
			//string debuginfo = reqHandler.getDebugInfo();
			//Response.Write("<br/>" + debuginfo + "<br/>");
			
			//重定向到财付通支付
			//reqHandler.doSend();

		}

		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{    
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion





	}
}
