Impresión a través del SDK¶
A través del SDK, es posible solicitar al terminal el uso e impresión de información mediante una cadena de texto o contenido en formato Base64 de un bitmap.
Para ello, se proporciona la biblioteca payments-api-x.x.x.x.aar, que contiene las funciones necesarias para tales aplicaciones.
Flujo¶

| Pasos | Éxito | Error |
|---|---|---|
| 1. Solicitud de impresión | La impresión se realizó correctamente. | La impresión no se realizó y la razón se encuentra en la respuesta. |
| 2. Respuesta de la solicitud de impresión | Una vez impreso, no hay información adicional sobre la impresión. | La respuesta contiene información sobre el problema que impidió la impresión. |
Permisos¶
Para utilizar las funcionalidades dispuestas en la implementación, es necesario incluir el permiso a continuación.
<uses-permission android:name="br.com.android.payments.print.provider.READ_PERMISSION" />
Métodos¶
| Firma | Descripción |
|---|---|
void printFromString(Context context, String stringContent, PaymentCallback callback) |
Solicita la impresión de un texto a partir de una cadena (String). |
void printFromBase64(Context context, String base64Content, PaymentCallback callback) |
Solicita la impresión de una imagen a partir de un Base64 enviado como una cadena. |
printFromString()¶
Cuando es necesario imprimir un contenido sin formato textual, se puede utilizar el método printFromString().
Parámetros
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
context |
Context |
Sí | El contexto de la aplicación que solicita el uso de la función de impresión. |
stringContent |
String |
Sí | El contenido en formato de String a imprimir. |
printFeed |
Boolean |
Sí | Si el parámetro es igual a true, al final de la impresión del comprobante tendrá un espacio. Si es false, no habrá espacio al final de la impresión del comprobante. |
callback |
PaymentCallback |
Sí | Interfaz que se ejecutará para notificaciones de éxito o error del proceso. |
Al imprimir una String no hay límite en el número de caracteres por línea, ya que el terminal se ajusta automáticamente al contenido. Sin embargo, no se recomienda incluir una gran cantidad de caracteres sin realizar saltos de línea.
Warning
Cuando hay una larga secuencia de caracteres consecutivos sin un salto de línea, la salida se ajustará automáticamente y se insertará un salto de línea cada 500 caracteres si no hay espacios entre ellos.
printFromBase64()¶
Cuando se necesita imprimir una imagen, se puede utilizar el método printFromBase64(). Este método requiere que la imagen se convierta previamente a un formato Base64 válido antes de pasarla a imprimir.
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
context |
Context |
Sí | El contexto de la aplicación que solicita la impresión. |
base64Content |
String |
Sí | El contenido visual a imprimir en formato Base64. |
printFeed |
Boolean |
Sí | Si el parámetro es igual a true, al final de la impresión del comprobante tendrá un espacio. Si es false, no habrá espacio al final de la impresión del comprobante. |
callback |
PaymentCallback |
Sí | Interfaz que se ejecutará para notificaciones de éxito o error del proceso. |
Se considera un Base64 válido aquel que puede convertirse en uno de los siguientes formatos de imagen:
| 1 canal por píxel | 3 canales por píxel | 4 canales por píxel |
|---|---|---|
Una imagen donde cada píxel contiene solo 1 canal (Alfa) (ALPHA_8). |
Una imagen donde cada píxel contiene 3 canales (Rojo, Verde y Azul) (RGB_565). |
Una imagen donde cada píxel contiene 4 canales (Alfa, Rojo, Verde y Azul) (ARGB_8888 o ARGB_4444). |
Ejemplo¶
public class MyActivity extends Activity implements PaymentClient.PaymentCallback {
private static final String TAG = "impresion_recibo";
private PaymentClient paymentClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_payment);
paymentClient = new PaymentClientImpl();
}
@Override
protected void onResume() {
super.onResume();
paymentClient.bind(this);
}
@Override
protected void onDestroy() {
try {
paymentClient.unbind(this);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
super.onDestroy();
}
public void printText(View view) {
String text = "Este es un ejemplo de impresión de texto.\n"
+ "Tenga en cuenta que después de '\n' habrá un salto de línea en el recibo.\n"
+ "También note que la impresión se ajustará a la cantidad de caracteres "
+ "y a la capacidad de impresión de caracteres en una sola línea.";
try {
paymentClient.printFromString(getApplicationContext(), text, true, this);
} catch (ClientException e) {
Log.e(TAG, "Error al imprimir texto", e);
}
}
public void printBase64(View view) {
String base64 = "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAARSURBVBhXY3growJEYEpGBQAkHgS13mWMCAAAAABJRU5ErkJggg==";
try {
paymentClient.printFromBase64(getApplicationContext(), base64, true, this);
} catch (ClientException e) {
Log.e(TAG, "Error al imprimir imagen Base64", e);
}
}
@Override
public void onError(ErrorData errorData) {
Log.e(TAG, "Ocurrió el siguiente error: " + errorData.getResponseMessage());
}
@Override
public void onSuccess(Object o) {
Log.i(TAG, "¡El recibo se imprimió con éxito!");
}
}