using System.Threading.Tasks; using Essensoft.AspNetCore.Payment.LianLianPay; using Essensoft.AspNetCore.Payment.LianLianPay.Notify; using Essensoft.AspNetCore.Payment.LianLianPay.Request; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using WebApplicationSample.Models; namespace WebApplicationSample.Controllers { public class LianLianPayController : Controller { private readonly ILianLianPayClient _client; private readonly ILianLianPayNotifyClient _notifyClient; private readonly IOptions _optionsAccessor; public LianLianPayController(ILianLianPayClient client, ILianLianPayNotifyClient notifyClient, IOptions optionsAccessor) { _client = client; _notifyClient = notifyClient; _optionsAccessor = optionsAccessor; } /// /// 连连支付指引页 /// /// public IActionResult Index() { return View(); } /// /// WEB快捷支付 /// /// [HttpGet] public IActionResult WebQuickPay() { return View(); } /// /// WEB快捷支付 /// /// /// [HttpPost] public async Task WebQuickPay(LianLianPayWebQuickPayViewModel viewModel) { var request = new LianLianPayCreateBillRequest { UserId = viewModel.UserId, NoOrder = viewModel.NoOrder, DtOrder = viewModel.DtOrder, NameGoods = viewModel.NameGoods, MoneyOrder = viewModel.MoneyOrder, NotifyUrl = viewModel.NotifyUrl, UrlReturn = viewModel.UrlReturn, RiskItem = viewModel.RiskItem, FlagPayProduct = "0", FlagChnl = "2" }; var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); return Redirect(response.GatewayUrl); } /// /// H5快捷支付 /// /// [HttpGet] public IActionResult H5QuickPay() { return View(); } /// /// H5快捷支付 /// /// /// [HttpPost] public async Task H5QuickPay(LianLianPayH5QuickPayViewModel viewModel) { var request = new LianLianPayCreateBillRequest { UserId = viewModel.UserId, NoOrder = viewModel.NoOrder, DtOrder = viewModel.DtOrder, NameGoods = viewModel.NameGoods, MoneyOrder = viewModel.MoneyOrder, NotifyUrl = viewModel.NotifyUrl, UrlReturn = viewModel.UrlReturn, RiskItem = viewModel.RiskItem, FlagPayProduct = "0", FlagChnl = "3" }; var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); return Redirect(response.GatewayUrl); } /// /// 订单查询 /// /// [HttpGet] public IActionResult OrderQuery() { return View(); } /// /// 订单查询 /// /// /// [HttpPost] public async Task OrderQuery(LianLianPayOrderQueryViewModel viewModel) { var request = new LianLianPayOrderQueryRequest { NoOrder = viewModel.NoOrder, DtOrder = viewModel.DtOrder, OidPayBill = viewModel.OidPayBill }; var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 退款 /// /// [HttpGet] public IActionResult Refund() { return View(); } /// /// 退款 /// /// /// [HttpPost] public async Task Refund(LianLianPayRefundViewModel viewModel) { var request = new LianLianPayRefundRequest { NoRefund = viewModel.NoRefund, DtRefund = viewModel.DtRefund, MoneyRefund = viewModel.MoneyRefund, NoOrder = viewModel.NoOrder, DtOrder = viewModel.DtOrder, OidPaybill = viewModel.OidPayBill, NotifyUrl = viewModel.NotifyUrl }; var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 退款查询 /// /// [HttpGet] public IActionResult RefundQuery() { return View(); } /// /// 退款查询 /// /// /// [HttpPost] public async Task RefundQuery(LianLianPayRefundQueryViewModel viewModel) { var request = new LianLianPayRefundQueryRequest { NoRefund = viewModel.NoRefund, DtRefund = viewModel.DtRefund, OidRefundNo = viewModel.OidRefundNo }; var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 快捷支付 - 同步跳转 /// /// [HttpPost] public async Task QuickPayReturn() { try { var notify = await _notifyClient.ExecuteAsync(Request, _optionsAccessor.Value); ViewData["response"] = "支付成功"; return View(); } catch { ViewData["response"] = "出现错误"; return View(); } } } }