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 WebApplicationSample.Models;
namespace WebApplicationSample.Controllers
{
public class QPayController : Controller
{
private readonly IQPayClient _client;
public QPayController(IQPayClient client)
{
_client = client;
}
///
/// QQ钱包指引页
///
///
public IActionResult Index()
{
return View();
}
///
/// 付款码支付
///
///
[HttpGet]
public IActionResult MicroPay()
{
return View();
}
///
/// 付款码支付
///
///
///
[HttpPost]
public async Task 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);
ViewData["response"] = response.Body;
return View();
}
///
/// 扫码支付
///
///
[HttpGet]
public IActionResult QrCodePay()
{
return View();
}
///
/// 扫码支付
///
///
///
[HttpPost]
public async Task 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);
ViewData["qrcode"] = response.CodeUrl;
ViewData["response"] = response.Body;
return View();
}
///
/// 公众号支付
///
///
[HttpGet]
public IActionResult PubPay()
{
return View();
}
///
/// 公众号支付
///
///
///
[HttpPost]
public async Task 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);
ViewData["response"] = response.Body;
return View();
}
///
/// APP支付
///
///
[HttpGet]
public IActionResult AppPay()
{
return View();
}
///
/// APP支付
///
///
///
[HttpPost]
public async Task 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);
ViewData["response"] = response.Body;
return View();
}
///
/// 订单查询
///
///
[HttpGet]
public IActionResult OrderQuery()
{
return View();
}
///
/// 订单查询
///
///
///
[HttpPost]
public async Task OrderQuery(QPayOrderQueryViewModel viewModel)
{
var request = new QPayOrderQueryRequest
{
TransactionId = viewModel.TransactionId,
OutTradeNo = viewModel.OutTradeNo
};
var response = await _client.ExecuteAsync(request);
ViewData["response"] = response.Body;
return View();
}
///
/// 撤销订单
///
///
[HttpGet]
public IActionResult Reverse()
{
return View();
}
///
/// 撤销订单
///
///
///
[HttpPost]
public async Task Reverse(QPayReverseViewModel viewModel)
{
var request = new QPayReverseRequest
{
OutTradeNo = viewModel.OutTradeNo
};
var response = await _client.ExecuteAsync(request, "qpayCertificateName");
ViewData["response"] = response.Body;
return View();
}
///
/// 关闭订单
///
///
[HttpGet]
public IActionResult CloseOrder()
{
return View();
}
///
/// 关闭订单
///
///
///
[HttpPost]
public async Task CloseOrder(QPayCloseOrderViewModel viewModel)
{
var request = new QPayCloseOrderRequest
{
OutTradeNo = viewModel.OutTradeNo
};
var response = await _client.ExecuteAsync(request);
ViewData["response"] = response.Body;
return View();
}
///
/// 关闭订单
///
///
[HttpGet]
public IActionResult Refund()
{
return View();
}
///
/// 关闭订单
///
///
///
[HttpPost]
public async Task Refund(QPayRefundViewModel viewModel)
{
var request = new QPayRefundRequest
{
OutRefundNo = viewModel.OutRefundNo,
TransactionId = viewModel.TransactionId,
OutTradeNo = viewModel.OutTradeNo,
RefundFee = viewModel.RefundFee,
OpUserId = viewModel.OpUserId,
OpUserPasswd = viewModel.OpUserPasswd
};
var response = await _client.ExecuteAsync(request, "qpayCertificateName");
ViewData["response"] = response.Body;
return View();
}
///
/// 退款查询
///
///
[HttpGet]
public IActionResult RefundQuery()
{
return View();
}
///
/// 退款查询
///
///
///
[HttpPost]
public async Task 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);
ViewData["response"] = response.Body;
return View();
}
///
/// 对账单下载
///
///
[HttpGet]
public IActionResult StatementDown()
{
return View();
}
///
/// 对账单下载
///
///
///
[HttpPost]
public async Task StatementDown(QPayStatementDownViewModel viewModel)
{
var request = new QPayStatementDownRequest
{
BillDate = viewModel.BillDate,
BillType = viewModel.BillType,
TarType = viewModel.TarType
};
var response = await _client.ExecuteAsync(request);
ViewData["response"] = response.Body;
return View();
}
///
/// 企业付款
///
///
[HttpGet]
public IActionResult B2CPay()
{
return View();
}
///
/// 企业付款
///
///
///
[HttpPost]
public async Task 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, "qpayCertificateName");
ViewData["response"] = response.Body;
return View();
}
}
}