Estou realizando uma integração com api da cielo porém recebendo uma mensagem de erro:
Exception in thread “main” java.lang.Error: Unresolved compilation problems:
Type mismatch: cannot convert from SaleResponse to Sale
Type mismatch: cannot convert from SaleResponse to Sale
at cieloecommerce.sdk.ecommerce.Teste1.main(Teste1.java:49)
Cara, o erro está bem claro, você está tentando obter o valor de algo em um objeto que não é daquela classe/interface e nem estende ou implementa ela.
Precisa rever a documentação e identificar como obter esse valor.
Talvez o retorno do método cancelSale não seja do mesmo tipo da variavel sale que é da classe “Sale”, tente criar uma variável compatível com o retorno do método cancelSale!
Este é um problema recorrente de biblioteca de terceiros.
Porém, você precisa ver que os tipos são, realmente, incompatíveis, seria o mesmo que tentar atribuir um valor de List a uma variável String.
// …
// Configure seu merchant
Merchant merchant = new Merchant(“MERCHANT ID”, “MERCHANT KEY”);
// Crie uma instância de Sale informando o ID do pagamento
Sale sale = new Sale(“ID do pagamento”);
// Crie uma instância de Customer informando o nome do cliente
Customer customer = sale.customer(“Comprador Teste”);
// Crie uma instância de Payment informando o valor do pagamento
Payment payment = sale.payment(15700);
// Crie uma instância de Credit Card utilizando os dados de teste
// esses dados estão disponíveis no manual de integração
payment.creditCard(“123”, “Visa”).setExpirationDate(“12/2018”)
.setCardNumber(“0000000000000001”)
.setHolder(“Fulano de Tal”);
// Crie o pagamento na Cielo
try {
// Configure o SDK com seu merchant e o ambiente apropriado para criar a venda
sale = new CieloEcommerce(merchant, Environment.SANDBOX).createSale(sale);
// Com a venda criada na Cielo, já temos o ID do pagamento, TID e demais
// dados retornados pela Cielo
String paymentId = sale.getPayment().getPaymentId();
// Com o ID do pagamento, podemos fazer sua captura, se ela não tiver sido capturada ainda
sale = new CieloEcommerce(merchant, Environment.SANDBOX).captureSale(paymentId, 15700, 0);
// E também podemos fazer seu cancelamento, se for o caso
sale = new CieloEcommerce(merchant, Environment.SANDBOX).cancelSale(paymentId, 15700);
} catch (CieloRequestException e) {
// Em caso de erros de integração, podemos tratar o erro aqui.
// os códigos de erro estão todos disponíveis no manual de integração.
CieloError error = e.getError();
} catch (IOException e) {
e.printStackTrace();
}
Cara, aí o ideal é tentar alguém da equipe de suporte deles.
Eu vi as classes Sale e SaleResponse, uma é bem diferente da outra. Além disso, conferi a classe CieloEcommerce e, definitivamente, tem um erro bem grosseiro nesse exemplo:
public SaleResponse cancelSale(String paymentId, Integer amount) throws IOException, CieloRequestException {
UpdateSaleRequest updateSaleRequest = new UpdateSaleRequest("void", merchant, environment);
updateSaleRequest.setHttpClient(httpClient);
updateSaleRequest.setAmount(amount);
SaleResponse sale = updateSaleRequest.execute(paymentId);
return sale;
}
Olha, você precisaria trocar o Sale por um objeto de SaleResponse.
Realmente, eu não entendi o que o Sale (entendo que se trata do registro de venda) tem com o cancelamento.
Seria algo como
SaleResponse response = new CieloEcommerce(merchant, Environment.SANDBOX).cancelSale(paymentId, 15700);
Fiz dessa forma:
SaleResponse sale2 = new CieloEcommerce(merchant, Environment.SANDBOX).captureSale(paymentId, 15700, 0);
// E também podemos fazer seu cancelamento, se for o caso
//s sale = new CieloEcommerce(merchant, Environment.SANDBOX).cancelSale(paymentId, 15700);
SaleResponse sale3 = new CieloEcommerce(merchant, Environment.SANDBOX).cancelSale(paymentId, 15700);
Eu sugiro que você use a API ao invés do SDK. O SDK não possui documentação, apenas um exemplo, que inclusive está errado(O método captureSale da Classe CieloEcommerce retorna um Objeto do Tipo SaleResponse e não Sale como demonstra o exemplo ). Já a documentação da API possui todas as informações necessárias para realizar a integração.