Пример #1
0
        /// <summary>
        /// Processes a  transaction with the PayU API.
        /// </summary>
        /// <param name="transaction">The constructed transaction to process.</param>
        /// <returns>A <see cref="PaymentTransaction"/> object containing PayU's response for the transaction.</returns>
        /// <exception cref="InvalidAuthException">Thrown when the keys used to configure the Kit are invalid.</exception>
        /// <exception cref="UnexpectedTransactionException">Thrown when an unexpected processing error occurs.</exception>
        public PaymentTransaction ExecuteTransaction(Transaction transaction)
        {
            var body = new PaymentTransactionRequest
            {
                Command     = ApiCommand.SubmitTransaction,
                Language    = _language,
                Merchant    = _merchant,
                Test        = _testMode,
                Transaction = transaction
            };

            if (_testMode)
            {
                Console.Write("\nATTEMPT TRANSACTION, BODY =\n");
                Console.Write(JsonConvert.SerializeObject(body, Formatting.Indented, new JsonSerializerSettings
                {
                    NullValueHandling = NullValueHandling.Ignore
                }));
                Console.Write("\n");
            }

            PaymentTransaction response;

            try
            {
                response = _endpoint.ConfigureRequest(settings =>
                {
                    var jsonSettings = new JsonSerializerSettings
                    {
                        NullValueHandling      = NullValueHandling.Ignore,
                        ObjectCreationHandling = ObjectCreationHandling.Replace
                    };
                    settings.JsonSerializer = new NewtonsoftJsonSerializer(jsonSettings);
                }).WithHeaders(_headers).PostJsonAsync(body).ReceiveJson <PaymentTransaction>().Result;

                if (_testMode)
                {
                    Console.Write("\nATTEMPT TRANSACTION, RESPONSE =\n");
                    Console.Write(JsonConvert.SerializeObject(response, Formatting.Indented, new JsonSerializerSettings
                    {
                        NullValueHandling = NullValueHandling.Ignore
                    }));
                    Console.Write("\n");
                }

                if (response.Error == "Invalid credentials")
                {
                    throw new InvalidAuthException("The provided credentials for the PayU API seem to be invalid.");
                }
            } catch (Exception e)
            {
                throw new UnexpectedTransactionException(
                          "An unexpected error occured while handling a GetAvailableBanks() transaction", e);
            }

            return(response);
        }
Пример #2
0
        public string PaymentTransactionProcessLongRunningAction(string id, int PaypalApi, string RangeDate)
        {
            PaypalApi paypalApi = this.ImsService.GetPaypalApi(PaypalApi);

            this.ImsService.PayPalHelper(paypalApi);

            string dataRange = RangeDate;

            string[] date = dataRange.Split(new char[] { '-' });

            DateTime startDate = DateTime.Parse(date[0].Trim());
            DateTime endDate   = DateTime.Parse(date[1].Trim());

            IEnumerable <PaymentTransactionSearchResultType> PaypalTransactionSearch = this.ImsService.ApiTransactionSearch(startDate, endDate);
            var total = PaypalTransactionSearch.Count <PaymentTransactionSearchResultType>();


            int i = 0;

            foreach (var item in PaypalTransactionSearch)
            {
                GetTransactionDetailsResponseType PaypalTransactionDetails = this.ImsService.ApiTransactionDetail(item);
                if (PaypalTransactionDetails.Ack.Equals(AckCodeType.SUCCESS))
                {
                    i++;
                    int d = Precentage(i, total);

                    lock (syncRoot)
                    {
                        ProcessStatus[id] = d;
                    }


                    /*TransactionDetailRequest request = new TransactionDetailRequest
                     * {
                     *  TransactionID = item.TransactionID
                     * };*/

                    PaymentTransactionRequest request = new PaymentTransactionRequest
                    {
                        TransactionID = item.TransactionID
                    };
                    if (this.ImsService.GetPaymentTransactionList(request).Count() == 0)
                    {
                        var detail = this.ImsService.PaymentTransaction(PaypalTransactionDetails);

                        using (var dbContext = new ImsDbContext())
                        {
                            dbContext.Insert <Evisou.Ims.Contract.Model.PayPal.PaymentTransactionType>(detail);
                        }
                    }
                }
            }

            return(id);
        }
Пример #3
0
        public async Task <PaymentTransactionResponse> PayTransactionAsync(PaymentTransactionRequest paymentTransactionRequest)
        {
            RestClient  client  = WebServiceContext.GetUrl("/api/v2/sale");
            RestRequest request = WebServiceContext.GetRequestBody("post");

            request.AddParameter("application/json", JsonConvert.SerializeObject(paymentTransactionRequest), ParameterType.RequestBody);
            IRestResponse response = await client.ExecuteTaskAsync(request);

            PaymentTransactionResponse paymentTransactionResponse = JsonConvert.DeserializeObject <PaymentTransactionResponse>(response.Content);

            return(paymentTransactionResponse);
        }
Пример #4
0
 public async Task <PaymentTransactionResponse> PostTransactionPayment(PaymentTransactionRequest paymentTransactionRequest)
 {
     Repository = new PaymentRepository();
     return(await Repository.PayTransactionAsync(paymentTransactionRequest));
 }