예제 #1
0
        public string ExecuteCompleteCheckout(
            ParseUser loggedInUser,
            CheckoutViewModel checkoutViewModel, 
            string worldId, 
            Purchase[] userHistoricalPurchases, out string paymentUrl)
        {
            paymentUrl = string.Empty;
            var completeCheckoutLetterDto = new CompleteCheckoutLetterDto();
            var completeCheckoutStatementsArray = new List<CheckoutStatementBase>();
            var checkoutItemLetterDtoArray = new List<CheckoutItemLetterDto>();
            var accountStatementsBuilder = new AccountStatementBuilder(_repository, _currencyRetriver);
            var checkoutManager = new CheckoutManager(_repository, loggedInUser, checkoutViewModel);

            try
            {
                CreatePaymentRecords(checkoutViewModel, worldId, userHistoricalPurchases, checkoutManager,completeCheckoutLetterDto, checkoutItemLetterDtoArray, completeCheckoutStatementsArray);
                SetLetters(loggedInUser,checkoutViewModel,completeCheckoutStatementsArray,checkoutItemLetterDtoArray,completeCheckoutLetterDto,loggedInUser);

                if (checkoutViewModel.PaymentTransactionForCalc == 0)
                {
                    checkoutManager.SavePaymentRecords(completeCheckoutStatementsArray, accountStatementsBuilder, checkoutViewModel);
                    InitPuchaseView(loggedInUser, checkoutViewModel);
                }
                else
                {
                    _state.Set(STATE_KEY,completeCheckoutStatementsArray);

                    paymentUrl = GetPaymentUrl(checkoutManager,checkoutViewModel);
                }
            }
            catch(Exception ex)
            {
                BL.DomainServices.Log.LoggerFactory.GetLogger().LogError(ex);
                Mailer.SendCheckoutError(loggedInUser, checkoutManager.EventId, "Check out error");
                throw;
            }

            return checkoutManager.EventId;
        }
예제 #2
0
        public void ExecutePayment(string payerId, string paymentId, CheckoutViewModel checkoutViewModel, ParseUser loggedInUser)
        {
            var completeCheckoutStatementsArray = _state.Get<List<CheckoutStatementBase>>(STATE_KEY);
            var eventId = completeCheckoutStatementsArray.OfType<TransactionStatement>().First().Event;

            var executePayment = _payPalExpressCheckoutManager.ExecutePayment(payerId, paymentId);
            if (executePayment == null)
            {
                Mailer.SendCheckoutError(loggedInUser, eventId,"payment failed, database not upadated");
                return;
            }

            try
            {
                var accountStatementsBuilder = new AccountStatementBuilder(_repository, _currencyRetriver);
                var checkoutManager = new CheckoutManager(_repository, loggedInUser, checkoutViewModel);

                checkoutManager.EventId = eventId;
                checkoutManager.SavePaymentRecords(completeCheckoutStatementsArray, accountStatementsBuilder, checkoutViewModel, executePayment.ConvertToJson());
                InitPuchaseView(loggedInUser, checkoutViewModel);
            }
            catch (Exception ex)
            {
                Mailer.SendCheckoutError(loggedInUser, eventId, "Payment succeeded, Data Base update failed");
                BL.DomainServices.Log.LoggerFactory.GetLogger().LogError(ex);
                throw;
            }
        }