protected string ParseMessageToNote(IpayDoubleEightResponseModel model) { if (model == null) { return(string.Empty); } var note = new StringBuilder(); note.AppendLine("iPay88 Result:"); note.AppendLine($"MerchantCode:{model.MerchantCode}"); note.AppendLine($"PaymentId:{model.PaymentId}"); note.AppendLine($"Remark:{model.Remark}"); note.AppendLine($"TransId:{model.TransId}"); note.AppendLine($"AuthCode:{model.AuthCode}"); note.AppendLine($"Status:{model.Status}"); note.AppendLine($"ErrDesc:{model.ErrDesc}"); note.AppendLine($"Signature:{model.Signature}"); note.AppendLine($"CCName:{model.CCName}"); note.AppendLine($"CCNo:{model.CCNo}"); note.AppendLine($"S_bankname:{model.S_bankname}"); note.AppendLine($"S_country:{model.S_country}"); return(note.ToString()); }
public virtual IActionResult PaidCallback(IpayDoubleEightResponseModel model) { if (string.IsNullOrEmpty(model.RefNo)) { return(RedirectToRoute("HomePage")); } var orderNumber = model.RefNo; if (model.RefNo.Contains("_")) { orderNumber = orderNumber.Substring(0, model.RefNo.IndexOf('_')); } var order = _orderService.GetOrderByCustomOrderNumber(orderNumber); if (order == null) { return(RedirectToRoute("HomePage")); } _orderService.InsertOrderNote(new OrderNote { OrderId = order.Id, Note = ParseMessageToNote(model), DisplayToCustomer = false, CreatedOnUtc = DateTime.UtcNow }); //check total var orderTotalSentTo = _genericAttributeService.GetAttribute <decimal?>(order, IpayDoubleEightHelper.OrderTotalSentToIpayDoubleEight); if (orderTotalSentTo.HasValue && model.Amount != orderTotalSentTo.Value) { var errorStr = $"iPay88. Returned order total {model.Amount} doesn't equal order total {order.OrderTotal}." + $"Order #{order.CustomOrderNumber}."; //log _logger.Error(errorStr); //order note _orderService.InsertOrderNote(new OrderNote { OrderId = order.Id, Note = errorStr, DisplayToCustomer = false, CreatedOnUtc = DateTime.UtcNow }); return(RedirectToRoute("HomePage")); } //clear attribute if (orderTotalSentTo.HasValue) { _genericAttributeService.SaveAttribute <decimal?>(order, IpayDoubleEightHelper.OrderTotalSentToIpayDoubleEight, null); } if (model.Status == "1" && _orderProcessingService.CanMarkOrderAsPaid(order)) { order.AuthorizationTransactionId = model.TransId; order.AuthorizationTransactionCode = model.AuthCode; order.AuthorizationTransactionResult = model.Status; _orderService.UpdateOrder(order); _orderProcessingService.MarkOrderAsPaid(order); return(RedirectToRoute("CheckoutCompleted", new { orderId = order.Id })); } else { _orderService.InsertOrderNote(new OrderNote { OrderId = order.Id, Note = model.ErrDesc, DisplayToCustomer = false, CreatedOnUtc = DateTime.UtcNow }); return(RedirectToRoute("OrderDetails", new { orderId = order.Id })); } }