using System.Collections.Generic; using System.Threading.Tasks; using Essensoft.AspNetCore.Payment.WeChatPay; using Essensoft.AspNetCore.Payment.WeChatPay.Payscore.Domain; using Essensoft.AspNetCore.Payment.WeChatPay.Payscore.Request; using Essensoft.AspNetCore.Payment.WeChatPay.V3; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using WebApplicationSample.Models; namespace WebApplicationSample.Controllers { public class WeChatPayScoreController : Controller { private readonly IWeChatPayClient _client; private readonly IOptions _optionsAccessor; public WeChatPayScoreController(IWeChatPayClient client, IOptions optionsAccessor) { _client = client; _optionsAccessor = optionsAccessor; } public IActionResult Index() { return View(); } /// /// 创建支付分订单 /// public IActionResult ServiceOrder() { return View(); } /// /// 创建支付分订单 /// [HttpPost] public async Task ServiceOrder(WeChatPayScoreServiceOrderViewModel viewModel) { var model = new WeChatPayScoreServiceOrderModel { AppId = _optionsAccessor.Value.AppId, ServiceId = _optionsAccessor.Value.PayScoreServiceId, OutOrderNo = viewModel.OutOrderNo, ServiceIntroduction = viewModel.ServiceIntroduction, TimeRange = new TimeRange { StartTime = viewModel.StartTime, EndTime = viewModel.EndTime }, RiskFund = new RiskFund { Name = viewModel.RiskFundName, Amount = viewModel.RiskFundAmount }, NotifyUrl = viewModel.NotifyUrl, OpenId = viewModel.OpenId }; var request = new WeChatPayScoreServiceOrderRequest(); request.SetBodyModel(model); var response =await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 查询支付分订单 /// public IActionResult ServiceOrderQuery() { return View(); } /// /// 查询支付分订单 /// [HttpPost] public async Task ServiceOrderQuery(WeChatPayScoreServiceOrderQueryViewModel viewModel) { var model = new WeChatPayScoreServiceOrderQueryModel { AppId = _optionsAccessor.Value.AppId, ServiceId = _optionsAccessor.Value.PayScoreServiceId, OutOrderNo = viewModel.OutOrderNo, QueryId = viewModel.QueryId }; var request = new WeChatPayScoreServiceOrderQueryRequest(); request.SetQueryModel(model); var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 取消支付分订单 /// public IActionResult ServiceOrderCancel() { return View(); } /// /// 取消支付分订单 /// [HttpPost] public async Task ServiceOrderCancel(WeChatPayScoreServiceOrderCancelViewModel viewModel) { var model = new WeChatPayScoreServiceOrderCancelModel { AppId = _optionsAccessor.Value.AppId, ServiceId = _optionsAccessor.Value.PayScoreServiceId, Reason = viewModel.Reason }; var request = new WeChatPayScoreServiceOrderCancelRequest(); request.OutOrderNo = viewModel.OutOrderNo; request.SetBodyModel(model); var response = await _client.ExecuteAsync(request,_optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 修改支付分订单金额 /// public IActionResult ServiceOrderModify() { return View(); } /// /// 修改支付分订单金额 /// [HttpPost] public async Task ServiceOrderModify(WeChatPayScoreServiceOrderModifyViewModel viewModel) { var model = new WeChatPayScoreServiceOrderModifyModel { AppId = _optionsAccessor.Value.AppId, ServiceId = _optionsAccessor.Value.PayScoreServiceId, PostPayments = new List { new PostPayment{ Name = viewModel.Name, Amount = viewModel.Amount, Count = viewModel.Count } }, TotalAmount = viewModel.TotalAmount, Reason = viewModel.Reason }; var request = new WeChatPayScoreServiceOrderModifyRequest(); request.OutOrderNo = viewModel.OutOrderNo; request.SetBodyModel(model); var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 完结支付分订单 /// public IActionResult ServiceOrderComplete() { return View(); } /// /// 完结支付分订单 /// [HttpPost] public async Task ServiceOrderComplete(WeChatPayScoreServiceOrderCompleteViewModel viewModel) { var model = new WeChatPayScoreServiceOrderCompleteModel { AppId = _optionsAccessor.Value.AppId, ServiceId = _optionsAccessor.Value.PayScoreServiceId, PostPayments = new List { new PostPayment{ Name = viewModel.Name, Amount = viewModel.Amount, Count = viewModel.Count } }, TotalAmount = viewModel.TotalAmount }; var request = new WeChatPayScoreServiceOrderCompleteRequest(); request.OutOrderNo = viewModel.OutOrderNo; request.SetBodyModel(model); var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 商户发起催收扣款 /// public IActionResult ServiceOrderPay() { return View(); } /// /// 商户发起催收扣款 /// [HttpPost] public async Task ServiceOrderPay(WeChatPayScoreServiceOrderPayViewModel viewModel) { var model = new WeChatPayScoreServiceOrderPayModel { AppId = _optionsAccessor.Value.AppId, ServiceId = _optionsAccessor.Value.PayScoreServiceId }; var request = new WeChatPayScoreServiceOrderPayRequest(); request.OutOrderNo = viewModel.OutOrderNo; request.SetBodyModel(model); var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 同步服务订单信息 /// public IActionResult ServiceOrderSync() { return View(); } /// /// 同步服务订单信息 /// [HttpPost] public async Task ServiceOrderSync(WeChatPayScoreServiceOrderSyncViewModel viewModel) { var model = new WeChatPayScoreServiceOrderSyncModel { AppId = _optionsAccessor.Value.AppId, ServiceId = _optionsAccessor.Value.PayScoreServiceId, Type = viewModel.Type, Detail = new SyncDetail { PaidTime = viewModel.PaidTime } }; var request = new WeChatPayScoreServiceOrderSyncRequest(); request.OutOrderNo = viewModel.OutOrderNo; request.SetBodyModel(model); var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 创单结单合并 /// public IActionResult ServiceOrderDirectComplete() { return View(); } /// /// 创单结单合并 /// [HttpPost] public async Task ServiceOrderDirectComplete(WeChatPayScoreServiceOrderDirectCompleteViewModel viewModel) { var model = new WeChatPayScoreServiceOrderDirectCompleteModel { AppId = _optionsAccessor.Value.AppId, ServiceId = _optionsAccessor.Value.PayScoreServiceId, OutOrderNo = viewModel.OutOrderNo, ServiceIntroduction = viewModel.ServiceIntroduction, PostPayments = new List { new PostPayment{ Name = viewModel.PostPaymentName, Amount = viewModel.PostPaymentAmount, Description = viewModel.PostPaymentDescription, Count = viewModel.PostPaymentCount } }, TimeRange = new TimeRange { StartTime = viewModel.StartTime, EndTime = viewModel.EndTime }, TotalAmount = viewModel.TotalAmount, NotifyUrl = viewModel.NotifyUrl, OpenId = viewModel.OpenId }; var request = new WeChatPayScoreServiceOrderDirectCompleteRequest(); request.SetBodyModel(model); var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 商户预授权 /// public IActionResult Permissions() { return View(); } /// /// 商户预授权 /// [HttpPost] public async Task Permissions(PermissionsViewModel viewModel) { var model = new WeChatPayScorePermissionsModel { AppId = _optionsAccessor.Value.AppId, ServiceId = _optionsAccessor.Value.PayScoreServiceId, AuthorizationCode = viewModel.AuthorizationCode, NotifyUrl = viewModel.NotifyUrl }; var request = new WeChatPayScorePermissionsRequest(); request.SetBodyModel(model); var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 支付分-查询用户授权记录(授权协议号) /// public IActionResult PermissionsQueryForAuthCode() { return View(); } /// /// 支付分-查询用户授权记录(授权协议号) /// [HttpPost] public async Task PermissionsQueryForAuthCode(PermissionsQueryForAuthCodeViewModel viewModel) { var model = new WeChatPayScorePermissionsQueryForAuthCodeModel { ServiceId = _optionsAccessor.Value.PayScoreServiceId }; var request = new WeChatPayScorePermissionsQueryForAuthCodeRequest(); request.AuthorizationCode = viewModel.AuthorizationCode; request.SetQueryModel(model); var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 解除用户授权关系(授权协议号) /// public IActionResult PermissionsTerminateForAuthCode() { return View(); } /// /// 解除用户授权关系(授权协议号) /// [HttpPost] public async Task PermissionsTerminateForAuthCode(PermissionsTerminateForAuthCodeViewModel viewModel) { var model = new WeChatPayScorePermissionsTerminateForAuthCodeModel { ServiceId = _optionsAccessor.Value.PayScoreServiceId, Reason = viewModel.Reason }; var request = new WeChatPayScorePermissionsTerminateForAuthCodeRequest(); request.AuthorizationCode = viewModel.AuthorizationCode; request.SetBodyModel(model); var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 支付分-查询用户授权记录(openid) /// public IActionResult PermissionsQueryForOpenId() { return View(); } /// /// 支付分-查询用户授权记录(openid) /// [HttpPost] public async Task PermissionsQueryForOpenId(PermissionsQueryForOpenIdViewModel viewModel) { var model = new WeChatPayScorePermissionsQueryForOpenIdModel { AppId = _optionsAccessor.Value.AppId, ServiceId = _optionsAccessor.Value.PayScoreServiceId }; var request = new WeChatPayScorePermissionsQueryForOpenIdRequest(); request.OpenId = viewModel.OpenId; request.SetQueryModel(model); var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } /// /// 解除用户授权关系(OpenId) /// public IActionResult PermissionsTerminateForOpenId() { return View(); } /// /// 解除用户授权关系(OpenId) /// [HttpPost] public async Task PermissionsTerminateForOpenId(PermissionsTerminateForOpenIdViewModel viewModel) { var model = new WeChatPayScorePermissionsTerminateForOpenIdModel { AppId = _optionsAccessor.Value.AppId, ServiceId = _optionsAccessor.Value.PayScoreServiceId, Reason = viewModel.Reason }; var request = new WeChatPayScorePermissionsTerminateForOpenIdRequest(); request.OpenId = viewModel.OpenID; request.SetBodyModel(model); var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); ViewData["response"] = response.Body; return View(); } } }