mi-assessment/server/MiAssessment/src/MiAssessment.Core/Interfaces/IWechatService.cs
2026-02-03 14:25:01 +08:00

169 lines
4.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using MiAssessment.Model.Models.Auth;
using MiAssessment.Model.Models.Payment;
namespace MiAssessment.Core.Interfaces;
/// <summary>
/// 微信服务接口
/// </summary>
public interface IWechatService
{
/// <summary>
/// 获取微信openid和unionid
/// </summary>
/// <param name="code">微信授权code</param>
/// <returns>微信认证结果</returns>
Task<WechatAuthResult> GetOpenIdAsync(string code);
/// <summary>
/// 获取微信授权的手机号
/// </summary>
/// <param name="code">微信授权code</param>
/// <returns>微信手机号结果</returns>
Task<WechatMobileResult> GetMobileAsync(string code);
/// <summary>
/// 获取小程序接口调用凭证access_token
/// </summary>
/// <param name="appId">小程序AppId可选不传则使用默认配置</param>
/// <returns>access_token失败返回null</returns>
Task<string?> GetAccessTokenAsync(string? appId = null);
/// <summary>
/// 创建支付订单(原生微信支付)
/// </summary>
/// <param name="request">支付请求</param>
/// <returns>支付结果,包含前端调用 uni.requestPayment 所需的参数</returns>
Task<CreatePayResult> CreatePayOrderAsync(CreatePayRequest request);
}
/// <summary>
/// 创建支付请求
/// </summary>
public class CreatePayRequest
{
/// <summary>
/// 用户ID
/// </summary>
public int UserId { get; set; }
/// <summary>
/// 用户OpenId
/// </summary>
public string OpenId { get; set; } = string.Empty;
/// <summary>
/// 支付金额(元)
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// 商品标题
/// </summary>
public string Title { get; set; } = string.Empty;
/// <summary>
/// 附加数据(订单类型)
/// </summary>
public string Attach { get; set; } = string.Empty;
/// <summary>
/// 订单号前缀
/// </summary>
public string Prefix { get; set; } = "MH_";
}
/// <summary>
/// 创建支付结果
/// </summary>
public class CreatePayResult
{
/// <summary>
/// 状态1=成功0=失败
/// </summary>
public int Status { get; set; }
/// <summary>
/// 错误消息
/// </summary>
public string? Message { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string OrderNo { get; set; } = string.Empty;
/// <summary>
/// 支付参数(返回给前端,用于调用 uni.requestPayment
/// </summary>
public NativePayParams? Res { get; set; }
}
/// <summary>
/// 原生微信支付参数(用于 uni.requestPayment
/// </summary>
public class NativePayParams
{
/// <summary>
/// 小程序AppId
/// </summary>
public string AppId { get; set; } = string.Empty;
/// <summary>
/// 时间戳(秒)
/// </summary>
public string TimeStamp { get; set; } = string.Empty;
/// <summary>
/// 随机字符串
/// </summary>
public string NonceStr { get; set; } = string.Empty;
/// <summary>
/// 统一下单接口返回的 prepay_id格式prepay_id=xxx
/// </summary>
public string Package { get; set; } = string.Empty;
/// <summary>
/// 签名类型
/// </summary>
public string SignType { get; set; } = "MD5";
/// <summary>
/// 签名
/// </summary>
public string PaySign { get; set; } = string.Empty;
}
/// <summary>
/// Web支付参数客服消息支付备用
/// </summary>
public class WebPayParams
{
/// <summary>
/// 支付数据
/// </summary>
public WebPayData? Data { get; set; }
/// <summary>
/// 请求支付URL
/// </summary>
public string RequestPay { get; set; } = string.Empty;
/// <summary>
/// 提示信息
/// </summary>
public string Tips { get; set; } = string.Empty;
}
/// <summary>
/// Web支付数据
/// </summary>
public class WebPayData
{
/// <summary>
/// 订单号
/// </summary>
public string OrderNum { get; set; } = string.Empty;
}