using System.Xml.Serialization;
using Hncore.Infrastructure.Common;

namespace Hncore.Pass.PaymentCenter.WeiFuTong.WechatJsPay
{
    /// <summary>
    /// 微信小程序、公众号支付
    /// </summary>
    [XmlRoot("xml", Namespace = "")]
    public class WechatJsPayCreateOrderRequest : WeiFuTongRequestBase
    {
        /// <summary>
        /// 原生JS
        /// </summary>
        [XmlElement("is_raw")] 
        public string IsRaw { get; set; } = "1";
        
        /// <summary>
        /// 值为1，表示小程序支付；不传或值不为1，表示公众账号内支付
        /// </summary>
        [XmlElement("is_minipg")]
        public string IsMinipg { get; set; }
        
        /// <summary>
        /// 商户系统内部的订单号 ,5到32个字符、 只能包含字母数字或者下划线，区分大小写，每次下单请求确保在商户系统唯一
        /// </summary>
        [XmlElement("out_trade_no")]
        public string OutTradeNo { get; set; }
        
        /// <summary>
        /// 商品描述
        /// </summary>
        [XmlElement("body")]
        public string Body { get; set; }
        
        /// <summary>
        /// 微信用户关注商家公众号的openid
        /// </summary>
        [XmlElement("sub_openid")]
        public string UserOpenId { get; set; }
        
        /// <summary>
        /// 公众账号或小程序ID
        /// </summary>
        [XmlElement("sub_appid")]
        public string AppId { get; set; }
        
        /// <summary>
        /// 总金额，以分为单位，不允许包含任何字、符号
        /// </summary>
        [XmlElement("total_fee")]
        public int TotalFee { get; set; }
        
        /// <summary>
        /// 订单生成的机器 IP
        /// </summary>
        [XmlElement("mch_create_ip")]
        public string MchCreateIp { get; set; } = NetworkHelper.GetPublicIp();
        
        [XmlElement("notify_url")]
        public string NotifyUrl { get; set; }

        public WechatJsPayCreateOrderRequest() : base("pay.weixin.jspay")
        {
        }
    }
}