protected void Page_Load(object sender, EventArgs e) { var obj = Session["OrderInfo"]; if (obj != null) { ordersinfo os = JsonConvert.DeserializeObject <ordersinfo>(obj.ToString()); WIDout_trade_no.Text = os.ID; WIDsubject.Text = os.OExtension; WIDtotal_fee.Text = os.Money.ToString(); WIDshow_url.Text = "http://mp.weixin.qq.com/s/latm6ZXn2Hi6yCy8oWKa5Q"; WIDbody.Text = "回馈众多Vip用户特权礼品,每人仅能领取一次!"; } }
public void AliPlay(ordersinfo os) { ////////////////////////////////////////////请求参数//////////////////////////////////////////// //商户订单号,商户网站订单系统中唯一订单号,必填 string out_trade_no = os.ID; //订单名称,必填 string subject = os.OExtension; //付款金额,必填 string total_fee = os.Money.ToString(); //收银台页面上,商品展示的超链接,必填 string show_url = "http://mp.weixin.qq.com/s/latm6ZXn2Hi6yCy8oWKa5Q"; //商品描述,可空 string body = "回馈众多Vip用户特权礼品,每人仅能领取一次!"; //////////////////////////////////////////////////////////////////////////////////////////////// //把请求参数打包成数组 SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); sParaTemp.Add("partner", Config.partner); sParaTemp.Add("seller_id", Config.seller_id); sParaTemp.Add("_input_charset", Config.input_charset.ToLower()); sParaTemp.Add("service", Config.service); sParaTemp.Add("payment_type", Config.payment_type); sParaTemp.Add("notify_url", Config.notify_url); sParaTemp.Add("return_url", Config.return_url); sParaTemp.Add("out_trade_no", out_trade_no); sParaTemp.Add("subject", subject); sParaTemp.Add("total_fee", total_fee); sParaTemp.Add("show_url", show_url); sParaTemp.Add("app_pay", "Y");//启用此参数可唤起钱包APP支付。 sParaTemp.Add("body", body); //其他业务参数根据在线开发文档,添加参数.文档地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.2Z6TSk&treeId=60&articleId=103693&docType=1 //如sParaTemp.Add("参数名","参数值"); //建立请求 string sHtmlText = Submit.BuildRequest(sParaTemp, "get", "确认"); Response.Write(sHtmlText); }
protected void Page_Load(object sender, EventArgs e) { using (SBIContext sc = new SBIContext()) { SortedDictionary <string, string> sPara = GetRequestPost(); Core.LogResult("支付宝测试log:sPara" + sPara); 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"]; string ID = trade_no; ordersinfo os = sc.ordersinfo.Where(o => o.ID == ID && o.PayStatus == 0).FirstOrDefault(); if (Request.Form["trade_status"] == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 //如果有做过处理,不执行商户的业务程序 if (os != null) { DateTime endtime = Convert.ToDateTime(os.DateTime).AddMinutes(10); DateTime now = DateTime.Now; if (now > endtime) { os.Remark = "支付超时"; sc.SaveChanges(); Core.LogResult("支付宝异步支付超时->支付失败->跳转到支付失败页面!"); Response.Write("fail"); } else { os.PayStatus = 1; sc.SaveChanges(); Core.LogResult("支付宝异步回调数据成功->支付成功->跳转到支付成功页面!"); Response.Write("success"); } } //注意: //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 } else if (Request.Form["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 //如果有做过处理,不执行商户的业务程序 if (os != null) { DateTime endtime = Convert.ToDateTime(os.DateTime).AddMinutes(10); DateTime now = DateTime.Now; if (now > endtime) { os.Remark = "支付超时"; sc.SaveChanges(); Core.LogResult("支付宝异步支付超时->支付失败->跳转到支付失败页面!"); Response.Write("fail"); } else { os.PayStatus = 1; sc.SaveChanges(); Core.LogResult("支付宝异步回调数据成功->支付成功->跳转到支付成功页面!"); Response.Write("success"); } } //注意: //付款完成后,支付宝系统发送该交易状态通知 } else { Core.LogResult("支付宝异步回调数据失败->支付状态trade_status=" + Request.Form["trade_status"]); } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Core.LogResult("支付宝异步回调数据验证失败->验证失败"); Response.Write("fail"); } } else { Core.LogResult("支付宝异步回调数据验证失败->无返回参数"); Response.Write("无通知参数"); } } }
public ActionResult OrderInfo(string UserName, string Phone, string Adress) { using (CTContext cc = new CTContext()) { var result = cc.Users.Where(o => o.UserName == Phone && o.IsVip == 1).ToList(); if (result.Count() > 0) { //生成订单ID var id = MD5Helper.getMd5Hash(Phone + DateTime.Now.ToString()); if (string.IsNullOrWhiteSpace(UserName)) { Response.Write("<script languge='javascript'>alert('名字不能为空!');</script>"); return(View()); } if (string.IsNullOrWhiteSpace(Phone)) { Response.Write("<script languge='javascript'>alert('手机号码不能为空!');</script>"); return(View()); } //电信手机号码正则 string dianxin = @"^1[3578][01379]\d{8}$"; Regex dReg = new Regex(dianxin); //联通手机号正则 string liantong = @"^1[34578][01256]\d{8}$"; Regex tReg = new Regex(liantong); //移动手机号正则 string yidong = @"^(134[012345678]\d{7}|1[34578][012356789]\d{8})$"; Regex yReg = new Regex(yidong); if (!dReg.IsMatch(Phone) && !tReg.IsMatch(Phone) && !yReg.IsMatch(Phone)) { Response.Write("<script languge='javascript'>alert('手机号码错误,请填写正确号码!');</script>"); return(View()); } if (string.IsNullOrWhiteSpace(Adress)) { Response.Write("<script languge='javascript'>alert('手机号码不能为空alert('地址不能为空!');</script>"); return(View()); } using (SBIContext sc = new SBIContext()) { try { var model = sc.ordersinfo.Where(o => o.Phone == Phone && o.PayStatus == 1).FirstOrDefault(); if (model == null) { ordersinfo os = new ordersinfo(); os.ID = id; os.Name = UserName; os.Phone = Phone; os.Adress = Adress; os.DateTime = DateTime.Now; os.Money = 0.01; os.OExtension = "茶叶运送邮费"; var obj = JsonConvert.SerializeObject(os); Session["OrderInfo"] = obj; sc.ordersinfo.Add(os); sc.SaveChanges(); AliPlay(os); } else { Response.Write("<script languge='javascript'>alert('该用户已申请过,不可重复申请!');</script>"); return(View()); } } catch (Exception e) { Session["Error"] = e.Message; Response.Redirect("default/Error"); } } return(View()); } else { Response.Write("<script languge='javascript'>alert('手机号码与注册手机号不符,请用开通VIP的账号来领取礼品!');</script>"); return(View()); } } }
protected void Page_Load(object sender, EventArgs e) { using (SBIContext sc = new SBIContext()) { 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"]; string ID = out_trade_no; ordersinfo os = sc.ordersinfo.Where(o => o.ID == ID && o.PayStatus == 0).FirstOrDefault(); if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 if (os != null) { DateTime endtime = Convert.ToDateTime(os.DateTime).AddMinutes(10); DateTime now = DateTime.Now; if (now > endtime) { os.Remark = "支付宝异步支付超时->支付失败->跳转到支付失败页面!"; sc.SaveChanges(); Core.LogResult("return:支付宝异步支付超时->支付失败->跳转到支付失败页面!"); Response.Write("fail"); } else { os.PayStatus = 1; sc.SaveChanges(); Core.LogResult("return:支付宝异步回调数据成功->支付成功->跳转到支付成功页面!"); Response.Write("success"); } } } else { Core.LogResult("return:支付宝同步回调数据验证失败->支付状态trade_status=" + Request.QueryString["trade_status"]); Response.Write("trade_status=" + Request.QueryString["trade_status"]); } //打印页面 Response.Write("验证成功<br />"); //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Core.LogResult("return:支付宝同步回调数据验证失败->验证失败"); Response.Write("验证失败"); } } else { Core.LogResult("return:支付宝同步回调数据验证失败->无返回参数"); Response.Write("无返回参数"); } } }