static public FormerPaymentOrderDTO Parse(JsonObject jsonObject)
        {
            if (jsonObject.IsEmptyInstance)
            {
                return(FormerPaymentOrderDTO.Empty);
            }

            var paymentOrder = new FormerPaymentOrderDTO();

            paymentOrder.RouteNumber = jsonObject.Get <string>("RouteNumber");
            paymentOrder.IssueTime   = jsonObject.Get <DateTime>("IssueTime");
            paymentOrder.DueDate     = jsonObject.Get <DateTime>("DueDate");
            paymentOrder.ControlTag  = jsonObject.Get <string>("ControlTag");

            paymentOrder.IsCompleted = jsonObject.Get <bool>("IsCompleted", false);

            if (paymentOrder.IsCompleted)
            {
                paymentOrder.PaymentDate      = jsonObject.Get <DateTime>("PaymentDate");
                paymentOrder.PaymentReference = jsonObject.Get <string>("PaymentRef");
                paymentOrder.PaymentTotal     = jsonObject.Get <decimal>("PaymentTotal");
            }

            return(paymentOrder);
        }
Exemplo n.º 2
0
        static public async Task <FormerPaymentOrderDTO> RequestPaymentOrderData(IPayable payable)
        {
            FormerPaymentOrderDTO paymentOrderData = payable.TryGetFormerPaymentOrderData();

            if (paymentOrderData != null)
            {
                return(paymentOrderData);
            }

            IPaymentOrderProvider provider = ExternalProviders.GetPaymentOrderProvider();

            paymentOrderData = await provider.GeneratePaymentOrder(payable)
                               .ConfigureAwait(false);

            payable.SetFormerPaymentOrderData(paymentOrderData);

            return(paymentOrderData);
        }
Exemplo n.º 3
0
        static public async Task <FormerPaymentOrderDTO> RefreshPaymentOrder(IPayable payable)
        {
            FormerPaymentOrderDTO paymentOrderData = payable.TryGetFormerPaymentOrderData();

            Assertion.AssertObject(paymentOrderData,
                                   $"Transaction {payable.UID} doesn't have a registered payment order.");

            if (paymentOrderData.IsCompleted)
            {
                return(paymentOrderData);
            }

            IPaymentOrderProvider provider = ExternalProviders.GetPaymentOrderProvider();

            paymentOrderData = await provider.RefreshPaymentOrder(paymentOrderData)
                               .ConfigureAwait(false);

            if (paymentOrderData.IsCompleted)
            {
                payable.SetFormerPaymentOrderData(paymentOrderData);
            }

            return(paymentOrderData);
        }