Пример #1
0
        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
            });
        }
Пример #3
0
 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
         });
     }
 }
Пример #4
0
        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
                });
            }
        }