using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ObjectModel.Config.HuaWei
{
    public class InappPurchaseDetails
    {
        /// <summary>
        /// 消耗型商品或者非消耗型商品：固定为false。
        /// </summary>
        public bool autoRenewing { get; set; }
        /// <summary>
        /// 订单ID，唯一标识一笔需要收费的收据
        /// </summary>
        public string orderId { get; set; }
        /// <summary>
        /// 应用安装包名。
        /// </summary>
        public string packageName { get; set; }
        /// <summary>
        /// 应用ID。
        /// </summary>
        public long applicationId { get; set; }
        /// <summary>
        /// 应用ID
        /// </summary>
        public string applicationIdString { get; set; }
        /// <summary>
        /// 商品类别，取值包括
        /// 0：消耗型商品 1：非消耗型商品    2：订阅型商品
        /// </summary>
        public int kind { get; set; }
        /// <summary>
        /// 商品ID。每种商品必须有唯一的ID
        /// </summary>
        public string productId { get; set; }
        /// <summary>
        /// 商品名称。
        /// </summary>
        public string productName { get; set; }
        /// <summary>
        /// 商品购买时间，UTC时间戳，以毫秒为单位
        /// </summary>
        public long purchaseTime { get; set; }
        /// <summary>
        /// 历史接口兼容用，同purchaseTime，新接入无需关注本字段。
        /// </summary>
        public long purchaseTimeMillis { get; set; }
        /// <summary>
        /// 订单交易状态。
        /// -1：初始化  0：已购买   1：已取消   2：已撤销或已退款   3：待处理
        /// </summary>
        public int purchaseState { get; set; }
        /// <summary>
        /// 商户侧保留信息，由您在调用支付接口时传入
        /// </summary>
        public string developerPayload { get; set; }
        /// <summary>
        /// 用于唯一标识商品和用户对应关系的购买令牌，在支付完成时由华为应用内支付服务器生成。
        /// </summary>
        public string purchaseToken { get; set; }
        /// <summary>
        /// 消耗状态，仅一次性商品存在，取值包括  0：未消耗   1：已消耗
        /// </summary>
        public int consumptionState { get; set; }
        /// <summary>
        /// 确认状态，取值包括 0 ：未确认    1：已确认
        /// </summary>
        public int confirmed { get; set; }
        /// <summary>
        /// 购买类型。   0：沙盒环境
        /// </summary>
        public int purchaseType { get; set; }
        /// <summary>
        /// 定价货币的币种 CNY
        /// </summary>
        public string currency { get; set; }
        /// <summary>
        /// 商品实际价格*100以后的值
        /// </summary>
        public long price { get; set; }
        /// <summary>
        /// 国家/地区码
        /// </summary>
        public string country { get; set; }
        /// <summary>
        /// 交易单号，用户支付成功后生成
        /// </summary>
        public string payOrderId { get; set; }
        /// <summary>
        /// 支付方式，
        /// </summary>
        public string payType { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string sdkChannel { get; set; }

        /// <summary>
        /// 购买的商品是否数据合格
        /// </summary>
        /// <returns>true合格，false不合格</returns>
        public bool IsOk(string id)
        {
            bool b = false;
            b = id == productId;
            if (!b) return b;
            b = purchaseState == 0;
            if (!b) return b;
            b = consumptionState == 0;
            if (!b) return b;
            b = confirmed == 0;
            if (!b) return b;
            return b;
        }

        public override string ToString()
        {
            return $"id:{productId},name:{productName},price:{price},orderid:{orderId}";
        }
    }
}
