private static BaseTransactionResult ParseTransactionResult(BaseTransactionResult result, XElement root) { foreach (var node in root.Elements()) { var value = node.Value; var name = node.Name.LocalName.ToLower(); int i; switch (name) { case "status": ParseStatus(result, node); break; case "transactionstatus": int.TryParse(value, out i); result.TransactionStatus = (Enumerations.TransactionStatusCode)i; break; case "originaltransactionnumber": result.OriginalTransactionNumber = value; break; case "transactionnumber": result.TransactionNumber = value; break; } } return(result); }
private void UpdateOrderPaymentStatus(BaseTransactionResult result, Order order) { switch (result.TransactionStatus.Value) { case Enumerations.TransactionStatusCode.Sale: case Enumerations.TransactionStatusCode.Capture: // Capture should not happen here order.CaptureTransactionId = result.TransactionNumber; _orderService.UpdateOrder(order); // Mark order as paid if (result.TransactionStatus == Enumerations.TransactionStatusCode.Sale && _orderProcessingService.CanMarkOrderAsPaid(order)) { _orderProcessingService.MarkOrderAsPaid(order); } break; case Enumerations.TransactionStatusCode.Authorize: order.AuthorizationTransactionId = result.TransactionNumber; _orderService.UpdateOrder(order); if (_orderProcessingService.CanMarkOrderAsAuthorized(order)) { _orderProcessingService.MarkAsAuthorized(order); } break; } }