using System.Web.Mvc; using Senparc.Weixin.MP.Entities.Request; using EMIS.Utility.OnlinePay; using System; using EMIS.Utility; using EMIS.CommonLogic.SystemServices; using EMIS.CommonLogic.ExaminationApply; using EMIS.ViewModel; using EMIS.ViewModel.WechatModel; using Senparc.Weixin.TenPay.V3; using System.Collections.Generic; using Bowin.Common.Log; using System.Threading; using Bowin.Common.JSON; using Senparc.Weixin.Exceptions; namespace EMIS.Web.ServiceControllers.WeChat { public class WxMpServicesController : Controller { public IWechatMPServices WechatMPServices { get; set; } public IWechatPayServices WechatPayServices { get; set; } public IExaminationSubjectServices ExaminationSubjectServices { get; set; } [HttpGet] public ActionResult EventHandler(PostModel postModel, string echostr) { return WechatHelper.EventHandler(postModel, echostr); } [HttpPost] public ActionResult PostEventHandler(PostModel postModel) { return WechatHelper.PostEventHandler(postModel); } [HttpPost] public ActionResult GetJSConfigData(string url) { try { return Json(WechatHelper.GetJSConfigData(url)); } catch (Exception ex) { throw ex; } } [HttpPost] public ActionResult GetJSPayInfo(Guid examinationRegistrationID, string openID) { var examinationRegistration = ExaminationSubjectServices.GetStudentListView(examinationRegistrationID); if (examinationRegistration == null) { return Json(new ReturnMessage() { IsSuccess = false, Message = "支付失败,找不到对应的报名信息。" }); } try { if (!string.IsNullOrEmpty(examinationRegistration.PayForm)) { return Json(new ReturnMessage { IsSuccess = true, Data = examinationRegistration.PayForm.JsonToObject() }); } else { var orderID = WechatPayServices.GetProductId(); WechatPayServices.NewPayList(examinationRegistrationID, orderID); var jsPayView = WechatHelper.JsPay(orderID, examinationRegistration.PayFee ?? 0, examinationRegistration.FeeTypeName, openID); //var jsPayView = WechatHelper.JsPay(orderID, (decimal)0.01, examinationRegistration.FeeTypeName, openID); return Json(new ReturnMessage { IsSuccess = true, Data = jsPayView }); } } catch (Exception ex) { return Json(new ReturnMessage() { IsSuccess = false, Message = "支付失败," + ex.Message }); } } [HttpPost] public ActionResult PayFail(Guid examinationRegistrationID, string payForm) { try { WechatPayServices.PayFail(examinationRegistrationID, payForm); return Json(new ReturnMessage { IsSuccess = true }); } catch (Exception ex) { return Json(new ReturnMessage { IsSuccess = false, Message = ex.Message }); } } [HttpPost] public ActionResult PayConfirm(Guid examinationRegistrationID) { try { var examinationRegistration = ExaminationSubjectServices.GetStudentListView(examinationRegistrationID); if (examinationRegistration == null) { return Json(new ReturnMessage() { IsSuccess = false, Message = "支付失败,找不到对应的报名信息,请联系系统管理员。" }); } //试试延时一下会不会准些…… Thread.Sleep(1000); //向微信发送请求,根据返回结果修改报名缴费状态 OrderQueryResult query = WechatHelper.OrderQuery(examinationRegistration.OrderID); List queryList = new List(); queryList.Add(query); WechatPayServices.UpdateWeChatPay(queryList); LogHelper.WriteDebugLog(LogType.CommmLog, "SUCESS"); return Json(new ReturnMessage { IsSuccess = true }); } catch (Exception ex) { //LogHelper.WriteDebugLog(LogType.CommmLog, ex.Message + "\n" + ex.StackTrace); return Json(new ReturnMessage { IsSuccess = false, Message = ex.Message }); } } [HttpPost] public ActionResult UploadBase64Img(string base64Image) { string filename = "";             string base64 = base64Image.Substring(base64Image.IndexOf(",") + 1); try             { var logger = NLog.LogManager.GetCurrentClassLogger(); logger.Debug("开始上传图片"); string inputStr = base64;                 byte[] arr = Convert.FromBase64String(inputStr);                 System.IO.MemoryStream ms = new System.IO.MemoryStream(arr);                 ms.Close(); filename = FileUploadHelper.UploadFile(ms, "png");             } catch (Exception ex) { var logger = NLog.LogManager.GetCurrentClassLogger(); logger.Debug(ex.Message + ex.StackTrace); } return Json(filename); } [HttpPost] public ActionResult UploadMediaID(string mediaID) { try { var logger = NLog.LogManager.GetCurrentClassLogger(); logger.Debug("开始下载图片" + mediaID); var downloadMedia = WechatHelper.DownloadMedia(mediaID); logger.Debug("返回结果" + downloadMedia); return Json(new ReturnMessage { IsSuccess = true, Message = downloadMedia }); } catch (Exception ex) { var logger = NLog.LogManager.GetCurrentClassLogger(); logger.Debug(ex.Message + ex.StackTrace); return Json(new ReturnMessage { IsSuccess = false, Message = ex.Message }); } } [HttpPost] public ActionResult GetOpenID(string code) { try { return Json(new ReturnMessage() { IsSuccess = true, Data = WechatHelper.GetOpenID(code) }); } catch (ErrorJsonResultException ex) { return Json(new ReturnMessage() { IsSuccess = false, ErrorCode = ex.JsonResult.ErrorCodeValue, Message = ex.Message }); } catch (Exception ex) { return Json(new ReturnMessage { IsSuccess = false, Message = ex.Message }); } } [HttpPost] public ActionResult GetUserInfoByOpenID(string openID) { return Json(WechatMPServices.GetUserViewByOpenID(openID)); } [HttpPost] public ActionResult UnbindOpenID(string openID) { try { WechatMPServices.UnBindOpenID(openID); return Json(new ReturnMessage() { IsSuccess = true, Message = "解除绑定成功" }); } catch (Exception ex) { return Json(new ReturnMessage() { IsSuccess = false, Message = "解除绑定失败," + ex.Message }); } } //public ActionResult UpdateWeChatPayListStatus() //{ // try // { // var wecharPayList = WechatPayServices.SearchWeChatPayList(); // List orderList = new List(); // foreach (var wecharPay in wecharPayList) // { // OrderQueryResult query = WechatHelper.OrderQuery(wecharPay.OrderID); // orderList.Add(query); // } // WechatPayServices.UpdateWeChatPay(orderList); // return Json(new ReturnMessage() // { // IsSuccess = true, // Message = "更新成功" // }); // } // catch (Exception ex) // { // return Json(new ReturnMessage() // { // IsSuccess = true, // Message = "更新失败:" + ex.Message // }); // } //} } }