/// <summary> /// 增加一条数据 /// </summary> public int Add(Model.amount_log model) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into dt_amount_log("); strSql.Append("user_id,user_name,type,order_no,payment_id,value,remark,status,add_time,complete_time)"); strSql.Append(" values ("); strSql.Append("@user_id,@user_name,@type,@order_no,@payment_id,@value,@remark,@status,@add_time,@complete_time)"); strSql.Append(";set @ReturnValue= @@IDENTITY"); SqlParameter[] parameters = { new SqlParameter("@user_id", SqlDbType.Int, 4), new SqlParameter("@user_name", SqlDbType.NVarChar, 100), new SqlParameter("@type", SqlDbType.NVarChar, 50), new SqlParameter("@order_no", SqlDbType.NVarChar, 100), new SqlParameter("@payment_id", SqlDbType.Int, 4), new SqlParameter("@value", SqlDbType.Decimal, 5), new SqlParameter("@remark", SqlDbType.NVarChar, 500), new SqlParameter("@status", SqlDbType.TinyInt, 1), new SqlParameter("@add_time", SqlDbType.DateTime), new SqlParameter("@complete_time", SqlDbType.DateTime), new SqlParameter("@ReturnValue", SqlDbType.Int) }; parameters[0].Value = model.user_id; parameters[1].Value = model.user_name; parameters[2].Value = model.type; parameters[3].Value = model.order_no; parameters[4].Value = model.payment_id; parameters[5].Value = model.value; parameters[6].Value = model.remark; parameters[7].Value = model.status; parameters[8].Value = model.add_time; parameters[9].Value = model.complete_time; parameters[10].Direction = ParameterDirection.Output; List <CommandInfo> sqllist = new List <CommandInfo>(); CommandInfo cmd = new CommandInfo(strSql.ToString(), parameters); sqllist.Add(cmd); if (model.status > 0) { StringBuilder strSql2 = new StringBuilder(); strSql2.Append("update dt_users set amount=amount+" + model.value); strSql2.Append(" where id=@id"); SqlParameter[] parameters2 = { new SqlParameter("@id", SqlDbType.Int, 4) }; parameters2[0].Value = model.user_id; cmd = new CommandInfo(strSql2.ToString(), parameters2); sqllist.Add(cmd); } DbHelperSQL.ExecuteSqlTranWithIndentity(sqllist); return((int)parameters[10].Value); }
/// <summary> /// 增加一条数据 /// </summary> public int Add(int user_id, string user_name, string type, decimal value, string remark) { Model.amount_log model = new Model.amount_log(); model.user_id = user_id; model.user_name = user_name; model.type = type; model.value = value; model.remark = remark; return dal.Add(model); }
/// <summary> /// 增加一条数据 /// </summary> public int Add(int user_id, string user_name, string type, decimal value, string remark) { Model.amount_log model = new Model.amount_log(); model.user_id = user_id; model.user_name = user_name; model.type = type; model.value = value; model.remark = remark; return(dal.Add(model)); }
/// <summary> /// 增加一条数据 /// </summary> public int Add(int user_id, string user_name, string type, decimal value, string remark, int status) { Model.amount_log model = new Model.amount_log(); model.user_id = user_id; model.user_name = user_name; model.type = type; model.value = value; model.remark = remark; model.status = status; model.complete_time = DateTime.Now; return dal.Add(model); }
/// <summary> /// 增加一条数据 /// </summary> public int Add(int user_id, string user_name, string type, decimal value, string remark, int status) { Model.amount_log model = new Model.amount_log(); model.user_id = user_id; model.user_name = user_name; model.type = type; model.value = value; model.remark = remark; model.status = status; model.complete_time = DateTime.Now; return(dal.Add(model)); }
public void AddAmount(decimal price) { BLL.amount_log bllog = new BLL.amount_log(); Model.amount_log log = new Model.amount_log(); int Uid = WEBUserCurrent.UserID; log.user_id = Uid; log.value = price; //log.user_name = orderNo; log.order_no = hideNo.Value; log.payment_id = Utils.StringToNum(ddlzhifu.SelectedValue); log.status = 0; int n = bllog.Add(log); }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary <string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判斷是否有帶返回參數 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, DTRequest.GetString("notify_id"), DTRequest.GetString("sign")); if (verifyResult) //驗證成功 { string trade_no = DTRequest.GetString("trade_no"); //支付寶交易號 string order_no = DTRequest.GetString("out_trade_no"); //獲取訂單號 string total_fee = DTRequest.GetString("total_fee"); //獲取總金額 string subject = DTRequest.GetString("subject"); //商品名稱、訂單名稱 string body = DTRequest.GetString("body"); //商品描述、訂單備註、描述 string buyer_email = DTRequest.GetString("buyer_email"); //買家支付寶帳號 string trade_status = DTRequest.GetString("trade_status"); //交易狀態 string order_type = DTRequest.GetString("extra_common_param"); //訂單交易類別 if (DTRequest.GetString("trade_status") == "TRADE_FINISHED" || DTRequest.GetString("trade_status") == "TRADE_SUCCESS") { //修改付款狀態、時間 if (order_type.ToLower() == DTEnums.AmountTypeEnum.Recharge.ToString().ToLower()) //線上儲值 { BLL.amount_log bll = new BLL.amount_log(); Model.amount_log model = bll.GetModel(order_no); if (model == null) { Response.Write("該訂單號不存在"); return; } if (model.value != decimal.Parse(total_fee)) { Response.Write("訂單金額和付款金額不相符"); return; } model.status = 1; model.complete_time = DateTime.Now; bool result = bll.Update(model); if (!result) { Response.Write("修改訂單狀態失敗"); return; } } else if (order_type.ToLower() == DTEnums.AmountTypeEnum.BuyGoods.ToString().ToLower()) //購買商品 { BLL.orders bll = new BLL.orders(); Model.orders model = bll.GetModel(order_no); if (model == null) { Response.Write("該訂單號不存在"); return; } if (model.order_amount != decimal.Parse(total_fee)) { Response.Write("訂單金額和付款金額不相符"); return; } bool result = bll.UpdateField(order_no, "payment_status=2,payment_time='" + DateTime.Now + "'"); if (!result) { Response.Write("修改訂單狀態失敗"); return; } //扣除積分 if (model.point < 0) { new BLL.point_log().Add(model.user_id, model.user_name, model.point, "換購扣除積分,訂單號:" + model.order_no); } } } Response.Write("success"); //請不要修改或刪除 } else//驗證失敗 { Response.Write("fail"); } } else { Response.Write("無通知參數"); } }
/// <summary> /// 得到一个对象实体 /// </summary> public Model.amount_log GetModel(int id) { StringBuilder strSql = new StringBuilder(); strSql.Append("select top 1 id,user_id,user_name,type,order_no,payment_id,value,remark,status,add_time,complete_time from dt_amount_log "); strSql.Append(" where id=@id"); SqlParameter[] parameters = { new SqlParameter("@id", SqlDbType.Int, 4) }; parameters[0].Value = id; Model.amount_log model = new Model.amount_log(); DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters); if (ds.Tables[0].Rows.Count > 0) { if (ds.Tables[0].Rows[0]["id"] != null && ds.Tables[0].Rows[0]["id"].ToString() != "") { model.id = int.Parse(ds.Tables[0].Rows[0]["id"].ToString()); } if (ds.Tables[0].Rows[0]["user_id"] != null && ds.Tables[0].Rows[0]["user_id"].ToString() != "") { model.user_id = int.Parse(ds.Tables[0].Rows[0]["user_id"].ToString()); } if (ds.Tables[0].Rows[0]["user_name"] != null && ds.Tables[0].Rows[0]["user_name"].ToString() != "") { model.user_name = ds.Tables[0].Rows[0]["user_name"].ToString(); } if (ds.Tables[0].Rows[0]["type"] != null && ds.Tables[0].Rows[0]["type"].ToString() != "") { model.type = ds.Tables[0].Rows[0]["type"].ToString(); } if (ds.Tables[0].Rows[0]["order_no"] != null && ds.Tables[0].Rows[0]["order_no"].ToString() != "") { model.order_no = ds.Tables[0].Rows[0]["order_no"].ToString(); } if (ds.Tables[0].Rows[0]["payment_id"] != null && ds.Tables[0].Rows[0]["payment_id"].ToString() != "") { model.payment_id = int.Parse(ds.Tables[0].Rows[0]["payment_id"].ToString()); } if (ds.Tables[0].Rows[0]["value"] != null && ds.Tables[0].Rows[0]["value"].ToString() != "") { model.value = decimal.Parse(ds.Tables[0].Rows[0]["value"].ToString()); } if (ds.Tables[0].Rows[0]["remark"] != null && ds.Tables[0].Rows[0]["remark"].ToString() != "") { model.remark = ds.Tables[0].Rows[0]["remark"].ToString(); } if (ds.Tables[0].Rows[0]["status"] != null && ds.Tables[0].Rows[0]["status"].ToString() != "") { model.status = int.Parse(ds.Tables[0].Rows[0]["status"].ToString()); } if (ds.Tables[0].Rows[0]["add_time"] != null && ds.Tables[0].Rows[0]["add_time"].ToString() != "") { model.add_time = DateTime.Parse(ds.Tables[0].Rows[0]["add_time"].ToString()); } if (ds.Tables[0].Rows[0]["complete_time"] != null && ds.Tables[0].Rows[0]["complete_time"].ToString() != "") { model.complete_time = DateTime.Parse(ds.Tables[0].Rows[0]["complete_time"].ToString()); } return(model); } else { return(null); } }
/// <summary> /// 更新一条数据 /// </summary> public bool Update(Model.amount_log model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update dt_amount_log set "); strSql.Append("user_id=@user_id,"); strSql.Append("user_name=@user_name,"); strSql.Append("type=@type,"); strSql.Append("order_no=@order_no,"); strSql.Append("payment_id=@payment_id,"); strSql.Append("value=@value,"); strSql.Append("remark=@remark,"); strSql.Append("status=@status,"); strSql.Append("add_time=@add_time,"); strSql.Append("complete_time=@complete_time"); strSql.Append(" where id=@id"); SqlParameter[] parameters = { new SqlParameter("@user_id", SqlDbType.Int, 4), new SqlParameter("@user_name", SqlDbType.NVarChar, 100), new SqlParameter("@type", SqlDbType.NVarChar, 50), new SqlParameter("@order_no", SqlDbType.NVarChar, 100), new SqlParameter("@payment_id", SqlDbType.Int, 4), new SqlParameter("@value", SqlDbType.Decimal, 5), new SqlParameter("@remark", SqlDbType.NVarChar, 500), new SqlParameter("@status", SqlDbType.TinyInt, 1), new SqlParameter("@add_time", SqlDbType.DateTime), new SqlParameter("@complete_time", SqlDbType.DateTime), new SqlParameter("@id", SqlDbType.Int, 4) }; parameters[0].Value = model.user_id; parameters[1].Value = model.user_name; parameters[2].Value = model.type; parameters[3].Value = model.order_no; parameters[4].Value = model.payment_id; parameters[5].Value = model.value; parameters[6].Value = model.remark; parameters[7].Value = model.status; parameters[8].Value = model.add_time; parameters[9].Value = model.complete_time; parameters[10].Value = model.id; List <CommandInfo> sqllist = new List <CommandInfo>(); CommandInfo cmd = new CommandInfo(strSql.ToString(), parameters); sqllist.Add(cmd); if (model.status > 0) { StringBuilder strSql2 = new StringBuilder(); strSql2.Append("update dt_users set amount=amount+" + model.value); strSql2.Append(" where id=@id"); SqlParameter[] parameters2 = { new SqlParameter("@id", SqlDbType.Int, 4) }; parameters2[0].Value = model.user_id; cmd = new CommandInfo(strSql2.ToString(), parameters2); sqllist.Add(cmd); } int rowsAffected = DbHelperSQL.ExecuteSqlTran(sqllist); if (rowsAffected > 0) { return(true); } else { return(false); } }
/// <summary> /// 将在Init事件执行 /// </summary> protected void payment_Init(object sender, EventArgs e) { //取得处事类型 action = DTRequest.GetString("action"); order_type = DTRequest.GetString("order_type"); order_no = DTRequest.GetString("order_no"); switch (action) { case "confirm": if (string.IsNullOrEmpty(action) || string.IsNullOrEmpty(order_type) || string.IsNullOrEmpty(order_no)) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,URL传输参数有误!")); return; } //检查用户是否登录 userModel = new Web.UI.BasePage().GetUserInfo(); if (userModel == null) { //用户未登录 HttpContext.Current.Response.Redirect(linkurl("payment", "login")); return; } //检查订单的类型(充值或购物) if (order_type == DTEnums.AmountTypeEnum.Recharge.ToString()) //充值 { amountModel = new BLL.amount_log().GetModel(order_no); if (amountModel == null) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,订单号不存在或已删除!")); return; } //检查订单号是否已支付 if (amountModel.status == 1) { HttpContext.Current.Response.Redirect(linkurl("payment1", "succeed", order_type, amountModel.order_no)); return; } //检查支付方式 payModel = new BLL.payment().GetModel(amountModel.payment_id); if (payModel == null) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,支付方式不存在或已删除!")); return; } //检查是否线上支付 if (payModel.type == 2) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,账户充值不允许线下支付!")); return; } order_amount = amountModel.value; //订单金额 } else if (order_type == DTEnums.AmountTypeEnum.BuyGoods.ToString()) //购物 { //检查订单是否存在 orderModel = new BLL.orders().GetModel(order_no); if (orderModel == null) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,订单号不存在或已删除!")); return; } //检查是否已支付过 if (orderModel.payment_status == 2) { HttpContext.Current.Response.Redirect(linkurl("payment1", "succeed", order_type, orderModel.order_no)); return; } //检查支付方式 payModel = new BLL.payment().GetModel(orderModel.payment_id); if (payModel == null) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,支付方式不存在或已删除!")); return; } //检查是否线下付款 if (payModel.type == 2) { HttpContext.Current.Response.Redirect(linkurl("payment1", "succeed", order_type, orderModel.order_no)); return; } //检查是否积分换购,直接跳转成功页面 if (orderModel.order_amount == 0) { //修改订单状态 bool result = new BLL.orders().UpdateField(orderModel.order_no, "payment_status=2,payment_time='" + DateTime.Now + "'"); if (!result) { HttpContext.Current.Response.Redirect(linkurl("payment", "error")); return; } HttpContext.Current.Response.Redirect(linkurl("payment1", "succeed", order_type, orderModel.order_no)); return; } order_amount = orderModel.order_amount; //订单金额 } else { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,找不到您要提交的订单类型!")); return; } break; case "succeed": //检查订单的类型(充值或购物) if (order_type == DTEnums.AmountTypeEnum.Recharge.ToString()) //充值 { amountModel = new BLL.amount_log().GetModel(order_no); if (amountModel == null) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,订单号不存在或已删除!")); return; } } else if (order_type == DTEnums.AmountTypeEnum.BuyGoods.ToString()) //购物 { orderModel = new BLL.orders().GetModel(order_no); if (orderModel == null) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,订单号不存在或已删除!")); return; } } else { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,找不到您要提交的订单类型!")); return; } break; } }
/// <summary> /// 将在Init事件执行 /// </summary> protected void payment_Init(object sender, EventArgs e) { //取得处事类型 action = DTRequest.GetString("action"); order_type = DTRequest.GetString("order_type"); order_no = DTRequest.GetString("order_no"); switch (action) { case "confirm": if (string.IsNullOrEmpty(action) || string.IsNullOrEmpty(order_type) || string.IsNullOrEmpty(order_no)) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,URL传输参数有误!")); return; } //检查用户是否登录 userModel = new Web.UI.BasePage().GetUserInfo(); if (userModel == null) { //用户未登录 HttpContext.Current.Response.Redirect(linkurl("payment", "login")); return; } //检查订单的类型(充值或购物) if (order_type == DTEnums.AmountTypeEnum.Recharge.ToString()) //充值 { amountModel = new BLL.amount_log().GetModel(order_no); if (amountModel == null) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,订单号不存在或已删除!")); return; } //检查订单号是否已支付 if (amountModel.status == 1) { HttpContext.Current.Response.Redirect(linkurl("payment1", "succeed", order_type, orderModel.order_no)); return; } //检查支付方式 payModel = new BLL.payment().GetModel(amountModel.payment_id); if (payModel == null) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,支付方式不存在或已删除!")); return; } //检查是否线上支付 if (payModel.type == 2) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,账户充值不允许线下支付!")); return; } order_amount = amountModel.value; //订单金额 } else if (order_type == DTEnums.AmountTypeEnum.BuyGoods.ToString()) //购物 { //检查订单是否存在 orderModel = new BLL.orders().GetModel(order_no); if (orderModel == null) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,订单号不存在或已删除!")); return; } //检查是否已支付过 if (orderModel.payment_status == 2) { HttpContext.Current.Response.Redirect(linkurl("payment1", "succeed", order_type, orderModel.order_no)); return; } //检查支付方式 payModel = new BLL.payment().GetModel(orderModel.payment_id); if (payModel == null) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,支付方式不存在或已删除!")); return; } //检查是否线下付款 if (payModel.type == 2) { HttpContext.Current.Response.Redirect(linkurl("payment1", "succeed", order_type, orderModel.order_no)); return; } //检查是否积分换购,直接跳转成功页面 if (orderModel.order_amount == 0) { //修改订单状态 bool result = new BLL.orders().UpdateField(orderModel.order_no, "payment_status=2,payment_time='" + DateTime.Now + "'"); if (!result) { HttpContext.Current.Response.Redirect(linkurl("payment", "error")); return; } HttpContext.Current.Response.Redirect(linkurl("payment1", "succeed", order_type, orderModel.order_no)); return; } order_amount = orderModel.order_amount; //订单金额 } else { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,找不到您要提交的订单类型!")); return; } break; case "succeed": //检查订单的类型(充值或购物) if (order_type == DTEnums.AmountTypeEnum.Convert.ToString()) //充值 { amountModel = new BLL.amount_log().GetModel(order_no); if (amountModel == null) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,订单号不存在或已删除!")); return; } } else if (order_type == DTEnums.AmountTypeEnum.BuyGoods.ToString()) //购物 { orderModel = new BLL.orders().GetModel(order_no); if (orderModel == null) { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,订单号不存在或已删除!")); return; } } else { HttpContext.Current.Response.Redirect(config.webpath + "error.aspx?msg=" + Utils.UrlEncode("出错啦,找不到您要提交的订单类型!")); return; } break; } }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary <string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, DTRequest.GetString("notify_id"), DTRequest.GetString("sign")); if (verifyResult) //验证成功 { string trade_no = DTRequest.GetString("trade_no"); //支付宝交易号 string order_no = DTRequest.GetString("out_trade_no"); //获取订单号 string total_fee = DTRequest.GetString("total_fee"); //获取总金额 string subject = DTRequest.GetString("subject"); //商品名称、订单名称 string body = DTRequest.GetString("body"); //商品描述、订单备注、描述 string buyer_email = DTRequest.GetString("buyer_email"); //买家支付宝账号 string trade_status = DTRequest.GetString("trade_status"); //交易状态 string order_type = DTRequest.GetString("extra_common_param"); //订单交易类别 if (DTRequest.GetString("trade_status") == "TRADE_FINISHED" || DTRequest.GetString("trade_status") == "TRADE_SUCCESS") { //修改支付状态、时间 if (order_type.ToLower() == DTEnums.AmountTypeEnum.Recharge.ToString().ToLower()) //在线充值 { BLL.amount_log bll = new BLL.amount_log(); Model.amount_log model = bll.GetModel(order_no); if (model == null) { Response.Write("该订单号不存在"); return; } if (model.value != decimal.Parse(total_fee)) { Response.Write("订单金额和支付金额不相符"); return; } model.status = 1; model.complete_time = DateTime.Now; bool result = bll.Update(model); if (!result) { Response.Write("修改订单状态失败"); return; } } else if (order_type.ToLower() == DTEnums.AmountTypeEnum.BuyGoods.ToString().ToLower()) //购买商品 { BLL.orders bll = new BLL.orders(); Model.orders model = bll.GetModel(order_no); if (model == null) { Response.Write("该订单号不存在"); return; } if (model.order_amount != decimal.Parse(total_fee)) { Response.Write("订单金额和支付金额不相符"); return; } bool result = bll.UpdateField(order_no, "payment_status=2,payment_time='" + DateTime.Now + "'"); if (!result) { Response.Write("修改订单状态失败"); return; } //扣除积分 if (model.point < 0) { new BLL.point_log().Add(model.user_id, model.user_name, model.point, "换购扣除积分,订单号:" + model.order_no); } } } Response.Write("success"); //请不要修改或删除 } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
/// <summary> /// 增加一条数据 /// </summary> public int Add(Model.amount_log model) { return(dal.Add(model)); }
/// <summary> /// 更新一条数据 /// </summary> public bool Update(Model.amount_log model) { return(dal.Update(model)); }
protected void Page_Load(object sender, EventArgs e) { //创建ResponseHandler实例 ResponseHandler resHandler = new ResponseHandler(Context); resHandler.setKey(TenpayUtil.tenpay_key); //判断签名 if (resHandler.isTenpaySign()) { ///通知id string notify_id = resHandler.getParameter("notify_id"); //通过通知ID查询,确保通知来至财付通 //创建查询请求 RequestHandler queryReq = new RequestHandler(Context); queryReq.init(); queryReq.setKey(TenpayUtil.tenpay_key); queryReq.setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml"); queryReq.setParameter("partner", TenpayUtil.bargainor_id); queryReq.setParameter("notify_id", notify_id); //通信对象 TenpayHttpClient httpClient = new TenpayHttpClient(); httpClient.setTimeOut(5); //设置请求内容 httpClient.setReqContent(queryReq.getRequestURL()); //后台调用 if (httpClient.call()) { //设置结果参数 ClientResponseHandler queryRes = new ClientResponseHandler(); queryRes.setContent(httpClient.getResContent()); queryRes.setKey(TenpayUtil.tenpay_key); //判断签名及结果 //只有签名正确,retcode为0,trade_state为0才是支付成功 if (queryRes.isTenpaySign()) { //取结果参数做业务处理 string out_trade_no = resHandler.getParameter("out_trade_no"); //财付通订单号 string transaction_id = resHandler.getParameter("transaction_id"); //金额,以分为单位 string total_fee = resHandler.getParameter("total_fee"); //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee string discount = resHandler.getParameter("discount"); //订单类型 string order_type = resHandler.getParameter("attach"); //支付结果 string trade_state = resHandler.getParameter("trade_state"); //交易模式,1即时到帐 2中介担保 string trade_mode = resHandler.getParameter("trade_mode"); #region //判断签名及结果 if ("0".Equals(queryRes.getParameter("retcode"))) { //Response.Write("id验证成功"); if ("1".Equals(trade_mode)) { //即时到账 if ("0".Equals(trade_state)) { //------------------------------ //即时到账处理业务开始 //------------------------------ //处理数据库逻辑 //注意交易单不要重复处理 //注意判断返回金额 //修改支付状态、时间 if (order_type.ToLower() == DTEnums.AmountTypeEnum.Recharge.ToString().ToLower()) //在线充值 { BLL.amount_log bll = new BLL.amount_log(); Model.amount_log model = bll.GetModel(out_trade_no); if (model == null) { Response.Write("该订单号不存在"); return; } if (model.value != (decimal.Parse(total_fee) / 100)) { Response.Write("订单金额和支付金额不相符"); return; } model.status = 1; model.complete_time = DateTime.Now; bool result = bll.Update(model); if (!result) { Response.Write("修改订单状态失败"); return; } } else if (order_type.ToLower() == DTEnums.AmountTypeEnum.BuyGoods.ToString().ToLower()) //购买商品 { BLL.orders bll = new BLL.orders(); Model.orders model = bll.GetModel(out_trade_no); if (model == null) { Response.Write("该订单号不存在"); return; } if (model.order_amount != (decimal.Parse(total_fee) / 100)) { Response.Write("订单金额和支付金额不相符"); return; } bool result = bll.UpdateField(out_trade_no, "payment_status=2,payment_time='" + DateTime.Now + "'"); if (!result) { Response.Write("修改订单状态失败"); return; } //扣除积分 if (model.point < 0) { new BLL.point_log().Add(model.user_id, model.user_name, model.point, "换购扣除积分,订单号:" + model.order_no); } } //------------------------------ //即时到账处理业务完毕 //------------------------------ //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知 Response.Write("success"); } else { Response.Write("即时到账支付失败"); } } } else { //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。 //通知财付通处理失败,需要重新通知 Response.Write("查询验证签名失败或id验证失败"); Response.Write("retcode:" + queryRes.getParameter("retcode")); } #endregion } else { Response.Write("通知ID查询签名验证失败"); } } else { //通知财付通处理失败,需要重新通知 Response.Write("后台调用通信失败"); //写错误日志 Response.Write("call err:" + httpClient.getErrInfo() + "<br>" + httpClient.getResponseCode() + "<br>"); } } else { Response.Write("签名验证失败"); } Response.End(); }
/// <summary> /// 得到一个对象实体 /// </summary> public Model.amount_log GetModel(int id) { StringBuilder strSql = new StringBuilder(); strSql.Append("select top 1 id,user_id,user_name,type,order_no,payment_id,value,remark,status,add_time,complete_time from dt_amount_log "); strSql.Append(" where id=@id"); SqlParameter[] parameters = { new SqlParameter("@id", SqlDbType.Int,4) }; parameters[0].Value = id; Model.amount_log model = new Model.amount_log(); DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters); if (ds.Tables[0].Rows.Count > 0) { if (ds.Tables[0].Rows[0]["id"] != null && ds.Tables[0].Rows[0]["id"].ToString() != "") { model.id = int.Parse(ds.Tables[0].Rows[0]["id"].ToString()); } if (ds.Tables[0].Rows[0]["user_id"] != null && ds.Tables[0].Rows[0]["user_id"].ToString() != "") { model.user_id = int.Parse(ds.Tables[0].Rows[0]["user_id"].ToString()); } if (ds.Tables[0].Rows[0]["user_name"] != null && ds.Tables[0].Rows[0]["user_name"].ToString() != "") { model.user_name = ds.Tables[0].Rows[0]["user_name"].ToString(); } if (ds.Tables[0].Rows[0]["type"] != null && ds.Tables[0].Rows[0]["type"].ToString() != "") { model.type = ds.Tables[0].Rows[0]["type"].ToString(); } if (ds.Tables[0].Rows[0]["order_no"] != null && ds.Tables[0].Rows[0]["order_no"].ToString() != "") { model.order_no = ds.Tables[0].Rows[0]["order_no"].ToString(); } if (ds.Tables[0].Rows[0]["payment_id"] != null && ds.Tables[0].Rows[0]["payment_id"].ToString() != "") { model.payment_id = int.Parse(ds.Tables[0].Rows[0]["payment_id"].ToString()); } if (ds.Tables[0].Rows[0]["value"] != null && ds.Tables[0].Rows[0]["value"].ToString() != "") { model.value = decimal.Parse(ds.Tables[0].Rows[0]["value"].ToString()); } if (ds.Tables[0].Rows[0]["remark"] != null && ds.Tables[0].Rows[0]["remark"].ToString() != "") { model.remark = ds.Tables[0].Rows[0]["remark"].ToString(); } if (ds.Tables[0].Rows[0]["status"] != null && ds.Tables[0].Rows[0]["status"].ToString() != "") { model.status = int.Parse(ds.Tables[0].Rows[0]["status"].ToString()); } if (ds.Tables[0].Rows[0]["add_time"] != null && ds.Tables[0].Rows[0]["add_time"].ToString() != "") { model.add_time = DateTime.Parse(ds.Tables[0].Rows[0]["add_time"].ToString()); } if (ds.Tables[0].Rows[0]["complete_time"] != null && ds.Tables[0].Rows[0]["complete_time"].ToString() != "") { model.complete_time = DateTime.Parse(ds.Tables[0].Rows[0]["complete_time"].ToString()); } return model; } else { return null; } }
protected void Page_Load(object sender, EventArgs e) { //創建ResponseHandler實例 ResponseHandler resHandler = new ResponseHandler(Context); resHandler.setKey(TenpayUtil.tenpay_key); //判斷簽名 if (resHandler.isTenpaySign()) { ///通知id string notify_id = resHandler.getParameter("notify_id"); //通過通知ID查詢,確保通知來至財付通 //創建查詢請求 RequestHandler queryReq = new RequestHandler(Context); queryReq.init(); queryReq.setKey(TenpayUtil.tenpay_key); queryReq.setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml"); queryReq.setParameter("partner", TenpayUtil.bargainor_id); queryReq.setParameter("notify_id", notify_id); //通信物件 TenpayHttpClient httpClient = new TenpayHttpClient(); httpClient.setTimeOut(5); //設置請求內容 httpClient.setReqContent(queryReq.getRequestURL()); //後臺調用 if (httpClient.call()) { //設置結果參數 ClientResponseHandler queryRes = new ClientResponseHandler(); queryRes.setContent(httpClient.getResContent()); queryRes.setKey(TenpayUtil.tenpay_key); //判斷簽名及結果 //只有簽名正確,retcode為0,trade_state為0才是付款成功 if (queryRes.isTenpaySign()) { //取結果參數做業務處理 string out_trade_no = resHandler.getParameter("out_trade_no"); //財付通訂單號 string transaction_id = resHandler.getParameter("transaction_id"); //金額,以分為單位 string total_fee = resHandler.getParameter("total_fee"); //如果有使用折扣券,discount有值,total_fee+discount=原請求的total_fee string discount = resHandler.getParameter("discount"); //訂單類型 string order_type = resHandler.getParameter("attach"); //付款結果 string trade_state = resHandler.getParameter("trade_state"); //交易模式,1即時到帳 2仲介擔保 string trade_mode = resHandler.getParameter("trade_mode"); #region //判斷簽名及結果 if ("0".Equals(queryRes.getParameter("retcode"))) { //Response.Write("id驗證成功"); if ("1".Equals(trade_mode)) { //即時到賬 if ("0".Equals(trade_state)) { //------------------------------ //即時到賬處理業務開始 //------------------------------ //處理資料庫邏輯 //注意交易單不要重複處理 //注意判斷返回金額 //修改付款狀態、時間 if (order_type.ToLower() == DTEnums.AmountTypeEnum.Recharge.ToString().ToLower()) //線上充值 { BLL.amount_log bll = new BLL.amount_log(); Model.amount_log model = bll.GetModel(out_trade_no); if (model == null) { Response.Write("該訂單號不存在"); return; } if (model.value != (decimal.Parse(total_fee) / 100)) { Response.Write("訂單金額和付款金額不相符"); return; } model.status = 1; model.complete_time = DateTime.Now; bool result = bll.Update(model); if (!result) { Response.Write("修改訂單狀態失敗"); return; } } else if (order_type.ToLower() == DTEnums.AmountTypeEnum.BuyGoods.ToString().ToLower()) //購買商品 { BLL.orders bll = new BLL.orders(); Model.orders model = bll.GetModel(out_trade_no); if (model == null) { Response.Write("該訂單號不存在"); return; } if (model.order_amount != (decimal.Parse(total_fee) / 100)) { Response.Write("訂單金額和付款金額不相符"); return; } bool result = bll.UpdateField(out_trade_no, "payment_status=2,payment_time='" + DateTime.Now + "'"); if (!result) { Response.Write("修改訂單狀態失敗"); return; } //扣除積分 if (model.point < 0) { new BLL.point_log().Add(model.user_id, model.user_name, model.point, "換購扣除積分,訂單號:" + model.order_no); } } //------------------------------ //即時到賬處理業務完畢 //------------------------------ //給財付通系統發送成功資訊,財付通系統收到此結果後不再進行後續通知 Response.Write("success"); } else { Response.Write("即時到賬付款失敗"); } } } else { //錯誤時,返回結果可能沒有簽名,寫日誌trade_state、retcode、retmsg看失敗詳情。 //通知財付通處理失敗,需要重新通知 Response.Write("查詢驗證簽名失敗或id驗證失敗"); Response.Write("retcode:" + queryRes.getParameter("retcode")); } #endregion } else { Response.Write("通知ID查詢簽名驗證失敗"); } } else { //通知財付通處理失敗,需要重新通知 Response.Write("後臺調用通信失敗"); //寫錯誤日誌 Response.Write("call err:" + httpClient.getErrInfo() + "<br>" + httpClient.getResponseCode() + "<br>"); } } else { Response.Write("簽名驗證失敗"); } Response.End(); }