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