using System.Text;
using System.Threading.Tasks;
using Essensoft.AspNetCore.Payment.JDPay;
using Essensoft.AspNetCore.Payment.JDPay.Notify;
using Essensoft.AspNetCore.Payment.JDPay.Request;
using Microsoft.AspNetCore.Mvc;
using WebApplicationSample.Models;
namespace WebApplicationSample.Controllers
{
public class JDPayController : Controller
{
private readonly IJDPayClient _client;
private readonly IJDPayNotifyClient _notifyClient;
public JDPayController(IJDPayClient client, IJDPayNotifyClient notifyClient)
{
_client = client;
_notifyClient = notifyClient;
}
///
/// 京东支付指引页
///
///
public IActionResult Index()
{
return View();
}
///
/// PC在线支付
///
///
[HttpGet]
public IActionResult SaveOrderPC()
{
return View();
}
///
/// PC在线支付
///
///
///
[HttpPost]
public async Task SaveOrderPC(JDPaySaveOrderViewModel viewModel)
{
var request = new JDPaySaveOrderPCRequest
{
TradeNum = viewModel.TradeNum,
TradeName = viewModel.TradeName,
TradeTime = viewModel.TradeTime,
Amount = viewModel.Amount,
OrderType = viewModel.OrderType,
Currency = viewModel.Currency,
CallbackUrl = viewModel.CallbackUrl,
NotifyUrl = viewModel.NotifyUrl,
UserId = viewModel.UserId
};
var response = await _client.PageExecuteAsync(request);
return Content(response.Body, "text/html", Encoding.UTF8);
}
///
/// H5在线支付
///
///
[HttpGet]
public IActionResult SaveOrderH5()
{
return View();
}
///
/// H5在线支付
///
///
///
[HttpPost]
public async Task SaveOrderH5(JDPaySaveOrderViewModel viewModel)
{
var request = new JDPaySaveOrderH5Request
{
TradeNum = viewModel.TradeNum,
TradeName = viewModel.TradeName,
TradeTime = viewModel.TradeTime,
Amount = viewModel.Amount,
OrderType = viewModel.OrderType,
Currency = viewModel.Currency,
CallbackUrl = viewModel.CallbackUrl,
NotifyUrl = viewModel.NotifyUrl,
UserId = viewModel.UserId
};
var response = await _client.PageExecuteAsync(request);
return Content(response.Body, "text/html", Encoding.UTF8);
}
///
/// 扫码支付
///
///
[HttpGet]
public IActionResult QrCodePay()
{
return View();
}
///
/// 扫码支付
///
///
///
[HttpPost]
public async Task QrCodePay(JDPayUnifiedOrderViewModel viewModel)
{
var request = new JDPayUnifiedOrderRequest
{
TradeNum = viewModel.TradeNum,
TradeName = viewModel.TradeName,
TradeTime = viewModel.TradeTime,
Amount = viewModel.Amount,
OrderType = viewModel.OrderType,
Currency = viewModel.Currency,
NotifyUrl = viewModel.NotifyUrl,
TradeType = viewModel.TradeType
};
var response = await _client.ExecuteAsync(request);
ViewData["qrcode"] = response.QrCode;
ViewData["response"] = response.Body;
return View();
}
///
/// 交易查询接口
///
///
[HttpGet]
public IActionResult Query()
{
return View();
}
///
/// 交易查询接口
///
///
///
[HttpPost]
public async Task Query(JDPayQueryViewModel viewModel)
{
var request = new JDPayQueryRequest
{
TradeNum = viewModel.TradeNum,
OTradeNum = viewModel.OTradeNum,
TradeType = viewModel.TradeType
};
var response = await _client.ExecuteAsync(request);
ViewData["response"] = response.Body;
return View();
}
///
/// 退款申请接口
///
///
[HttpGet]
public IActionResult Refund()
{
return View();
}
///
/// 退款申请接口
///
///
///
[HttpPost]
public async Task Refund(JDPayRefundViewModel viewModel)
{
var request = new JDPayRefundRequest
{
TradeNum = viewModel.TradeNum,
OTradeNum = viewModel.OTradeNum,
Amount = viewModel.Amount,
Currency = viewModel.Currency,
NotifyUrl = viewModel.NotifyUrl
};
var response = await _client.ExecuteAsync(request);
ViewData["response"] = response.Body;
return View();
}
///
/// 退款查询接口
///
///
[HttpGet]
public IActionResult QueryRefund()
{
return View();
}
///
/// 退款查询接口
///
///
///
[HttpPost]
public async Task QueryRefund(JDPayQueryRefundViewModel viewModel)
{
var request = new JDPayQueryRefundRequest
{
TradeNum = viewModel.TradeNum,
OTradeNum = viewModel.OTradeNum,
TradeType = viewModel.TradeType
};
var response = await _client.ExecuteAsync(request);
ViewData["response"] = response.Body;
return View();
}
///
/// 代付交易请求
///
///
[HttpGet]
public IActionResult DefrayPay()
{
return View();
}
///
/// 代付交易请求
///
///
///
[HttpPost]
public async Task DefrayPay(JDPayDefrayPayViewModel viewModel)
{
var request = new JDPayDefrayPayRequest
{
RequestDatetime = viewModel.RequestDatetime,
OutTradeNo = viewModel.OutTradeNo,
BizTradeNo = viewModel.BizTradeNo,
OutTradeDate = viewModel.OutTradeDate,
TradeAmount = viewModel.TradeAmount,
TradeCurrency = viewModel.TradeCurrency,
SellerInfo = viewModel.SellerInfo,
TradeSubject = viewModel.TradeSubject,
CategoryCode = viewModel.CategoryCode,
PayTool = viewModel.PayTool,
TradeSource = viewModel.TradeSource,
PayeeBankCode = viewModel.PayeeBankCode,
PayeeBankAssociatedCode = viewModel.PayeeBankAssociatedCode,
PayeeBankFullname = viewModel.PayeeBankFullname,
PayeeBankCountryCode = viewModel.PayeeBankCountryCode,
PayeeBankProvinceCode = viewModel.PayeeBankProvinceCode,
PayeeBankCityCode = viewModel.PayeeBankCityCode,
PayeeCardType = viewModel.PayeeCardType,
PayeeAccountType = viewModel.PayeeAccountType,
PayeeAccountNo = viewModel.PayeeAccountNo,
PayeeAccountName = viewModel.PayeeAccountName,
PayeeIdType = viewModel.PayeeIdType,
PayeeIdNo = viewModel.PayeeIdNo,
PayeeMobile = viewModel.PayeeMobile,
NotifyUrl = viewModel.NotifyUrl,
ReturnParams = viewModel.ReturnParams,
ExtendParams = viewModel.ExtendParams,
BankCardInfoType = viewModel.BankCardInfoType,
BankCardId = viewModel.BankCardId
};
var response = await _client.ExecuteAsync(request);
ViewData["response"] = response.Body;
return View();
}
///
/// 代付交易查询
///
///
[HttpGet]
public IActionResult TradeQuery()
{
return View();
}
///
/// 代付交易查询
///
///
///
[HttpPost]
public async Task TradeQuery(JDPayTradeQueryViewModel viewModel)
{
var request = new JDPayTradeQueryRequest
{
RequestDatetime = viewModel.RequestDatetime,
OutTradeNo = viewModel.OutTradeNo,
TradeNo = viewModel.TradeNo,
TradeType = viewModel.TradeType
};
var response = await _client.ExecuteAsync(request);
ViewData["response"] = response.Body;
return View();
}
///
/// PC在线支付 / H5在线支付
/// pc post / h5 get
///
///
[HttpGet]
[HttpPost]
public async Task Return()
{
try
{
var notify = await _notifyClient.ExecuteAsync(Request);
ViewData["response"] = "支付成功";
return View();
}
catch
{
ViewData["response"] = "出现错误";
return View();
}
}
}
}