NewGaoKaoApi/New_College.Common/Helper/WeChatPayHelper.cs

78 lines
2.8 KiB
C#

using Essensoft.AspNetCore.Payment.WeChatPay;
using Essensoft.AspNetCore.Payment.WeChatPay.Request;
using Essensoft.AspNetCore.Payment.WeChatPay.Response;
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
namespace New_College.Common.Helper
{
public class WeChatPay
{
/// <summary>
/// 订单查询
/// </summary>
/// <param name="_client"></param>
/// <param name="_optionsAccessor"></param>
/// <param name="viewModel"></param>
/// <returns></returns>
public async Task<WeChatPayOrderQueryResponse> OrderQuery(IWeChatPayClient _client,
IOptions<WeChatPayOptions> _optionsAccessor, WeChatPayOrderQuery viewModel)
{
var request = new WeChatPayOrderQueryRequest
{
TransactionId = viewModel.TransactionId,
OutTradeNo = viewModel.OutTradeNo
};
return await _client.ExecuteAsync(request, _optionsAccessor.Value);
}
/// <summary>
/// 返回微信支付链接
/// </summary>
/// <param name="viewModel"></param>
/// <returns></returns>
public static async Task<WeChatPayUnifiedOrderResponse> GetMwebUrl(IWeChatPayClient _client, IOptions<WeChatPayOptions> _optionsAccessor,
WeChatPayPayRequest viewModel)
{
var request = new WeChatPayUnifiedOrderRequest
{
Body = viewModel.Body,
OutTradeNo = viewModel.OutTradeNo,
TotalFee = viewModel.TotalFee,
SpBillCreateIp = viewModel.SpBillCreateIp,
NotifyUrl = viewModel.NotifyUrl,
TradeType = viewModel.TradeType
};
return await _client.ExecuteAsync(request, _optionsAccessor.Value);
}
/// <summary>
/// 退款
/// </summary>
/// <param name="_client"></param>
/// <param name="_optionsAccessor"></param>
/// <param name="query"></param>
/// <returns></returns>
public static async Task<WeChatPayRefundResponse> Refund(IWeChatPayClient _client, IOptions<WeChatPayOptions> _optionsAccessor,
WeChatPayRefundQuery query)
{
var request = new WeChatPayRefundRequest
{
OutRefundNo = query.OutRefundNo,
TransactionId = query.TransactionId,
OutTradeNo = query.OutTradeNo,
TotalFee = query.TotalFee,
RefundFee = query.RefundFee,
RefundDesc = query.RefundDesc,
NotifyUrl = query.NotifyUrl
};
var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
return response;
}
}
}