public override string GetOrderId(PaymentInfo payment)
        {
            byte[] jsonBytes = Convert.FromBase64String(payment.Data);
            string json      = Encoding.UTF8.GetString(jsonBytes);

            LiqPayPaymentInfo liqPayPayment = JsonConvert.DeserializeObject <LiqPayPaymentInfo>(json);

            return(liqPayPayment.OrderId);
        }
        public override bool IsPaymentAuthorized(PaymentInfo payment, PaymentInfo stored)
        {
            string calculatedSignature = GetSignature(payment.Data);
            string storedSignature     = GetSignature(payment.Data);

            string            data = Encoding.UTF8.GetString(Convert.FromBase64String(stored.Data));
            LiqPayPaymentInfo info = JsonConvert.DeserializeObject <LiqPayPaymentInfo>(data);
            DateTime          exp  = DateTime.Parse(info.Expired);

            return(calculatedSignature == payment.Signature && calculatedSignature == storedSignature && exp > DateTime.UtcNow);
        }
        public override PaymentInfo CreateFromUserPayment(PaymentPrepareModel paymentPrepare)
        {
            LiqPayPaymentInfo liqPayPayment = new LiqPayPaymentInfo(paymentPrepare)
            {
                Version    = VERSION,
                Action     = ACTION,
                Currency   = CURRENCY,
                PublicKey  = PUBLIC_KEY,
                PrivateKey = PRIVATE_KEY,
            };

            string json = JsonConvert.SerializeObject(liqPayPayment);

            byte[] dataBytes = Encoding.UTF8.GetBytes(json);
            string data      = Convert.ToBase64String(dataBytes);
            string signature = GetSignature(data);

            return(new PaymentInfo(data, signature));
        }