public Verify ( string>.SortedDictionary |
||
inputPara | string>.SortedDictionary | 通知返回参数数组 |
notify_id | string | 通知验证ID |
sign | string | 支付宝生成的签名结果 |
return | bool |
public async Task <ActionResult> AlipayNotifyUrl() { var loger = LogManager.GetLogger("Alipay"); SortedDictionary <string, string> sPara = GetRequestPost(); Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (sPara.Count > 0 && verifyResult) { //商户订单号 string outTradeNo = Request.Form["out_trade_no"]; //支付宝交易号 string tradeNo = Request.Form["trade_no"]; //交易状态 string tradeStatus = Request.Form["trade_status"]; //打日志 loger.Error("orderNo:{0};tradeStatus:{1};", outTradeNo, tradeStatus); if (tradeStatus == "TRADE_FINISHED" || tradeStatus == "TRADE_SUCCESS") { //await OrderContract.PayOrder(outTradeNo, tradeNo, PayType.支付宝); return(Content("success")); //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 //1、开通了高级即时到账,买家付款成功后。 } } return(Content("")); }
/// <summary> /// 支付宝异步返回订单交易信息 post /// </summary> /// <param name="context">当前上下文</param> /// <returns></returns> public ZFBReturnPara_Model ZFBCallBack(HttpContext context) { ZFBReturnPara_Model zfbpara = new ZFBReturnPara_Model(); zfbpara.iscallbacksuccess = false; SortedDictionary<string, string> sPara = GetRequestPost(context); if (sPara.Count > 0) { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.Verify(sPara, context.Request.Form["notify_id"], context.Request.Form["sign"]); if (verifyResult)//验证成功 { #region //退款状态,付款成功 没有此参数 string refund_status = "refund_status".GetFormString(); //交易状态 string trade_status = "trade_status".GetFormString(); zfbpara.trade_no = context.Request.Form["trade_no"]; zfbpara.order_no = context.Request.Form["out_trade_no"]; zfbpara.total_fee = context.Request.Form["total_fee"]; zfbpara.ispaysuccess = ((trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") && refund_status == "") ? true : false; zfbpara.isallreturn = ((trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") && refund_status == "REFUND_SUCCESS") ? true : false; #endregion zfbpara.iscallbacksuccess = true; zfbpara.sendzfbcallbackmessage = "success"; } else zfbpara.sendzfbcallbackmessage = "fail"; } else zfbpara.sendzfbcallbackmessage = "无通知参数"; return zfbpara; }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 } else { Response.Write("trade_status=" + Request.QueryString["trade_status"]); } //打印页面 Response.Write("验证成功<br />"); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("验证失败"); } } else { Response.Write("无返回参数"); } }
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, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //获取批次号 string batch_no = Request.Form["batch_no"]; //获取批量退款数据中转账成功的笔数 string success_num = Request.Form["success_num"]; //获取批量退款数据中的详细信息 string result_details = Request.Form["result_details"]; //格式:第一笔交易#第二笔交易#第三笔交易 //第N笔交易格式:交易退款信息 //交易退款信息格式:原付款支付宝交易号^退款总金额^处理结果码^结果描述 //判断是否在商户网站中已经做过了这次通知返回的处理(可参考“集成教程”中“3.4返回数据处理”) //如果没有做过处理,那么执行商户的业务程序 //如果有做过处理,那么不执行商户的业务程序 Response.Write("success"); //请不要修改或删除 //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户网站唯一订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //对应商户网站的订单系统中的唯一订单号 //交易状态 string trade_status = Request.QueryString["trade_status"]; //交易目前所处的状态(例如:TRADE_SUCCESS) //判断是否在商户网站中已经做过了这次通知返回的处理 //如果没有做过处理,那么执行商户的业务程序 //如果有做过处理,那么不执行商户的业务程序 //打印页面 Response.Write("验证成功<br />"); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("验证失败"); } } else { Response.Write("无返回参数"); } }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //支付宝用户号 string user_id = Request.QueryString["user_id"]; //授权令牌 string token = Request.QueryString["token"]; //判断是否在商户网站中已经做过了这次通知返回的处理 //如果没有做过处理,那么执行商户的业务程序 //如果有做过处理,那么不执行商户的业务程序 //打印页面 Response.Write("验证成功<br />"); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("验证失败"); } } else { Response.Write("无返回参数"); } }
public ActionResult AlipayReturnUrl() { SortedDictionary <string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS") { // PresellOrderContract.OrederPay(out_trade_no, PayTypes.支付宝); return(Content("success")); //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 //1、开通了高级即时到账,买家付款成功后。 } //打印页面 Response.Write("验证成功<br />"); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("验证失败"); } } else { Response.Write("无返回参数"); } return(Content("")); }
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, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //批量付款数据中转账成功的详细信息 string success_details = Request.Form["success_details"]; //批量付款数据中转账失败的详细信息 string fail_details = Request.Form["fail_details"]; //判断是否在商户网站中已经做过了这次通知返回的处理 //如果没有做过处理,那么执行商户的业务程序 //如果有做过处理,那么不执行商户的业务程序 Response.Write("success"); //请不要修改或删除 //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
/// <summary> /// 支付宝异步返回订单交易信息 post /// </summary> /// <param name="context">当前上下文</param> /// <returns></returns> public ZFBReturnPara_Model ZFBCallBack(HttpContext context) { ZFBReturnPara_Model zfbpara = new ZFBReturnPara_Model(); zfbpara.iscallbacksuccess = false; SortedDictionary <string, string> sPara = GetRequestPost(context); if (sPara.Count > 0) { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.Verify(sPara, context.Request.Form["notify_id"], context.Request.Form["sign"]); if (verifyResult)//验证成功 { #region //退款状态,付款成功 没有此参数 string refund_status = "refund_status".GetFormString(); //交易状态 string trade_status = "trade_status".GetFormString(); zfbpara.trade_no = context.Request.Form["trade_no"]; zfbpara.order_no = context.Request.Form["out_trade_no"]; zfbpara.total_fee = context.Request.Form["total_fee"]; zfbpara.ispaysuccess = ((trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") && refund_status == "") ? true : false; zfbpara.isallreturn = ((trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") && refund_status == "REFUND_SUCCESS") ? true : false; #endregion zfbpara.iscallbacksuccess = true; zfbpara.sendzfbcallbackmessage = "success"; } else { zfbpara.sendzfbcallbackmessage = "fail"; } } else { zfbpara.sendzfbcallbackmessage = "无通知参数"; } return(zfbpara); }
/// <summary> /// 支付宝 返回 前端订单交易信息 get /// </summary> /// <param name="context"></param> /// <returns></returns> public ZFBReturnPara_Model ZFBReturn(HttpContext context) { ZFBReturnPara_Model zfbpara = new ZFBReturnPara_Model(); SortedDictionary <string, string> sPara = GetRequestGet(context); if (sPara.Count > 0)//判断是否有带返回参数 { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.Verify(sPara, context.Request.QueryString["notify_id"], context.Request.QueryString["sign"]); if (verifyResult)//验证成功 { #region //交易状态 string trade_status = "trade_status".GetUrlString(); zfbpara.trade_no = "trade_no".GetUrlString(); zfbpara.order_no = "out_trade_no".GetUrlString(); zfbpara.total_fee = "total_fee".GetUrlString(); zfbpara.ispaysuccess = (trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") ? true : false; zfbpara.isallreturn = false; #endregion zfbpara.iscallbacksuccess = true; zfbpara.sendzfbcallbackmessage = "success"; } else { zfbpara.sendzfbcallbackmessage = "fail"; } } else { zfbpara.sendzfbcallbackmessage = "无通知参数"; } return(zfbpara); }
public ActionResult Payment_Result() { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 var account = Request.QueryString["total_fee"]; var 当前用户 = currentUser as 供应商; var 会员级别 = 当前用户.供应商用户信息.认证级别.ToString(); double amount = 0D; switch (会员级别) { case "军采通标准会员": switch (account) { case "2850": amount = double.Parse(account) / 0.95; break; case "5400": amount = double.Parse(account) / 0.9; break; case "8500": amount = double.Parse(account) / 0.85; break; case "16000": amount = double.Parse(account) / 0.8; break; } break; case "军采通高级会员": switch (account) { case "2700": amount = double.Parse(account) / 0.9; break; case "5100": amount = double.Parse(account) / 0.85; break; case "8000": amount = double.Parse(account) / 0.8; break; case "15000": amount = double.Parse(account) / 0.75; break; } break; default: switch (account) { case "2940": amount = double.Parse(account) * 0.98; break; case "5700": amount = double.Parse(account) * 0.95; break; case "9200": amount = double.Parse(account) * 0.92; break; case "18000": amount = double.Parse(account) * 0.9; break; } break; } var 充值记录 = new 供应商充值记录(); 充值记录.充值方式 = 充值方式.支付宝; 充值记录.充值金额 = (decimal)amount; 充值记录.充值时间 = DateTime.Now; 充值记录.供应商转款账号 = Request.QueryString["buyer_email"]; 充值记录.收款账号 = Request.QueryString["seller_email"]; 充值记录.所属供应商.用户ID = currentUser.Id; 供应商充值记录管理.添加供应商充值记录(充值记录); var 余额记录 = 供应商充值余额管理.查询供应商充值余额(0, 0, Query<供应商充值余额>.Where(o => o.所属供应商.用户ID == currentUser.Id)); if (余额记录.Count() > 0) { var model = 余额记录.First(); model.可用余额 += 充值记录.充值金额; 供应商充值余额管理.更新供应商充值余额(model); } else { var 充值余额 = new 供应商充值余额(); 充值余额.可用余额 = 充值记录.充值金额; 充值余额.所属供应商.用户ID = currentUser.Id; 供应商充值余额管理.添加供应商充值余额(充值余额); } //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { ViewData["Trade_Status"] = 1;//1充值成功,0充值失败 ViewData["result"] = amount; //Request.QueryString["total_fee"]; //充值金额 //ViewData["result"] = "用户号为" + Request.QueryString["buyer_id"] + "的你已购买价值为" + Request.QueryString["total_fee"] + "军采通产品,流水号位" + Request.QueryString["trade_no"] + "交易状态:" + Request.QueryString["trade_status"] + "验证ID为:" + Request.QueryString["notify_id"]; } else { ViewData["Trade_Status"] = 0; //Response.Write("trade_status=" + Request.QueryString["trade_status"]); } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { //Response.Write("验证失败"); ViewData["Trade_Status"] = 0; } } else { ViewData["result"] = "无返回参数"; //Response.Write("无返回参数"); } return View(); }
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, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 string trade_no = Request.Form["trade_no"]; //支付宝交易号 string order_no = Request.Form["out_trade_no"]; //获取订单号 string total_fee = Request.Form["total_fee"]; //获取总金额 string subject = Request.Form["subject"]; //商品名称、订单名称 string body = Request.Form["body"]; //商品描述、订单备注、描述 string buyer_email = Request.Form["buyer_email"]; //买家支付宝账号 string trade_status = Request.Form["trade_status"]; //交易状态 if (Request.Form["trade_status"] == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 } else if(Request.Form["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
public ActionResult Notify2() { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0) { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult) { string out_trade_no = Request.Form["out_trade_no"]; string trade_no = Request.Form["trade_no"]; string trade_status = Request.Form["trade_status"]; var amount = decimal.Parse(Request.Form["total_fee"]); if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS") { var paymentEntity = Context.Set<OrderTransactionEntity>().Where(p => p.OrderNo == out_trade_no && p.PaymentCode == Config.PaymentCode).FirstOrDefault(); var orderEntity = Context.Set<OrderEntity>().Where(o => o.OrderNo == out_trade_no).FirstOrDefault(); if (paymentEntity == null && orderEntity != null) { OrderTransactionEntity orderTransaction = null; using (var ts = new TransactionScope()) { _paymentNotifyRepo.Insert(new PaymentNotifyLogEntity() { CreateDate = DateTime.Now, OrderNo = out_trade_no, PaymentCode = Config.PaymentCode, PaymentContent = JsonConvert.SerializeObject(sPara) }); orderTransaction = _orderTranRepo.Insert(new OrderTransactionEntity() { Amount = amount, OrderNo = out_trade_no, CreateDate = DateTime.Now, IsSynced = false, PaymentCode = Config.PaymentCode, TransNo = trade_no, OrderType = (int)PaidOrderType.Self }); if (orderEntity.Status != (int)OrderStatus.Paid && orderEntity.TotalAmount<=amount) { orderEntity.Status = (int)OrderStatus.Paid; orderEntity.UpdateDate = DateTime.Now; orderEntity.RecAmount = amount; _orderRepo.Update(orderEntity); _orderlogRepo.Insert(new OrderLogEntity() { CreateDate = DateTime.Now, CreateUser = 0, CustomerId = orderEntity.CustomerId, Operation = "支付订单", OrderNo = out_trade_no, Type = (int)OrderOpera.CustomerPay }); } ts.Complete(); } //notify sync async Task.Factory.StartNew(() => { OrderRule.OrderPaid2Erp(orderTransaction); }); } } return Content("success"); } else { return Content("fail"); } } else { return Content("无通知参数"); } }
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, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; Eyousoft_yhq.BLL.Order OrderType = new Eyousoft_yhq.BLL.Order(); var OrderModel = new Eyousoft_yhq.Model.Order(); string res = string.Empty; if (trade_status == "TRADE_FINISHED") { } else if (Request.QueryString["trade_status"] == "TRADE_SUCCESS") { OrderModel = OrderType.GetModel(out_trade_no); if (OrderModel != null && OrderModel.PayState != Eyousoft_yhq.Model.PaymentState.已支付) { Eyousoft_yhq.Model.MConDetaile jilu = new Eyousoft_yhq.Model.MConDetaile() { HuiYuanID = OrderModel.MemberID, XFway = Eyousoft_yhq.Model.XFfangshi.消费, DingDanBianHao = OrderModel.OrderCode, JiaoYiHao = DateTime.Now.ToString("yyyyMMddHHmm") + Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(5), JiaoYiShiJian = DateTime.Now, DDCarrtes = Eyousoft_yhq.Model.DDleibie.旅游订单, JinE = OrderModel.OrderPrice }; new Eyousoft_yhq.BLL.BConDetaile().Add(jilu);//消费记录 string Ra = Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(12); while (OrderType.Exists(Ra)) { Ra = Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(12); } Eyousoft_yhq.Model.Order OrderInfo = new Eyousoft_yhq.Model.Order() { OrderID = out_trade_no, PayState = Eyousoft_yhq.Model.PaymentState.已支付, ConfirmCode = Ra, OrderState = Eyousoft_yhq.Model.OrderState.已成交 }; int Sum = OrderType.UpdatePayState(OrderInfo); if (Sum > 0) { Eyousoft_yhq.BLL.Member UM = new Eyousoft_yhq.BLL.Member(); bool Mo = UM.GetModel(OrderModel.MemberID).valiUser; if (!Mo) { #region 短信发送 string code = string.Empty; IList<Eyousoft_yhq.Model.SMSChannel> channel = Eyousoft_yhq.Web.BsendMsg.CommonProcess.GetSMSChannels(); code = string.Format("下单成功,确认码:{0}!【惠旅游】", Ra); Eyousoft_yhq.Web.BsendMsg.CommonProcess.SendSMS(OrderModel.MemberTel, code, channel[0], out res);//发送 #endregion #region 短信日志 Eyousoft_yhq.Model.MsgLog MsLog = new Eyousoft_yhq.Model.MsgLog { TelCode = OrderModel.MemberTel, MsgText = code, ReResult = res }; new Eyousoft_yhq.BLL.MsgLog().Add(MsLog); #endregion } } } var chongzhiModel = new Eyousoft_yhq.BLL.BChongZhi().GetModel(out_trade_no); if (chongzhiModel != null && chongzhiModel.PayState == Eyousoft_yhq.Model.PaymentState.未支付) { var member = new Eyousoft_yhq.BLL.Member().GetModel(chongzhiModel.OperatorID); if (member != null) { member.YuE = member.YuE + chongzhiModel.OptMoney; bool result = new Eyousoft_yhq.BLL.Member().Update(member); } new Eyousoft_yhq.BLL.BChongZhi().SheZhiZhiFus(out_trade_no, Eyousoft_yhq.Model.PaymentState.已支付); } } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 Response.Redirect("/Huiyuan/OrderList.aspx"); ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestPost(); #region 测试 int orderid = Convert.ToInt32(Request.Form["body"]); string ordernum = Request.Form["out_trade_no"]; string str=manager.EditOrder(orderid, StringHelper.付款成功); Response.Write("success"); return; #endregion if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; //int orderid = Convert.ToInt32(Request.Form["body"]); //string ordernum = Request.Form["out_trade_no"]; if (Request.Form["trade_status"] == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 //manager.EditOrder(); manager.EditOrder(orderid ,StringHelper.付款成功 ); } else if(Request.Form["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //付款完成后,支付宝系统发送该交易状态通知 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 manager.EditOrder(orderid, StringHelper.付款成功); } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
public ActionResult return_url() { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 string trade_no = Request.QueryString["trade_no"]; //支付宝交易号 string order_no = Request.QueryString["out_trade_no"]; //获取订单号 string total_fee = Request.QueryString["price"]; //获取总金额 string subject = Request.QueryString["subject"]; //商品名称、订单名称 string body = Request.QueryString["body"]; //商品描述、订单备注、描述 string buyer_email = Request.QueryString["buyer_email"]; //买家支付宝账号 string receive_name = Request.QueryString["receive_name"]; //收货人姓名 string receive_address = Request.QueryString["receive_address"];//收货人地址 string receive_zip = Request.QueryString["receive_zip"]; //收货人邮编 string receive_phone = Request.QueryString["receive_phone"]; //收货人电话 string receive_mobile = Request.QueryString["receive_mobile"]; //收货人手机 string trade_status = Request.QueryString["trade_status"]; //交易状态 ViewBag.message = null; if (Request.QueryString["trade_status"] == "WAIT_SELLER_SEND_GOODS") { //判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”) //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 } else { ViewBag.message = "trade_status=" + Request.QueryString["trade_status"]; } //打印页面 ViewBag.message = "验证成功<br />" + "trade_no=" + trade_no; //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { ViewBag.message = "验证失败"; } } else { ViewBag.message = "无返回参数"; } return View(); }
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, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 } else if(Request.Form["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //付款完成后,支付宝系统发送该交易状态通知 } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { BLL.BLLOrder bllOrder = new BLL.BLLOrder(); BLL.BLLPayment bllPayment; Model.Order order = new Model.Order(); int orderId = int.Parse(Request["out_trade_no"]); string tradeNo = Request["trade_no"]; if (orderId > 0) { order = bllOrder.GetOrderByOrderid(orderId); order.TradeNo = tradeNo; bllOrder.SaveOrUpdateOrder(order); // bllPayment = new BLL.BLLPayment(order); bllPayment.Received( Request.Url.Query); } else { BLL.ErrHandler.Redirect(BLL.ErrType.ParamIllegal); } SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 string trade_no = Request.QueryString["trade_no"]; //支付宝交易号 string order_no = Request.QueryString["out_trade_no"]; //获取订单号 string total_fee = Request.QueryString["total_fee"]; //获取总金额 string subject = Request.QueryString["subject"]; //商品名称、订单名称 string body = Request.QueryString["body"]; //商品描述、订单备注、描述 string buyer_email = Request.QueryString["buyer_email"]; //买家支付宝账号 string trade_status = Request.QueryString["trade_status"]; //交易状态 if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 order.IsPaid = true; order.PayTime = DateTime.Now; bllOrder.SaveOrUpdateOrder(order); Response.Redirect("/payment/paysuccess.aspx?orderid=" + orderId); } else { Response.Write("trade_status=" + Request.QueryString["trade_status"]); } //打印页面 Response.Write("验证成功<br />"); Response.Write("trade_no=" + trade_no); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("验证失败"); } } else { Response.Write("无返回参数"); } }
public ActionResult Payment_Result() { try { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 var account = Request.QueryString["total_fee"]; string id = Request.QueryString["extra_common_param"];//传回的商品id和采购数量 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; string ordercode=""; /*if(!string.IsNullOrWhiteSpace(Request.QueryString["body"])) { ordercode=Request.QueryString["body"];//优惠码 }*/ if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { if (订单管理.计数订单(0, 0, Query<订单>.Where(m => m.Id == long.Parse(id))) == 0) { ViewData["Trade_Status"] = 0; ViewData["result"] = "不存在此订单"; } else { 订单 model = 订单管理.查找订单(long.Parse(id)); if (!model.已付款) { /*if (优惠码管理.计数优惠码(0, 0, Query<优惠码>.Where(m => m.Code == ordercode && m.已使用 == false)) > 0) { model.使用优惠码 = true; 优惠码 yh = 优惠码管理.查询优惠码(0, 0, Query<优惠码>.Where(m => m.已使用 == false && m.Code == ordercode)).First(); yh.已使用 = true; 优惠码管理.更新优惠码(yh); }*/ model.已付款 = true; 订单管理.更新订单(model); ViewData["userid"] = model.订单所属用户.用户ID; } else { ViewData["userid"] = -1; } ViewData["Trade_Status"] = 1;//1订单付款成功,0订单付款失败 ViewData["result"] = "您已经成功购买价值为"+ account.ToString() + "的商品。"; } } else { ViewData["userid"] = -1; ViewData["Trade_Status"] = 0; ViewData["result"] = "交易为完成"; //Response.Write("trade_status=" + Request.QueryString["trade_status"]); } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { //Response.Write("验证失败"); ViewData["userid"] = -1; ViewData["Trade_Status"] = 0; ViewData["result"] = "验证失败"; } } else { ViewData["userid"] = -1; ViewData["Trade_Status"] = 0; ViewData["result"] = "无返回参数"; //Response.Write("无返回参数"); } return View(); } catch { ViewData["userid"] = -1; ViewData["Trade_Status"] = 0; ViewData["result"] = "支付出错!"; return View(); } }
// 同步调用,只发生一次 public ActionResult AlipayReturn() { var model = new AlipayReturnViewModel(); SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 model.out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 model.trade_no = Request.QueryString["trade_no"]; //交易状态 model.trade_status = Request.QueryString["trade_status"]; if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 model.message = "支付成功"; } else { model.message = "支付失败"; } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { model.message = ("验证失败"); } } else { model.message = ("无返回参数"); } return View(model); }
/// <summary> /// 支付宝 返回 前端订单交易信息 get /// </summary> /// <param name="context"></param> /// <returns></returns> public ZFBReturnPara_Model ZFBReturn(HttpContext context) { ZFBReturnPara_Model zfbpara = new ZFBReturnPara_Model(); SortedDictionary<string, string> sPara = GetRequestGet(context); if (sPara.Count > 0)//判断是否有带返回参数 { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.Verify(sPara, context.Request.QueryString["notify_id"], context.Request.QueryString["sign"]); if (verifyResult)//验证成功 { #region //交易状态 string trade_status = "trade_status".GetUrlString(); zfbpara.trade_no = "trade_no".GetUrlString(); zfbpara.order_no = "out_trade_no".GetUrlString(); zfbpara.total_fee = "total_fee".GetUrlString(); zfbpara.ispaysuccess = (trade_status == "TRADE_SUCCESS" || trade_status == "TRADE_FINISHED") ? true : false; zfbpara.isallreturn = false; #endregion zfbpara.iscallbacksuccess = true; zfbpara.sendzfbcallbackmessage = "success"; } else zfbpara.sendzfbcallbackmessage = "fail"; } else zfbpara.sendzfbcallbackmessage = "无通知参数"; return zfbpara; }
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, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //批次号 string batch_no = Request.Form["batch_no"]; //批量退款数据中转账成功的笔数 string success_num = Request.Form["success_num"]; //批量退款数据中的详细信息 string result_details = Request.Form["result_details"]; //判断是否在商户网站中已经做过了这次通知返回的处理 //如果没有做过处理,那么执行商户的业务程序 //如果有做过处理,那么不执行商户的业务程序 #region 退款 异步更新数据 author:Ethan //XHZ.BLL.U_OrdersBLL bll = new XHZ.BLL.U_OrdersBLL(); //XHZ.Model.U_Orders model = new XHZ.Model.U_Orders(); //model = bll.GetmodelByBatchNo(batch_no); //if (model.OrderStatus == (int)XHZ.Model.UOrderStatus.已退款) //{ // Response.Write("success"); //请不要修改或删除 //} //else //{ // model.OrderStatus = (int)XHZ.Model.UOrderStatus.已退款; // model.result_details = string.Format("退款明细[{0}],退款时间[{1}]", result_details, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); // XHZ.Web.Payment.Core.LogHandler.WriteLogForPay(model.OrderNo, "退款成功", model.result_details); // if (bll.Update(model)) // { // try // { // P_User userModel = new P_UserBLL().GetModel(model.user_id); // pfunction.SendSMS(userModel.moblie, "您的订单" + model.OrderNo + "已退款成功"); // } // catch // { // } // XHZ.Web.Common.pfunction.InsertOrderHandle(model.OrderId, "您的订单退款成功", "支付宝退款接口异步调用"); // XHZ.Common.SYS_LOG.AddCommonLog(Request.Url.AbsolutePath, "【退款成功】", "支付宝退款异接口步调用"); // Response.Write("success"); //请不要修改或删除 // } // else // { // XHZ.Common.SYS_LOG.AddCommonLog(Request.Url.AbsolutePath, "【退款失败】", "支付宝退款接口异步调用"); // } //} #endregion //Response.Write("success"); //请不要修改或删除 //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; orderID = out_trade_no; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { succ = true; if (out_trade_no.Contains("C")) { ordertype = 1; } else if (out_trade_no.Contains("P")) { ordertype = 2; } ORD_CashMod m_mod = ORD_CashBll.GetInstance().GetModelByOrderID(out_trade_no); if (m_mod == null) { ShowError("");//订单号错误 } if (m_mod.Status == (int)AppEnum.CashOrderStatus.beforepay) { m_mod.CurrentID = trade_no;//记录支付流水号 ORD_CashBll.GetInstance().SetPaySucc(m_mod); } //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 } else { LogManagement.getInstance().WriteTrace("订单" + orderID + "支付宝返回"+Request.QueryString["trade_status"], "PayReturnForAlipay",base.Request.UserHostAddress ); } //打印页面 ShowResult(); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { LogManagement.getInstance().WriteTrace("订单" + orderID + "支付宝返回验证失败", "PayReturnForAlipay", base.Request.UserHostAddress); } } else { LogManagement.getInstance().WriteTrace("支付宝返回无参数", "PayReturnForAlipay", base.Request.UserHostAddress); ShowError("请从正确的入口进入"); } }
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, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; orderID = out_trade_no; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS") { succ = true; if (out_trade_no.Contains("C")) { ordertype = 1; } else if (out_trade_no.Contains("P")) { ordertype = 2; } ORD_CashMod m_mod = ORD_CashBll.GetInstance().GetModelByOrderID(out_trade_no); if (m_mod == null) { ShowError("");//订单号错误 } if (m_mod.Status == (int)AppEnum.CashOrderStatus.beforepay) { m_mod.CurrentID = trade_no;//记录支付流水号 ORD_CashBll.GetInstance().SetPaySucc(m_mod); } //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 } //else if (Request.Form["trade_status"] == "TRADE_SUCCESS") //{ // //判断该笔订单是否在商户网站中已经做过处理 // //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // //如果有做过处理,不执行商户的业务程序 // //注意: // //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 //} else { LogManagement.getInstance().WriteTrace("订单" + orderID + "支付宝返回" + Request.QueryString["trade_status"], "PayReturnForAlipay", base.Request.UserHostAddress); } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
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, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED") { Response.Write("success"); } else if (Request.Form["trade_status"] == "TRADE_SUCCESS") { var OrderModel = new Eyousoft_yhq.Model.Order(); var OrderBll = new Eyousoft_yhq.BLL.Order(); OrderModel = OrderBll.GetModel(out_trade_no); if (OrderModel != null && OrderModel.PayState == Eyousoft_yhq.Model.PaymentState.未支付) { string result = string.Empty; string Ra = Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(12); while (OrderBll.Exists(Ra)) { Ra = Eyousoft_yhq.SQLServerDAL.Utils.GetRandomString(12); } OrderModel.OrderID = out_trade_no; OrderModel.PayState = Eyousoft_yhq.Model.PaymentState.已支付; OrderModel.OrderState = Eyousoft_yhq.Model.OrderState.已成交; OrderModel.ConfirmCode = Ra; int Sum = OrderBll.UpdatePayState(OrderModel); if (Sum > 0) { Eyousoft_yhq.BLL.Member UM = new Eyousoft_yhq.BLL.Member(); bool Mo = UM.GetModel(OrderModel.MemberID).valiUser; if (!Mo) { #region 短信发送 string code = string.Empty; IList<Eyousoft_yhq.Model.SMSChannel> channel = Eyousoft_yhq.Web.BsendMsg.CommonProcess.GetSMSChannels(); code = string.Format("下单成功,确认码:{0}!【惠旅游】", Ra); Eyousoft_yhq.Web.BsendMsg.CommonProcess.SendSMS(OrderModel.MemberTel, code, channel[0], out result);//发送 #region 短信日志 Eyousoft_yhq.Model.MsgLog MsLog = new Eyousoft_yhq.Model.MsgLog { TelCode = OrderModel.MemberTel, MsgText = code, ReResult = result }; new Eyousoft_yhq.BLL.MsgLog().Add(MsLog); #endregion #endregion } } } var chongzhiModel = new Eyousoft_yhq.BLL.BChongZhi().GetModel(out_trade_no); if (chongzhiModel != null && chongzhiModel.PayState == Eyousoft_yhq.Model.PaymentState.未支付) { var member = new Eyousoft_yhq.BLL.Member().GetModel(chongzhiModel.OperatorID); if (member != null) { member.YuE = member.YuE + chongzhiModel.OptMoney; bool result = new Eyousoft_yhq.BLL.Member().Update(member); } new Eyousoft_yhq.BLL.BChongZhi().SheZhiZhiFus(out_trade_no, Eyousoft_yhq.Model.PaymentState.已支付); } } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { try { SortedDictionary <string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"].Filter(); //支付宝交易号 string trade_no = Request.QueryString["trade_no"].Filter(); //交易状态 string trade_status = Request.QueryString["trade_status"].Filter(); int orderStatus = 0; if (trade_status.ToUpper() == "TRADE_FINISHED" || trade_status.ToUpper() == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 orderStatus = (int)UOrderStatus.付款成功; } else { Response.Write("trade_status=" + trade_status.ToUpper()); } //打印页面 Response.Write("验证成功<br />"); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Model_UserOrder model = new Rc.BLL.Resources.BLL_UserOrder().GetModelByOrderNo(out_trade_no); if (model.UserOrder_Type == "1")//教师订单 { Response.Redirect("../teacher/allOrder.aspx"); } else if (model.UserOrder_Type == "2")//学生订单 { Response.Redirect("../student/allOrder.aspx"); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("验证失败"); } } else { Response.Write("无返回参数"); } } catch (Exception ex) { Response.Write(ex.Message.ToString()); } }
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, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"].Filter(); //支付宝交易号 string trade_no = Request.Form["trade_no"].Filter(); //交易状态 string trade_status = Request.Form["trade_status"].Filter(); //买家支付宝账号 string buyer_email = Request.Form["buyer_email"]; int orderStatus = 1;// (int)XHZ.Model.UOrderStatus.等待付款; if (trade_status.ToUpper() == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 orderStatus = (int)UOrderStatus.付款成功; } else if (trade_status.ToUpper() == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //付款完成后,支付宝系统发送该交易状态通知 orderStatus = (int)UOrderStatus.付款成功; } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Rc.Web.Payment.Core.LogHandler.WriteLogForPay(out_trade_no, "付款成功", trade_no); #region 付款成功 异步更新订单表 author:Ethan Model_UserOrder model = new Model_UserOrder(); BLL_UserOrder bll = new BLL_UserOrder(); model = bll.GetModelByOrderNo(out_trade_no); if (orderStatus == (int)UOrderStatus.付款成功 && model.UserOrder_Status == (int)UOrderStatus.待付款) { model.UserOrder_Paytool = UserOrder_PaytoolEnum.ALIPAY.ToString(); model.UsreOrder_Buyeremail = buyer_email; model.trade_no = trade_no; model.trade_status = trade_status; model.UserOrder_Status = (int)UOrderStatus.完成; model.UserOrder_FinishTime = DateTime.Now; bool executeFlag = false; if (new BLL_UserBuyResources().GetRecordCount(string.Format("UserId='{0}' and Book_id='{1}' ", model.UserId, model.Book_Id)) == 0) { #region 用户购买资源表 Model_UserBuyResources buyModel = new Model_UserBuyResources(); buyModel.UserBuyResources_ID = Guid.NewGuid().ToString(); buyModel.UserId = model.UserId; buyModel.Book_id = model.Book_Id; buyModel.BookPrice = model.Book_Price; buyModel.BuyType = UserOrder_PaytoolEnum.ALIPAY.ToString(); buyModel.CreateTime = DateTime.Now; buyModel.CreateUser = "******"; #endregion executeFlag = bll.UpdateAndAddUserBuyResources(model, buyModel); } else { executeFlag = bll.Update(model); } if (executeFlag) { //try //{ // P_User userModel = new P_UserBLL().GetModel(model.user_id); // pfunction.SendSMS(userModel.moblie, "您的订单" + model.OrderNo + "已支付成功"); //} //catch //{ //} //if (new U_OrdersHandleBLL().GetRecordCount("OrderId='" + model.OrderId + "' and OperateUser='******'") == 0) //{ // pfunction.InsertOrderHandle(model.OrderId, "您已" + XHZ.Common.EnumService.GetDescription<UOrderStatus>(orderStatus), "支付接口异步回调"); //} new Rc.Cloud.BLL.BLL_clsAuth().AddLogFromBS(Request.Url.ToString(), string.Format("支付宝回调。购买资源成功,购买人:{0},资源标识:{1}" , model.UserId, model.Book_Id)); Response.Write("success"); //请不要修改或删除 } } #endregion ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
public void Notify() { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 var account = Request.Form["total_fee"]; string ordercode = ""; /*if (!string.IsNullOrWhiteSpace(Request.Form["body"])) { ordercode = Request.Form["body"];//优惠码 }*/ string id = Request.Form["extra_common_param"];//传回的商品id和采购数量 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS") { if (订单管理.计数订单(0, 0, Query<订单>.Where(m => m.Id == long.Parse(id))) != 0) { 订单 model = 订单管理.查找订单(long.Parse(id)); if (!model.已付款) { /*if (优惠码管理.计数优惠码(0, 0, Query<优惠码>.Where(m => m.Code == ordercode&&m.已使用==false))>0) { model.使用优惠码 = true; 优惠码 yh=优惠码管理.查询优惠码(0, 0, Query<优惠码>.Where(m => m.已使用 == false && m.Code == ordercode)).First(); yh.已使用 = true; 优惠码管理.更新优惠码(yh); }*/ model.已付款 = true; 订单管理.更新订单(model); } } } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } } }
public void Notify() { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); // WriteTxt(Request.Form["notify_id"]+"\r\n" + Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 var account = Request.QueryString["total_fee"]; var 当前用户 = currentUser as 供应商; var 会员级别 = 当前用户.供应商用户信息.认证级别.ToString(); double amount = 0D; switch (会员级别) { case "军采通标准会员": switch (account) { case "2850": amount = double.Parse(account) / 0.95; break; case "5400": amount = double.Parse(account) / 0.9; break; case "8500": amount = double.Parse(account) / 0.85; break; case "16000": amount = double.Parse(account) / 0.8; break; } break; case "军采通高级会员": switch (account) { case "2700": amount = double.Parse(account) / 0.9; break; case "5100": amount = double.Parse(account) / 0.85; break; case "8000": amount = double.Parse(account) / 0.8; break; case "15000": amount = double.Parse(account) / 0.75; break; } break; default: switch (account) { case "2940": amount = double.Parse(account) * 0.98; break; case "5700": amount = double.Parse(account) * 0.95; break; case "9200": amount = double.Parse(account) * 0.92; break; case "18000": amount = double.Parse(account) * 0.9; break; } break; } var 充值记录 = new 供应商充值记录(); 充值记录.充值方式 = 充值方式.支付宝; 充值记录.充值金额 = (decimal)amount; 充值记录.充值时间 = DateTime.Now; 充值记录.供应商转款账号 = Request.QueryString["buyer_email"]; 充值记录.收款账号 = Request.QueryString["seller_email"]; 充值记录.所属供应商.用户ID = currentUser.Id; 供应商充值记录管理.添加供应商充值记录(充值记录); var 余额记录 = 供应商充值余额管理.查询供应商充值余额(0, 0, Query<供应商充值余额>.Where(o => o.所属供应商.用户ID == currentUser.Id)); if (余额记录.Count() > 0) { var model = 余额记录.First(); model.可用余额 += 充值记录.充值金额; 供应商充值余额管理.更新供应商充值余额(model); } else { var 充值余额 = new 供应商充值余额(); 充值余额.可用余额 = 充值记录.充值金额; 充值余额.所属供应商.用户ID = currentUser.Id; 供应商充值余额管理.添加供应商充值余额(充值余额); } //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS") { WriteTxt("订单号:" + out_trade_no + "交易号:" + trade_no + "交易状态:" + trade_status); } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
// 异步调用,支付宝会在24小时内多次调用,直到成功为止 public ActionResult AlipayNotify() { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 } else if (Request.Form["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } return View(); }
///// <summary> ///// ///// </summary> ///// <returns></returns> //public ActionResult notify_url() //{ // SortedDictionary<string, string> sPara = GetRequestPost(); // if (sPara.Count > 0)//判断是否有带返回参数 // { // Notify aliNotify = new Notify(); // bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); // if (verifyResult)//验证成功 // { // ///////////////////////////////////////////////////////////////////////////////////////////////////////////// // //请在这里加上商户的业务逻辑程序代码 // //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— // //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 // //商户订单号 // string out_trade_no = Request.Form["out_trade_no"]; // //支付宝交易号 // string trade_no = Request.Form["trade_no"]; // //交易状态 // string trade_status = Request.Form["trade_status"]; // if (Request.Form["trade_status"] == "TRADE_FINISHED") // { // //判断该笔订单是否在商户网站中已经做过处理 // //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // //如果有做过处理,不执行商户的业务程序 // //注意: // //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 // } // else if (Request.Form["trade_status"] == "TRADE_SUCCESS") // { // //判断该笔订单是否在商户网站中已经做过处理 // //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // //如果有做过处理,不执行商户的业务程序 // //注意: // //付款完成后,支付宝系统发送该交易状态通知 // } // else // { // } // //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— // Response.Write("success"); //请不要修改或删除 // ///////////////////////////////////////////////////////////////////////////////////////////////////////////// // } // else//验证失败 // { // Response.Write("fail"); // } // } // else // { // Response.Write("无通知参数"); // } // return View(); //} public ActionResult return_url() { SortedDictionary<string, string> sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //获取总金额 string total_fee = Request.QueryString["total_fee"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { return RedirectToAction("TradeSuccess", "ChannelEvent", new RouteValueDictionary { { "area", "Event" }, { "orderNumber", out_trade_no }}); //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 } else { Response.Write("trade_status=" + Request.QueryString["trade_status"]); } //打印页面 Response.Write("验证成功<br />"); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("验证失败"); } } else { Response.Write("无返回参数"); } return View(); }
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, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "WAIT_BUYER_PAY") {//该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 Response.Write("success"); //请不要修改或删除 } else if (Request.Form["trade_status"] == "WAIT_SELLER_SEND_GOODS") {//该判断示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 Response.Write("success"); //请不要修改或删除 } else if (Request.Form["trade_status"] == "WAIT_BUYER_CONFIRM_GOODS") {//该判断表示卖家已经发了货,但买家还没有做确认收货的操作 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 Response.Write("success"); //请不要修改或删除 } else if (Request.Form["trade_status"] == "TRADE_FINISHED") {//该判断表示买家已经确认收货,这笔交易完成 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 Response.Write("success"); //请不要修改或删除 } else { Response.Write("success"); //其他状态判断。 } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
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, Request.Form["notify_id"], Request.Form["sign"]); //TODO: //上线需要verifyResult==true if (!verifyResult)//验证成功 { ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; if (Request.Form["trade_status"] == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 } else if (Request.Form["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 } else { } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— try { //更新自己数据库的订单语句,请自己填写一下 string SOsysno = Request.Form["out_trade_no"]; int sosysno = Int32.Parse(SOsysno); if (NetPayManager.GetInstance().IsPayedForAlipay(sosysno)) { Response.Write("fail"); return; } SOInfo order = SaleManager.GetInstance().LoadSOMaster(sosysno); if (order != null) { NetPayInfo netpay = new NetPayInfo(); netpay.SOSysNo = Int32.Parse(SOsysno); netpay.PayTypeSysNo = order.PayTypeSysNo; netpay.InputTime = DateTime.Now; netpay.Source = (int)AppEnum.NetPaySource.Bank; netpay.PayAmount = decimal.Parse(Request.Form["total_fee"]); netpay.Status = (int)AppEnum.NetPayStatus.Origin; //netpay.Note = Request.QueryString["msg"]; NetPayManager.GetInstance().Insert(netpay); if (netpay.PayAmount >= order.GetTotalAmt()) { //客人通过网上支付后,自动修改订单状态为已付款,默认为ias审核,userSysNo=33 NetPayManager.GetInstance().Verify(netpay.SysNo, 33); Response.Write("success"); } else { Response.Write("success"); } } else { Response.Write("fail"); } } catch { Response.Write("fail"); } } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }