private void ProcessTransaction() { long userId = Util.UserId; long prodId = 0L; string country = "NL"; string currency = "EUR"; string culture = "nl-NL"; decimal amount = 0m; if (Session["pid"] != null) prodId = Convert.ToInt64(Session["pid"]); if (Session["amt"] != null) amount = Convert.ToDecimal(Session["amt"]); if (Session["culture"] != null) culture = Session["culture"] as string; country = culture.Substring(3); currency = Util.GetCurrencyIsoNameByCountryIso2(country); Logger.Instance.Write(LogLevel.Info, "Process successful transaction: {0}", Request.RawUrl); string res = Request.Params["res"] ?? string.Empty; string status = Request.Params["Status"] ?? string.Empty; string statusCode = Request.Params["StatusCode"] ?? string.Empty; string merchant = Request.Params["Merchant"] ?? string.Empty; string orderId = Request.Params["OrderID"] ?? string.Empty; string paymentId = Request.Params["PaymentID"] ?? string.Empty; string reference = Request.Params["Reference"] ?? string.Empty; string transid = Request.Params["TransactionID"] ?? string.Empty; string paymentMethod = Request.Params["PaymentMethod"] ?? string.Empty; if (!string.IsNullOrEmpty(statusCode)) statusCode = Uri.UnescapeDataString(statusCode); using (Database db = new MySqlDatabase()) { StringBuilder sb = new StringBuilder(); ProductInfo pi = db.GetProductById(prodId); switch (db.UpdateTransaction(orderId, res, status, statusCode, merchant, paymentId, reference, transid, paymentMethod, amount, pi, currency, country)) { case TransactionResult.Success: { long Transaction_id = 0; long.TryParse(orderId, out Transaction_id); db.UpdateUserCredits(userId, prodId, pi.Credits); db.AddCreditHistory(userId, prodId, pi.Credits, Transaction_id); sb.Append("<div>"); sb.AppendFormat("<p><strong>{0}</strong></p>", Resources.Resource.TransactionSuccessful); sb.AppendFormat(Resources.Resource.HasCreditsNow, Util.GetUserCredits(userId)); sb.Append("</div>"); } break; case TransactionResult.NotFound: { sb.Append("<div>"); sb.AppendFormat("<p><strong>{0}</strong></p>", Resources.Resource.TransactionFailed); sb.AppendFormat(Resources.Resource.HasCreditsNow, Util.GetUserCredits(userId)); sb.Append("</div>"); } break; case TransactionResult.AlreadyCompleted: { sb.Append("<div>"); sb.AppendFormat("<p><strong>{0}</strong></p>", Resources.Resource.TransactionAlreadyCompleted); sb.AppendFormat(Resources.Resource.HasCreditsNow, Util.GetUserCredits(userId)); sb.Append("</div>"); } break; } ResultLiteral.Text = sb.ToString(); } sendMail(orderId, Resources.Resource.CreditPurchaseSuccessSubject, Resources.Resource.CreditPurchaseSuccessBody); }