// GET: /WeChat/FourthPay/ResultNotifyPage/ public ActionResult ResultNotifyPage(PayResponse result) { var redirectAction = ""; //检查支付结果中transaction_id是否存在 string transaction_id = result.mercOrderId; if (transaction_id.HasValue()) { //1.开始处理 var chargePayOrder = _accountPayService.FindPayOrder(transaction_id); if (chargePayOrder != null) { chargePayOrder.ToNextState(transaction_id); _accountPayService.SyncPayOrder(chargePayOrder); if (result.Successful && chargePayOrder.IsValid(transaction_id)) { //防止重复处理 if (!chargePayOrder.IsEnd) { chargePayOrder.ToNextState(); //2.同步支付订单 _accountPayService.SyncPayOrder(chargePayOrder); } redirectAction = "ChargeOK"; } else { redirectAction = "ChargeFailed"; } } } else { //若transaction_id不存在,则立即返回结果给微信支付后台 //Log.Error(this.GetType().ToString(), "The Pay result is error : " + res.ToXml()); redirectAction = "ChargeFailed"; } return(RedirectToAction(redirectAction)); }
public void 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"]; //1.开始处理 var chargePayOrder = _accountPayService.FindPayOrder(out_trade_no); chargePayOrder.Pending(trade_no); if (Request.Form["trade_status"] == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 //如果有做过处理,不执行商户的业务程序 //注意: //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 if (chargePayOrder.IsValid(trade_no)) { chargePayOrder.Finished(); //2.同步支付订单 _accountPayService.SyncPayOrder(chargePayOrder); } else { //忽略 } } else if (Request.Form["trade_status"] == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 //如果有做过处理,不执行商户的业务程序 //注意: //付款完成后,支付宝系统发送该交易状态通知 if (chargePayOrder.IsValid(trade_no)) { chargePayOrder.Successful(); //2.同步支付订单 _accountPayService.SyncPayOrder(chargePayOrder); } else { //忽略 } } else { if (chargePayOrder.IsValid(trade_no)) { chargePayOrder.Pending(trade_no); //2.同步支付订单 _accountPayService.SyncPayOrder(chargePayOrder); } } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— Response.Write("success"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }
// GET: /WeChat/WeChatPay/ResultNotifyPage/ public void ResultNotifyPage() { var redirectAction = ""; var res = new WxPayData <Qx.Account.Configs.Setting.WxPayConfig.Sports>(); var appid = RequstParam["appid"]; var attach = RequstParam["attach"]; var bank_type = RequstParam["bank_type"]; var cash_fee = RequstParam["cash_fee"]; var fee_type = RequstParam["fee_type"]; var is_subscribe = RequstParam["is_subscribe"]; var mch_id = RequstParam["mch_id"]; var nonce_str = RequstParam["nonce_str"]; var openid = RequstParam["openid"]; var out_trade_no = RequstParam["out_trade_no"]; var result_code = RequstParam["result_code"]; var return_code = RequstParam["return_code"]; var sign = RequstParam["sign"]; var time_end = RequstParam["time_end"]; var total_fee = RequstParam["total_fee"]; var transaction_id = RequstParam["transaction_id"]; //检查支付结果中transaction_id是否存在 if (transaction_id.HasValue() && out_trade_no.HasValue()) { //1.开始处理 var chargePayOrder = _accountPayService.FindPayOrder(out_trade_no); if (chargePayOrder != null) { chargePayOrder.ToNextState(transaction_id); _accountPayService.SyncPayOrder(chargePayOrder); if (result_code.ToUpper().Contains("SUCCESS") && return_code.ToUpper().Contains("SUCCESS") && chargePayOrder.IsValid(transaction_id)) { //防止重复处理 if (!chargePayOrder.IsEnd) { chargePayOrder.ToNextState(); //2.同步支付订单 _accountPayService.SyncPayOrder(chargePayOrder); //3.发送成功通知 //var url = "http://wx.52xyj.cn/WeChat/BookTiketWeb/MyWallet"; //var acc = _accountPayService.FindAccount(openid); //_wechatServices.Send_Charge_Ok_Msg(openid, url, // acc.Account.LastUpdateTime.ToStr(), // (int.Parse(total_fee)/100.0)+"元", // (acc.Account.Balance/100.0) + "元"); } res.SetValue("return_code", "SUCCESS"); res.SetValue("return_msg", "OK"); //Log.Info(this.GetType().ToString(), "order query success : " + res.ToXml()); redirectAction = "ChargeOK"; } else { // chargePayOrder.Failed(); // _accountPayService.SyncPayOrder(chargePayOrder); res.SetValue("return_code", "FAIL"); res.SetValue("return_msg", "订单查询失败"); // Log.Error(this.GetType().ToString(), "Order query failure : " + res.ToXml()); redirectAction = "ChargeFailed"; } } } else { //若transaction_id不存在,则立即返回结果给微信支付后台 res.SetValue("return_code", "FAIL"); res.SetValue("return_msg", "支付结果中微信订单号不存在"); //Log.Error(this.GetType().ToString(), "The Pay result is error : " + res.ToXml()); redirectAction = "ChargeFailed"; } // Response.Write(res.ToXml()); // Response.End(); var resultNotify = new ResultNotify <Qx.Account.Configs.Setting.WxPayConfig.Sports>(HttpContext); resultNotify.ProcessNotify(); // return RedirectToAction(redirectAction, "BookTiketWeb", new { transaction_id = transaction_id }); }
// /Demo/TestPay public ActionResult TestPay() { const string DEMO_ACCOUNT_ONE = "plate-alipay"; const string DEMO_ACCOUNT_TWO = "test-panda"; const string DEMO_ORDER = "10385-14093-8587258378306281019-10385-14093-8587258377194947454-8587258371564275398"; const string DEMO_ALIPAY_ID = "123456415645121346313548454"; ////1.创建账户 //var account = _accountPayService.CreateAccount(DataContext, AccountTypeEnum.Personal); ////2.改变账户类型 //account.ChangeType(AccountTypeEnum.Orgnization); ////3.为账户充值 //account.Charge(1000); ////4.账户消费 //account.Expense(200); ////5.同步账户 //_accountPayService.SyncAccount(account); //6.查找账户 var payer = _accountPayService.FindAccount(DEMO_ACCOUNT_ONE); var recever = _accountPayService.FindAccount(DEMO_ACCOUNT_TWO); ////7.删除账户 //_accountPayService.DeleteAccount(DEMO_ACCOUNT_TWO); //8.账户支付记录 var payerRecords = payer.Account.account_record; //1.创建支付订单 var payOrder = _accountPayService.CreatePayOrder(payer, recever, 100, PayOrderTypeEnum.Nomal, PaymentTypeEnum.Jkb); //2.订单支付 payOrder.Successful(); //3.同步支付订单 _accountPayService.SyncPayOrder(payOrder); //4.查找支付订单 var findPayOrder = _accountPayService.FindPayOrder(DEMO_ORDER); ////5.删除支付订单 //_accountPayService.DeletePayOrder(DEMO_ORDER); const string DEMO_CHARGE_ACCOUNT = "test-panda"; const string PLATE_ALIPAY_ACCOUNT = "plate-alipay"; //1.创建支付订单 var chargePayOrder = _accountPayService.CreatePayOrder(PLATE_ALIPAY_ACCOUNT, DEMO_CHARGE_ACCOUNT, 1000, PayOrderTypeEnum.AliPay, PaymentTypeEnum.Rmb); _accountPayService.SyncPayOrder(chargePayOrder); //2.订单支付激活 chargePayOrder.Pending(DEMO_ALIPAY_ID); _accountPayService.SyncPayOrder(chargePayOrder); //3.订单验证并付款 if (chargePayOrder.IsValid(DEMO_ALIPAY_ID)) { chargePayOrder.Successful(); } else { //忽略 } _accountPayService.SyncPayOrder(chargePayOrder); //4.订单验证并结束 if (chargePayOrder.IsValid(DEMO_ALIPAY_ID)) { chargePayOrder.Finished(); } else { //忽略 } _accountPayService.SyncPayOrder(chargePayOrder); //5.同步支付订单 // _accountPayService.SyncPayOrder(chargePayOrder); return(Alert("测试成功!")); }