Após sucesso em startPaymentV2, obtenha o paymentId do objeto PaymentV2 retornado no callback onSuccess. Exemplo:
@Override
public void onSuccess(PaymentV2 payment) {
String paymentId = payment.getPaymentId();
// Decida se confirma ou cancela com base na lógica do app
if (/* condição para cancelar */) {
doCancelPayment(paymentId);
}
}
Use o PaymentClient para chamar cancelPayment, passando o paymentId e um callback.
Implemente PaymentClient.PaymentCallback
import br.com.phoebus.android.payments.api.PaymentClient;
import br.com.phoebus.android.payments.api.ErrorData;
import br.com.phoebus.android.payments.api.PaymentV2;
import br.com.phoebus.android.payments.api.exception.ClientException;
// Método para desfazer
private void doCancelPayment(String paymentId) {
try {
paymentClient.cancelPayment(paymentId, new PaymentClient.PaymentCallback<PaymentV2>() {
@Override
public void onSuccess(PaymentV2 payment) {
// Desfazimento OK - status agora é DESFEITA
// Não há dados retornados além de sucesso
}
@Override
public void onError(ErrorData errorData) {
// Erro no desfazimento - exiba mensagem
String message = errorData.getResponseMessage();
// Verifique errorData.paymentsResponseCode (ex.: TRANSACTION_ALREADY_CONFIRMED)
}
});
} catch (ClientException e) {
// Trate erro de cliente (ex.: bind não conectado)
}
}