public OrderRecord UpdateOrderStatus(PayPalPaymentInfo payPalPaymentInfo) { var order = GetOrderByNumber(payPalPaymentInfo.invoice); OrderStatus orderStatus; switch (payPalPaymentInfo.payment_status.ToLower()) { case "completed": orderStatus = OrderStatus.Paid; break; default: orderStatus = OrderStatus.Cancelled; break; } //if (order.Status == orderStatus) // return; order.Status = orderStatus; order.PaymentServiceProviderResponse = JsonConvert.SerializeObject(payPalPaymentInfo); order.PaymentReference = payPalPaymentInfo.txn_id; switch (order.Status) { case OrderStatus.Paid: order.PaidAt = _dateTimeService.Now; break; case OrderStatus.Completed: order.CompletedAt = _dateTimeService.Now; break; case OrderStatus.Cancelled: order.CancelledAt = _dateTimeService.Now; break; } //PayPalLog.Debug(JsonConvert.SerializeObject(order)); // _orderRepository.Update(order); PayPalLog.Debug("Updated"); return(order); }
public HttpStatusCodeResult IPN(FormCollection result) { try { var payPalPaymentInfo = new PayPalPaymentInfo(); TryUpdateModel(payPalPaymentInfo, result.ToValueProvider()); var model = new PayPalListenerModel { PayPalPaymentInfo = payPalPaymentInfo }; var parameters = Request.BinaryRead(Request.ContentLength); if (parameters.Length > 0) { model.GetStatus(parameters); PayPalLog.Debug(payPalPaymentInfo.invoice); PayPalLog.Debug(payPalPaymentInfo.payment_status); try { var order = _orderService.GetOrderByNumber(payPalPaymentInfo.invoice); OrderStatus orderStatus; switch (payPalPaymentInfo.payment_status.ToLower()) { case "completed": orderStatus = OrderStatus.Paid; break; default: orderStatus = OrderStatus.Cancelled; break; } order.Status = orderStatus; order.PaymentReference = payPalPaymentInfo.txn_id; switch (order.Status) { case OrderStatus.Paid: order.PaidAt = DateTime.Now; break; case OrderStatus.Completed: order.CompletedAt = DateTime.Now; break; case OrderStatus.Cancelled: order.CancelledAt = DateTime.Now; break; } } catch (Exception ex) { PayPalLog.Debug(string.Format("Error saving order [{0}] {1}", payPalPaymentInfo.invoice, JsonConvert.SerializeObject(payPalPaymentInfo))); PayPalLog.Error(ex); } } else { PayPalLog.Debug(string.Format("No PayPal return parameters [{0}]", JsonConvert.SerializeObject(result))); } } catch (Exception ex) { PayPalLog.Debug(string.Format("Error unknown [{0}] {1}", ex.Message, result)); PayPalLog.Error(ex); } return(new HttpStatusCodeResult(200, "Success")); }