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 { /// <summary> /// 订单相关接口 /// </summary> [RoutePrefix("api/order")] public class OrderController : ApiController { private readonly IOrderService _orderService; private readonly ILog4NetHelper _log4NetHelper; /// <summary> /// /// </summary> /// <param name="orderService"></param> /// <param name="log4NetHelper"></param> public OrderController(IOrderService orderService, ILog4NetHelper log4NetHelper) { _orderService = orderService; _log4NetHelper = log4NetHelper; } /// <summary> /// 下单 /// </summary> /// <param name="req"></param> /// <returns></returns> [HttpPost] [Route("")] public ApiResult<OrderResponseDto> Order(OrderRequestDto req) { return _orderService.Order(req); } /// <summary> /// 获取待烧烤的商品列表 /// </summary> /// <returns></returns> [HttpGet] [Route("queueorders")] public ApiResult<List<QueueOrderResponseDto>> GetQueueOrders() { return _orderService.GetQueueOrders(); } /// <summary> /// 取消未支付订单 /// </summary> /// <returns></returns> [HttpPut] [Route("cancelunpayorder/{orderId}")] public ApiResult CancelUnPayOrder(string orderId) { return _orderService.CancelUnPayOrder(orderId); } /// <summary> /// 回写流程状态 /// </summary> /// <param name="req"></param> /// <returns></returns> [HttpPost] [Route("orderprocess")] public ApiResult OrderProcess(OrderProcessRequestDto req) { return _orderService.OrderProcess(req); } /// <summary> /// 支付跳转地址 /// </summary> /// <returns></returns> [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); } /// <summary> /// 支付宝支付回写(已测试好,勿动) /// </summary> /// <returns></returns> [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; } /// <summary> /// 申请退款 /// </summary> /// <returns></returns> [HttpPut] [Route("orderrefund/{orderId}")] public ApiResult OrderRefund(string orderId) { return _orderService.OrderRefund(orderId); } /// <summary> /// 轮询查询退款信息,并更新订单的退款记录 /// </summary> /// <returns></returns> [HttpGet] [Route("orderrefundloop")] public ApiResult OrderRefundLoop() { return _orderService.OrderRefundLoop(); } /// <summary> /// 支付测试 /// </summary> /// <returns></returns> [HttpGet] [Route("paytest")] public ApiResult<AlipayF2FPrecreateResult> PayTest() { return _orderService.PayTest(); } /// <summary> /// app设备测试 /// </summary> /// <returns></returns> [AllowAnonymous] [HttpGet] [Route("appdevicetest")] public HttpResponseMessage AppDeviceTest() { string userAgent = HttpContext.Current.Request.UserAgent; ; string result = ""; if (userAgent.ToLower().Contains("micromessenger")) { result = $"<h1>我是微信:{userAgent}</h1>"; } else if (userAgent.ToLower().Contains("alipayclient")) { result = $"<h1>我是支付宝:{userAgent}</h1>"; } else { result = $"<h1>请用微信或者支付宝扫码支付:{userAgent}</h1>"; } HttpResponseMessage responseMessage = new HttpResponseMessage { Content = new StringContent(result, Encoding.GetEncoding("UTF-8"), "text/html") }; return responseMessage; } /// <summary> /// app设备测试 /// </summary> /// <returns></returns> [AllowAnonymous] [HttpGet] [Route("selftest")] public ApiResult selftest(int v1,int v2) { var ss = v1 / v2; var sss = v1 % v2; return new ApiResult() { Message = $"/{ss}|%{sss}" }; } } }