private string CancelPayflex(dynamic settings, SmartBazaar.Data.Entities.Payment_Entities payment) { var payflex = new Components.Payment.PayFlex.Controller(); var payflexLog = Components.Converters.StringSerializer.Deserialize <Components.Payment.PayFlex.Models.VInstallmentResponse>(payment.Log); if (payment.PaymentDate.AddDays(-1) < DateTime.Today) { payflex.VCancel(settings.Parameters["checkouturl"], new Components.Payment.PayFlex.Models.VCancelRequest { BankId = settings.Parameters["bankid"], MerchantId = payflexLog.MerchantId, Password = settings.Parameters["password"], ReferenceTransactionId = payflexLog.TransactionId, TransactionId = Guid.NewGuid().ToString(), TransactionType = "Cancel" }); Components.Payment.PayFlex.Models.VCancelResponse cancelresult = payflex.CheckoutResult as Components.Payment.PayFlex.Models.VCancelResponse; return(Components.Converters.StringSerializer.Serialize <Components.Payment.PayFlex.Models.VCancelResponse>(cancelresult)); } else { payflex.VRefund(settings.Parameters["checkouturl"], new Components.Payment.PayFlex.Models.VRefundRequest { BankId = settings.Parameters["bankid"], MerchantId = payflexLog.MerchantId, Password = settings.Parameters["password"], ReferenceTransactionId = payflexLog.TransactionId, TransactionId = Guid.NewGuid().ToString(), TransactionType = "Cancel" }); Components.Payment.PayFlex.Models.VRefundRequest refundresult = payflex.CheckoutResult as Components.Payment.PayFlex.Models.VRefundRequest; return(Components.Converters.StringSerializer.Serialize <Components.Payment.PayFlex.Models.VRefundRequest>(refundresult)); } }
public ActionResult TestPos() { var payflex = new Components.Payment.PayFlex.Controller(new Components.Payment.PayFlex.Models.MPIStatusRequest { MerchantId = "655500056", MerchantPassword = "******", Pan = "4012001037141112", ExpiryDate = "1605", BrandName = "200", PurchaseAmount = "1000", VerifyEnrollmentRequestId = "12345678" }); var result = payflex.Is3D("http://sanalpos.innova.com.tr/MPI_V2/Enrollment.aspx"); return Content(result.ToString() + " : " + Newtonsoft.Json.JsonConvert.SerializeObject(payflex.CheckoutResult)); }
public ActionResult PaymentCallback(string id) { var orderLayer = new OrderLayer(); var payment = orderLayer.Order.Payments.FirstOrDefault(f => f.Id == orderLayer.Order.PaymentTypeId); var posWorker = new PosWorker(); var posSetting = posWorker.GetSitePosSetting(payment.PosType); switch (id.ToLower()) { case "paypal": if (Request.Params["result"] == "fail") { return(View("PaymentError")); } var paypal = new Components.Payment.Paypal.Controller(posSetting.Parameters); var paypalresult = paypal.PaymentExcution(Request.Params["payerId"], Request.Params["paymentId"]); if (paypalresult.Status) { var paymentWorker = new PaymentWorker(); var paymentEntityModel = Mapper.Map <PaymentEntityViewModel>(orderLayer.Order); paymentEntityModel.PaymentDate = DateTime.Now; paymentEntityModel.Status = 0; paymentEntityModel.Log = paypalresult.Data; paymentWorker.InsertSitePaymentEntity(paymentEntityModel); } return(RedirectToAction("Commit", new { id = orderLayer.Order.Id.ToString("000000") })); case "payflex": if (Request.Params["result"] == "fail") { return(RedirectToAction("Payment", "Bir hata oluştu lütfen tekrar deneyin!")); } Components.Payment.PayFlex.Controller payFlex = Session["PayFlexInstance"] as Components.Payment.PayFlex.Controller; Dictionary <string, string> formdata = new Dictionary <string, string>(); foreach (string prm in Request.Params.AllKeys) { formdata.Add(prm, Request.Params[prm]); } payFlex.MPITransaction = new Components.Payment.PayFlex.Models.MPITransactionResponse(formdata); payFlex.MPIChekout(posSetting.Parameters["mpicheckouturl"]); if (int.Parse(payFlex.PaymentModel.Installment) > 0) { var result = payFlex.CheckoutResult as Components.Payment.PayFlex.Models.VInstallmentResponse; if (result.ResultCode == "0000") { var paymentWorker = new PaymentWorker(); var paymentEntityModel = Mapper.Map <PaymentEntityViewModel>(orderLayer.Order); paymentEntityModel.PaymentDate = DateTime.Now; paymentEntityModel.Status = 0; paymentEntityModel.Log = Components.Converters.StringSerializer.Serialize <Components.Payment.PayFlex.Models.VInstallmentResponse>(payFlex.CheckoutResult); paymentWorker.InsertSitePaymentEntity(paymentEntityModel); return(RedirectToAction("Commit", new { id = orderLayer.Order.Id })); } else { return(RedirectToAction("Payment", "Bir hata oluştu lütfen tekrar deneyin!")); } } else { var result = payFlex.CheckoutResult as Components.Payment.PayFlex.Models.VPrepaidResponse; if (result.ResultCode == "0000") { var paymentWorker = new PaymentWorker(); var paymentEntityModel = Mapper.Map <PaymentEntityViewModel>(orderLayer.Order); paymentEntityModel.PaymentDate = DateTime.Now; paymentEntityModel.Status = 0; paymentEntityModel.Log = Components.Converters.StringSerializer.Serialize <Components.Payment.PayFlex.Models.VPrepaidResponse>(payFlex.CheckoutResult); paymentWorker.InsertSitePaymentEntity(paymentEntityModel); return(RedirectToAction("Commit", new { id = orderLayer.Order.Id })); } else { return(RedirectToAction("Payment", "Bir hata oluştu lütfen tekrar deneyin!")); } } default: return(null); } }
public ActionResult Payment(Models.Internal.PaymentModel model) { if (ModelState.IsValid) { var posWorker = new PosWorker(); var posSetting = posWorker.GetSitePosSetting(model.Pos); var orderLayer = new OrderLayer(); var payment = orderLayer.Order.Payments.FirstOrDefault(f => f.Id == orderLayer.Order.PaymentTypeId); switch (model.Pos) { case "payflex": var akposRequest = new Components.Payment.PayFlex.Models.MPIStatusRequest { BankId = posSetting.Referance, BrandName = model.CardType == "visa" ? "100" : model.CardType == "mastercard" ? "200" : "", ExpiryDate = model.ExpiryMonth + model.ExpiryYear, FailureUrl = Request.Url.Host + "/Order/PaymentCallback/payflex?result=fail", MerchantId = posSetting.Parameters["merchantid"], MerchantPassword = posSetting.Parameters["password"], InstallmentCount = int.Parse(model.Installment) > 0 ? model.Installment : null, Pan = model.CCNumber, PurchaseAmount = string.Format("{0:F0}", orderLayer.Order.GrandTotal * 100), SuccessUrl = Request.Url.Host + "/Order/PaymentCallback/payflex?result=ok", VerifyEnrollmentRequestId = orderLayer.Order.Id.ToString() }; var payFlex = new Components.Payment.PayFlex.Controller(akposRequest); if (payFlex.Is3D(posSetting.Parameters["mpiurl"])) { payFlex.PaymentModel = model; Session["PayFlexInstance"] = payFlex; return(View("PayFlexMpiPost", payFlex.MPIStatus)); } else { if (string.IsNullOrEmpty(akposRequest.InstallmentCount)) { //TODO: payflex TRY kodu girilecek var vprepaidRequest = new Components.Payment.PayFlex.Models.VPrepaidRequest { BankId = akposRequest.BankId, CurrencyAmount = akposRequest.Currency, CurrencyCode = "888", Cvv = model.Ccv, Expiry = akposRequest.ExpiryDate, MerchantId = akposRequest.MerchantId, Pan = akposRequest.Pan, Password = akposRequest.MerchantPassword, TransactionId = Guid.NewGuid().ToString(), TransactionType = "sale" }; payFlex.VPrepaidCheckout(posSetting.Parameters["checkouturl"], vprepaidRequest); if (payFlex.CheckoutResult.ResultCode == "0000") { var paymentWorker = new PaymentWorker(); var paymentEntityModel = Mapper.Map <PaymentEntityViewModel>(orderLayer.Order); paymentEntityModel.PaymentDate = DateTime.Now; paymentEntityModel.Status = 0; paymentEntityModel.Log = Components.Converters.StringSerializer.Serialize <Components.Payment.PayFlex.Models.VPrepaidResponse>(payFlex.CheckoutResult); paymentWorker.InsertSitePaymentEntity(paymentEntityModel); return(RedirectToAction("Commit", new { id = orderLayer.Order.Id })); } else { return(RedirectToAction("Payment", new { message = (new Components.Payment.PayFlex.ErrorCodes())[payFlex.CheckoutResult.ResultCode] })); } } else { //TODO: payflex TRY kodu girilecek var vinstallmentRequest = new Components.Payment.PayFlex.Models.VInstallmentRequest { BankId = akposRequest.BankId, CurrencyAmount = akposRequest.Currency, CurrencyCode = "888", Cvv = model.Ccv, Expiry = akposRequest.ExpiryDate, MerchantId = akposRequest.MerchantId, Pan = akposRequest.Pan, Password = akposRequest.MerchantPassword, TransactionId = Guid.NewGuid().ToString(), TransactionType = "sale", InstallmentCount = akposRequest.InstallmentCount }; payFlex.VInstallmentCheckout(posSetting.Parameters["checkouturl"], vinstallmentRequest); if (payFlex.CheckoutResult.ResultCode == "0000") { var paymentWorker = new PaymentWorker(); var paymentEntityModel = Mapper.Map <PaymentEntityViewModel>(orderLayer.Order); paymentEntityModel.PaymentDate = DateTime.Now; paymentEntityModel.Status = 0; paymentEntityModel.Log = Components.Converters.StringSerializer.Serialize <Components.Payment.PayFlex.Models.VInstallmentResponse>(payFlex.CheckoutResult); paymentWorker.InsertSitePaymentEntity(paymentEntityModel); return(RedirectToAction("Commit", new { id = orderLayer.Order.Id })); } else { return(RedirectToAction("Payment", new { message = (new Components.Payment.PayFlex.ErrorCodes())[payFlex.CheckoutResult.ResultCode] })); } } } default: return(RedirectToAction("Begin")); } } return(View(model)); }