/// <summary> /// 微信回调 /// </summary> /// <returns></returns> public ContentResult WexinPayNotify() { ResponseHandler resHandler = new ResponseHandler(null); string return_code = resHandler.GetParameter("return_code"); string return_msg = resHandler.GetParameter("return_msg"); string res = null; //TODO:这里需要验证签名 ////验证请求是否从微信发过来(安全) logger.Info("微信回调"+resHandler.ParseXML()); //if (resHandler.IsTenpaySign()) //{ // res = "success"; // logger.Info(resHandler.ParseXML()); // //正确的订单处理 //} //else //{ // res = "wrong"; // //错误的订单处理 //} if (return_code.ToLower() == "SUCCESS".ToLower()) { OrderService.UpdateOrderPay(new OrderPayModel() { PayId = resHandler.GetParameter("prepay_id"), Status = 1 }); } res = "success"; //订单处理 string xml = string.Format(@"<xml><return_code><![CDATA[{0}]]></return_code><return_msg><![CDATA[{1}]]></return_msg></xml>", return_code, return_msg); logger.Info("微信返回值"+xml); return Content(xml, "text/xml"); }
/// <summary> /// 回调处理 /// </summary> /// <param name="wxKey">微信支付授权KEY</param> /// <param name="success"></param> /// <param name="fail"></param> /// <returns></returns> public static string ProcessNotify(string wxKey, NotifySuccess success, NotifyFail fail) { NotyfyResult result = new NotyfyResult(); ResponseHandler resHandler = new ResponseHandler(null); try { result.Content = resHandler.ParseXML(); string openid = resHandler.GetParameter("openid"); string out_trade_no = resHandler.GetParameter("out_trade_no"); string transaction_id = resHandler.GetParameter("transaction_id"); string total_fee = resHandler.GetParameter("total_fee"); result = new NotyfyResult() { Content = resHandler.ParseXML(), out_trade_no = out_trade_no, openid = openid, transaction_id = transaction_id, total_fee = total_fee, appid = resHandler.GetParameter("appid"), fee_type = resHandler.GetParameter("fee_type"), is_subscribe = resHandler.GetParameter("is_subscribe"), mch_id = resHandler.GetParameter("mch_id"), result_code = resHandler.GetParameter("result_code"), time_end = resHandler.GetParameter("time_end"), }; resHandler.SetKey(wxKey); bool signResult = resHandler.IsTenpaySign(); if (signResult) { success(result); return "success"; } else { fail(result); return "error"; } } catch (Exception ex) { result.Content = ex.Message; fail(result); return "error"; } }