Acepta pagos
Acepta pagos con una terminal desde tu punto de venta móvil a través de nuestra aplicación POS. Puedes integrar tu aplicación en Android mediante Intents y Links.
Intents
Ejecuta una acción en nuestra aplicación POS a través de un Intent en Android desde tu aplicación. Instala el SDK y envía los parámetros requeridos al momento de ejecutar una acción.
Agrega el SDK a tu proyecto
Agrega el SDK en el archivo build.gradle
de tu proyecto.
repositories {maven {...url 'https://billpocket.jfrog.io/artifactory/billpocket-public-mobile'...}}
Agrega las siguientes dependencias.
dependencies {...implementation 'com.billpocket:billpocket-integration:2.30.0@aar'...}
Construye el Intent
Crea una instancia de la clase BPIntentBuilder
y establece una acción.
BPIntentBuilder builder = new BPIntentBuilder().setAction(BPIntentBuilder.INTEGRATION_ACTION_BILLPOCKET);
Debes configurar la instancia con los parámetros requeridos y opcionales de acuerdo a la solicitud.
builder.setTransactionType(BPIntentBuilder.TRANSACTION_TYPE_SALE).setIdentifier(...).setDescription(...).setMailRecipient(...).setSmsRecipient(...).setUserToken(...).setShowPhotoButton(...).setMandatoryPhoto(...).setHidePrinterOption(...);
Modelo de datos de la solicitud
Estos son todos los parámetros que puedes configurar al momento de realizar una solicitud.
Propiedad | Tipo | Requerido | Descripción |
---|---|---|---|
transaction | String | Sí | Tipo de transacción: venta : operación de venta. devolucion : operación de anulación. |
userToken | String | Sí | Token de usuario. |
identifier | String | Sí | Envía un identificador único por transacción generado de tu lado. Máximo 256 caracteres. |
amount | Number | Sí | Monto de la transacción (sin propina incluida). Dos decimales. |
urlScheme | String | Sí | Aplicación, webhook o url que será llamada al final de cualquier transacción. Máximo 50 caracteres. |
tip | Number | No | Monto de la propina. Dos decimales. |
msi | Integer | No | Difiere un pago en cuotas. Establece el número de cuotas a diferir el pago:
6 : 6 cuotas. |
reference | String | No | Referencia de texto para identificar la transacción. Máximo 256 caracteres. |
String | No | Correo electrónico del cliente. Máximo 150 caracteres. | |
phone | String | No | Número de teléfono del cliente. Máximo 14 caracteres. |
showPhotoButton | Boolean | No | Te permite adjuntar una foto durante la transacción. Valor por defecto: falso. |
mandatoryPhoto | Boolean | No | Establece como obligatorio adjuntar una foto durante la transacción. Valor por defecto: falso. |
deviceToken | String | No | Identificador del dispositivo. |
3pID | String | No | Identificador externo. |
hidePrinter | Boolean | No | Indica si la opción de impresora se mostrará después de una transacción exitosa. Valor por defecto: falso. |
skipMailPrint | Boolean | No | Omite la impresión del ticket y en su lugar envía el ticket digital a través del correo o número de teléfono establecido. |
xpLandscape | Boolean | No | Especifica si la aplicación POS se iniciará en modo horizontal. |
deviceName | String | No | Nombre del dispositivo. |
setTimerFinishTRX | Integer | No | Configura un temporizador (en segundos) para continuar con el proceso de pago en caso de que no haya interacción por parte del usuario en la pantalla de confirmación de la transacción. |
Operaciones
Descubre todas las operaciones disponibles a través de integraciones por App to app.
Venta
Realiza una venta por un monto fijo (incluyendo impuestos) en tu comercio a través de una terminal. La terminal te permite leer la tarjeta de tu cliente y realizar operaciones implicadas en el proceso DUKPT. La responsabilidad de tu sistema punto de venta es obtener los datos leidos de la terminal y armar el mensaje con la información requerida para enviar una solicitud. Envía la información a Kushki para su procesamiento.
Inicia la aplicación POS a través de la función builder
enviando un Intent con todos los parámetros requeridos.
Intent intent = builder.build();onActivityResult(intent);
Si la información enviada es correcta, se abrirá la aplicación POS en la pantalla de pago con la configuración establecida para la transacción. Sigue los pasos en pantalla para finalizar el proceso de cobro con la terminal.
Revisa la documentación para realizar una anulación.
Propina
Para utilizar propinas a través de Intents, es necesario activar la opción en el menú de configuración. Sigue los pasos a continuación para habilitar propinas.
Da clic en el icono superior izquierdo y selecciona la opción de Ajustes.
Activa la opción Propina.
Si una transacción es configurada con propina mayor a 0, se mostrará el monto de la propina en una nueva etiqueta debajo del monto de la transacción.
Si no se envía ningún monto de propina en la solicitud o si es igual a 0 y la opción de propina está activada, se mostrará el cuadro de diálogo de selección de propina.
Respuesta
La respuesta será recibida como un Intent por el método onActivityResult
de la actividad que realiza la llamada.
private fun setupResultLauncher() {resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->if (result.resultCode == Activity.RESULT_OK) {val data: Intent? = result.databinding.btnResponse.performClick()val response = BPPaymentResponse.parseResult(data)binding.responseLayout.responseText.text = response.toString() }}}
Dependiendo del resultado de la operación, podrás recibir información adicional a través de algunas de las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
result | String | Resultado de la operación:
|
statusinfo | String | En caso de error, se regresará información adicional. |
identifier | String | Identificador único por transacción enviado en la venta. Máximo 256 caracteres. |
amount | Number | Monto de la transacción (sin propina incluida). Dos decimales. |
authorization | String | Número de autorización. |
transactionId | String | Id de la transacción. |
tip | Number | Monto de la propina. Dos decimales. |
msi | Integer | Si es un pago diferido, se regresará el número de cuotas.
|
reference | String | Referencia de texto para identificar la transacción. Máximo 256 caracteres. |
String | Correo electrónico del cliente. Máximo 150 caracteres. | |
phone | String | Número de teléfono del cliente. Máximo 14 caracteres. |
creditcard | String | Últimos 4 dígitos de la tarjeta. |
cardtype | String | Tipo de tarjeta. |
arqc | String | Id único por transacción en tarjetas con chip (Authorization Request Cryptogram). |
aid | String | Identificador de aplicación del chip de la tarjeta. |
applabel | String | Etiqueta de aplicación del chip de la tarjeta. |
url | String | Id para voucher digital. |
bank | String | Emisor de la tarjeta. |
accountType | String | Tipo de cuenta:
|
name | String | Nombre del tarjetahabiente. |
bp_version | String | Versión de aplicación POS. |
Simula diferentes escenarios con los datos de prueba.
Links
Ejecuta una acción en nuestra aplicación POS utilizando esquemas de URL personalizados en Android desde tu aplicación nativa o web. Configura la url con todos los parámetros requeridos para abrir la aplicación POS y realizar la operación. La aplicación POS se abrirá cuando se de clic en un enlace con el esquema de url personalizado Billpocket://
.
Es necesario que tengas instalada y configurada nuestra aplicación POS en el mismo dispositivo que la aplicación punto de venta.
Modelo de datos de la solicitud
Estos son todos los parámetros que puedes configurar al momento de realizar una solicitud.
Propiedad | Tipo | Requerido | Descripción |
---|---|---|---|
transaction | String | Sí | Tipo de transacción: venta : operación de venta. devolucion : operación de anulación. |
userToken | String | Sí | Token de usuario. |
identifier | String | Sí | Envía un identificador único por transacción generado de tu lado. Máximo 256 caracteres. |
amount | Number | Sí | Monto de la transacción (sin propina incluida). Dos decimales. |
urlScheme | String | Sí | Aplicación, webhook o url que será llamada al final de cualquier transacción. Máximo 50 caracteres. |
tip | Number | No | Monto de la propina. Dos decimales. |
msi | Integer | No | Difiere un pago en cuotas. Establece el número de cuotas a diferir el pago: 0 : Pago único. 3 : 3 cuotas. 6 : 6 cuotas. 9 : 9 cuotas. 12 : 12 cuotas. |
reference | String | No | Referencia de texto para identificar la transacción. Máximo 256 caracteres. |
String | No | Correo electrónico del cliente. Máximo 150 caracteres. | |
phone | String | No | Número de teléfono del cliente. Máximo 14 caracteres. |
showPhotoButton | Boolean | No | Te permite adjuntar una foto durante la transacción. Valor por defecto: falso. |
mandatoryPhoto | Boolean | No | Establece como obligatorio adjuntar una foto durante la transacción. Valor por defecto: falso. |
deviceToken | String | No | Identificador del dispositivo. |
3pID | String | No | Identificador externo. |
hidePrinter | Boolean | No | Indica si la opción de impresora se mostrará después de una transacción exitosa. Valor por defecto: falso. |
skipMailPrint | Boolean | No | Omite la impresión del ticket y en su lugar envía el ticket digital a través del correo o número de teléfono establecido. |
xpLandscape | Boolean | No | Especifica si la aplicación POS se iniciará en modo horizontal. |
deviceName | String | No | Nombre del dispositivo. |
enableDialogTip | Boolean | No | Muestra el diálogo para seleccionar propina cuando se establece en verdadero y se envía la propina en 0 o se omite en la solicitud. |
Operaciones
Descubre todas las operaciones disponibles a través de integraciones por App to app.
Venta
Realiza una venta por un monto fijo (incluyendo impuestos) en tu comercio a través de una terminal. La terminal te permite leer la tarjeta de tu cliente y realizar operaciones implicadas en el proceso DUKPT. La responsabilidad de tu sistema punto de venta es obtener los datos leidos de la terminal y armar el mensaje con la información requerida para enviar una solicitud. Envía la información a Kushki para su procesamiento.
A continuación se muestra un ejemplo de cómo llamar la aplicación POS.
<script language=javascript>function redirectBP(){// Create the URL using JSwindow.location.replace(“billpocket://?transaction=venta&amount=1.00&tip=.10&reference=mic00f&identifier=1001&usertoken=4db75ae65ab1fc0e067a68c3e6e0a53f25e0bb68384186b5be714ff1c0980d1a&urlScheme=https://www.mywebhook.com”)}</script><button onClick="redirectBP()">Pagar con Billpocket</button>
Si la información enviada es correcta, se abrirá la aplicación POS en la pantalla de pago con la configuración establecida para la transacción. Sigue los pasos en pantalla para finalizar el proceso de cobro con la terminal.
Revisa la documentación para realizar una anulación.
Chrome Intents
También puedes crear un Intent desde una aplicación que se ejecuta en Chrome para realizar una operación con la aplicación POS.
Revisa la documentación sobre Intents de Android con Chrome.
Respuesta
Recibe la respuesta de una solicitud a través de un callback URL. La respuesta se devuelve a un esquema de url personalizado que definas. Debes registrar el esquema de url personalizado dentro de tu aplicación para que pueda manejar las solicitudes entrantes. Revisa la documentación sobre cómo registrar un esquema de url personalizado en Android.
Ejemplo de respuesta a un esquema de url personalizado:
myApp://identifier=bpTRX&amount=10.00&authorization=BP6602&result=aprobada&reference=Venta%2520-%2520B99773E6BA6&creditcard=3292&cardtype=MASTERCARD&aid=A0000000041010&tip=1.01&url=68a30855f20923fc0d20eeaeee11061a62ab0eec&arqc=3C2A4D155F23AA81&bank=Bancomer%2520%252F%2520Banamex&name=%2520PERFIL%2520EJECUTIVO%252FPRG%2520%2520%2520%2520%2520&bp_version=4.3.0&transactionid=111029&accountType=DEBIT&applabel=Debit%2520Mastercard
Dependiendo del resultado de la operación, podrás recibir información adicional a través de algunas de las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
result | String | Resultado de la operación:
|
statusinfo | String | En caso de error, se regresará información adicional. |
identifier | String | Identificador único por transacción enviado en la venta. Máximo 256 caracteres. |
amount | Number | Monto de la transacción (sin propina incluida). Dos decimales. |
authorization | String | Número de autorización. |
transactionId | String | Id de la transacción. |
tip | Number | Monto de la propina. Dos decimales. |
msi | Integer | Si es un pago diferido, se regresará el número de cuotas.
|
reference | String | Referencia de texto para identificar la transacción. Máximo 256 caracteres. |
String | Correo electrónico del cliente. Máximo 150 caracteres. | |
phone | String | Número de teléfono del cliente. Máximo 14 caracteres. |
creditcard | String | Últimos 4 dígitos de la tarjeta. |
cardtype | String | Tipo de tarjeta. |
arqc | String | Id único por transacción en tarjetas con chip (Authorization Request Cryptogram). |
aid | String | Identificador de aplicación del chip de la tarjeta. |
applabel | String | Etiqueta de aplicación del chip de la tarjeta. |
url | String | Id para voucher digital. |
bank | String | Emisor de la tarjeta. |
accountType | String | Tipo de cuenta:
|
name | String | Nombre del tarjetahabiente. |
bp_version | String | Versión de aplicación POS. |
Simula diferentes escenarios con los datos de prueba.
Revisa la referencia Android para Intents o Links para información más detallada.