Versão 2
reprintV2()¶
Este método é uma atualização do método reprint(), utilizado para realizar a reimpressão e/ou compartilhamento (email) da via do cliente acerca de algum pagamento autorizado. Agora, além da impressão, o método permite apresentar em tela o mesmo comprovante impresso do comércio e cliente. Como a impressão do comprovante original já foi feita, a reimpressão do comprovante terá uma tarja preta. Se o pagamento tiver sido estornado com sucesso, o comprovante passa a ser do estorno, no caso, ao tentar reimprimir o comprovante da compra, será apresentado o comprovante do estorno, dessa forma, se tentar reimprimir a transação reimprimir com paymentId da compra ou estorno, o comprovante apresentado ou impresso será o de estorno.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
request |
ReprintReceiptRequestV2 |
Sim | Objeto de transferência de dados que conterá as informações da requisição do pagamento. Note que nem todos os parâmetros são obrigatórios. |
callback |
PaymentCallback |
Sim | Interface que será executada para notificações de sucesso ou erro do processo de pagamento. |
Detalhe dos Parâmetros
request (ReprintReceiptRequestV2)
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ApplicationInfo.credentials |
Credentials |
Sim | Credenciais da aplicação que está solicitando a operação, conforme cadastro na PayStore. Basicamente, trata-se da identificação da aplicação e o token de acesso. |
ApplicationInfo.softwareVersion |
String |
Sim | Versão da aplicação que está solicitando o pagamento. |
paymentId |
String |
Sim | PaymenId retornado no callback do pagamento ou estorno da transação realizada. Serve para identificar a transação que está sendo realizado a reimpressão. |
previewMerchantReceipt |
Boolean |
Não | Indica se a tela de pré-visualização do comprovante do estabelecimento, será apresentando com uma tarja preta e indicação de reimpressão. O valor padrão é true, o que significa que o comprovante será exibido caso o campo não seja enviado. |
previewCustomerReceipt |
Boolean |
Não | Indica se a tela de pré-visualização do comprovante do cliente, será apresentando com uma tarja preta e indicação de reimpressão. O valor padrão é true, o que significa que o comprovante do cliente será exibido caso não seja enviado. |
printMerchantReceipt |
Boolean |
Não | Indica se o recibo do estabelecimento deve ser impresso ou não. O valor padrão é 'true', então o recibo será impresso se não for enviado. |
printCustomerReceipt |
Boolean |
Não | Indica se o comprovante do cliente deve ser impresso ou não. O valor padrão é true, portanto, o comprovante será impresso caso não seja enviado. |
Comportamento esperado ao preencher paymentId:
Pesquisa os pagamentos pelo paymentId informado.
Resultado: Retorna o pagamento ou estorno referente ao paymentId informado. Se o paymentId do pagamento tiver sido com sucesso, o paymentId da compra, será apresentado em tela e para impressão o comprovante do estorno.
Comportamento esperado ao preencher os seguintes parâmetros:
Se valor for igual a true
Resultado: Apresenta em tela o comprovante de compra ou estorno do comércio.
Se valor for igual a true
Resultado: Apresenta em tela o comprovante de compra ou estorno do cliente.
Se valor for igual a true
Resultado: Será impresso comprovante de compra ou estorno do comércio
Se valor for igual a true
Resultado: Será impresso comprovante de compra ou estorno do cliente
callback (PaymentCallback)
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
onSuccess |
Método para notificação em caso de sucesso. | ||
onError |
Método para notificação em caso de erro. | ||
ErrorData.paymentsResponseCode |
String |
Sim | Código de resposta para o erro ocorrido. Vide Códigos de Resposta |
ErrorData.acquirerResponseCode |
String |
Não | Código de resposta para o erro ocorrido retornado pela adquirente. Note que este erro só será retornado se a transação não for autorizada pela adquirente. |
ErrorData.responseMessage |
String |
Não | Mensagem descritiva da causa da não autorização. Caso a transação tenha sido negada pela adquirente, conterá a mensagem retornada pela adquirente. |
Exemplo do fluxo de reimpressão¶
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import br.com.phoebus.android.payments.api.ErrorData;
import br.com.phoebus.android.payments.api.PaymentClient;
import br.com.phoebus.android.payments.api.PrintReceiptRequest;
import br.com.phoebus.android.payments.api.client.Client;
import br.com.phoebus.android.payments.api.exception.ClientException;
import br.com.phoebus.payments.demo.utils.AlertUtils;
import br.com.phoebus.payments.demo.utils.CredentialsUtils;
import br.com.phoebus.payments.demo.utils.Helper;
public void printReceipt(View view) {
if (!isDataValid()) return;
PaymentClient mPaymentClient = new PaymentClient();
ReprintReceiptRequestV2 reprintReceiptRequestV2 = new ReprintReceiptRequestV2();
try {
reprintReceiptRequestV2.setApplicationInfo(CredentialsUtils.getMyAppInfo(this.getPackageManager(), this.getPackageName()));
reprintReceiptRequestV2.setPaymentId(paymentTransactionIdEdt.getText().toString());
reprintReceiptRequestV2.setPrintCustomerReceipt(chbReceiptCustomer.isChecked());
reprintReceiptRequestV2.setPrintMerchantReceipt(chbReceiptMerchant.isChecked());
reprintReceiptRequestV2.setPreviewCustomerReceipt(previewReceiptCustomer.isChecked());
reprintReceiptRequestV2.setPreviewMerchantReceipt(previewReceiptMerchant.isChecked());
} catch (PackageManager.NameNotFoundException e) {
showSnackBar(getString(R.string.requestFailed) +": " + e.getMessage());
return;
}
mPaymentClient.bind(this, new Client.OnConnectionCallback() {
@Override
public void onConnected() {
try {
mPaymentClient.reprintV2(reprintReceiptRequestV2, new PaymentClient.PaymentCallback<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d("PayStore App Demo", "Reprint has finished successfully!");
}
@Override
public void onError(ErrorData errorData) {
if (errorData != null && !TextUtils.isEmpty(errorData.getResponseMessage())) {
AlertUtils.showSnackBar(findViewById(android.R.id.content), errorData.getResponseMessage());
}
Log.e("PayStore App Demo", "Reprint has finished wrongfully!");
}
});
} catch (ClientException e) {
if (!TextUtils.isEmpty(e.getMessage())) {
AlertUtils.showSnackBar(findViewById(android.R.id.content), e.getMessage());
}
}
}
@Override
public void onDisconnected(boolean b) {
Log.d("PayStore App Demo", "Reprint disconnected!");
}
});
}