Crie uma instância do PaymentClient na sua Activity ou Fragment. Recomenda-se fazer isso no onCreate ou onResume.
import br.com.phoebus.android.payments.api.PaymentClient;
// Dentro da sua Activity
private PaymentClient paymentClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
paymentClient = new PaymentClient();
}
Bind o client ao serviço de pagamentos. Faça isso no onResume para garantir reconexão ao retornar à tela.
@Override
protected void onResume() {
super.onResume();
paymentClient.bind(this); // Bind assíncrono - aguarde confirmação se necessário
}
Desbinde no onDestroy para liberar recursos:
@Override
protected void onDestroy() {
try {
paymentClient.unbind(this);
} catch (Exception e) {
// Log de erro
}
super.onDestroy();
}
Crie um objeto PaymentRequestV2 com os parâmetros necessários. Os campos obrigatórios incluem credenciais e ID da transação do app. Exemplo básico:
import br.com.phoebus.android.payments.api.PaymentRequestV2;
import br.com.phoebus.android.payments.api.ApplicationInfo;
import br.com.phoebus.android.payments.api.Credentials;
import java.math.BigDecimal;
// Método para preparar a requisição
private void preparePayment() {
PaymentRequestV2 request = new PaymentRequestV2();
// Valor do pagamento (ex.: R$ 50,00)
BigDecimal value = BigDecimal.valueOf(5000).movePointLeft(2); // 50.00
request.setValue(value);
// ID único da transação no seu app (até 6 caracteres)
request.setAppTransactionId("123456");
// Credenciais do Portal PayStore
Credentials credentials = new Credentials();
credentials.setApplicationId("SEU_APPLICATION_ID"); // Substitua pelo seu ID
credentials.setSecretToken("SEU_SECRET_TOKEN"); // Substitua pelo seu token
// Informações da aplicação
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.setCredentials(credentials);
appInfo.setSoftwareVersion("1.0"); // Versão do seu app
request.setAppInfo(appInfo);
// Outros parâmetros opcionais (ex.: tipos de pagamento, parcelas, etc.)
// request.setPaymentTypes(Arrays.asList(PaymentType.CREDIT)); // Exemplo: Apenas crédito
// request.setInstallments(3); // Exemplo: 3 parcelas
// Inicie o pagamento (veja próximo passo)
}
Para detalhes completos dos parâmetros, consulte a tabela "Detalhe dos Parâmetros" na documentação principal (ex.: additionalValue, productShortName, etc.). Doc
Chame o método startPaymentV2 passando a requisição e um callback para lidar com o resultado. Implemente a interface PaymentClient.PaymentCallback
import br.com.phoebus.android.payments.api.PaymentV2;
import br.com.phoebus.android.payments.api.ErrorData;
import br.com.phoebus.android.payments.api.exception.ClientException;
// Sua Activity deve implementar PaymentClient.PaymentCallback<PaymentV2>
public class SuaActivity extends AppCompatActivity implements PaymentClient.PaymentCallback<PaymentV2> {
// Método para iniciar
private void startPayment() {
preparePayment(); // Do passo anterior
try {
paymentClient.startPaymentV2(request, this); // 'this' é o callback
} catch (ClientException e) {
// Trate erro de cliente (ex.: bind não conectado)
}
}
@Override
public void onSuccess(PaymentV2 payment) {
// Pagamento autorizado (pendente) - confirme ou cancele
// Ex.: payment.getPaymentId() para usar em confirm/cancel
doConfirmPayment(payment.getPaymentId());
}
@Override
public void onError(ErrorData errorData) {
// Erro na autorização - exiba mensagem
String message = errorData.getResponseMessage();
// Log ou Toast
}
}
Após sucesso na autorização, chame confirmPayment ou cancelPayment usando o paymentId. Exemplo de confirmação:
private void doConfirmPayment(String paymentId) {
try {
paymentClient.confirmPayment(paymentId, new PaymentClient.PaymentCallback<PaymentV2>() {
@Override
public void onSuccess(PaymentV2 payment) {
// Confirmação OK - imprima comprovante se configurado
}
@Override
public void onError(ErrorData errorData) {
// Erro na confirmação - tente cancelar
}
});
} catch (ClientException e) {
// Erro de cliente
}
}
Para cancelamento, substitua por cancelPayment(paymentId, callback).