Exemplo n.º 1
0
        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)
                {
                    //
                }
            }
        }
Exemplo n.º 2
0
        /// <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));
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
 /// <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));
 }
Exemplo n.º 8
0
        public async Task <ActionResult> Refund(RefundPayment model)
        {
            await service.RefundPayment(model, UserData.CorpClientId.Value, UserData.UserId);

            return(Ok());
        }
Exemplo n.º 9
0
        /// <summary>
        /// 退款
        /// </summary>
        /// <param name="payment"></param>
        /// <returns></returns>
        public RefundPaymentResult Refund(RefundPayment payment)
        {
            var result = _httpHelper.Post <RefundPaymentResult>(payment);

            return(result);
        }