/// <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); }
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); }
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); }
public async Task <PaymentTransactionResponse> PostTransactionPayment(PaymentTransactionRequest paymentTransactionRequest) { Repository = new PaymentRepository(); return(await Repository.PayTransactionAsync(paymentTransactionRequest)); }