/// <summary> /// Fills the g2s DMN. /// </summary> /// <param name="query">The query.</param> /// <returns>G2S DMN Model.</returns> private G2SDMNModel FillG2SDMN(string query) { G2SDMNModel dmn = new G2SDMNModel(); dmn.PPPStatus = HttpUtility.ParseQueryString(query).Get("ppp_status"); dmn.CardCompany = HttpUtility.ParseQueryString(query).Get("cardCompany"); dmn.NameOnCard = HttpUtility.ParseQueryString(query).Get("nameOnCard"); dmn.FirstName = HttpUtility.ParseQueryString(query).Get("first_name"); dmn.LastName = HttpUtility.ParseQueryString(query).Get("last_name"); dmn.Address = HttpUtility.ParseQueryString(query).Get("address1"); dmn.City = HttpUtility.ParseQueryString(query).Get("city"); dmn.Country = HttpUtility.ParseQueryString(query).Get("country"); dmn.Email = HttpUtility.ParseQueryString(query).Get("email"); dmn.State = HttpUtility.ParseQueryString(query).Get("state"); dmn.Zip = HttpUtility.ParseQueryString(query).Get("zip"); dmn.Phone = HttpUtility.ParseQueryString(query).Get("phone1"); dmn.Currency = HttpUtility.ParseQueryString(query).Get("currency"); dmn.UserId = HttpUtility.ParseQueryString(query).Get("customField1"); dmn.Interest = HttpUtility.ParseQueryString(query).Get("customField2"); dmn.CompanyId = HttpUtility.ParseQueryString(query).Get("customField3"); dmn.MerchantSiteId = HttpUtility.ParseQueryString(query).Get("merchant_site_id"); dmn.MerchantId = HttpUtility.ParseQueryString(query).Get("merchant_id"); dmn.MerchantLocale = HttpUtility.ParseQueryString(query).Get("merchantLocale"); dmn.RequestVersion = HttpUtility.ParseQueryString(query).Get("requestVersion"); dmn.PPPTransactionID = HttpUtility.ParseQueryString(query).Get("PPP_TransactionID"); dmn.ProductId = HttpUtility.ParseQueryString(query).Get("productId"); dmn.CustomData = HttpUtility.ParseQueryString(query).Get("customData"); dmn.PaymentMethod = HttpUtility.ParseQueryString(query).Get("payment_method"); dmn.InvoiceId = HttpUtility.ParseQueryString(query).Get("invoice_id"); dmn.ResponseTimeStamp = HttpUtility.ParseQueryString(query).Get("responseTimeStamp"); dmn.Message = HttpUtility.ParseQueryString(query).Get("message"); dmn.Error = HttpUtility.ParseQueryString(query).Get("Error"); dmn.Status = HttpUtility.ParseQueryString(query).Get("Status"); dmn.ExErrCode = HttpUtility.ParseQueryString(query).Get("ExErrCode"); dmn.ErrCode = HttpUtility.ParseQueryString(query).Get("ErrCode"); dmn.AuthCode = HttpUtility.ParseQueryString(query).Get("AuthCode"); dmn.ReasonCode = HttpUtility.ParseQueryString(query).Get("ReasonCode"); dmn.Token = HttpUtility.ParseQueryString(query).Get("Token"); dmn.TokenId = HttpUtility.ParseQueryString(query).Get("tokenId"); dmn.ResponseChecksum = HttpUtility.ParseQueryString(query).Get("responsechecksum"); dmn.AdvanceResponseChecksum = HttpUtility.ParseQueryString(query).Get("advanceResponseChecksum"); dmn.TotalAmount = HttpUtility.ParseQueryString(query).Get("totalAmount"); dmn.TransactionID = HttpUtility.ParseQueryString(query).Get("TransactionID"); dmn.DynamicDescriptor = HttpUtility.ParseQueryString(query).Get("dynamicDescriptor"); dmn.UniqueCC = HttpUtility.ParseQueryString(query).Get("uniqueCC"); dmn.ItemNumber = HttpUtility.ParseQueryString(query).Get("item_number_1"); dmn.ItemAmount = HttpUtility.ParseQueryString(query).Get("item_amount_1"); dmn.ItemQuantity = HttpUtility.ParseQueryString(query).Get("item_quantity_1"); dmn.IsValid = this.IsChecksumValid(dmn.TotalAmount, dmn.Currency, dmn.ResponseTimeStamp, dmn.PPPTransactionID, dmn.Status, dmn.ProductId, dmn.ResponseChecksum, dmn.AdvanceResponseChecksum); return dmn; }
/// <summary> /// Inserts the g2S DMN. /// </summary> /// <param name="g2SDMNModel">The invoice model.</param> /// <returns>returns int of the inserted row</returns> public long InsertG2SDMN(G2SDMNModel g2SDMNModel) { try { G2SDMN g2SDMN = this.mapperFactory.GetMapper<G2SDMNModel, G2SDMN>().Map(g2SDMNModel); g2SDMN.CreatedOn = DateTime.UtcNow; this.g2SDMNRepository.Insert(g2SDMN); this.g2SDMNRepository.Commit(); return g2SDMN.Id; } catch (Exception ex) { return 0; } }
public async Task<IHttpActionResult> DMN() { G2SDMNModel g2SDMNModel = new G2SDMNModel(); InvoiceStatus invoiceStatus = InvoiceStatus.Invalid; try { g2SDMNModel = this.FillG2SDMN(Request.RequestUri.Query); if (g2SDMNModel.PPPStatus.ToLower() == "OK".ToLower()) { if (g2SDMNModel.Status.ToLower() == "Approved".ToLower() || g2SDMNModel.Status.ToLower() == "Success".ToLower()) { invoiceStatus = InvoiceStatus.Success; this.UpdateInvoice(Convert.ToInt64(g2SDMNModel.InvoiceId), InvoiceStatus.Success); } else if (g2SDMNModel.Status.ToLower() == "Declined".ToLower() || g2SDMNModel.Status.ToLower() == "Error".ToLower()) { invoiceStatus = InvoiceStatus.Failure; this.UpdateInvoice(Convert.ToInt64(g2SDMNModel.InvoiceId), InvoiceStatus.Failure); } else if (g2SDMNModel.Status.ToLower() == "Pending".ToLower()) { invoiceStatus = InvoiceStatus.Pending; this.UpdateInvoice(Convert.ToInt64(g2SDMNModel.InvoiceId), InvoiceStatus.Pending); } } else if (g2SDMNModel.PPPStatus.ToLower() == "Fail".ToLower()) { invoiceStatus = InvoiceStatus.Failure; this.UpdateInvoice(Convert.ToInt64(g2SDMNModel.InvoiceId), InvoiceStatus.Failure); } try { if (invoiceStatus != InvoiceStatus.Invalid) { this.UpdateInvoice(Convert.ToInt64(g2SDMNModel.InvoiceId), invoiceStatus); } else { this.LoggerService.LogException("PaymentController > DMN(Manually Generated): Unrecognized PPPStatus in G2S DMN Request."); } } catch (Exception ex) { this.LoggerService.LogException("PaymentController > DMN(while updating invoice): " + ex.StackTrace); } this.paymentService.InsertG2SDMN(g2SDMNModel); } catch (Exception ex) { this.LoggerService.LogException("PaymentController > DMN(while filling or inserting response): " + ex.StackTrace); } return this.Ok(); }