private PaymentStepResult ProcessFraudUpdate(IPayment payment, IOrderGroup orderGroup) { var paymentStepResult = new PaymentStepResult(); if (payment.HasFraudStatus(NotificationFraudStatus.FRAUD_RISK_ACCEPTED)) { payment.Status = PaymentStatus.Processed.ToString(); OrderStatusManager.ReleaseHoldOnOrder((PurchaseOrder)orderGroup); AddNoteAndSaveChanges(orderGroup, payment.TransactionType, "Klarna fraud risk accepted"); paymentStepResult.Status = true; return(paymentStepResult); } if (payment.HasFraudStatus(NotificationFraudStatus.FRAUD_RISK_REJECTED)) { payment.Status = PaymentStatus.Failed.ToString(); OrderStatusManager.HoldOrder((PurchaseOrder)orderGroup); AddNoteAndSaveChanges(orderGroup, payment.TransactionType, "Klarna fraud risk rejected"); paymentStepResult.Status = true; return(paymentStepResult); } if (payment.HasFraudStatus(NotificationFraudStatus.FRAUD_RISK_STOPPED)) { payment.Status = PaymentStatus.Failed.ToString(); OrderStatusManager.HoldOrder((PurchaseOrder)orderGroup); AddNoteAndSaveChanges(orderGroup, payment.TransactionType, "Klarna fraud risk stopped"); paymentStepResult.Status = true; return(paymentStepResult); } paymentStepResult.Message = $"Can't process authorization. Unknown fraud notification: {payment.Properties[Common.Constants.FraudStatusPaymentField]} or no fraud notifications received so far."; return(paymentStepResult); }
private void SetOrderStatus(IPurchaseOrder purchaseOrder, IPayment payment) { if (payment.HasFraudStatus(FraudStatus.PENDING)) { OrderStatusManager.HoldOrder((PurchaseOrder)purchaseOrder); _orderRepository.Save(purchaseOrder); } }
private static bool ShouldProcessFraudUpdate(IPayment payment, IOrderGroup orderGroup) { if (!(orderGroup is IPurchaseOrder)) { return(false); } var isPending = payment.Status == PaymentStatus.Pending.ToString(); var isFraudStopped = orderGroup.OrderStatus != OrderStatus.Completed && payment.HasFraudStatus(NotificationFraudStatus.FRAUD_RISK_STOPPED); return(isPending || isFraudStopped); }