using Ant.Core.Utils; using Ant.Core.WebApi.Enum; using Ant.Core.WebApi.Model; using Central.Control.WebApi.Config; using Central.Control.WebApi.Log4net; using Central.Control.WebApi.Models.Request; using Central.Control.WebApi.Models.Response; using Central.Control.WebApi.Service.Interface; using Com.Alipay.Business; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.IO; using System.Linq; using System.Net.Http; using System.Text; using System.Web; using System.Web.Http; using System.Web.Http.Results; namespace Central.Control.WebApi.Controllers { /// /// 订单相关接口 /// [RoutePrefix("api/order")] public class OrderController : ApiController { private readonly IOrderService _orderService; private readonly ILog4NetHelper _log4NetHelper; /// /// /// /// /// public OrderController(IOrderService orderService, ILog4NetHelper log4NetHelper) { _orderService = orderService; _log4NetHelper = log4NetHelper; } /// /// 下单 /// /// /// [HttpPost] [Route("")] public ApiResult Order(OrderRequestDto req) { return _orderService.Order(req); } /// /// 根据id获取商品信息 /// /// /// [HttpGet] [Route("queryorder/{orderId}")] public ApiResult GetQueueOrder(string orderId) { return _orderService.GetQueueOrder(orderId); } /// /// 获取待烧烤的商品列表 /// /// [HttpGet] [Route("queueorders")] public ApiResult> GetQueueOrders() { return _orderService.GetQueueOrders(); } /// /// 取消未支付订单 /// /// [HttpPut] [Route("cancelunpayorder/{orderId}")] public ApiResult CancelUnPayOrder(string orderId) { return _orderService.CancelUnPayOrder(orderId); } /// /// 回写订单制作过程记录 /// /// /// [HttpPost] [Route("orderprocess")] public ApiResult OrderProcess(OrderProcessRequestDto req) { return _orderService.OrderProcess(req); } /// /// 支付跳转地址 /// /// [AllowAnonymous] [HttpGet] [Route("payredirect/{id}")] public RedirectResult PayRedirect(string id) { string userAgent = HttpContext.Current.Request.UserAgent; string redirectUrl = "http://api.rgtech.ltd/html/errorpaydevice.html"; if (userAgent.ToLower().Contains("micromessenger")) { // 微信处理 微信支付暂接入所以暂时不管 } else if (userAgent.ToLower().Contains("alipayclient")) { // 支付宝处理 redirectUrl = _orderService.AliPayProcess(id); } return this.Redirect(redirectUrl); } /// /// 支付宝支付回写(已测试好,勿动) /// /// [AllowAnonymous] [HttpPost] [Route("alipaynotify")] public HttpResponseMessage AliPayNotify() { var result = _orderService.AliPayNotify(); HttpResponseMessage responseMessage = new HttpResponseMessage { Content = new StringContent(result, Encoding.GetEncoding("UTF-8"), "text/plain") }; return responseMessage; } /// /// 申请退款 /// /// [AllowAnonymous] [HttpPut] [Route("orderrefund/{orderId}")] public ApiResult OrderRefund(string orderId, string token) { #region 验证token string stringForHash = $"{orderId}|{WebSystemAccessConfig.Sign}"; string hash = MD5Helper.MD5Hash(stringForHash); if (string.Compare(token, hash, true) != 0) { return new ApiResult(ApiStatusCode.Forbidden, "认证不通过"); } #endregion return _orderService.OrderRefund(orderId); } /// /// 轮询查询退款信息,并更新订单的退款记录 /// /// [HttpGet] [Route("orderrefundloop")] public ApiResult OrderRefundLoop() { return _orderService.OrderRefundLoop(); } /// /// 支付测试 /// /// [HttpGet] [Route("paytest")] public ApiResult PayTest() { return _orderService.PayTest(); } /// /// app设备测试 /// /// [AllowAnonymous] [HttpGet] [Route("appdevicetest")] public HttpResponseMessage AppDeviceTest() { string userAgent = HttpContext.Current.Request.UserAgent; ; string result = ""; if (userAgent.ToLower().Contains("micromessenger")) { result = $"

我是微信:{userAgent}

"; } else if (userAgent.ToLower().Contains("alipayclient")) { result = $"

我是支付宝:{userAgent}

"; } else { result = $"

请用微信或者支付宝扫码支付:{userAgent}

"; } HttpResponseMessage responseMessage = new HttpResponseMessage { Content = new StringContent(result, Encoding.GetEncoding("UTF-8"), "text/html") }; return responseMessage; } /// /// 支付宝退款查询 /// /// /// [AllowAnonymous] [HttpGet] [Route("tradeQuery")] public AlipayF2FQueryResult tradeQuery(string orderId) { return _orderService.tradeQuery(orderId); } } }