RefundQueryModel.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System.Collections.Generic;
  2. using System.ComponentModel.DataAnnotations;
  3. using PaySharp.Core;
  4. using PaySharp.Core.Utils;
  5. namespace PaySharp.Wechatpay.Domain
  6. {
  7. public class RefundQueryModel : IValidatableObject
  8. {
  9. /// <summary>
  10. /// 商户订单号
  11. /// 微信订单号查询的优先级是: RefundNo > OutRefundNo > TradeNo > OutTradeNo
  12. /// </summary>
  13. [StringLength(32, ErrorMessage = "商户订单号最大长度为32位")]
  14. public string OutTradeNo { get; set; }
  15. /// <summary>
  16. /// 微信订单号
  17. /// </summary>
  18. [ReName(Name = "transaction_id")]
  19. [StringLength(32, ErrorMessage = "微信订单号最大长度为32位")]
  20. public string TradeNo { get; set; }
  21. /// <summary>
  22. /// 商户退款单号
  23. /// </summary>
  24. [StringLength(64, ErrorMessage = "商户退款单号最大长度为64位")]
  25. public string OutRefundNo { get; set; }
  26. /// <summary>
  27. /// 微信退款单号
  28. /// </summary>
  29. [ReName(Name = "refund_id")]
  30. [StringLength(32, ErrorMessage = "微信退款单号最大长度为32位")]
  31. public string RefundNo { get; set; }
  32. /// <summary>
  33. /// 偏移量,当部分退款次数超过10次时可使用,表示返回的查询结果从这个偏移量开始取记录
  34. /// </summary>
  35. public int Offset { get; set; }
  36. /// <summary>
  37. /// 随机字符串
  38. /// </summary>
  39. public string NonceStr { get; } = Util.GenerateNonceStr();
  40. public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
  41. {
  42. if (string.IsNullOrEmpty(OutTradeNo) && string.IsNullOrEmpty(TradeNo)
  43. && string.IsNullOrEmpty(OutRefundNo) && string.IsNullOrEmpty(RefundNo))
  44. {
  45. yield return new ValidationResult("商户订单号、微信订单号、商户退款单号和微信退款单号不能同时为空");
  46. }
  47. yield return ValidationResult.Success;
  48. }
  49. }
  50. }