/// <summary> /// Para cobranças cujo paymentType é <see cref="PaymentType.CREDIT_CARD"/> podem ser pagas logo em seguida sua criação. /// /// Através desse endpoint você cria um pagamento para a cobrança emitida identificada a partir de seu chargeId retornado no momento de sua geração. /// /// Este recurso permite a captura tardia de pagamento, ou seja, através dele é possível obter e segurar o valor da transação no saldo do cartão em questão sem concluír este pagamento efetivamente, muito utilizado na prestação de serviços. /// /// Para utilizar o recurso dessa forma é preciso que o parâmetro <see cref="BillingForPayment.Delayed"/> receba o valor true, resultando em um pagamento capturado que recebe o status <see cref="PaymentStatus.AUTHORIZED"/>. Caso contrário, o pagamento será efetuado normalmente com status <see cref="PaymentStatus.CONFIRMED"/>. /// /// IMPORTANTE: caso o pagamento tenha sido recusado, faça uma nova tentativa utilizando o chargeId da cobrança já criada. Não é necessário criar uma nova cobrança para este processo. /// </summary> /// <param name="resourceToken"></param> /// <param name="payment"></param> /// <returns></returns> public PaymentResponse CreatePayment(string resourceToken, Models.Requests.CreatePaymentResource.CreatePayment payment) { if (string.IsNullOrWhiteSpace(resourceToken)) { throw new ArgumentNullException(nameof(resourceToken)); } if (payment == null) { throw new ArgumentNullException(nameof(payment)); } var request = new Requests.Payments.CreatePaymentRequest(Client.GetRequestContext()); return(request.Execute(new Models.Requests.CreatePaymentResource { ResourceToken = resourceToken, Payment = payment })); }
public void Payments() { var service = new PaymentsService(_Client); var card = new Models.DirectCheckouts.Card { CardNumber = "5132 0723 8792 9820", ExpirationMonth = "04", ExpirationYear = "2022", HolderName = "HIDELBRANDO SILVA", SecurityCode = "732" }; var dc = new DirectCheckouts.DirectCheckout(_Client.Credentials.PublicToken, false); var creditCardHash = dc.GetCardHash(card); if (string.IsNullOrWhiteSpace(creditCardHash)) { throw new Exception("Definir hash do cartão de crédito"); } // // Cria a cobrança var chargesService = new ChargesService(_Client); var split = new List <Split> { new Split { AmountRemainder = true, ChargeFee = false, Percentage = 90.0m, RecipientToken = "5E64B2E0B0D4AE42A3F2981CC4055CF613F6C17B5C2912029C587581E72ECDB8", // Seller - Harry Potter - Document: 90564489603 - Id: dac_2585CBF0E2A23649 }, new Split { AmountRemainder = false, ChargeFee = false, Percentage = 1.0m, RecipientToken = "F3FEB619853E74753853E0BBFC1A6CBF53189A3F8059035877C136641897AAB9", // Optional - Hogwarts - Document: 78338726311040 - Id: dac_591251E5D47F08AE }, new Split { AmountRemainder = false, ChargeFee = true, Percentage = 9.0m, RecipientToken = _Client.Credentials.PrivateToken, // Bibi Peças } }; var newCharge = new Models.Requests.CreateChargeResource.CreateCharge { Charge = new Charge { Description = $"Cobrança Teste - {Guid.NewGuid()}", //References Amount = 100.0m, //TotalAmount = 100.0m, //Installments = 1, DueDate = DateTime.Now.AddDays(3), PaymentTypes = new List <PaymentType> { PaymentType.CREDIT_CARD }, Split = split }, Billing = new BillingForCharge { Name = "Hidelbrando da Silva", Document = Helpers.NewCPF(), Email = "*****@*****.**", Phone = "5585982061631", BirthDate = DateTime.Now.AddYears(-21), }, }; var createdCharges = chargesService.CreateCharge(_Client.Credentials.PrivateToken, newCharge); Assert.IsNotNull(createdCharges?.Embedded?.Charges.FirstOrDefault()?.Id); var chargeId = createdCharges.Embedded.Charges[0].Id; // TODO service.CreditCardTokenization var newPayment = new Models.Requests.CreatePaymentResource.CreatePayment { ChargeId = chargeId, Billing = new BillingForPayment { Delayed = true, Address = new Address { Street = "Rua dos Alfeneiros", Number = "4", Complement = "Armário debaixo da escada", Neighborhood = "Surrey", City = "Caucaia", State = AddressState.CE, PostCode = "61611220" }, Email = "*****@*****.**" }, CreditCardDetails = new CreditCardDetails { CreditCardHash = creditCardHash } }; var createdPayment = service.CreatePayment(_Client.Credentials.PrivateToken, newPayment); Assert.IsNotNull(createdPayment); Assert.IsNotNull(createdPayment.Payments); Assert.IsFalse(string.IsNullOrWhiteSpace(createdPayment.TransactionId)); var newCapturePayment = new Models.Requests.CaptureCreditCardPaymentResource.CaptureCreditCardPayment { ChargeId = chargeId, Amount = newCharge.Charge.Amount, }; var capturedPayment = service.CaptureCreditCardPayment(_Client.Credentials.PrivateToken, createdPayment.Payments[0].Id, newCapturePayment); Assert.IsNotNull(capturedPayment); Assert.IsNotNull(createdPayment.Payments); Assert.IsFalse(string.IsNullOrWhiteSpace(createdPayment.TransactionId)); var newRefundPayment = new Models.Requests.RefundCreditCardPaymentResource.RefundCreditCardPayment { Amount = newCharge.Charge.Amount, Split = split }; var refundedPayment = service.RefundCreditCardPayment(_Client.Credentials.PrivateToken, createdPayment.Payments[0].Id, newRefundPayment); Assert.IsNotNull(refundedPayment); Assert.IsNotNull(refundedPayment.Refunds); Assert.IsFalse(string.IsNullOrWhiteSpace(refundedPayment.TransactionId)); }