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;
}
}
}