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; }
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; } }