using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using PaySharp.Core; using PaySharp.Core.Utils; namespace PaySharp.Wechatpay.Domain { public class RefundQueryModel : IValidatableObject { /// /// 商户订单号 /// 微信订单号查询的优先级是: RefundNo > OutRefundNo > TradeNo > OutTradeNo /// [StringLength(32, ErrorMessage = "商户订单号最大长度为32位")] public string OutTradeNo { get; set; } /// /// 微信订单号 /// [ReName(Name = "transaction_id")] [StringLength(32, ErrorMessage = "微信订单号最大长度为32位")] public string TradeNo { get; set; } /// /// 商户退款单号 /// [StringLength(64, ErrorMessage = "商户退款单号最大长度为64位")] public string OutRefundNo { get; set; } /// /// 微信退款单号 /// [ReName(Name = "refund_id")] [StringLength(32, ErrorMessage = "微信退款单号最大长度为32位")] public string RefundNo { get; set; } /// /// 偏移量,当部分退款次数超过10次时可使用,表示返回的查询结果从这个偏移量开始取记录 /// public int Offset { get; set; } /// /// 随机字符串 /// public string NonceStr { get; } = Util.GenerateNonceStr(); public IEnumerable Validate(ValidationContext validationContext) { if (string.IsNullOrEmpty(OutTradeNo) && string.IsNullOrEmpty(TradeNo) && string.IsNullOrEmpty(OutRefundNo) && string.IsNullOrEmpty(RefundNo)) { yield return new ValidationResult("商户订单号、微信订单号、商户退款单号和微信退款单号不能同时为空"); } yield return ValidationResult.Success; } } }