public IActionResponse <string> Do(PaymentGateway gateway, TransactionModel model) { var currentUser = _userBusiness.Find(model.UserId); if (currentUser == null) { return(new ActionResponse <string>() { Message = LocalMessage.UsernameIsWrong }); } var transaction = _transactionBusiness.Do(new Transaction { OrderId = model.OrderId, Price = model.Price, PaymentGatewayId = model.PaymentGatewayId, Authority = "100", Status = "100", InsertDateMi = DateTime.Now, InsertDateSh = PersianDateTime.Now.ToString(PersianDateTimeFormat.Date) }); if (!transaction.IsSuccessful) { return new ActionResponse <string> { IsSuccessful = false, Message = LocalMessage.Exception } } ; using (HttpClient http = new HttpClient()) { var content = new StringContent(string.Empty, Encoding.UTF8, "application/json"); var response = http.PostAsync($"https://pay.ir/payment/send?api={gateway.MerchantId.Trim()}&amount={model.Price * 10}&redirect={AppSettings.TransactionRedirectUrl_Pay}&factorNumber={transaction.Result.TransactionId}", content).Result; var deserializeResponse = JsonConvert.DeserializeObject <GatewayPayResponseModel>(response.Content.ReadAsStringAsync().Result); if (deserializeResponse.status == 1) { return(new ActionResponse <string> { IsSuccessful = true, Result = $"https://pay.ir/payment/gateway/{deserializeResponse.transId}" }); } else { return(new ActionResponse <string>() { Message = LocalMessage.PaymentConnectionFailed }); } } }
public IActionResponse <string> Do(PaymentGateway gateway, TransactionModel model) { var currentUser = _userBusiness.Find(model.UserId); ServicePointManager.Expect100Continue = false; string uniqueIdentifier = string.Empty; var paymentRequest = _zarinPal.PaymentRequest( MerchantID: gateway.MerchantId, Amount: model.Price, Description: $"پرداخت سفارش {model.OrderId}", Email: currentUser.Email, Mobile: currentUser.MobileNumber.ToString(), CallbackURL: AppSettings.TransactionRedirectUrl_ZarinPal, Authority: out uniqueIdentifier); if (paymentRequest == 100) { var transaction = _transactionBusiness.Do(new Transaction { OrderId = model.OrderId, Price = model.Price, PaymentGatewayId = model.PaymentGatewayId, Authority = uniqueIdentifier, Status = "100", InsertDateMi = DateTime.Now, InsertDateSh = PersianDateTime.Now.ToString(PersianDateTimeFormat.Date) }); if (transaction.IsSuccessful) { return(new ActionResponse <string> { IsSuccessful = true, Result = $"https://www.zarinpal.com/pg/StartPay/{uniqueIdentifier}" }); } } return(new ActionResponse <string> { IsSuccessful = false, Message = LocalMessage.Exception }); }
public IActionResponse <string> Do(PaymentGateway gateway, TransactionModel model) { try { var currentUser = _userBusiness.Find(model.UserId); if (currentUser == null) { return(new ActionResponse <string>() { Message = LocalMessage.UsernameIsWrong }); } var transaction = new Transaction { OrderId = model.OrderId, Price = model.Price, PaymentGatewayId = model.PaymentGatewayId, Authority = "100", Status = "100", TrackingId = model.PaymentGatewayId.ToString(), InsertDateMi = DateTime.Now, InsertDateSh = PersianDateTime.Now.ToString(PersianDateTimeFormat.Date) }; var doTransaction = _transactionBusiness.Do(transaction); if (!doTransaction.IsSuccessful) { return new ActionResponse <string> { IsSuccessful = false, Message = LocalMessage.Exception } } ; var dataModel = new { InvoiceNumber = transaction.TransactionId.ToString(), InvoiceDate = transaction.InsertDateSh, TerminalCode = int.Parse(gateway.Username), MerchantCode = int.Parse(gateway.Password), Amount = Convert.ToDecimal(model.Price), RedirectAddress = AppSettings.TransactionRedirectUrl_Pasargad, Timestamp = CreateTimeSpan(transaction.InsertDateMi), Action = "1003", Mobile = currentUser.MobileNumber, currentUser.Email }; var data = JsonConvert.SerializeObject(dataModel); var content = new StringContent(data, Encoding.UTF8, "application/json"); var requestMessage = new HttpRequestMessage { RequestUri = new Uri("https://pep.shaparak.ir/Api/v1/Payment/GetToken"), Method = HttpMethod.Post, Content = content }; requestMessage.Headers.Add("Sign", GetSign(data)); var client = new HttpClient(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var response = client.SendAsync(requestMessage).Result; var deserializeResponse = JsonConvert.DeserializeObject <PasargadGetTokenReponse>(Encoding.UTF8.GetString(response.Content.ReadAsByteArrayAsync().Result)); if (deserializeResponse.IsSuccess) { return new ActionResponse <string> { IsSuccessful = true, Result = $"https://pep.shaparak.ir/payment.aspx?n={deserializeResponse.Token}" //Result = transaction.TransactionId.ToString() } } ; else { return new ActionResponse <string> { IsSuccessful = false, Message = deserializeResponse.Message } }; } catch (Exception e) { FileLoger.Error(e); return(new ActionResponse <string> { IsSuccessful = false, Message = LocalMessage.Error }); } }
public IActionResponse <string> Do(PaymentGateway gateway, TransactionModel model) { try { var transaction = _transactionBusiness.Do(new Transaction { OrderId = model.OrderId, Price = model.Price, PaymentGatewayId = model.PaymentGatewayId, Authority = "100", Status = "100", InsertDateMi = DateTime.Now, InsertDateSh = PersianDateTime.Now.ToString(PersianDateTimeFormat.Date) }); if (!transaction.IsSuccessful) { return new ActionResponse <string> { IsSuccessful = false, Message = LocalMessage.Exception } } ; var dataBytes = Encoding.UTF8.GetBytes(string.Format("{0};{1};{2}", gateway.Username, transaction.Result.TransactionId, model.Price * 10)); var symmetric = SymmetricAlgorithm.Create("TripleDes"); symmetric.Mode = CipherMode.ECB; symmetric.Padding = PaddingMode.PKCS7; var encryptor = symmetric.CreateEncryptor(Convert.FromBase64String(gateway.MerchantId), new byte[8]); var signData = Convert.ToBase64String(encryptor.TransformFinalBlock(dataBytes, 0, dataBytes.Length)); var data = new { TerminalId = gateway.Username, MerchantId = gateway.Password, Amount = model.Price * 10, SignData = signData, ReturnUrl = AppSettings.TransactionRedirectUrl_Sadad, LocalDateTime = DateTime.Now, OrderId = transaction.Result.TransactionId }; //FileLoger.Info(JsonConvert.SerializeObject(data), GlobalVariable.LogPath); var res = CallApi <PayResultData>("https://sadad.shaparak.ir/VPG/api/v0/Request/PaymentRequest", data); res.Wait(); //FileLoger.Info(JsonConvert.SerializeObject(res.Result), GlobalVariable.LogPath); if (res != null && res.Result != null) { return(new ActionResponse <string> { IsSuccessful = true, Result = $"https://sadad.shaparak.ir/VPG/Purchase/Index?token={res.Result.Token}" }); } else { return(new ActionResponse <string>() { Message = LocalMessage.PaymentConnectionFailed }); } } catch (Exception ex) { FileLoger.Error(ex, GlobalVariable.LogPath); return(new ActionResponse <string>() { Message = LocalMessage.Exception }); } }