protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Request.ContentEncoding = System.Text.Encoding.GetEncoding(QuickPayConf.charset); String[] resArr = new String[QuickPayConf.notifyVo.Length]; for (int i = 0; i < QuickPayConf.notifyVo.Length; i++) { resArr[i] = Request.Params[QuickPayConf.notifyVo[i]]; } String signature = Request.Params[QuickPayConf.signature]; String signMethod = Request.Params[QuickPayConf.signMethod]; Response.ContentType = "text/html;charset=" + QuickPayConf.charset; Response.ContentEncoding = System.Text.Encoding.GetEncoding(QuickPayConf.charset); try { bool signatureCheck = new QuickPayUtils().checkSign(resArr, signMethod, signature); StringBuilder sb = new StringBuilder(); //sb.Append("签名是否正确:" + signatureCheck); bool success = resArr[10] == "00"; if (success) { string moneyz = resArr[13]; lab_OrderNo.Text = resArr[8]; //资源交易号 lab_Point.Text = Convert.ToString(Convert.ToInt32(moneyz) / 100); //实际支付金额 lab_aliNo.Text = resArr[9]; //外部交易号 //先充值 后消费 string loginname = this.Page.User.Identity.Name; ////业务逻辑处理 Tz888.BLL.Pay1.PayOrder bbl = new Tz888.BLL.Pay1.PayOrder(); bbl.PaySuccessQuick(resArr[8], loginname, Convert.ToString(Convert.ToInt32(6000) / 100)); bbl.AddLmOrder(resArr[8], loginname, Convert.ToString(Convert.ToInt32(resArr[13]) / 100), "1"); } else { sb.Append("<br>失败原因:" + resArr[11]); Response.Write(sb.ToString()); } Response.Write(sb.ToString()); } catch (Exception) { } } }
/// <summary> /// 向银联发送查询请求 /// </summary> /// <param name="transType"></param> /// <param name="orderNumber"></param> /// <param name="orderTime"></param> /// <returns></returns> public string query(string transType, string orderNumber, string orderTime) { string[] valueVo = new string[] { QuickPayConf.version, //协议版本 QuickPayConf.charset, //字符编码 transType, //交易类型 QuickPayConf.merCode, //商户代码 orderNumber, //订单号 orderTime, //交易时间 "{cardNumber=6212341111111111111&phoneNumber=13888888888}" //保留域 }; QuickPayUtils quickPayUtils = new QuickPayUtils(); return(quickPayUtils.doPostQueryCmd(QuickPayConf.queryUrl, new QuickPayUtils().createBackStr(valueVo, QuickPayConf.queryVo))); }
/// <summary> /// 查询交易入口 /// </summary> /// <param name="transType"></param> /// <param name="orderNumber"></param> /// <param name="orderTime"></param> public void queryTrans(string transType, string orderNumber, string orderTime) { string res = query(transType, orderNumber, orderTime); if (res != null && res != "") { string[] arr = new QuickPayUtils().getResArr(res); if (checkSecurity(arr)) //验证签名 { merBusiness(arr); //商户业务逻辑 } } else { System.Console.WriteLine("报文格式为空"); } }
//验证签名 public bool checkSecurity(string[] arr) { //验证签名 int checkedRes = new QuickPayUtils().checkSecurity(arr); if (checkedRes == 1) { return(true); } else if (checkedRes == 0) { System.Console.WriteLine("验证签名失败"); return(false); } else if (checkedRes == 2) { System.Console.WriteLine("报文格式错误"); return(false); } return(false); }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Request.ContentEncoding = System.Text.Encoding.GetEncoding(QuickPayConf.charset); String[] resArr = new String[QuickPayConf.notifyVo.Length]; for (int i = 0; i < QuickPayConf.notifyVo.Length; i++) { resArr[i] = Request.Params[QuickPayConf.notifyVo[i]]; } String signature = Request.Params[QuickPayConf.signature]; String signMethod = Request.Params[QuickPayConf.signMethod]; Response.ContentType = "text/html;charset=" + QuickPayConf.charset; Response.ContentEncoding = System.Text.Encoding.GetEncoding(QuickPayConf.charset); try { bool signatureCheck = new QuickPayUtils().checkSign(resArr, signMethod, signature); StringBuilder sb = new StringBuilder(); //sb.Append("签名是否正确:" + signatureCheck); bool success = resArr[10] == "00"; if (success) { string moneyz = resArr[13]; lab_OrderNo.Text = resArr[8]; //资源交易号 lab_Point.Text = Convert.ToString(Convert.ToInt32(moneyz) / 100); //实际支付金额 lab_aliNo.Text = resArr[9]; //外部交易号 //先充值 后消费 string loginname = this.Page.User.Identity.Name; ////业务逻辑处理 Tz888.BLL.Pay1.PayOrder bbl = new Tz888.BLL.Pay1.PayOrder(); bool quick = bbl.PaySuccessQuick(resArr[8], loginname, Convert.ToString(Convert.ToInt32(resArr[13]) / 100)); if (quick) { bool lm = bbl.AddLmOrder(resArr[8], loginname, Convert.ToString(Convert.ToInt32(resArr[13]) / 100), "1"); Tz888.BLL.Conn dal = new Tz888.BLL.Conn(); DataTable dt = new DataTable(); DataTable dttype = new DataTable(); dt = dal.GetList("ConsumeRecviw", "*", "ID", 1, 1, 0, 1, "OrderNo=" + resArr[8].ToString().Trim() + ""); if (dt.Rows.Count > 0) { lblTitle.Text = "<a target='_blank' href='" + DomainName.SiteDomain() + "/" + dt.Rows[0]["htmlfile"].ToString() + "'>" + dt.Rows[0]["SourceType"].ToString() + "</a>"; lblOrderDate.Text = dt.Rows[0]["ConsumeTime"].ToString(); lblStatus.Text = "已付款"; lblPayType.Text = Tz888.Common.Common.GetPayType(dt.Rows[0]["payType"].ToString()); } } } else { sb.Append("<br>失败原因:" + resArr[11]); Response.Write(sb.ToString()); } Response.Write(sb.ToString()); } catch (Exception) { } } }
public void ProcessRequestList(string url, string shopName, string OrderNo, string money, string UserName) { //商户需要组装如下对象的数据 string[] valueVo = new string[] { QuickPayConf.version, //协议版本 QuickPayConf.charset, //字符编码 "01", //交易类型 "", // 原始交易流水号 QuickPayConf.merCode, // 商户代码 QuickPayConf.merName, // 商户简称 "", // 收单机构代码 "", // 商户类别 url, //商品URL shopName, //商品名称 "8000", //商品单价 单位:分 "1", //商品数量 "0", //折扣 单位:分 "1000", //运费 单位:分 OrderNo, //DateTime.Now.ToString("yyyyMMddHHmmss")+(++i),///订单号(需要商户自己生成) money, //交易金额 单位:分 "156", //交易币种 DateTime.Now.ToString("yyyyMMddHHmmss"), //交易时间 HttpContext.Current.Request.UserHostAddress, //用户IP UserName, //用户真实姓名 "", //默认支付方式 "", //默认银行编号 "120000", //交易超时时间 //"http://localhost:52306/Topfo_Member/PayManage/QuickPay/QuickPayResSample.aspx",// 前台回调商户URL //"http://localhost:52306/Topfo_Member/PayManage/QuickPay/QuickPayResSample.aspx",// 后台回调商户URL "http://member.topfo.com/PayManage/QuickPay/QuickPayList.aspx", // 前台回调商户URL "http://member.topfo.com/PayManage/QuickPay/QuickPayList1.aspx", // 后台回调商户URL "{cardNumber=6212341111111111111&phoneNumber=13888888888}" // 商户保留域 }; /* * 说明:以下代码直接返回跳转到银联在线支付页面字符串 * new QuickPayUtils().createPayHtml(valueVo) */ string html = new QuickPayUtils().createPayHtml(valueVo);//跳转到银联页面支付 /* * 说明:以下代码直接返回跳转到银行支付页面字符串 目前:支持工行(ICBC),农行(ABC),中行(BOC),建行(CCB),招行(CMB),广发(GDB),浦发(SPDB) * new QuickPayUtils().createPayHtml(valueVo, "CCB") */ ///String html = new QuickPayUtils().createPayHtml(valueVo, "CCB");//直接跳转到网银页面支付 HttpContext.Current.Response.Write ///HttpContext.Current.Response.ContentType HttpContext.Current.Response.ContentType = "text/html;charset=" + QuickPayConf.charset; HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding(QuickPayConf.charset); try { HttpContext.Current.Response.Write(html); } catch (Exception) { } }