/// <summary> /// Processes the payment results based on a reply from the payment gateway. /// For example, the method can be called from a custom IPN handler that accepts responses/notifications from /// the external gateway's responses/notifications. /// </summary> public void ProcessDirectPaymentReply(bool success, HttpContext context, string testMode) { // Payport response data var resultData = context.Request.Form; // Set payment transaction ID PaymentResult.PaymentTransactionID = resultData["tid"]; // Set transaction mode (Test) if (testMode == "1") { PaymentResultItemInfo customItem = new PaymentResultItemInfo(); customItem.Header = ResHelper.GetString("custom.transaction_mode"); customItem.Name = "PaymentMode"; customItem.Value = ResHelper.GetString("custom.test_mode"); PaymentResult.SetPaymentResultItemInfo(customItem); } // Get payment Key string paymentKey = NovalnetHelper.GetPaymentKey(resultData); // Set Novalnet Payment Method PaymentResultItemInfo NovalnetPaymentMethod = new PaymentResultItemInfo(); NovalnetPaymentMethod.Header = ResHelper.GetString("custom.payment_method_title"); NovalnetPaymentMethod.Name = "PaymentMethod"; NovalnetPaymentMethod.Value = NovalnetHelper.GetPaymentMethod(resultData); PaymentResult.SetPaymentResultItemInfo(NovalnetPaymentMethod); // Handle payment response if (success) { if (resultData["tid_status"] == "100" && !Regex.IsMatch(paymentKey, "^(?:27|59)")) { if (Regex.IsMatch(paymentKey, "(?:40|41)")) { PaymentResult.PaymentDescription = ResHelper.GetString("custom.guarantee_comment"); } PaymentResult.PaymentIsCompleted = true; } else if (Regex.IsMatch(resultData["tid_status"], "^(?:75|85|86|90|91|98|99)$") || Regex.IsMatch(paymentKey, "^(?:27|59)$")) { PaymentResult.PaymentIsAuthorized = true; if (Regex.IsMatch(paymentKey, "^(?:27|41)$") && resultData["tid_status"] == "100") { PaymentResultItemInfo item = new PaymentResultItemInfo(); item.Header = ResHelper.GetString("custom.transaction_details"); item.Name = "NovalnetTransactionDetails"; item.Value = string.Format(ResHelper.GetString("custom.duedate_title"), resultData["due_date"]) + " | " + string.Format(ResHelper.GetString("custom.account_holder"), resultData["invoice_account_holder"]) + " | " + string.Format("IBAN: {0}", resultData["invoice_iban"]) + " | " + string.Format("BIC: {0}", resultData["invoice_bic"]) + " | " + string.Format("Bank: {0} ", resultData["invoice_bankname"]) + " | " + string.Format(ResHelper.GetString("custom.amount"), resultData["amount"] + " " + resultData["currency"]) + " | " + ResHelper.GetString("custom.payment_reference_title") + " | " + string.Format(ResHelper.GetString("custom.payment_reference1"), resultData["invoice_ref"]) + " | " + string.Format(ResHelper.GetString("custom.payment_reference2"), resultData["tid"]); // Saves the custom item into the PaymentResultInfo object processed by the gateway provider PaymentResult.SetPaymentResultItemInfo(item); } else if (paymentKey == "59") { PaymentResultItemInfo ShopDetails = new PaymentResultItemInfo(); ShopDetails.Header = string.Format(ResHelper.GetString("custom.slipexpirydate"), resultData["cashpayment_due_date"]); ShopDetails.Name = "NovalnetTransactionDetails"; ShopDetails.Value = ResHelper.GetString("custom.store_details") + resultData["nearest_store_title_1"] + " | " + resultData["nearest_store_street_1"] + " | " + resultData["nearest_store_city_1"] + " | " + resultData["nearest_store_zipcode_1"] + " | " + resultData["nearest_store_country_1"] + resultData["nearest_store_title_2"] + " | " + resultData["nearest_store_street_2"] + " | " + resultData["nearest_store_city_2"] + " | " + resultData["nearest_store_zipcode_2"] + " | " + resultData["nearest_store_country_2"] + resultData["nearest_store_title_3"] + " | " + resultData["nearest_store_street_3"] + " | " + resultData["nearest_store_city_3"] + " | " + resultData["nearest_store_zipcode_3"] + " | " + resultData["nearest_store_country_3"]; // Saves the custom item into the PaymentResultInfo object processed by the gateway provider PaymentResult.SetPaymentResultItemInfo(ShopDetails); } else if (resultData["tid_status"] == "75") { PaymentResult.PaymentDescription = paymentKey == "41" ? ResHelper.GetString("custom.guarantee_comment") + ResHelper.GetString("custom.guarantee_invoice_comment") : ResHelper.GetString("custom.guarantee_comment") + ResHelper.GetString("custom.guarantee_sepa_comment"); } } } else { // Sets the payment result for failed transactions PaymentResult.PaymentIsFailed = true; PaymentResult.PaymentDescription = resultData["status_desc"]; } // Saves the payment result to the related order // Moves the order to the status configured for successful or failed payments UpdateOrderPaymentResult(); }
private void DoTraitement() { var ordeID = Request.QueryString["ORDERID"]; var order = OrderInfoProvider.GetOrderInfo(Int32.Parse(ordeID)); if (order == null) { return; } var transactionID = Request.QueryString["PAYID"]; string transactionDate = Request.QueryString["TRXDATE"]; var modePaiement = Request.QueryString["PM"]; var statutCode = Request.QueryString["STATUS"]; var ncerror = Request.QueryString["NCERROR"]; var sha = Request.QueryString["SHASIGN"]; var tab = transactionDate.Split('/'); var month = Int32.Parse(tab[0]); var day = Int32.Parse(tab[1]); var year = Int32.Parse(tab[2]); var date = new DateTime(year, month, day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second); var payementResult = new PaymentResultInfo() { PaymentDate = GetOgoneTransactionDate(transactionDate), PaymentTransactionID = transactionID, PaymentIsCompleted = true, PaymentStatusName = GetOgoneStatutLibelle(statutCode), PaymentMethodName = "Ogone" }; var paymentItem = new PaymentResultItemInfo() { Header = "Payment by", Name = "PaymentSytem", Text = modePaiement, Value = modePaiement }; payementResult.SetPaymentResultItemInfo(paymentItem); order.OrderPaymentResult = payementResult; if (statutCode != "1" && statutCode != "0") { order.OrderStatusID = OrderStatusInfoProvider.GetOrderStatusInfo("PaymentReceived", SiteContext.CurrentSiteName).StatusID; order.SetValue("OrderStatus", "1"); } else { order.OrderStatusID = OrderStatusInfoProvider.GetOrderStatusInfo("Canceled", SiteContext.CurrentSiteName).StatusID; order.SetValue("OrderStatus", "2"); } OrderHelper.CreateCustomInvoiceHelper(Int32.Parse(ordeID)); OrderInfoProvider.SetOrderInfo(order); }