public void GPConnectorTestEETPaymentRefund() { var connector = new GPConnector(TestUtils.API_URL, TestUtils.CLIENT_ID_EET, TestUtils.CLIENT_SECRET_EET); var refundedItems = new List <OrderItem>(); refundedItems.Add(new OrderItem { Name = "Pocitac Item1", Amount = 119990, Count = 1, VatRate = VatRate.RATE_4, ItemType = ItemType.ITEM, Ean = "1234567890123", ProductURL = @"https://www.eshop123.cz/pocitac" }); refundedItems.Add(new OrderItem { Name = "Oprava Item2", Amount = 19960, Count = 1, VatRate = VatRate.RATE_3, ItemType = ItemType.ITEM, Ean = "1234567890189", ProductURL = @"https://www.eshop123.cz/pocitac/oprava" }); var eet = new EET { CelkTrzba = 139950, ZaklDan1 = 99165, Dan1 = 20825, ZaklDan2 = 17357, Dan2 = 2603, Mena = Currency.CZK }; var refundObject = new RefundPayment { Amount = 139950, Items = refundedItems, Eet = eet }; try { var refundEETPayment = connector.GetAppToken().RefundPayment(3049250113, refundObject); Console.WriteLine("EET refund result: {0}", refundEETPayment); } catch (GPClientException ex) { Console.WriteLine("EET Payment refund ERROR"); var err = ex.Error; var date = err.DateIssued; foreach (var element in err.ErrorMessages) { // } } }
/// <exception cref="GPClientException"></exception> public PaymentResult RefundPayment(long id, RefundPayment refundPayment) { var restRequest = CreateRestRequest(@"/payments/payment/{id}/refund", "application/json"); restRequest.AddParameter("id", id, ParameterType.UrlSegment); restRequest.AddJsonBody(refundPayment); var response = Client.Execute <PaymentResult>(restRequest); return(ProcessResponse <PaymentResult>(response)); }
/// <exception cref="GPClientException"></exception> public async Task <PaymentResult> RefundPaymentAsync(long id, RefundPayment refundPayment) { var restRequest = CreateRestRequest(@"/payments/payment/{id}/refund", "application/json"); restRequest.AddParameter("id", id, ParameterType.UrlSegment); restRequest.AddJsonBody(refundPayment); var response = await Client.ExecuteTaskAsync(restRequest); var result = await Task.Factory.StartNew(() => ProcessResponse <PaymentResult>(response)); return(result); }
public string RefundPayment(string identifier, bool operation) { _request = new RestRequest("ws/refund", Method.POST); RefundPayment refundPayment = new RefundPayment() { Integration_key = _integration_key, }; refundPayment.Operation = operation ? "request" : "cancel"; refundPayment.Hash = identifier.Contains("HASH--") ? identifier.Replace("HASH--", "") : null; refundPayment.Merchant_refund_code = identifier.Contains("MERC--") ? identifier.Replace("MERC--", "") : null; return(JsonConvert.SerializeObject(refundPayment)); }
public void should_call_RefundPayment() { //arrange var request = new RefundPayment { Amount = 10 }; var customer = AddCustomer(); var cardId = StoreCreditCard(customer); var payment = AttemptPayment(customer, cardId); //act var actual = Sut.RefundPayment(payment, request); //assert Assert.AreEqual(200, actual.Code); Assert.IsEmpty(actual.Message); Assert.AreEqual("OK", actual.Status); }
public async Task RefundPayment(RefundPayment model, int corpClientId, long userId) { var currentOrder = await GetByNumber(model.OrderNumber, corpClientId); var payments = await transactionApp.GetTransactions(currentOrder.OrderId, corpClientId); var transaction = payments.FirstOrDefault(p => p.TransactionId == model.TransactionId); if (transaction.TransactionStatusId != 1) { throw new BusinessException("Não é possível fazer estorno desta transação."); } var totalPaid = payments.Where(s => s.IsIncome && s.TransactionStatusId == 1).Sum(s => s.Amount); var nextPaymentStatus = (PaymentStatusEnum)currentOrder.PaymentStatusId; if ((transaction.IsOrderPrincipalAmount ?? false)) { if ((currentOrder.ItemsTotalAfterDiscounts - transaction.Amount) == 0) { nextPaymentStatus = PaymentStatusEnum.Estornado; } else if ((currentOrder.ItemsTotalAfterDiscounts - transaction.Amount) == currentOrder.ItemsTotalAfterDiscounts) { nextPaymentStatus = PaymentStatusEnum.Pago; } else if (totalPaid - transaction.Amount <= 0) { nextPaymentStatus = PaymentStatusEnum.Pendente; } else { nextPaymentStatus = PaymentStatusEnum.ParcialmentePago; } } using var trans = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled); await orderApp.Update(new UpdateOrder { CompleteBy = currentOrder.CompleteBy, FreightPrice = currentOrder.FreightPrice, OrderNumber = currentOrder.OrderNumber, PaymentStatusId = nextPaymentStatus }, corpClientId); await transactionApp.ChangeStatus(transaction.TransactionId, corpClientId, 2); await transactionApp.AddTransaction(new NewTransaction { Amount = transaction.Amount, CorpClientId = corpClientId, Date = DateTimeOffset.UtcNow, Description = $"Transação (#{transaction.TransactionId}) do pedido #{currentOrder.OrderNumber} estornada", MerchantName = transaction.MerchantName, OrderId = transaction.OrderId, TransactionTypeId = 9, TransactionStatusId = 1, IsOrderPrincipalAmount = transaction.IsOrderPrincipalAmount }, userId); trans.Complete(); }
/// <summary> /// Refund a payment /// details: https://developer.chargeover.com/apidocs/rest/#refund-transaction /// </summary> public IIdentityResponse RefundPayment(int id, RefundPayment request) { return(Create($"transaction/{id}?action=refund", request)); }
public async Task <ActionResult> Refund(RefundPayment model) { await service.RefundPayment(model, UserData.CorpClientId.Value, UserData.UserId); return(Ok()); }
/// <summary> /// 退款 /// </summary> /// <param name="payment"></param> /// <returns></returns> public RefundPaymentResult Refund(RefundPayment payment) { var result = _httpHelper.Post <RefundPaymentResult>(payment); return(result); }