Seguem abaixo alguns exemplos de camadas dos métodos do PlugPagService Wrapper para realizar transações.
As formas de fazer as chamadas e de tratar os valores retornados vão depender da implementação do seu aplicativo, porém é importante que sua aplicação controle ações de duplo clique para prevenir que o serviço seja chamado duas vezes.
Pagamento de R$250,00. Credito à vista:
public void startPayment(Context context) {
// Define os dados do pagamento
PlugPagPaymentData paymentData =
new PlugPagPaymentData(
PlugPag.TYPE_CREDITO,
25000,
PlugPag.INSTALLMENT_TYPE_A_VISTA,
1,
"CODVENDA");
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Ativa terminal e faz o pagamento
int initResult = plugpag.initializeAndActivatePinpad(new
PlugPagActivationData("SEU_CODIGO_DE_ATIVAÇÃO")));
if (initResult == PlugPag.RET_OK) {
PlugPagTransactionResult result = plugpag.doPayment(paymentData);
// Trata o resultado da transação
...
}
}
Pagamento de R$300. Credito parcelado em 3 :
public void startPayment(Context context) {
// Define os dados do pagamento
PlugPagPaymentData paymentData =
new PlugPagPaymentData(
PlugPag.TYPE_CREDITO,
30000,
PlugPag.INSTALLMENT_TYPE_PARC_VENDEDOR,
3,
"CODVENDA");
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Ativa terminal e faz o pagamento
int initResult = plugpag.initializeAndActivatePinpad(new
PlugPagActivationData("SEU_CODIGO_DE_ATIVAÇÃO")));
if (initResult == PlugPag.RET_OK) {
PlugPagTransactionResult result = plugpag.doPayment(paymentData);
// Trata o resultado da transação
...
}
}
Pagamento de R$150,00. Débito:
public void startPayment(Context context) {
// Define os dados do pagamento
PlugPagPaymentData paymentData =
new PlugPagPaymentData(
PlugPag.TYPE_DEBITO,
15000,
PlugPag.INSTALLMENT_TYPE_A_VISTA,
1,
"CODVENDA");
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Ativa terminal e faz o pagamento
int initResult = plugpag.initializeAndActivatePinpad(new
PlugPagActivationData("SEU_CODIGO_DE_ATIVAÇÃO")));
if (initResult == PlugPag.RET_OK) {
PlugPagTransactionResult result = plugpag.doPayment(paymentData);
// Trata o resultado da transação
...
}
}
Pagamento de R$50,00. Voucher:
public void startPayment(Context context) {
// Define os dados do pagamento
PlugPagPaymentData paymentData =
new PlugPagPaymentData(
PlugPag.TYPE_VOUCHER,
5000,
PlugPag.INSTALLMENT_TYPE_A_VISTA,
1,
"CODVENDA");
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Ativa terminal e faz o pagamento
int initResult = plugpag.initializeAndActivatePinpad(new
PlugPagActivationData("SEU_CODIGO_DE_ATIVAÇÃO")));
if (initResult == PlugPag.RET_OK) {
PlugPagTransactionResult result = plugpag.doPayment(paymentData);
// Trata o resultado da transação
...
}
}
Pagamento de R$150,00, no débito utilizando pagamento via carnê:
public void startPayment(Context context) {
// Define os dados do pagamento
PlugPagPaymentData paymentData =
new PlugPagPaymentData(
PlugPag.TYPE_DEBITO,
15000,
PlugPag.INSTALLMENT_TYPE_A_VISTA,
1,
"CODVENDA",
true,
false,
true //Define que o pagamento será via carnê
);
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Ativa terminal e faz o pagamento
int initResult = plugpag.initializeAndActivatePinpad(new
PlugPagActivationData("SEU_CODIGO_DE_ATIVAÇÃO")));
if (initResult == PlugPag.RET_OK) {
PlugPagTransactionResult result = plugpag.doPayment(paymentData);
// Trata o resultado da transação
...
}
}
Pagamento de R$250,00, no crédito, à vista utilizando pagamento parcial:
public void startPayment(Context context) {
// Define os dados do pagamento
PlugPagPaymentData paymentData =
new PlugPagPaymentData(
PlugPag.TYPE_CREDITO,
25000,
PlugPag.INSTALLMENT_TYPE_A_VISTA,
1,
"CODVENDA",
true,
true //Define que o pagamento será do tipo parcial false
) ;
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Ativa terminal e faz o pagamento
int initResult = plugpag.initializeAndActivatePinpad(new
PlugPagActivationData("SEU_CODIGO_DE_ATIVAÇÃO")));
if (initResult == PlugPag.RET_OK) {
PlugPagTransactionResult result = plugpag.doPayment(paymentData);
// Trata o resultado da transação
...
}
}
Estorno de um pagamento
public void voidPayment(Context context) {
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Ativa terminal e faz o pagamento
int initResult = plugpag.initializeAndActivatePinpad(new
PlugPagActivationData("SEU_CODIGO_DE_ATIVAÇÃO")));
if (initResult == PlugPag.RET_OK) {
PlugPagTransactionResult result = plugpag.voidPayment(
"transactionCode",
"transactionId");
// Trata o resultado do estorno
...
}
}
Verificar autenticação
public void checkAuthentication(Context context) {
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Verifica autenticação
boolean authenticated = plugpag.isAuthenticated();
if (authenticated) {
// Usuário autenticado
...
} else {
// Usúario não autenticado
...
}
}
Invalidar autenticação
public void logout(Context context) {
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Invalida a autenticação existente
plugpag.invalidateAuthentication();
...
}
Solicitar ativação
public void requestAuth(Activity activity) {
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugPag = new PlugPag(activity, appIdentification);
// Cria objeto com informação do código de ativação
PlugPagActivationData plugPagActivationData =
new PlugPagActivationData("SeuCodigoDeAtivação”);
// Solicita autenticação
PlugPagInitializationResult result =
plugPag.initializeAndActivatePinPad(plugPagActivationData);
if(result.getResult() == PlugPag.RET_OK) {
//Sucesso
} else {
//Erro
}
...
}
O resultado da autenticação será retornado através da classe PlugPagInitializationResult.
Se a autenticação for efetuada com sucesso, o método getResult() irá retornar valor igual a PlugPag.RET_OK. Caso contrário, mais informações do erro podem ser encontradas nos métodos getErrorCode() e getErrorMessage().
Obter versão da biblioteca
public void getLibVersion(Context context) {
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Obtém a versão da biblioteca
String version = plugpag.getLibVersion();
}
Reimpressão da via do estabelecimento
public void reprintStablishmentReceipt() {
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Obtém a versão da biblioteca
PlugPagPrintResutlt result = plugpag.reprintStablishmentReceipt();
}
Reimpressão da via do cliente
public void reprintCustomerReceipt() {
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Obtém a versão da biblioteca
PlugPagPrintResutlt result = plugpag.reprintCustomerReceipt();
}
Calcular parcelas
public void calculateInstallments() {
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Obtém a versão da biblioteca
Array<String> installments = plugpag.calculateInstallments(saleValue);
}
O resultado retornado será uma String contendo a quantidade de parcelas permitidas mais o valor de cada parcela, seguindo o padrão “ x R$ ”.
Customizar dialog de impressão da via do cliente
public void startPayment(Context context) {
// Define os dados do pagamento
PlugPagPaymentData paymentData =
new PlugPagPaymentData(
PlugPag.TYPE_DEBITO,
15000,
PlugPag.INSTALLMENT_TYPE_A_VISTA,
1,
"CODVENDA");
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Cria a customização da dialog de impressão da via do cliente
PlugPagCustomPrinterLayout customDialog = new PlugPagCustomPrinterLayout();
customDialog.setTitle("Imprimir via do cliente?");
customDialog.setButtonBackgroundColor("#00ff33");
customDialog.setConfirmText("Yes");
customDialog.setCancelText("No");
// Ativa terminal e faz o pagamento
int initResult = plugpag.initializeAndActivatePinpad(new
PlugPagActivationData("SEU_CODIGO_DE_ATIVAÇÃO")));
if (initResult == PlugPag.RET_OK) {
plugPag.setPlugPagCustomPrinterLayout(customDialog);
PlugPagTransactionResult result = plugpag.doPayment(paymentData);
// Trata o resultado da transação
...
}
}
Ler cartão NFC
public void readNFCCard() {
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context);
PlugPagNearFieldCardData dataCard = new PlugPagNearFieldCardData();
dataCard.setStartSlot(1);
dataCard.setEndSlot(1);
// Lê um cartão NFC
PlugPagNFCResult result = plugpag.readFromNFCCard(dataCard);
}
O resultado da autenticação será retornado através da classe PlugPagNFCResult.
Se a autenticação for efetuada com sucesso, o método getResult() irá retornar valor igual
a 1. Do contrário, o método getResult() retornará -1.
Escrever no cartão NFC
public void writeToNFCCard() {
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context);
String info = "teste_com16bytes";
byte[] infoBytes = info.getBytes();
PlugPagNearFieldCardData dataCard = new PlugPagNearFieldCardData();
dataCard.setStartSlot(1);
dataCard.setEndSlot(2);
dataCard.getSlots()[1].put(“data”, infoBytes);
// Escreve em um cartão NFC
int result = plugpag.writeToNFCCard(dataCard);
}
O resultado da autenticação será retornado através da classe PlugPagNFCResult.
Se a autenticação for efetuada com sucesso, o método getResult() irá retornar valor igual a 1. Do contrário, o método getResult() retornará -1.
Abortar operação de leitura/escrita no cartão NFC
public void abortNFC() {
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context);
// Escreve em um cartão NFC
int result = plugpag.abort();
}
O resultado do abort será retornado através da classe PlugPagNFCResult.
Se o abort for efetuada com sucesso, o método getResult() irá retornar valor igual a 1. Do
contrário, o método getResult() retornará -1.
Imprimir arquivo
public void printFile() {
// Cria a referência do PlugPag
PlugPag plugPag = new PlugPag(context);
// Cria objeto com informações da impressão
PlugPagPrinterData data = new PlugPagPrinterData(
Environment.getExternalStorageDirectory().getAbsolutePath() + “/SeuDiretorio/SeuArquivo”,
4,
10 * 12));
PlugPagPrinterListener listener = new PlugPagPrinterListener() {
@Override
public void onError(@NotNull PlugPagPrintResult plugPagPrintResult) {
plugPagPrintResult.getMessage(); // Mensagem de erro
plugPagPrintResult.getErrorCode(); // Código de erro
}
};
//Seta listener de impressão
plugPag.setPrinterListener(listener)
// Imprime arquivo
PlugPagPrintResult result = plugPag.printFromFile(plugPagPrinterData)
if (result == PlugPag.RET_OK) {
//sucesso
}
}
Buscar última transação aprovada
public void getLastApprovedTransaction(Context context) {
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context);
PlugPagTransactionResult lastApprovedTransaction
= plugpag.getLastApprovedTransaction();
}
Pré-Autorização
criar pré-autorização
public Observable<PlugPagTransactionResult> doPreAutoCreate(int value, int
installmentType, int installments) {
return Observable.create(emitter -> {
PlugPagPreAutoData plugPagPreAutoData = new PlugPagPreAutoData(
value,
installmentType,
installments,
true
"userref”
);
PlugPagTransactionResult plugPagTransactionResult = mPlugPag.doPreAutoCreate(plugPagPreAutoData);
// Trata o retorno do PlugPagTransactionResult
});
}
Efetivar pré-autorização
public Observable<PlugPagTransactionResult> doPreAutoEffectuate(
int value,
String transactionId,
String transactionCode
) {
return Observable.create(emitter -> {
PlugPagEffectuatePreAutoData plugPagEffectuatePreAutoData = new
PlugPagEffectuatePreAutoData(
value,
true,
transactionId,
transactionCode,
"userref”
);
PlugPagTransactionResult plugPagTransactionResult =
mPlugPag.doEffectuatePreAuto(plugPagEffectuatePreAutoData);
// Trata o retorno do PlugPagTransactionResult
});
}
Cancelar Pré-auto
public Observable<PlugPagTransactionResult> doPreAutoCancel(String transactionId,
String transactionCode) {
return Observable.create(emitter -> {
PlugPagTransactionResult plugPagTransactionResult =
mPlugPag.doPreAutoCancel(transactionId, transactionCode);
// Trata o retorno do PlugPagTransactionResult
});
}
Buscar Pré-autorização
public Observable<PlugPagTransactionResult> getPreAutoData() {
return Observable.create(emitter -> {
PlugPagTransactionResult plugPagTransactionResult =
mPlugPag.getPreAutoData();
// Trata o retorno do PlugPagTransactionResult
});
}
NFC
DeteNFCCardDirectly
public Observable<PlugPagNFCInfosResultDirectly> detectCardDirectly() {
return Observable.create(emitter -> {
try {
// Starta a antena NFC
int resultStartNfc = mPlugPag.startNFCCardDirectly();
// Realiza a autenticação NFC
PlugPagNFCInfosResultDirectly plugPagNFCInfosResult =
mPlugPag.detectNfcCardDirectly(PlugPagNearFieldCardData.ONLY_M, 20);
if (plugPagNFCInfosResult.getResult() != RET_OK) {
emitter.onError(new PlugPagException("Cartão não identificado"));
emitter.onComplete();
return;
}
emitter.onNext(plugPagNFCInfosResult);
// Stopa a antena NFC
mPlugPag.stopNFCCardDirectly();
} catch (Exception e) {
e.printStackTrace();
emitter.onError(e);
}
emitter.onComplete();
});
}
DetectRemoveCardDirectly
public Observable<Integer> detectRemoveCardDirectly() {
return Observable.create(emitter -> {
try {
// Starta a antena NFC
int resultStartNfc = mPlugPag.startNFCCardDirectly();
PlugPagNFCInfosResultDirectly plugPagNFCInfosResult =
mPlugPag.detectNfcCardDirectly(PlugPagNearFieldCardData.ONLY_M, 20);
if (plugPagNFCInfosResult.getResult() != RET_OK) {
emitter.onError(new PlugPagException("Cartão não identificado"));
emitter.onComplete();
return;
}
emitter.onNext(RET_WAITING_REMOVE_CARD);
Thread.sleep(5000);
int result = 0;
if (plugPagNFCInfosResult.getCid() != null) {
final PlugPagNFCDetectRemoveCard plugPagNFCDetectRemoveCard = new
PlugPagNFCDetectRemoveCard(PlugPagNearFieldRemoveCardData.REMOVE,
plugPagNFCInfosResult.getCid());
result =
mPlugPag.detectNfcRemoveDirectly(plugPagNFCDetectRemoveCard);
if (result != RET_OK) {
emitter.onError(new PlugPagException("Cartão não removido"));
emitter.onComplete();
return;
}
}
emitter.onNext(result);
//Starta a antena NFC
mPlugPag.stopNFCCardDirectly();
} catch (Exception e) {
e.printStackTrace();
emitter.onError(e);
}
emitter.onComplete();
});
}
DetectJustAuthDirectly
public Observable<Integer> detectJustAuthDirectly() {
// chave de autenticacao de um cartao NFC virgem
byte[] key = { (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF };
return Observable.create(emitter -> {
try {
// Starta a antena NFC
int resultStartNfc = mPlugPag.startNFCCardDirectly();
PlugPagNFCInfosResultDirectly plugPagNFCInfosResult =
mPlugPag.detectNfcCardDirectly(PlugPagNearFieldCardData.ONLY_M, 20);
if (plugPagNFCInfosResult.getResult() != RET_OK) {
emitter.onError(new PlugPagException("Cartão não identificado"));
emitter.onComplete();
return;
}
final PlugPagNFCAuthDirectly auth = new PlugPagNFCAuthDirectly((byte)
0, key, EM1KeyType.TYPE_B, plugPagNFCInfosResult.getSerialNumber());
int resultAuth = mPlugPag.justAuthNfcDirectly(auth);
if (resultAuth != RET_OK) {
emitter.onError(new PlugPagException(String.format("Erro ao autenticar bloco")));
emitter.onComplete();
return;
}
emitter.onNext(resultAuth);
// Stopa a antena NFC
mPlugPag.stopNFCCardDirectly();
} catch (Exception e) {
e.printStackTrace();
emitter.onError(e);
}
emitter.onComplete();
});
}
Comandos APDU
OBS: A leitura do cartão NFC é sempre necessária. Após detectar o cartão, poderá enviar os
comandos APDU. Sempre deixar o cartão próximo ao leitor.
public Observable<PlugPagCmdExchangeResult> cmdExchange() {
return Observable.create(emitter -> {
// Comando APDU
byte[] command = new byte[]{
(byte) 0x00,
(byte) 0x00,
(byte) 0x00,
(byte) 0x00,
(byte) 0x00,
(byte) 0x00,
(byte) 0x00
};
try {
PlugPagCmdExchangeResult resultAuth = mPlugPag.apduCommand(command, 256);
if (resultAuth != null && resultAuth.getCmd() != null &&
resultAuth.getCmd().length > 0) {
emitter.onNext(resultAuth);
}else{
; emitter.onError(new PlugPagException("Ocorreu um erro no comando APDU."));
}
emitter.onComplete();
} catch (Exception e) {
e.printStackTrace();
emitter.onError(e);
}
});
}
Pagamento de R$250,00, no QR CODE Crédito à vista:
public void startPayment(Context context) {
// Define os dados do pagamento
PlugPagPaymentData paymentData =
new PlugPagPaymentData(
PlugPag.TYPE_QRCODE_CREDITO,
25000,
PlugPag.INSTALLMENT_TYPE_A_VISTA,
1,
"CODVENDA");
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Ativa terminal e faz o pagamento
int initResult = plugpag.initializeAndActivatePinpad(new
PlugPagActivationData("SEU_CODIGO_DE_ATIVAÇÃO")));
if (initResult == PlugPag.RET_OK) {
PlugPagTransactionResult result = plugpag.doPayment(paymentData);
// Trata o resultado da transação
...
}
}
Pagamento de R$300, no QR Code Crédito, parcelado vendedor em 3 parcelas:
public void startPayment(Context context) {
// Define os dados do pagamento
PlugPagPaymentData paymentData =
new PlugPagPaymentData(
PlugPag.TYPE_QRCODE_CREDITO,
30000,
PlugPag.INSTALLMENT_TYPE_PARC_VENDEDOR,
3,
"CODVENDA");
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Ativa terminal e faz o pagamento
int initResult = plugpag.initializeAndActivatePinpad(new
PlugPagActivationData("SEU_CODIGO_DE_ATIVAÇÃO")));
if (initResult == PlugPag.RET_OK) {
PlugPagTransactionResult result = plugpag.doPayment(paymentData);
// Trata o resultado da transação
...
}
}
Pagamento de R$300, no QR Code Crédito, parcelado comprador em 3 parcelas:
public void startPayment(Context context) {
// Define os dados do pagamento
PlugPagPaymentData paymentData =
new PlugPagPaymentData(
PlugPag.TYPE_QRCODE_CREDITO,
30000,
PlugPag.INSTALLMENT_TYPE_PARC_COMPRADOR,
3,
"CODVENDA");
// Cria a identificação do aplicativo
PlugPagAppIdentification appIdentification =
new PlugPagAppIdentification("MeuApp", "1.0.7");
// Cria a referência do PlugPag
PlugPag plugpag = new PlugPag(context, appIdentification);
// Ativa terminal e faz o pagamento
int initResult = plugpag.initializeAndActivatePinpad(new
PlugPagActivationData("SEU_CODIGO_DE_ATIVAÇÃO")));
if (initResult == PlugPag.RET_OK) {
PlugPagTransactionResult result = plugpag.doPayment(paymentData);
// Trata o resultado da transação
...
}
}