| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 | using System.Threading.Tasks;using Essensoft.AspNetCore.Payment.QPay;using Essensoft.AspNetCore.Payment.QPay.Request;using Essensoft.AspNetCore.Payment.Security;using Microsoft.AspNetCore.Mvc;using Microsoft.Extensions.Options;using WebApplicationSample.Models;namespace WebApplicationSample.Controllers{    public class QPayController : Controller    {        private readonly IQPayClient _client;        private readonly IOptions<QPayOptions> _optionsAccessor;        public QPayController(IQPayClient client, IOptions<QPayOptions> optionsAccessor)        {            _client = client;            _optionsAccessor = optionsAccessor;        }        /// <summary>        /// QQ钱包指引页        /// </summary>        /// <returns></returns>        public IActionResult Index()        {            return View();        }        /// <summary>        /// 付款码支付        /// </summary>        /// <returns></returns>        [HttpGet]        public IActionResult MicroPay()        {            return View();        }        /// <summary>        /// 付款码支付        /// </summary>        /// <param name="viewModel"></param>        /// <returns></returns>        [HttpPost]        public async Task<IActionResult> MicroPay(QPayMicroPayViewModel viewModel)        {            var request = new QPayMicroPayRequest            {                OutTradeNo = viewModel.OutTradeNo,                Body = viewModel.Body,                FeeType = viewModel.FeeType,                TotalFee = viewModel.TotalFee,                SpBillCreateIp = viewModel.SpBillCreateIp,                DeviceInfo = viewModel.DeviceInfo,                AuthCode = viewModel.AuthCode,                TradeType = viewModel.TradeType,                NotifyUrl = viewModel.NotifyUrl            };            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);            ViewData["response"] = response.ResponseBody;            return View();        }        /// <summary>        /// 扫码支付        /// </summary>        /// <returns></returns>        [HttpGet]        public IActionResult QrCodePay()        {            return View();        }        /// <summary>        /// 扫码支付        /// </summary>        /// <param name="viewModel"></param>        /// <returns></returns>        [HttpPost]        public async Task<IActionResult> QrCodePay(QPayUnifiedOrderViewModel viewModel)        {            var request = new QPayUnifiedOrderRequest            {                OutTradeNo = viewModel.OutTradeNo,                Body = viewModel.Body,                FeeType = viewModel.FeeType,                TotalFee = viewModel.TotalFee,                SpBillCreateIp = viewModel.SpBillCreateIp,                TradeType = viewModel.TradeType,                NotifyUrl = viewModel.NotifyUrl            };            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);            ViewData["qrcode"] = response.CodeUrl;            ViewData["response"] = response.ResponseBody;            return View();        }        /// <summary>        /// 公众号支付        /// </summary>        /// <returns></returns>        [HttpGet]        public IActionResult PubPay()        {            return View();        }        /// <summary>        /// 公众号支付        /// </summary>        /// <param name="viewModel"></param>        /// <returns></returns>        [HttpPost]        public async Task<IActionResult> PubPay(QPayUnifiedOrderViewModel viewModel)        {            var request = new QPayUnifiedOrderRequest            {                OutTradeNo = viewModel.OutTradeNo,                Body = viewModel.Body,                FeeType = viewModel.FeeType,                TotalFee = viewModel.TotalFee,                SpBillCreateIp = viewModel.SpBillCreateIp,                TradeType = viewModel.TradeType,                NotifyUrl = viewModel.NotifyUrl            };            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);            ViewData["response"] = response.ResponseBody;            return View();        }        /// <summary>        /// APP支付        /// </summary>        /// <returns></returns>        [HttpGet]        public IActionResult AppPay()        {            return View();        }        /// <summary>        /// APP支付        /// </summary>        /// <param name="viewModel"></param>        /// <returns></returns>        [HttpPost]        public async Task<IActionResult> AppPay(QPayUnifiedOrderViewModel viewModel)        {            var request = new QPayUnifiedOrderRequest            {                OutTradeNo = viewModel.OutTradeNo,                Body = viewModel.Body,                FeeType = viewModel.FeeType,                TotalFee = viewModel.TotalFee,                SpBillCreateIp = viewModel.SpBillCreateIp,                TradeType = viewModel.TradeType,                NotifyUrl = viewModel.NotifyUrl            };            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);            ViewData["response"] = response.ResponseBody;            return View();        }        /// <summary>        /// 订单查询        /// </summary>        /// <returns></returns>        [HttpGet]        public IActionResult OrderQuery()        {            return View();        }        /// <summary>        /// 订单查询        /// </summary>        /// <param name="viewModel"></param>        /// <returns></returns>        [HttpPost]        public async Task<IActionResult> OrderQuery(QPayOrderQueryViewModel viewModel)        {            var request = new QPayOrderQueryRequest            {                TransactionId = viewModel.TransactionId,                OutTradeNo = viewModel.OutTradeNo            };            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);            ViewData["response"] = response.ResponseBody;            return View();        }        /// <summary>        /// 撤销订单        /// </summary>        /// <returns></returns>        [HttpGet]        public IActionResult Reverse()        {            return View();        }        /// <summary>        /// 撤销订单        /// </summary>        /// <param name="viewModel"></param>        /// <returns></returns>        [HttpPost]        public async Task<IActionResult> Reverse(QPayReverseViewModel viewModel)        {            var request = new QPayReverseRequest            {                OutTradeNo = viewModel.OutTradeNo            };            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);            ViewData["response"] = response.ResponseBody;            return View();        }        /// <summary>        /// 关闭订单        /// </summary>        /// <returns></returns>        [HttpGet]        public IActionResult CloseOrder()        {            return View();        }        /// <summary>        /// 关闭订单        /// </summary>        /// <param name="viewModel"></param>        /// <returns></returns>        [HttpPost]        public async Task<IActionResult> CloseOrder(QPayCloseOrderViewModel viewModel)        {            var request = new QPayCloseOrderRequest            {                OutTradeNo = viewModel.OutTradeNo            };            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);            ViewData["response"] = response.ResponseBody;            return View();        }        /// <summary>        /// 申请退款        /// </summary>        /// <returns></returns>        [HttpGet]        public IActionResult Refund()        {            return View();        }        /// <summary>        /// 申请退款        /// </summary>        /// <param name="viewModel"></param>        /// <returns></returns>        [HttpPost]        public async Task<IActionResult> Refund(QPayRefundViewModel viewModel)        {            var request = new QPayRefundRequest            {                OutRefundNo = viewModel.OutRefundNo,                TransactionId = viewModel.TransactionId,                OutTradeNo = viewModel.OutTradeNo,                RefundFee = viewModel.RefundFee,                OpUserId = viewModel.OpUserId,                OpUserPasswd = MD5.Compute(viewModel.OpUserPasswd).ToUpper(),            };            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);            ViewData["response"] = response.ResponseBody;            return View();        }        /// <summary>        /// 退款查询        /// </summary>        /// <returns></returns>        [HttpGet]        public IActionResult RefundQuery()        {            return View();        }        /// <summary>        /// 退款查询        /// </summary>        /// <param name="viewModel"></param>        /// <returns></returns>        [HttpPost]        public async Task<IActionResult> RefundQuery(QPayRefundQueryViewModel viewModel)        {            var request = new QPayRefundQueryRequest            {                RefundId = viewModel.RefundId,                OutRefundNo = viewModel.OutRefundNo,                TransactionId = viewModel.TransactionId,                OutTradeNo = viewModel.OutTradeNo            };            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);            ViewData["response"] = response.ResponseBody;            return View();        }        /// <summary>        /// 对账单下载        /// </summary>        /// <returns></returns>        [HttpGet]        public IActionResult StatementDown()        {            return View();        }        /// <summary>        /// 对账单下载        /// </summary>        /// <param name="viewModel"></param>        /// <returns></returns>        [HttpPost]        public async Task<IActionResult> StatementDown(QPayStatementDownViewModel viewModel)        {            var request = new QPaySpDownloadStatementDownRequest            {                BillDate = viewModel.BillDate,                BillType = viewModel.BillType,                TarType = viewModel.TarType            };            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);            ViewData["response"] = response.ResponseBody;            return View();        }        /// <summary>        /// 企业付款        /// </summary>        /// <returns></returns>        [HttpGet]        public IActionResult B2CPay()        {            return View();        }        /// <summary>        /// 企业付款        /// </summary>        /// <param name="viewModel"></param>        /// <returns></returns>        [HttpPost]        public async Task<IActionResult> B2CPay(QPayB2CPayViewModel viewModel)        {            var request = new QPayEPayB2CRequest            {                OpenId = viewModel.OpenId,                Uin = viewModel.Uin,                OutTradeNo = viewModel.OutTradeNo,                TotalFee = viewModel.TotalFee,                Memo = viewModel.Memo,                CheckRealName = viewModel.CheckRealName,                OpUserId = viewModel.OpUserId,                OpUserPasswd = MD5.Compute(viewModel.OpUserPasswd).ToUpper(),                SpBillCreateIp = viewModel.SpBillCreateIp,                NotifyUrl = viewModel.NotifyUrl,            };            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);            ViewData["response"] = response.ResponseBody;            return View();        }    }}
 |