using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using PaySharp.Core;
using PaySharp.Core.Utils;
namespace PaySharp.Wechatpay.Domain
{
public class TransferModel : IValidatableObject
{
///
/// 商户订单号
///
[ReName(Name = "partner_trade_no")]
[Required(ErrorMessage = "请设置商户订单号")]
[StringLength(32, ErrorMessage = "商户订单号最大长度为32位")]
public string OutTradeNo { get; set; }
///
/// 用户标识,此参数为微信用户在商户对应appid下的唯一标识。
///
[ReName(Name = "openid")]
[Required(ErrorMessage = "请设置用户标识")]
public string OpenId { get; set; }
///
/// 校验用户姓名选项
/// NO_CHECK:不校验真实姓名
/// FORCE_CHECK:强校验真实姓名
///
[Required(ErrorMessage = "请设置校验用户姓名选项")]
public string CheckName { get; set; }
///
/// 收款用户真实姓名
///
[ReName(Name = "re_user_name")]
public string TrueName { get; set; }
///
/// 付款金额:RMB分
///
public int Amount { get; set; }
///
/// 付款说明
///
public string Desc { get; set; }
///
/// 用户端或者服务端的IP
///
[Required(ErrorMessage = "请设置用户IP")]
[StringLength(16, ErrorMessage = "用户IP最大长度为16位")]
public string SpbillCreateIp { get; set; } = HttpUtil.LocalIpAddress;
///
/// 随机字符串
///
public string NonceStr { get; } = Util.GenerateNonceStr();
public IEnumerable Validate(ValidationContext validationContext)
{
if (CheckName == "FORCE_CHECK" && string.IsNullOrEmpty(TrueName))
{
yield return new ValidationResult("请设置收款用户真实姓名");
}
yield return ValidationResult.Success;
}
}
}