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;
}
///
/// 申请退款
///
///
[HttpPut]
[Route("orderrefund/{orderId}")]
public ApiResult OrderRefund(string orderId)
{
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);
}
}
}