private async void ConfirmPayment(UnconfirmedPaymentItem paymentInfoItem) { using (var c = NestedContainer) { var order = Using<IMainOrderRepository>(c).GetById(paymentInfoItem.OrderId); var paymentbridgeService = Using<IPaymentGateWayBridge>(c); if (order != null && order.GetPayments.Count>0) { var payments=order.GetPayments; if (payments.Any(p => p.Id == paymentInfoItem.LineItemId && p.IsConfirmed)) { MessageBox.Show("This payment has already been confirmed.", "Distributr: Payment Module", MessageBoxButton.OK); return; } try { var paymentInfo = payments.FirstOrDefault(p => p.Id == paymentInfoItem.LineItemId); var responce = await paymentbridgeService.GetNotification(paymentInfo); if (responce !=null && responce.PaymentNotificationDetails.Any(s=>!s.IsUsed) ) { foreach (var notItem in responce.PaymentNotificationDetails) { var payment = new PaymentInfo() { Id = new Guid(responce.TransactionRefId), Amount = (decimal)notItem.PaidAmount, ConfirmedAmount = (decimal) notItem.PaidAmount, PaymentRefId = responce.SDPReferenceId, MMoneyPaymentType = paymentInfo.MMoneyPaymentType, NotificationId = notItem.Id.ToString(), PaymentModeUsed = paymentInfo.PaymentModeUsed, IsConfirmed = true, IsProcessed = false }; paymentbridgeService.ConfirmNotification(notItem.Id); order.AddOrderPaymentInfoLineItem(payment); } Config config = Using<IConfigService>(c).Load(); if (order.OrderType==OrderType.DistributorPOS) Using<IOrderPosWorkflow>(c).Submit(order,config); else { Using<IOrderWorkflow>(c).Submit(order,config); } Load(); MessageBox.Show("This payment confirmed.", "Distributr: Payment Module", MessageBoxButton.OK); } //if(Using<IPaymentUtils>(c).ConfirmPayment(paymentInfo)) //{ // order.AddOrderPaymentInfoLineItem(paymentInfo); // if (order.DocumentReference.ToLower().StartsWith("sale")) // Using<IOrderPosWorkflow>(c).Submit(order); // else // { // Using<IOrderWorkflow>(c).Submit(order); // } // Load(); // MessageBox.Show("This payment confirmed.", "Distributr: Payment Module", // MessageBoxButton.OK); //} } catch (Exception ex) { throw ex; } } } }
private void ViewPaymentDetails(UnconfirmedPaymentItem item) { using (var c =NestedContainer) { var payment = Using<IMainOrderRepository>(c).GetById(item.OrderId).GetPayments.FirstOrDefault(p => p.Id == item.LineItemId); if(payment !=null) Using<IPaymentUtils>(c).GetPaymentDetails(payment.PaymentRefId, payment.PaymentModeUsed.ToString()); } }