QueryModel.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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 QueryModel : IValidatableObject
  8. {
  9. /// <summary>
  10. /// 订单支付时传入的商户订单号,和微信订单号不能同时为空。
  11. /// TradeNo,OutTradeNo如果同时存在优先取TradeNo
  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. public string NonceStr { get; } = Util.GenerateNonceStr();
  25. public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
  26. {
  27. if (string.IsNullOrEmpty(OutTradeNo) && string.IsNullOrEmpty(TradeNo))
  28. {
  29. yield return new ValidationResult("商户订单号和微信订单号不能同时为空");
  30. }
  31. yield return ValidationResult.Success;
  32. }
  33. }
  34. }