using Essensoft.AspNetCore.QPay; using Essensoft.AspNetCore.QPay.Request; using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; namespace WebApplicationSample.Controllers { public class QPayController : Controller { public readonly QPayClient _client = null; public readonly QPayCertificateClient _certClient = null; public QPayController(QPayClient client, QPayCertificateClient certClient) { _client = client; _certClient = certClient; } [HttpPost] public async Task UnifiedOrder(string out_trade_no, string body, int total_fee, string spbill_create_ip, string notify_url, string trade_type) { var request = new QPayUnifiedOrderRequest() { OutTradeNo = out_trade_no, Body = body, TotalFee = total_fee, SpbillCreateIp = spbill_create_ip, NotifyUrl = notify_url, TradeType = trade_type, }; var response = await _client.ExecuteAsync(request); return Ok(response.Body); } [HttpPost] public async Task OrderQuery(string transaction_id, string out_trade_no) { var request = new QPayOrderQueryRequest() { TransactionId = transaction_id, OutTradeNo = out_trade_no, }; var response = await _client.ExecuteAsync(request); return Ok(response.Body); } [HttpPost] public async Task CloseOrder(string out_trade_no) { var request = new QPayCloseOrderRequest() { OutTradeNo = out_trade_no, }; var response = await _client.ExecuteAsync(request); return Ok(response.Body); } [HttpPost] public async Task Refund(string out_refund_no, string transaction_id, string out_trade_no, int refund_fee, string op_user_id, string op_user_passwd) { var request = new QPayRefundRequest() { OutRefundNo = out_refund_no, TransactionId = transaction_id, OutTradeNo = out_trade_no, RefundFee = refund_fee, OpUserId = op_user_id, OpUserPasswd = op_user_passwd, }; var response = await _certClient.ExecuteAsync(request); return Ok(response.Body); } [HttpPost] public async Task RefundQuery(string refund_id, string out_refund_no, string transaction_id, string out_trade_no) { var request = new QPayRefundQueryRequest() { RefundId = refund_id, OutRefundNo = out_refund_no, TransactionId = transaction_id, OutTradeNo = out_trade_no, }; var response = await _client.ExecuteAsync(request); return Ok(response.Body); } } }