RefundModel.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 RefundModel : IValidatableObject
  8. {
  9. /// <summary>
  10. /// 商户订单号
  11. /// </summary>
  12. [StringLength(32, ErrorMessage = "商户订单号最大长度为32位")]
  13. public string OutTradeNo { get; set; }
  14. /// <summary>
  15. /// 微信订单号,和商户订单号不能同时为空
  16. /// </summary>
  17. [ReName(Name = "transaction_id")]
  18. [StringLength(32, ErrorMessage = "微信订单号最大长度为32位")]
  19. public string TradeNo { get; set; }
  20. /// <summary>
  21. /// 商户退款单号
  22. /// </summary>
  23. [Required(ErrorMessage = "请设置商户退款单号")]
  24. [StringLength(64, ErrorMessage = "商户退款单号最大长度为64位")]
  25. public string OutRefundNo { get; set; }
  26. /// <summary>
  27. /// 订单金额,单位为分,详见支付金额
  28. /// </summary>
  29. [ReName(Name = "total_fee")]
  30. public int TotalAmount { get; set; }
  31. /// <summary>
  32. /// 退款金额 ,单位为分,详见支付金额
  33. /// </summary>
  34. [ReName(Name = "refund_fee")]
  35. public int RefundAmount { get; set; }
  36. /// <summary>
  37. /// 退款货币种类,需与支付一致,或者不填。符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
  38. /// </summary>
  39. [ReName(Name = "refund_fee_type")]
  40. [StringLength(8, ErrorMessage = "退款货币种类最大长度为8位")]
  41. public string RefundAmountType { get; set; }
  42. /// <summary>
  43. /// 退款原因,若商户传入,会在下发给用户的退款消息中体现退款原因
  44. /// </summary>
  45. [StringLength(80, ErrorMessage = "退款原因最大长度为80位")]
  46. public string RefundDesc { get; set; }
  47. /// <summary>
  48. /// 退款资金来源
  49. /// 仅针对老资金流商户使用
  50. /// REFUND_SOURCE_UNSETTLED_FUNDS---未结算资金退款(默认使用未结算资金退款)
  51. /// REFUND_SOURCE_RECHARGE_FUNDS---可用余额退款
  52. /// </summary>
  53. [StringLength(30, ErrorMessage = "退款资金来源最大长度为30位")]
  54. public string RefundAccount { get; set; }
  55. /// <summary>
  56. /// 随机字符串
  57. /// </summary>
  58. public string NonceStr { get; } = Util.GenerateNonceStr();
  59. public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
  60. {
  61. if (string.IsNullOrEmpty(OutTradeNo) && string.IsNullOrEmpty(TradeNo))
  62. {
  63. yield return new ValidationResult("商户订单号和微信订单号不能同时为空");
  64. }
  65. yield return ValidationResult.Success;
  66. }
  67. }
  68. }