// POST: /TranAdmin/DoParsePs public ActionResult DoParsePs() { bool isOk = false; string msg = ""; PayseraPaymentResponse resp = null; string r = String.Empty; try { string data = Request["data"]; if (String.IsNullOrEmpty(data)) { throw new ArgumentNullException("data", "No data from PS is provided"); } resp = Factory.PayseraBll.ParseData(data); r = RenderPartialView("_PsResponsePartial", resp); isOk = true; msg = "Response from PS is parserd"; } catch (Exception ex) { isOk = false; msg = ex.Message; resp = null; } return(Json(new { Status = isOk, Message = msg, Response = r })); }
public void Test_User_Cancels_NonExisting_Transaction() { // OrderId from Paysera is same as PaySystemUid var resp = new PayseraPaymentResponse(); resp.OrderId = Guid.NewGuid().ToString("N"); _bll.CancelTransactionByUser(resp.OrderId); }
public void Test_User_Cancels_Transaction_Empty_PaySystemUid() { // OrderId from Paysera is same as PaySystemUid var resp = new PayseraPaymentResponse(); resp.OrderId = null; _bll.CancelTransactionByUser(resp.OrderId); }
public void Test_Finish_Transaction_On_Bad_Status() { var resp = new PayseraPaymentResponse(); resp.OrderId = Guid.NewGuid().ToString("N"); _transactionDal.Setup(x => x.GetTransactionByPaySystemUid(It.IsAny <string>())) .Returns((string paySysUid) => new TransactionBdo { PaySystemUid = paySysUid, PaymentStatus = PaymentStatusIds.WaitingForPayment }); resp.Status = "0"; var t = _bll.FinishTransaction(resp); Assert.AreNotEqual(PaymentStatusIds.PaidOk, t.PaymentStatus); }
public void Test_FinishTransaction_Success() { _transactionDal.Setup(x => x.GetTransactionByPaySystemUid(It.IsAny <string>())) .Returns((string paySysUid) => new TransactionBdo { PaySystemUid = paySysUid, PaymentStatus = PaymentStatusIds.WaitingForPayment }); var resp = new PayseraPaymentResponse(); resp.OrderId = Guid.NewGuid().ToString("N"); resp.Status = "1"; resp.PayAmount = 543.21m; resp.PayCurrencyCode = "USD"; resp.Payment = "nordealt"; var t = _bll.FinishTransaction(resp); Assert.AreEqual(PaymentStatusIds.PaidOk, t.PaymentStatus); Assert.AreEqual(resp.PayAmount, t.PaidAmount); Assert.AreEqual(resp.PayCurrencyCode, t.PaidCurrencyCode); Assert.AreEqual(resp.Payment, t.PaidThrough); }
public PayseraPaymentResponse BuildResponseFromHttpParameters(NameValueCollection pars) { PayseraPaymentResponse resp = new PayseraPaymentResponse(); foreach (string key in pars.AllKeys) { switch (key) { case "status": resp.Status = pars[key]; break; case "orderid": resp.OrderId = pars[key]; break; case "projectid": resp.ProjectId = pars[key]; break; case "test": resp.IsTestPayment = pars[key] == "0" ? false : true; break; case "amount": resp.AmountToPay = GetDecimal(pars[key], -1m); if (resp.AmountToPay > 0) { resp.AmountToPay /= 100m; } break; case "payamount": resp.PayAmount = GetDecimal(pars[key], -1m); if (resp.PayAmount > 0) { resp.PayAmount /= 100m; } break; case "currency": resp.CurrencyCode = pars[key]; break; case "paycurrency": resp.PayCurrencyCode = pars[key]; break; case "p_firstname": resp.CustomerName = pars[key]; break; case "p_lastname": resp.CustomerLastName = pars[key]; break; case "p_email": resp.CustomerEmail = pars[key]; break; case "p_phone": resp.CustomerPhone = pars[key]; break; case "p_comment": resp.Remarks = pars[key]; break; case "paytext": resp.PayText = pars[key]; break; case "payment": resp.Payment = pars[key]; break; default: break; } } return(resp); }
public void Test_IsTestPayment_By_Default_Is_True() { var resp = new PayseraPaymentResponse(); Assert.IsTrue(resp.IsTestPayment); }
public TransactionBdo FinishTransaction(PayseraPaymentResponse resp) { if (resp == null) { throw new ArgumentNullException("Could not finish transaction for NULL response from payment system"); } // Paysera OrderId == PaySystemUid _securityBll.ValidateOrderNr(resp.OrderId); var t = _transactionDal.GetTransactionByOrderNr(resp.OrderId); if (t.PaymentStatus == PaymentStatusIds.PaidOk) { Logger.Warn("Transaction status is already PaidOk, do not update and exit"); return(t); } t.IsPaymentProcessed = true; t.PaySystemResponseAt = DateTime.UtcNow; t.IsTestPayment = resp.IsTestPayment; t.PaidAmount = resp.PayAmount; t.PaidCurrencyCode = resp.PayCurrencyCode; t.PayerEmail = resp.CustomerEmail; t.PayerLastName = resp.CustomerLastName; t.PayerName = resp.CustomerName; t.PayerPhone = resp.CustomerPhone; t.PaidThrough = resp.Payment; /** * Payment status: * 0 - payment has no been executed * 1 - payment successful * 2 - payment order accepted, but not yet executed * 3 - additional payment information */ switch (resp.Status) { case "1": t.PaymentStatus = PaymentStatusIds.PaidOk; break; case "2": t.PaymentStatus = PaymentStatusIds.AcceptedButNotExecuted; break; default: Logger.Warn("Payment status (from Paysera) is not OK: " + resp.Status); break; } t.ResponseFromPaymentSystem = t.ResponseFromPaymentSystem; Logger.Info("Updating transaction after finishing"); _transactionDal.Update(t); return(t); }