78 lines
2.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|