Todos los métodos de integración con las terminales inteligentes , de ahora en adelante (),
consisten en intercambiar mensajes JSON, la diferencia en cada método es la forma en que llega la solicitud JSON.
Hay dos categorías en las que podemos agrupar las solicitudes JSON hechas a :
directa e indirecta.
En la solicitud "Directa" podemos encapsular el modo de integración
por aplicación, QR y aplicación web en línea. Es decir, el desarrollador proporciona un "ejecutable"
que la terminal puede ejecutar y desencadena una solicitud JSON a la Aplicación de
.
En todos estos casos, el usuario interactúa directamente con
para iniciar el "ejecutable" y asignar el control a para procesar
la solicitud de pago.
En la "Indirecta" podemos encapsular el único modo de integración
de Ws Rest / IoT.
Aquí, cualquier dispositivo que tenga conectividad a Internet y la posibilidad de enviar un
mensaje JSON a un punto final de un servicio REST puede enviar una solicitud de pago al dispositivo
.
En este modo de integración, el comercio proporciona una aplicación nativa de Android que se integra directamente a través de Intent. Dentro del Intent, en un Extra, la cadena JSON se informa con la solicitud de pago. Cuando ejecuta la solicitud de pago, devuelve una cadena JSON directamente a la aplicación con el resultado de la solicitud. La aplicación nativa de Android del comercio, recupera el control del flujo de ejecución en el método "on Result" obtenido de un JSON "Extra" con la respuesta, ya sea Aprobada, Rechazada o Error.
La Getnet app para moviles con sistema operativo Android, puede ser integrada por cualquiera de los metodos de integracion.
La mejor manera de integrar tu aplicación es realizando la integración por medio de un teléfono inteligente o computadora, ya que podrás migrarla fácilmente ya en modo productivo a una terminal inteligente Android (GSMART).
Es posible realizarlo con una terminal inteligente, sin embargo, sigue las instrucciones del Sandbox en donde ponemos a tu disposición emuladores que te ayudarán a integrar con un teléfono o computadora tu solución con nuestro aplicativo.
En este modo de integración, el comercio imprime el JSON en un QR con la solicitud de pago. Este QR se escanea con y se invoca el flujo para procesar la solicitud de pago. Una vez que se procesa la solicitud de pago, la respuesta se notifica a través de un Web Hook provisto por el comercio. La respuesta se informa en formato JSON.
La Getnet app para moviles con sistema operativo Android, puede ser integrada por cualquiera de los metodos de integracion.
La mejor manera de integrar tu aplicación es realizando la integración por medio de un teléfono inteligente o computadora, ya que podrás migrarla fácilmente ya en modo productivo a una terminal inteligente Android (GSMART).
Es posible realizarlo con una terminal inteligente, sin embargo, sigue las instrucciones del Sandbox en donde ponemos a tu disposición emuladores que te ayudarán a integrar con un teléfono o computadora tu solución con nuestro aplicativo.
En este modo de integración, el comercio envía el JSON con la solicitud de pago a través de un Servicio Web Rest, agregando a la solicitud un Web Hook y la URL del Sitio Web, utilizando la licencia de integración provista en el proceso de registro como mecanismo de autenticación.
La Getnet app para moviles con sistema operativo Android, puede ser integrada por cualquiera de los metodos de integracion.
La mejor manera de integrar tu aplicación es realizando la integración por medio de un teléfono inteligente o computadora, ya que podrás migrarla fácilmente ya en modo productivo a una terminal inteligente Android (GSMART).
Es posible realizarlo con una terminal inteligente, sin embargo, sigue las instrucciones del Sandbox en donde ponemos a tu disposición emuladores que te ayudarán a integrar con un teléfono o computadora tu solución con nuestro aplicativo.
En este modo de integración, el comerciante envía el JSON con la solicitud de pago a través de un servicio Web Rest, utilizando la licencia de integración provista en el proceso de registro como mecanismo de autenticación.
La Getnet app para moviles con sistema operativo Android, puede ser integrada por cualquiera de los metodos de integracion.
La mejor manera de integrar tu aplicación es realizando la integración por medio de un teléfono inteligente o computadora, ya que podrás migrarla fácilmente ya en modo productivo a una terminal inteligente Android (GSMART).
Es posible realizarlo con una terminal inteligente, sin embargo, sigue las instrucciones del Sandbox en donde ponemos a tu disposición emuladores que te ayudarán a integrar con un teléfono o computadora tu solución con nuestro aplicativo.
En este modo de integración se proporciona una interfaz para la comunicación con terminales punto de venta (POS) a través de USB. Facilita el proceso de descubrir los puertos seriales disponibles; establecer conexiones con terminales POS; enviar comandos (por ejemplo, ABOUT y SALE) y recibir respuestas. Esta biblioteca está diseñada para ser utilizada en aplicaciones .NET, particularmente en escenarios donde se requiere una comunicación segura y confiable con terminales POS, para el intercambio de mensajes entre ellos y que la terminal Android resuelva a su vez, la transacción con Intelipos a través de la conexión con una DLL.NET, la cual llamaremos: UsbIntegration dll; esta está orientado a desarrolladores que estén familiarizados con el ecosistema de .NET.
Cuando Getnet ejecuta la solicitud de pago, devuelve una cadena JSON directamente a la aplicación con el resultado de la solicitud. La aplicación nativa de Android del comercio recupera el control del flujo de ejecución en el método "on Result" obtenido de un JSON "Extra" con la respuesta, ya sea Aprobada, Rechazada o Error.
La Getnet app para móviles con sistema operativo Android, puede ser integrada por cualquiera de los métodos de integración.
La mejor manera de integrar tu aplicación es realizando la integración por medio de un teléfono inteligente o computadora, ya que podrás migrarla fácilmente ya en modo productivo a una terminal inteligente Android (GSMART).
Es posible realizarlo con una terminal inteligente, sin embargo, sigue las instrucciones del Sandbox en donde ponemos a tu disposición emuladores que te ayudarán a integrar con un teléfono o computadora tu solución con nuestro aplicativo.
Aquí encontrarás todo lo necesario para familiarizarte con y nuestro APK de desarrollo, usando solamente el emulador de Android Studio
APK a Android Studio en el caso de descargarla en tu computadora
APK en tu celular
Ahora que ya cuentas con
APK
, abre el proyecto de tu APP e inicia el emulador de Android
Studio.
Luego simplemente arrastra el
APK
al emulador y ábrelo
La instalación del
APK
se debe hacer en el celular debido a que se hará uso de la cámara
Una vez agregado el APK a Android Studio, para activar el Emulador se te pedirá tu número licencia, tecleado o escaneando el QR.
Este número de licencia nos sirve para identificarte y brindarte funciones de pago a la medida de tu negocio en el emulador, a partir de la información de tu registro.
Este número de licencia también lo puedes consultar en tu perfil ubicado en la esquina superior derecha.
Activa el Emulador ingresando tu número de licencia o escaneando el QR de la licencia.
De manera natural, te permite realizar un cobro ingresando un monto directamente en el teclado virtual. Te invitamos a probarlo.
APK de ejemplo
Importante:
Considere que la página funcione en las versiones de Chrome correspondientes a las versiones
de SO Android.
Ahora, descarga el APK de ejemplo:
Ahora, descarga el proyecto de ejemplo:
Descargar Sitio Web de ejemplo
Luego, solo será necesario agregarlo a tu servidor de pruebas web y mandar a llamar la url en la configuración del sitio de desarrolladores.
Para versiones 4.12 e inferiores de la GetNet App
Para versiones 4.13 y superiores de la GetNet App solo para terminales P5.
Para versiones 4.13.2 y superiores de la GetNet App solo para terminales P5.
Adicional, te proporcionamos el código de la app ejemplo:
Para versiones 4.12 e inferiores de la GetNet App
Para versiones 4.13 y superiores de la GetNet App solo para terminales P5.
Para versiones 4.13.2 y superiores de la GetNet App solo para terminales P5.
Luego simplemente arrastra el APK al emulador y ábrelo
La biblioteca UsbIntegration está construida sobre .NET Standard 2.0, lo que la hace compatible con una amplia gama de plataformas .NET, incluyendo:
Esto significa que puedes integrar UsbIntegration tanto en aplicaciones existentes basadas en .NET Framework como en aplicaciones modernas desarrolladas con .NET Core o .NET 5/6/7/8.
Esta aplicación de ejemplo te permite conocer las funciones expuestas en para diferentes tipos de comercio.
Elige la opción de cobro que más se acerque al modelo de tu negocio para
realizar algunas operaciones de ejemplo. En el botón Ver petición
se muestra el ejemplo del JSON que debe generarse para iniciar el proceso de cobro.
Cuando se muestre la página Elige la función que más se acerque a tu modelo de negocio para realizar algunas operaciones de ejemplo.
| Venta | La función más básica, en la que indicas el monto y la moneda. |
|---|---|
| Venta con propina | Similar a una venta, indicas el monto y la moneda, así como un monto adicional. |
| Check In | Pensada para los hoteles y renta de autos, esta función te permite reservar el monto en la moneda indicados y asociarlos a un número de habitación. |
| Reautorización | Pensada para los hoteles y renta de autos, esta función te permite incrementar el monto en la moneda indicados a una operación de Check In autorizada previamente. |
| Check Out | Al final de la visita de tu huesped, te permite cerrar una operación hasta por el monto total de un Check In autorizada previamente. |
| Cancelación | Si por cualquier motivo deseas devolver el monto de una operación aprobada, utiliza esta función indicando el monto, la moneda, así como el número de operación y de autorización de la operación aprobada previamente. |
Para utilizar la biblioteca UsbIntegration en tu proyecto, sigue estos pasos:
Estas funciones están orientadas para casos en los que se cuenta con tarjetas de prepago y se requiere conocer el track de la tarjeta para someterla al proceso de recarga, consulta y cobro propios de la tarjeta. Para poder utilizarlo de forma adecuada se recomienda asegurarse que la formación de la tarjeta no corresponda a la formación de números de tarjeta bancarias.
Versión 3.1.2
Para la lectura de la tarjeta realizar la petición con el siguiente esquema:
{
"License": "123123123",
"TrXUrl": "https://integration.intelipos.io/card/data"
}
Versión 3.1.4
Para la lectura de la tarjeta realizar la petición con el siguiente esquema:
{
"License": "123123123",
"TrXUrl": "https://integration.pos.io/card/data",
" TrxCardType": 1
}
Versión 3.1.5
Para la lectura de la tarjeta realizar la petición con el siguiente esquema:
{
"License":"123123123",
"TrxUrl":"https://integration.pos.io/card/data",
" TrxCardType": 2
}
Para considerar todos los casos de uso posibles con el emulador, se deben realizar las operaciones con los siguientes montos:
De acuerdo con la configuración seleccionada aparecerán las siguientes afiliaciones:
Los Alias de la afiliación se utilizarán solo con el parámetro trxFValue en caso de que se requiera realizar el filtrado de afiliaciones porque tengan en las sucursales más de una afiliación para la recepción de pagos.
NOTA: Para realizar la configuración de los TrxFValue, es necesario realiza una solicitud SD
Para considerar todos los casos de uso posibles con el emulador, se deben realizar las operaciones con los siguientes montos:
De acuerdo a la configuración seleccionada aparecerán las siguientes afiliaciones:
Los Alias de la afiliación se utilizarán solo con el parámetro trxFValue en caso de que se requiera realizar el filtrado de afiliaciones porque tengan en las sucursales más de una afiliación para la recepción de pagos.
NOTA: Para realizar la configuración de los TrxFValue, es necesario realiza una solicitud SD
Importante:
Previo a iniciar tu integración,
debes saber que soporta Android 5.5 y Android 8.1 (dependiendo la terminal
que sea adquirida), Safe mode y tu APP
debe ser nativa, sin capas de abstracción, sin llamadas a VPN's y
sin ventanas de navegador o acceder a Internet de maner nativa con
Android System Webview.
Importante:
La integración a través del API requiere que a través de una
petición POST del tipo aplication/json se informe el monto y referencia del cobro que se va a
realizar, es importante que se considere que en el header de la petición Authorization deberá
enviarse el Id de licencia que fue proporcionado en el registro.
Cuando la solicitud cumplió con la conexión y el dispositivo existe, el servicio se recibirá una respuesta JSON:
{
"success": true,
"code": null,
"description": null
}
Sí la petición fue recibida pero no existe el equipo entonces solo se devolverá el estatus de la conexión 200 Ok.
Como viste previamente las funciones expuestas en para diferentes tipos de comercio. A continuación encontrarás una breve descripción y los parámetros para cada una. La solicitud enviada debe estar en formato JSON
Una venta es aquella transacción que sirve para hacer un cargo a una tarjeta.
EndPoint
https://integration.pos.io/payment/sale
EndPoint ambiente productivo
https://www.intelipos.io/mmc-ws/i/payment/sale
EndPoint ambiente de pruebas
https://qa.intelipos.io/mmc-ws/i/payment/sale
| Parámetro | Requerido | Descripción |
|---|---|---|
| TrxAmount | Si | Monto a cobrar, sin comas, un punto y dos decimales |
| TrxCurrency | Si | Tipo de Moneda
|
| License | Si | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| TrxDevice | Si | No. de serie del dispositivo |
| TrxReference | Si | Su identificador único para cada pago. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor, el sistema asigna una marca de tiempo en formato largo. |
| TrxFValue | No | Merchant Filter. Puede tener más de un número de comerciantes para diferentes transacciones. Por ejemplo, en su negocio necesita usar solo un comerciante para cada sucursal o sección (restaurante, lobby, piscina, cajero 1, cajero 2, cajero n, etc.). Por lo tanto, puede definir un valor (cadena como máximo de 5 caracteres) para cada comerciante y asignar a su transacción la cadena separada por comas. |
| TrxUser | No | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
| TrxPaymentMode | No | Cuando se tienen opciones de pago a MSI este elemento sirve para especificar la forma de pago
desde un inicio y tener el control total.
|
Una venta con propina es aquella transacción que sirve para hacer un cargo a una tarjeta, sumando un monto adicional por un servicio recibido.
EndPoint
https://integration.pos.io/payment/saleWithTip
EndPoint ambiente productivo
https://www.intelipos.io/mmc-ws/i/payment/saleWithTip
EndPoint ambiente de pruebas
https://qa.intelipos.io/mmc-ws/i/payment/saleWithTip
| Parámetro | Requerido | Descripción |
|---|---|---|
| TrxAmount | Si | Monto a cobrar sin propina, sin comas, un punto y dos decimales |
| TrxAAmount | Si | Monto adicional de la propina con 2 decimales |
| TrxCurrency | Si | Tipo de Moneda
|
| License | Si | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| TrxDevice | Si | No. de serie del dispositivo |
| TrxReference | Si | Su identificador único para cada pago. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor, el sistema asigna una marca de tiempo en formato largo. |
| TrxFValue | No | Merchant Filter. Puede tener más de un número de comerciantes para diferentes transacciones. Por ejemplo, en su negocio necesita usar solo un comerciante para cada sucursal o sección (restaurante, lobby, piscina, cajero 1, cajero 2, cajero n, etc.). Por lo tanto, puede definir un valor (cadena como máximo de 5 caracteres) para cada comerciante y asignar a su transacción la cadena separada por comas. |
| TrxUser | No | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
Un Check In es un tipo de operación especial pensada para los hoteles y rentadoras de autos, que permite reservar un monto en la tarjeta, previo a conocer el monto final de la transacción.
EndPoint
https://integration.pos.io/payment/checkIn
EndPoint ambiente productivo
https://www.intelipos.io/mmc-ws/i/payment/checkIn
EndPoint ambiente de pruebas
https://qa.intelipos.io/mmc-ws/i/payment/checkIn
| Parámetro | Requerido | Descripción |
|---|---|---|
| TrxAmount | Si | Monto a cobrar, sin comas, un punto y dos decimales |
| TrxCurrency | Si | Moneda
|
| TrxRoomNbr | SI | Número de habitación asociada al Check In |
| License | Si | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| TrxDevice | Si | No. de serie del dispositivo |
| TrxFValue | No | Filtro para limitar las afiliaciones de pago |
| TrxUser | No | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
| TrxReference | No | Su identificador único para cada pago. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor, el sistema asigna una marca de tiempo en formato largo. |
| TrxPaymentMode | No | Cuando se tienen opciones de pago a MSI este elemento sirve para especificar la forma de pago
desde un inicio y tener el control total.
|
Una Reautorización es un tipo de operación especial pensada para los hoteles y rentadoras de autos, que permite incrementar el monto reservado con un Check In, previo a conocer el monto final de la transacción.
EndPoint
https://integration.pos.io/payment/reauth
EndPoint ambiente productivo
https://www.intelipos.io/mmc-ws/i/payment/reauth
EndPoint ambiente de pruebas
https://qa.intelipos.io/mmc-ws/i/payment/reauth
| Parámetro | Requerido | Descripción |
|---|---|---|
| TrxAmount | Si | Monto a incrementar al check in autorizado previamente, sin comas, un punto y dos decimales |
| TrxCurrency | Si | Moneda
|
| License | Si | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| TrxDevice | Si | No. de serie del dispositivo |
| TrxOriginalNumber | Si | Número de operación propio de MIT asociado al pago aprobado |
| TrxAuth | Si | Código de autorización generado por el procesador |
| TrxUser | Si | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
| TrxReference | Si | Su identificador único para cada pago. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor, el sistema asigna una marca de tiempo en formato largo. |
| TrxUrl | Si | Url del servicio que se requiere consumir |
| TrxRoomNbr | SI | Número de habitación asociada a la reservación |
Un Check Out es un tipo de operación especial pensada para los hoteles y rentadoras de autos, que permite cobrar un monto reservado previamente con un Check In, cuando ya se sabe el monto final de la transacción. Este debe ser menor o igual al total reservado previamente.
EndPoint
https://integration.pos.io/payment/checkOut
EndPoint ambiente productivo
https://www.intelipos.io/mmc-ws/i/payment/checkOut
EndPoint ambiente de pruebas
https://qa.intelipos.io/mmc-ws/i/payment/checkOut
| Parámetro | Requerido | Descripción |
|---|---|---|
| TrxAmount | Si | Monto igual o menor a cobrar al check in autorizado previamente, sin comas, con un punto y dos decimales |
| TrxCurrency | Si | Moneda
|
| License | Si | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| TrxDevice | Si | No. de serie del dispositivo |
| TrxOriginalNumber | Si | Número de operación propio de MIT asociado al pago aprobado |
| TrxAuth | Si | Código de autorización generado por el procesador |
| TrxUser | Si | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
| TrxReference | Si | Su identificador único para cada pago. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor, el sistema asigna una marca de tiempo en formato largo. |
| TrxUrl | Si | Url del servicio que se requiere consumir |
| TrxRoomNbr | SI | Número de habitación asociada a la reservación |
Una Cancelación es una operación que permite devolver un monto menor o igual al previamente autorizado por una Venta o una Venta con Propina o un Check Out. No puede usarse para cancelar un Check In o una Reautorización.
EndPoint
https://integration.pos.io/payment/refund
EndPoint ambiente productivo
https://www.intelipos.io/mmc-ws/i/payment/refund
EndPoint ambiente de pruebas
https://qa.intelipos.io/mmc-ws/i/payment/refund
| Parámetro | Requerido | Descripción |
|---|---|---|
| TrxAmount | Si | Monto a cobrar, sin comas, un punto y dos decimales |
| TrxOriginalNumber | Si | ID de transacción para reimpresión, búsqueda por id o por transacciones de reembolso |
| TrxAuth | Si | Número de autorización del banco para transacciones de reembolso |
| License | Si | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| TrxDevice | Si | No. de serie del dispositivo |
| TrxReference | Si | Su identificador único para cada pago. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor, el sistema asigna una marca de tiempo en formato largo. |
| TrxUser | No | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
| TrxCurrency | Si | Tipo de Moneda
|
| TrxUrl | Si | Url del servicio que se requiere consumir |
Aquí tienes un ejemplo simple de cómo inicializar y utilizar la biblioteca UsbIntegration en una aplicación .NET.
using UsbIntegration;
namespace MiAplicacion
{
class Program
{
static void Main(string[] args)
{
var serialPortManager = new SerialPortManager();
// Cargar puertos disponibles
var puertos = serialPortManager.GetAvailablePorts();
// Conectarse a un puerto específico
serialPortManager.ConnectToTerminal(puertos.First());
// Enviar comando ABOUT
serialPortManager.SendAboutCommand();
// Manejar respuesta
serialPortManager.ResponseReceived += (sender, response) =>
{
Console.WriteLine("Respuesta Recibida: " + response);
};
}
}
}
La clase SerialPortManager es el punto de entrada principal para interactuar con la biblioteca. Proporciona métodos para gestionar la comunicación por puerto serial e interactuar con los terminales POS.
public async Task<bool> EnableLoggingAsync(EnvironmentEnum ambiente)
Permite activar la escritura de un log en el sistema operativo.
Parámetros:
public string GetErrorMessage()
Permite obtener la descripción del error cuando EnableLoggingAsync es false
public string GetErrorCode()
Permite obtener el código de error cuando EnableLoggingAsync es false
public string GetVersion()
Permite obtener la versión de la librería que se está utilizando
public string[] GetAvailablePorts()
Recupera una lista de los puertos seriales disponibles en el sistema.
public Dictionary<string, string> GetAvailablePortsWithDescription()
Obtiene los puertos COM con su descripción y nombre
public bool ConnectToTerminal(string portName)
Conecta al puerto serial especificado.
public void GetDeviceInfo (string deviceModel)
Obtiene los detalles del dispositivo pinpad.
Parámetros:
Respuesta:
{
"bootLoaderVersion": "",
"firmwareVersion": "WPOS3X_Android8_V01.00_2210282037_default_user_int",
"hardwareVersion": "WPOS3X_Android8_V01.00_2210282037_default_user_international",
"hasPrinter": true,
"isContactless": true,
"isOnCharging": false,
"isActivated": true,
"levelBattery": "38.0",
"markDevice": "Wiseasy",
"modelDevice": "WPOS-3",
"serialNumber": "PP35272138001914"
}
public void Login(string activationCode)
Permite logearse a la app a través de un código de activación
Parámetros:
| Parámetro | Requerido | Descripción |
|---|---|---|
| activationCode | Si | Código de activación de la terminal |
public void Logout()
Permite deslogearse de la app.
Como viste previamente las funciones expuestas en Getnet para diferentes tipos de comercio. A continuación, encontrarás una breve descripción y los parámetros para cada una.
Una venta es aquella transacción que sirve para hacer un cargo a una tarjeta.
public void SendSale(string license, string amount, string currency, string reference, string trxUser, string trxFValue, string trxPaymentMode)
Envía un comando de venta directa a la terminal para iniciar una lectura de tarjeta y el proceso de cobro correspondiente.
Nota: Durante el proceso de venta pueden enviarse algunos mensajes del dispositivo POS hacia la DLL, los mensajes ayudan al integrador a tener retroalimentación del proceso de lectura, Favor de consultarlos en el ANEXO A.
Parámetros:
| Parámetro | Requerido | Descripción |
|---|---|---|
| amount | Si | Monto por cobrar, sin comas, un punto y dos decimales |
| currency | Si | Tipo de moneda:
|
| license | Si | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| reference | Si | Su identificador único para cada pago. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor, el sistema asigna una marca de tiempo en formato largo. |
| trxUser | No | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usuario de cobro. |
| trxFValue | No | Filtro de afiliaciones (Alias configurado por afiliación en el back de InteliPos) |
| trxPaymentMode | No | Filtro de formas de pago (0, 3, 6, etc...), donde 0 es contado |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se retorna APPROVED, en total puede tener 3 valores diferentes APPROVED, DENIED o ERROR. |
| TrxCurrency |
Moneda
|
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxCard | Número de tarjeta enmascarado |
| TrxAuth | Número de autorización del banco |
| TrxOriginalNumber | Id de la transacción |
| TrxMerchant | Número y Nombre correspondiente a la afiliación |
| TrxArqc | Valor enmascarado ARQC para transacciones ICC y PICC, solo en respuesta aprobada |
| TrxAID | Valor AID para transacciones ICC y PICC, solo en respuesta aprobada |
| TrxCardBrand | Marca de la tarjeta (VISA, MASTERCARD, AMEX, CARNET) |
| TrxCardBank | Nombre del banco emisor de la tarjeta |
| TrxCardInstrument | "CREDITO" o "DEBITO" valores para tarjetas de crédito o débito respectivamente |
| TrxPaymentMode | Cuando se tienen opciones de pago a MSI. Contado, 3MSI, 6MSI, etc... |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxDevice | Número de serie del dispositivo |
| TrxUrl | URL del servicio que se requiere consumir |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxUser | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxCcBin | BIN de la tarjeta (por configuración, se debe solicitar) |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta:
{
"TrxAmount": "5.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "27/09/2024",
"TrxTime": "13:55:34",
"TrxDescription": "",
"TrxReference": "Ref 1",
"TrxLatitude": "19.41570974",
"TrxLongitude": "-99.07693135",
"TrxUrl": "https://integration.pos.io/payment/sale",
"TrxOperationType": "VENTA",
"TrxResult": "APPROVED",
"TrxDevice": "2900010912010190539",
"TrxUser": "1234",
"TrxAID": "A000000031010",
"TrxArqc": "**** 5C1E",
"TrxAuth": "431032",
"TrxCard": "**** 6884",
"TrxCardBank": "BBVA",
"TrxCardBrand": "Visa",
"TrxCardInstrument": "CREDITO",
"TrxMerchant": "2345679 NVA DESARROLLO",
"TrxOriginalNumber": "1000000200091",
"TrxFValue": "",
"TrxPaymentMode": "Contado"
"TrxPin": false,
"TrxQps": true,
"TrxCdcvm": false,
"TrxPosEntryMode": "071"
}
Dependiendo del motivo por el cual se declinó la solicitud, moneda y referencia pueden regresarse vacíos.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se devuelve DENIED |
| TrxCurrency |
Moneda
|
| TrxResultCode | Identificador de código de respuesta |
| TrxDescription | Descripción del código de respuesta |
| TrxDevice | Número de serie del dispositivo |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxUrl | URL del servicio que se requiere consumir |
| TrxUser | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usuario de cobro. |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
{
"TrxAmount": "50001.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "28\/09\/2024",
"TrxTime": "03:57",
"TrxDescription": "D - 62 - TRANS NO PERMITIDA",
"TrxReference": "Ref 1",
"TrxLatitude": "19.41561453",
"TrxLongitude": "-99.07704924",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/sale",
"OperationType": "VENTA",
"TrxResult": "DENIED",
"TrxResultCode": "62",
"TrxDevice": "2900010912101905399",
"TrxUser": "1234"
}
Dependiendo del error el monto, moneda y referencia pueden regresarse vacíos.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se devuelve ERROR |
| TrxResultCode | Identificador del error |
| TrxDescription | Descripción del error |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxUrl | URL del servicio que se requiere consumir |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta con error:
{
"TrxAmount": "50001.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "28\/09\/2024",
"TrxTime": "03:57:53",
"TrxDescription": "Transacción cancelada por el usuario",
"TrxReference": "Ref 1",
"TrxLatitude": "19.4155764",
"TrxLongitude": "-99.07681853",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/sale",
"OperationTypeId": "VENTA",
"TrxResult": "ERROR",
"TrxResultCode": "SAL_282"
}
Una venta con propina es aquella transacción que sirve para hacer un cargo a una tarjeta, sumando un monto adicional por un servicio recibido.
public void SendSaleWithTip(string license, string amount, string amountTip, string currency, string reference, string trxUser, string trxFValue, string trxPaymentMode)
Envía un comando de venta con propina a la terminal para iniciar una lectura de tarjeta y el proceso de cobro correspondiente.
Nota: Durante el proceso de venta pueden enviarse algunos mensajes del dispositivo POS hacia la DLL, los mensajes ayudan al integrador a tener retroalimentación del proceso de lectura, Favor de consultarlos en el ANEXO A.
Parámetros:
Se consideran todos los campos de una venta aprobada normal además del parámetro adicional amountTip.
| Parámetro | Requerido | Descripción |
|---|---|---|
| amount | Si | Monto por cobrar, sin comas, un punto y dos decimales |
| currency | Si | Tipo de moneda:
|
| license | Si | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| reference | Si | Su identificador único para cada pago. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor, el sistema asigna una marca de tiempo en formato largo. |
| trxUser | No | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usuario de cobro. |
| trxFValue | No | Filtro de afiliaciones (Alias configurado por afiliación en el back de InteliPos) |
| trxPaymentMode | No | Filtro de formas de pago (0, 3, 6, etc...), donde 0 es contado |
| amountTip | Si | Monto adicional de la propina con 2 decimales |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se retorna APPROVED, en total puede tener 3 valores diferentes APPROVED, DENIED o ERROR. |
| TrxCurrency |
Moneda
|
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxCard | Número de tarjeta enmascarado |
| TrxAuth | Número de autorización del banco |
| TrxOriginalNumber | Id de la transacción |
| TrxMerchant | Número y Nombre correspondiente a la afiliación |
| TrxArqc | Valor enmascarado ARQC para transacciones ICC y PICC, solo en respuesta aprobada |
| TrxAID | Valor AID para transacciones ICC y PICC, solo en respuesta aprobada |
| TrxCardBrand | Marca de la tarjeta (VISA, MASTERCARD, AMEX, CARNET) |
| TrxCardBank | Nombre del banco emisor de la tarjeta |
| TrxCardInstrument | "CREDITO" o "DEBITO" valores para tarjetas de crédito o débito respectivamente |
| TrxPaymentMode | Cuando se tienen opciones de pago a MSI. Contado, 3MSI, 6MSI, etc... |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxDevice | Número de serie del dispositivo |
| TrxUrl | URL del servicio que se requiere consumir |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxUser | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxCcBin | BIN de la tarjeta (por configuración, se debe solicitar) |
| TrxAAmoun | Monto adicional de la propina con 2 decimales |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
Se consideran todos los campos de una venta aprobada normal además del parámetro adicional TrxAAmount, que representa la propina.
JSON Ejemplo de respuesta:
{
"TrxAmount": "5.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "27/09/2024",
"TrxTime": "13:55:34",
"TrxDescription": "",
"TrxReference": "Ref 1",
"TrxLatitude": "19.41570974",
"TrxLongitude": "-99.07693135",
"TrxUrl": "https://integration.pos.io/payment/sale",
"TrxOperationType": "VENTA",
"TrxResult": "APPROVED",
"TrxDevice": "2900010912010190539",
"TrxUser": "1234",
"TrxAID": "A000000031010",
"TrxArqc": "**** 5C1E",
"TrxAuth": "431032",
"TrxCard": "**** 6884",
"TrxCardBank": "BBVA",
"TrxCardBrand": "Visa",
"TrxCardInstrument": "CREDITO",
"TrxMerchant": "2345679 NVA DESARROLLO",
"TrxOriginalNumber": "1000000200091",
"TrxFValue": "",
"TrxPaymentMode": "Contado"
"TrxPin": false,
"TrxQps": true,
"TrxCdcvm": false,
"TrxPosEntryMode": "071"
}
Dependiendo del motivo por el cual se declinó la solicitud, moneda y referencia pueden regresarse vacíos.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se devuelve DENIED |
| TrxCurrency |
Moneda
|
| TrxResultCode | Identificador de código de respuesta |
| TrxDescription | Descripción del código de respuesta |
| TrxDevice | Número de serie del dispositivo |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxUrl | URL del servicio que se requiere consumir |
| TrxUser | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usuario de cobro. |
| TrxAAmount | Monto adicional de la propina con 2 decimales |
JSON Ejemplo de respuesta declinada:
{
"TrxAmount": "50001.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "28\/09\/2024",
"TrxTime": "03:57",
"TrxDescription": "D - 62 - TRANS NO PERMITIDA",
"TrxReference": "Ref 1",
"TrxLatitude": "19.41561453",
"TrxLongitude": "-99.07704924",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/sale",
"TrxOperationType": "VENTA",
"TrxResult": "DENIED",
"TrxResultCode": "62",
"TrxDevice": "2900010912010190539",
"TrxUser": "1234"
}
Dependiendo del error el monto, moneda y referencia pueden regresarse vacíos.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se devuelve ERROR |
| TrxResultCode | Identificador del error |
| TrxDescription | Descripción del error |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxUrl | URL del servicio que se requiere consumir |
| TrxAAmount | Monto adicional de la propina con 2 decimales |
JSON Ejemplo de respuesta con error:
{
"TrxAmount": "50001.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "28\/09\/2024",
"TrxTime": "03:57:53",
"TrxDescription": "Transacción cancelada por el usuario",
"TrxReference": "Ref 1",
"TrxLatitude": "19.4155701",
"TrxLongitude": "-99.07681853",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/sale",
"TrxOperationType": "VENTA",
"TrxResult": "ERROR",
"TrxResultCode": "SM_E282"
}
Un Check In es un tipo de operación especial pensada para los hoteles y rentadoras de autos, que permite reservar un monto en la tarjeta, previo a conocer el monto final de la transacción.
public void SendCheckin(string license, string amount, string currency, string reference, string room, string trxUser, string trxFValue, string trxPaymentMode)
Envía un comando de check in a la terminal para iniciar una lectura de tarjeta y el proceso de cobro correspondiente.
Nota: Durante el proceso de venta pueden enviarse algunos mensajes del dispositivo POS hacia la DLL, los mensajes ayudan al integrador a tener retroalimentación del proceso de lectura, Favor de consultarlos en el ANEXO A.
Parámetros:
Se consideran todos los campos de una venta aprobada normal además del parámetro adicional room.
| Parámetro | Requerido | Descripción |
|---|---|---|
| amount | Si | Monto por cobrar, sin comas, un punto y dos decimales |
| currency | Si | Tipo de moneda:
|
| license | Si | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| reference | Si | Su identificador único para cada pago. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor, el sistema asigna una marca de tiempo en formato largo. |
| trxUser | No | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usuario de cobro. |
| trxFValue | No | Filtro de afiliaciones (Alias configurado por afiliación en el back de InteliPos) |
| trxPaymentMode | No | Filtro de formas de pago (0, 3, 6, etc...), donde 0 es contado |
| room | Si | Número de habitación asociada a la reservación |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
Se consideran todos los campos de una venta, no hay parámetros adicionales para el Checkin.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se retorna APPROVED, en total puede tener 3 valores diferentes APPROVED, DENIED o ERROR. |
| TrxCurrency |
Moneda
|
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxCard | Número de tarjeta enmascarado |
| TrxAuth | Número de autorización del banco |
| TrxOriginalNumber | Id de la transacción |
| TrxMerchant | Número y Nombre correspondiente a la afiliación |
| TrxArqc | Valor enmascarado ARQC para transacciones ICC y PICC, solo en respuesta aprobada |
| TrxAID | Valor AID para transacciones ICC y PICC, solo en respuesta aprobada |
| TrxCardBrand | Marca de la tarjeta (VISA, MASTERCARD, AMEX, CARNET) |
| TrxCardBank | Nombre del banco emisor de la tarjeta |
| TrxCardInstrument | "CREDITO" o "DEBITO" valores para tarjetas de crédito o débito respectivamente |
| TrxPaymentMode | Cuando se tienen opciones de pago a MSI. Contado, 3MSI, 6MSI, etc... |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxDevice | Número de serie del dispositivo |
| TrxUrl | URL del servicio que se requiere consumir |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxUser | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxCcBin | BIN de la tarjeta (por configuración, se debe solicitar) |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta:
{
"TrxAmount": "5.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "27/09/2024",
"TrxTime": "13:55:34",
"TrxDescription": "",
"TrxReference": "Ref 1",
"TrxLatitude": "19.41570974",
"TrxLongitude": "-99.07693135",
"TrxUrl": "https://integration.pos.io/payment/sale",
"TrxOperationType": "VENTA",
"TrxResult": "APPROVED",
"TrxDevice": "2900010912010190539",
"TrxUser": "1234",
"TrxAID": "A000000031010",
"TrxArqc": "**** 5C1E",
"TrxAuth": "431032",
"TrxCard": "**** 6884",
"TrxCardBank": "BBVA",
"TrxCardBrand": "Visa",
"TrxCardInstrument": "CREDITO",
"TrxMerchant": "2345679 NVA DESARROLLO",
"TrxOriginalNumber": "1000000200091",
"TrxFValue": "",
"TrxPaymentMode": "Contado"
"TrxPin": false,
"TrxQps": true,
"TrxCdcvm": false,
"TrxPosEntryMode": "071"
}
Dependiendo del motivo por el cual se declinó la solicitud, moneda y referencia pueden regresarse vacíos.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se devuelve DENIED |
| TrxCurrency |
Moneda
|
| TrxResultCode | Identificador de código de respuesta |
| TrxDescription | Descripción del código de respuesta |
| TrxDevice | Número de serie del dispositivo |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxUrl | URL del servicio que se requiere consumir |
| TrxUser | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usuario de cobro. |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta:
{
"TrxAmount": "50001.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "28\/09\/2024",
"TrxTime": "03:57",
"TrxDescription": "D - 62 - TRANS NO PERMITIDA",
"TrxReference": "Ref 1",
"TrxLatitude": "19.41561453",
"TrxLongitude": "-99.07704924",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/sale",
"TrxOperationType": "VENTA",
"TrxResult": "DENIED",
"TrxResultCode": "62",
"TrxDevice": "2900010912010190539",
"TrxUser": "1234"
}
Dependiendo del error el monto, moneda y referencia pueden regresarse vacíos.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se devuelve ERROR |
| TrxResultCode | Identificador del error |
| TrxDescription | Descripción del error |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxUrl | URL del servicio que se requiere consumir |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta con error:
{
"TrxAmount": "50001.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "28\/09\/2024",
"TrxTime": "03:57:53",
"TrxDescription": "Transacción cancelada por el usuario",
"TrxReference": "Ref 1",
"TrxLatitude": "19.4155701",
"TrxLongitude": "-99.07681853",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/sale",
"TrxOperationType": "VENTA",
"TrxResult": "ERROR",
"TrxResultCode": "SM_E282"
}
Una Reautorización es un tipo de operación especial pensada para los hoteles y rentadoras de autos, que permite incrementar el monto reservado con un Check In, previo a conocer el monto final de la transacción.
public void SendReauthorization(string license, string amount, string currency, string opNumber)
Envía un comando de venta con propina a la terminal para iniciar el proceso de reautorización correspondiente.
Se consideran todos los campos de una venta aprobada normal además del parámetro adicional opNumber.
Parámetros:
| Parámetro | Requerido | Descripción |
|---|---|---|
| amount | Si | Monto por cobrar, sin comas, un punto y dos decimales |
| currency | Si | Tipo de moneda:
|
| license | Si | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| reference | Si | Su identificador único para cada pago. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor, el sistema asigna una marca de tiempo en formato largo. |
| trxUser | No | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usuario de cobro. |
| trxFValue | No | Filtro de afiliaciones (Alias configurado por afiliación en el back de InteliPos) |
| trxPaymentMode | No | Filtro de formas de pago (0, 3, 6, etc...), donde 0 es contado |
| opNumber | Si | Numero de operación del Checkin a reautorizar (TrxOriginalNumber) |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se retorna APPROVED, en total puede tener 3 valores diferentes APPROVED, DENIED o ERROR. |
| TrxCurrency |
Moneda
|
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxCard | Número de tarjeta enmascarado |
| TrxAuth | Número de autorización del banco |
| TrxOriginalNumber | Id de la transacción |
| TrxMerchant | Número y Nombre correspondiente a la afiliación |
| TrxArqc | Valor enmascarado ARQC para transacciones ICC y PICC, solo en respuesta aprobada |
| TrxAID | Valor AID para transacciones ICC y PICC, solo en respuesta aprobada |
| TrxCardBrand | Marca de la tarjeta (VISA, MASTERCARD, AMEX, CARNET) |
| TrxCardBank | Nombre del banco emisor de la tarjeta |
| TrxCardInstrument | "CREDITO" o "DEBITO" valores para tarjetas de crédito o débito respectivamente |
| TrxPaymentMode | Cuando se tienen opciones de pago a MSI. Contado, 3MSI, 6MSI, etc... |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxDevice | Número de serie del dispositivo |
| TrxUrl | URL del servicio que se requiere consumir |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxUser | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta Aprobada
{
"TrxAmount": "50.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "27\/09\/2024",
"TrxTime": "14:10:10",
"TrxDescription": "",
"TrxReference": "Ref 1",
"TrxLatitude": "19.41556976",
"TrxLongitude": "-99.07701082",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/reauth",
"TrxOperationType": "REAUTH",
"TrxResult": "APPROVED",
"TrxDevice": "",
"TrxUser": "",
"TrxAID": "",
"TrxArqc": "",
"TrxAuth": "255164",
"TrxCard": "**** 6884",
"TrxCardBank": "BBVA",
"TrxCardBrand": "Visa",
"TrxCardInstrument": "CREDITO",
"TrxMerchant": "2345679 NVA DESARROLLO",
"TrxOriginalNumber": "1000000200096",
"TrxFValue": "",
"TrxPaymentMode": "Contado"
}
Dependiendo del motivo por el cual se declinó la solicitud, moneda y referencia pueden regresarse vacíos.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se devuelve DENIED |
| TrxCurrency |
Moneda
|
| TrxResultCode | Identificador de código de respuesta |
| TrxDescription | Descripción del código de respuesta |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxUrl | URL del servicio que se requiere consumir |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta declinada:
{
"TrxAmount": "500008.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "28\/09\/2024",
"TrxTime": "04:25",
"TrxDescription": "D - 62 - TRANS NO PERMITIDA",
"TrxReference": "error",
"TrxLatitude": "19.41557245",
"TrxLongitude": "-99.07691059",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/reauth",
"TrxOperationType": "REAUTH",
"TrxResult": "DENIED",
"TrxResultCode": "62",
"TrxDevice": "",
"TrxUser": ""
}
Dependiendo del error el monto, moneda y referencia pueden regresarse vacíos.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se devuelve ERROR |
| TrxResultCode | Identificador del error |
| TrxDescription | Descripción del error |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxUrl | URL del servicio que se requiere consumir |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta con error:
{
"TrxAmount": "50.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "27\/09\/2024",
"TrxTime": "11:29:09",
"TrxDescription": "Favor de validar el No de operación.",
"TrxReference": "Ref 1",
"TrxLatitude": "19.41536748",
"TrxLongitude": "-99.07707191",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/reauth",
"TrxOperationType": "REAUTH",
"TrxResult": "ERROR",
"TrxResultCode": "SM_E109"
}
Un Check Out es un tipo de operación especial pensada para los hoteles y rentadoras de autos, que permite cobrar un monto reservado previamente con un Check In, cuando ya se sabe el monto final de la transacción. Este debe ser menor o igual al total reservado previamente.
Envía un comando de checkout a la terminal para iniciar el proceso de cobro correspondiente.
public void SendCheckOut(string license, string amount, string currency, string opNumber)
Parámetros:
| Parámetro | Requerido | Descripción |
|---|---|---|
| amount | Si | Monto por cobrar, sin comas, un punto y dos decimales |
| currency | Si | Tipo de moneda:
|
| license | Si | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| reference | Si | Su identificador único para cada pago. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor, el sistema asigna una marca de tiempo en formato largo. |
| trxUser | No | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usuario de cobro. |
| trxFValue | No | Filtro de afiliaciones (Alias configurado por afiliación en el back de InteliPos) |
| trxPaymentMode | No | Filtro de formas de pago (0, 3, 6, etc...), donde 0 es contado |
| opNumber | Si | Numero de operación del Checkin a reautorizar (TrxOriginalNumber) |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se retorna APPROVED, en total puede tener 3 valores diferentes APPROVED, DENIED o ERROR. |
| TrxCurrency |
Moneda
|
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxCard | Número de tarjeta enmascarado |
| TrxAuth | Número de autorización del banco |
| TrxOriginalNumber | Id de la transacción |
| TrxMerchant | Número y Nombre correspondiente a la afiliación |
| TrxCardBrand | Marca de la tarjeta (VISA, MASTERCARD, AMEX, CARNET) |
| TrxCardBank | Nombre del banco emisor de la tarjeta |
| TrxCardInstrument | "CREDITO" o "DEBITO" valores para tarjetas de crédito o débito respectivamente |
| TrxPaymentMode | Cuando se tienen opciones de pago a MSI. Contado, 3MSI, 6MSI, etc... |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxUrl | URL del servicio que se requiere consumir |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta Aprobada
{
"TrxAmount": "50.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "27\/09\/2024",
"TrxTime": "14:10:10",
"TrxDescription": "",
"TrxReference": "Ref 1",
"TrxLatitude": "19.41556976",
"TrxLongitude": "-99.07701082",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/reauth",
"TrxOperationType": "REAUTH",
"TrxResult": "APPROVED",
"TrxDevice": "",
"TrxUser": "",
"TrxAID": "",
"TrxArqc": "",
"TrxAuth": "255164",
"TrxCard": "**** 6884",
"TrxCardBank": "BBVA",
"TrxCardBrand": "Visa",
"TrxCardInstrument": "CREDITO",
"TrxMerchant": "2345679 NVA DESARROLLO",
"TrxOriginalNumber": "1000000200096",
"TrxFValue": "",
"TrxPaymentMode": "Contado"
}
Dependiendo del motivo por el cual se declinó la solicitud, moneda y referencia pueden regresarse vacíos.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se devuelve DENIED |
| TrxCurrency |
Moneda
|
| TrxResultCode | Identificador de código de respuesta |
| TrxDescription | Descripción del código de respuesta |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxUrl | URL del servicio que se requiere consumir |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta declinada:
{
"TrxResult": "DENIED",
"TrxCurrency": "MXN",
"TrxResultCode": "05",
"TrxDescription": "Tarjeta rechazada",
"TrxDevice": "DEVICE123",
"TrxAmount": "1000.00",
"TrxTime": "14:30",
"TrxDate": "10/09/2025",
"TrxReference": "REF123456",
"TrxLatitude": "19.4326",
"TrxLongitude": "-99.1332",
"TrxUrl": "https://api.example.com",
"TrxUser": "CAJERO01"
}
Dependiendo del error el monto, moneda y referencia pueden regresarse vacíos.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se devuelve ERROR |
| TrxResultCode | Identificador del error |
| TrxDescription | Descripción del error |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxUrl | URL del servicio que se requiere consumir |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta con error:
{
"TrxAmount": "50.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "27\/09\/2024",
"TrxTime": "11:29:09",
"TrxDescription": "Favor de validar el No de operación.",
"TrxReference": "Ref 1",
"TrxLatitude": "19.41536748",
"TrxLongitude": "-99.07707191",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/reauth",
"TrxOperationType": "REAUTH",
"TrxResult": "ERROR",
"TrxResultCode": "SM_E109"
}
Una Cancelación es una operación que permite devolver un monto menor o igual al previamente autorizado por una Venta o una Venta con Propina o un Check Out. No puede usarse para cancelar un Check In o una Reautorización.
public void RefundTrx(string license, string amount, string currency, string trxUser, string authNumber, string opNumber)
Permite solicitar la cancelación de una transacción.
| Parámetro | Requerido | Descripción |
|---|---|---|
| license | Si | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| amount | Si | Monto por cobrar, sin comas, un punto y dos decimales |
| currency | Si | Tipo de moneda:
|
| trxUser | No | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usuario de cobro. |
| authNumber | Si | Número de autorización del banco emisor |
| opNumber | Si | Numero de operación del Checkin a reautorizar (TrxOriginalNumber) |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se retorna APPROVED, en total puede tener 3 valores diferentes APPROVED, DENIED o ERROR. |
| TrxCurrency |
Moneda
|
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxCard | Número de tarjeta enmascarado |
| TrxAuth | Número de autorización del banco |
| TrxOriginalNumber | Id de la transacción |
| TrxMerchant | Número y Nombre correspondiente a la afiliación |
| TrxCardBrand | Marca de la tarjeta (VISA, MASTERCARD, AMEX, CARNET) |
| TrxCardBank | Nombre del banco emisor de la tarjeta |
| TrxCardInstrument | "CREDITO" o "DEBITO" valores para tarjetas de crédito o débito respectivamente |
| TrxPaymentMode | Cuando se tienen opciones de pago a MSI. Contado, 3MSI, 6MSI, etc... |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxDevice | Número de serie del dispositivo |
| TrxUrl | URL del servicio que se requiere consumir |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxCcBin | BIN la tarjeta (por configuración, se debe solicitar) |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta
{
"TrxAmount": "5.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "27/09/2024",
"TrxTime": "13:55:34",
"TrxDescription": "",
"TrxReference": "Ref 1",
"TrxLatitude": "19.41570974",
"TrxLongitude": "-99.07693135",
"TrxUrl": "https://integration.pos.io/payment/sale",
"TrxOperationType": "VENTA",
"TrxResult": "APPROVED",
"TrxDevice": "2900010912010190539",
"TrxUser": "1234",
"TrxAID": "A000000031010",
"TrxArqc": "**** 5C1E",
"TrxAuth": "431032",
"TrxCard": "**** 6884",
"TrxCardBank": "BBVA",
"TrxCardBrand": "Visa",
"TrxCardInstrument": "CREDITO",
"TrxMerchant": "2345679 NVA DESARROLLO",
"TrxOriginalNumber": "1000000200091",
"TrxFValue": "",
"TrxPaymentMode": "Contado"
"TrxPin": false,
"TrxQps": true,
"TrxCdcvm": false,
"TrxPosEntryMode": "071"
}
Dependiendo del motivo por el cual se declinó la solicitud, moneda y referencia pueden regresarse vacíos.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se devuelve DENIED |
| TrxCurrency |
Moneda
|
| TrxResultCode | Identificador de código de respuesta |
| TrxDescription | Descripción del código de respuesta |
| TrxDevice | ro de serie del dispositivo |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxUrl | URL del servicio que se requiere consumir |
| trxUser | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usuario de cobro. |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta:
{
"TrxAmount": "50001.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "28\/09\/2024",
"TrxTime": "03:57",
"TrxDescription": "D - 62 - TRANS NO PERMITIDA",
"TrxReference": "Ref 1",
"TrxLatitude": "19.41561453",
"TrxLongitude": "-99.07704924",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/sale",
"TrxOperationType": "VENTA",
"TrxResult": "DENIED",
"TrxResultCode": "62",
"TrxDevice": "2900010912010190539",
"TrxUser": "1234"
}
Dependiendo del error el monto, moneda y referencia pueden regresarse vacíos.
| Campo | Descripción |
|---|---|
| TrxResult | Resultado de la operación, en este caso se devuelve ERROR |
| TrxResultCode | Identificador del error |
| TrxDescription | Descripción del error |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizó el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizó el pago |
| TrxUrl | URL del servicio que se requiere consumir |
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
JSON Ejemplo de respuesta:
{
"TrxAmount": "50001.00",
"TrxCurrency": "MXN",
"integrationMode": "url",
"TrxDate": "28\/09\/2024",
"TrxTime": "03:57:53",
"TrxDescription": "Transacción cancelada por el usuario",
"TrxReference": "Ref 1",
"TrxLatitude": "19.4155701",
"TrxLongitude": "-99.07681853",
"TrxUrl": "https:\/\/integration.pos.io\/payment\/sale",
"TrxOperationType": "VENTA",
"TrxResult": "ERROR",
"TrxResultCode": "SM_E282"
}
Una Cancelación es una operación que permite interrumpir el envío de un mensaje en proceso
public void CancelReadingProcess()
Envía un comando para cancelar la lectura siempre y cuando sea posible realizar esta operación, por ejemplo, después del mensaje de progreso SM_P012 ya no es posible cancelar la transacción.
Consulte Anexo A para revisar los mensajes de progreso de una transacción con presencia de tarjeta.
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada está en formato JSON
Respuesta
Se regresa un JSON con el resultado de la petición, APPROVED OR DENIED
JSON de ejemplo:
{
"TrxResult": "DENIED",
"TrxResultCode": "SM_E304",
"TrxDescription": "Ocurrió un error al detener la lectura"
}
Aquí te presentamos las respuestas posibles y los parámetros correspondientes para cada escenario. La respuesta enviada esta en formato JSON
Cuando una operación es Aprobada por el emisor de la tarjeta, los parámetros de respuesta serán
| Parámetro | Descripción |
|---|---|
| TrxResult | Resultado de la operación, para aprobado debe ser APPROVED |
| TrxCurrency | Moneda
|
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxCard | Número de tarjeta enmascarado usado en la transacción, se devuelve el número de tarjeta autorizada si su solicitud es READ LOCAL CARD. |
| TrxAuth | Número de autorización del banco |
| TrxOriginalNumber | Id de la transacción |
| TrxMerchant | Merchant Number y Nombre utilizados en la transacción |
| TrxArqc | Valor enmascarado Arqc para transacciones ICC y PICC, solo en respuesta aprovada |
| TrxAID | Valor AID para transacciones ICC y PICC, solo en respuesta aprovada |
| TrxCardBrand | "VISA", "MASTERCARD", "AMEX" o "CARNET" |
| TrxCardBank | Nombre del banco emisor de la tarjeta |
| TrxCardInstrument | "CREDITO" o "DEBITO" valores para tarjetas de crédito o débito respectivamente |
| TrxPaymentMode | Cuando se tienen opciones de pago a MSI este elemento sirve para especificar la forma de pago
desde un inicio y tener el control total.
|
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxDescription | Descripción del resultado, solo en respuesta DENIED o ERROR |
| TrxDevice | Número de serie del dispositivo |
| TrxUrl | Url del servicio que se requiere consumir |
| TrxReference | Identificador único para cada pago o valor predeterminado asignado |
| TrxUser | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizo el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizo el pago |
| TrxOperationType | Tipo de operación |
| TrxFValue | Campo usado para filtrar afiliaciones, es opcional, aquí se incluyen los alias que se configuran en el portal administrativo. Se puede enviar solo uno o varios separados por comas. |
| TrxPin | Indica si la operación aplica PIN (Personal Identification Number) |
| TrxQps | Indica si la operación aplica QPS (Quick Payment Service) |
| TrxCdcvm | Indica si la operación califica para la validación de CDCVM |
| TrxPosEntryMode | Identifica el método utilizado, como la lectura del chip o la banda magnética de la tarjeta, o la entrada manual por parte del comercio. Valores posibles: 022 -> Banda, 051 -> Chip, 071 -> Contactless, 911 -> Contactless AMEX banda |
Cuando una operación es Denegada por el emisor de la tarjeta, los parámetros de respuesta serán
| Parámetro | Descripción |
|---|---|
| TrxResult | Resultado de la solicitud de cobro, para denegada debe ser DENIED |
| TrxResultCode | Identificador de mensaje personalizado, solo en respuesta DENIED o ERROR |
| TrxDescription | Descripción del resultado, solo en respuesta DENIED o ERROR |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Su identificador único para cada pago o valor predeterminado asignado |
| TrxUrl | Url del servicio que se requiere consumir |
| TrxUser | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizo el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizo el pago |
| TrxOperationType | Tipo de operación |
Cuando una operación no puede ser procesada, los parámetros de respuesta serán
| Parámetro | Descripción |
|---|---|
| TrxResult | Resultado de la solicitud de cobro, para respuesta fallida debe ser ERROR |
| TrxResultCode | Identificador de mensaje personalizado, solo en respuesta DENIED o ERROR |
| TrxDescription | Descripción del resultado, solo en respuesta DENIED o ERROR |
| TrxAmount | Monto de la transacción con 2 decimales |
| TrxTime | Hora de la transacción formato "HH24:MM" |
| TrxDate | Fecha de la transacción formato "DD/MM/YYYY" |
| TrxReference | Su identificador único para cada pago o valor predeterminado asignado |
| TrxUrl | Url del servicio que se requiere consumir |
| TrxLatitude | Latitud correspondiente a la ubicación donde se realizo el pago |
| TrxLongitude | Longitud correspondiente a la ubicación donde se realizo el pago |
Esta sección está dirigida a los comercios que deciden emitir en su integración un voucher o ticket propio como comprobante de la transacción con tarjeta bancaria.
Es importante considerar que actualmente la regulación contempla el método de verificación del titular de la tarjeta del dispositivo del consumidor (CDCVM), que es una de las maneras en que el PCI SSC regula la seguridad de los pagos, exigiendo un método de verificación de tarjetas (CVM) cuando los comercios procesan una transacción.
Los CVM comunes incluyen la firma autógrafa, el PIN electrónico (online u offline) y la biometría.
Con base a lo anterior, se deberá considerar los siguiente valores y leyendas en la impresión de los vouchers / tickets de pago que se emite para el comercio y el cliente en la parte de la firma.
| Leyenda | TrxPosEntryMode | TrxCdcvm | TrxQps | TrxPin | Descripción de la leyenda |
|---|---|---|---|---|---|
| Validado con firma electrónica uso de CDCVM | 071 o 911* | True | False | false | La leyenda se considera así cuando la transacción se realizó a través de una billetera digital dejando la responsabilidad de la autenticación de lado del proveedor de la billetera |
| Validado con firma electrónica | 051 | False | False | True | La transacción se realizó con una tarjeta con CHIP que solicito PIN en la terminal. |
| Validado sin firma | 051 | false | True | false | La operación se realizó bajo el concepto de Quick Payment Service (QPS), operaciones menores a 250. |
| Validado sin firma | 071 o 911* | false | true | false | La operación se realizó a través de contactless, no se pide autenticación al encontrarse en un monto menor a $1000.00 que es el límite de transacciones permitidas sin autenticación. |
| Línea para firma autógrafa | 051 | false | false | false | Se realizo la operación con tarjeta de chip que no pide autenticación en la terminal, por lo que el TH debe firmar el voucher. |
| Línea para firma autógrafa | 071 o 911* | false | False | false | Se realizo la operación con tarjeta a través de contactless mayor a $1000 por lo que el TH debe firmar el voucher. |
| Línea para firma autógrafa | 022 | False | False | false | Se realizo la operación con tarjeta a través de banda magnética. |
* Para cobros Contactless Amex Banda
NOTA: La mayor prioridad corresponde al parámetro de CDCVM; posteriormente PIN; después QPS y al final validar que esas variables sean falsas.
Dentro de la identificación de las operaciones, no olvides que se debe incluir las siguientes leyendas por tipo de operación en la parte superior del comprobante:
Adicionalmente, en la parte inferior, se deben incluir las siguientes leyendas, con base al tipo de Marca al que pertenece la tarjeta con la que se paga:
Me obligo conforme a los términos y condiciones establecidos al reverso del presente documento
ME OBLIGO A PAGAR EL MONTO INDICADO EN ESTE RECIBO ACORDE AL CONTRATO CELEBRADO CON AMERICAN EXPRESS
POR FAVOR, CONSERVAR PARA SU REGISTRO
Importante:
Para enviar tu solicitud a la terminal debes utilizar el método executeTransaction del objeto javascript posweb.
function sendPay() {
var jsonResquet = {
"License": "numero de licencia",
"TrxCurrency":"1",
"TrxUser":"nombre de usuario",
"TrxReference":"referencia",
"TrxAmount":12.10
};
//CONECTOR
posweb.executeTransaction(jsonResquet);
//PARA IR A HOME
posweb.home()
}
Importante:
Recuerda que la petición JSON debe transformarse a QR.
Aquí te presentamos ejemplos de solicitudes con sus posibles respuestas
Venta con parámetros mínimos obligatorios
| Request | Response |
|---|---|
|
{ "License":"OTZlMDY3ZTMtZWIwZC00", "TrxAmount":"100", "TrxCurrency":"1", "TrxReference":"Ref 1", "TrxUrl":"https://integration.pos.io/payment/sale", "TrxUser":"1234" } |
Transacción Aprobada { "TrxAID":"A0000000041010", "TrxAmount":"100.00", "TrxArqc":"**** D05D", "TrxAuth":"712009", "TrxCard":"**** 5628", "TrxCardBank":"SANTANDER", "TrxCardBrand":"MasterCard", "TrxCardInstrument":"CREDITO", "TrxCurrency":"MXN", "TrxDate":"15/06/2020", "TrxDescription":"", "TrxDevice":"PP35271909103698", "TrxMerchant":"7628597 VMC", "TrxOriginalNumber":"301268962", "TrxPaymentMode":"Contado", "TrxReference":"Ref 1", "TrxResult":"APPROVED", "TrxTime":"19:29:36", "TrxUrl":"/payment/sale", "TrxUser":"1234" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAmount":"54268", "TrxCurrency":"1", "TrxDate":"15/06/2020", "TrxDescription":"D - 51 – FONDOS INSUFICIENTES", "TrxDevice":"PP35271909103698", "TrxReference":"Ref 1", "TrxResult":"DENIED", "TrxResultCode":"TXE_0001", "TrxTime":"20:23:32", "TrxUrl":"/payment/sale", "TrxUser":"1234" } Transacción con Error { "TrxResult": "ERROR", "TrxResultCode": "E1", "TrxDescription": "Invalid request", "TrxAmount": "100", "TrxTime": "20:23:32", "TrxDate": "15/06/2020", "TrxReference": "Ref 1" } |
Venta con parámetro TrxFValue
| Request | Response |
|---|---|
|
{ "License":"OTZlMDY3ZTMtZWIwZC00", "TrxAmount":"542", "TrxCurrency":"1", "TrxFValue":"A1", "TrxReference":"Ref 1", "TrxUrl":"https://integration.pos.io/payment/sale", "TrxUser":"1234" } |
Transacción Aprobada { "TrxAID":"A0000000041010", "TrxAmount":"542.00", "TrxArqc":"***********2FFB", "TrxAuth":"508774", "TrxCard":"**** 5628", "TrxCardBank":"SANTANDER", "TrxCardBrand":"MasterCard", "TrxCardInstrument":"CREDITO", "TrxCurrency":"MXN", "TrxDate":"15/06/2020", "TrxDescription":"", "TrxDevice":"PP35271909103698", "TrxFValue":"A1", "TrxMerchant":"7628597 VMC", "TrxOriginalNumber":"301268974", "TrxPaymentMode":"3Meses", "TrxReference":"Ref 1", "TrxResult":"APPROVED", "TrxTime":"20:27:20", "TrxUrl":"/payment/sale", "TrxUser":"1234" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAmount":"52000", "TrxCurrency":"1", "TrxDate":"12/05/2020", "TrxDescription":"D - 51 – FONDOS INSUFICIENTES", "TrxDevice":"PP35271909103698", "TrxFValue":"A1", "TrxReference":"Ref 13", "TrxResult":"DENIED", "TrxResultCode":"TXE_0001", "TrxTime":"16:33:46", "TrxUrl":"/payment/sale", "TrxUser":"1234" } Transacción con Error { "TrxResult": "ERROR", "TrxResultCode": "E1", "TrxDescription": "Invalid request", "TrxAmount": "100", "TrxTime": "16:33:46", "TrxDate": "12/05/202", "TrxReference": "Ref 13" } |
Venta con parámetro TrxFValue y TrxPaymentMode
| Request | Response |
|---|---|
|
{ "License":"OTZlMDY3ZTMtZWIwZC00", "TrxAmount":"10005", "TrxCurrency":"1", "TrxFValue":"A1", "TrxPaymentMode":"6", "TrxReference":"Ref 1", "TrxUrl":"https://integration.pos.io/payment/sale", "TrxUser":"1234" } |
Transacción Aprobada { "TrxAID":"A0000000041010", "TrxAmount":"10005.00", "TrxArqc":"***********2C00", "TrxAuth":"611781", "TrxCard":"**** 5628", "TrxCardBank":"SANTANDER", "TrxCardBrand":"MasterCard", "TrxCardInstrument":"CREDITO", "TrxCurrency":"MXN", "TrxDate":"15/06/2020", "TrxDescription":"", "TrxDevice":"PP35271909103698", "TrxFValue":"A1", "TrxMerchant":"7628597 TABAQUERIA VMC 6M", "TrxOriginalNumber":"301268978", "TrxPaymentMode":"6MSI", "TrxReference":"Ref 1", "TrxResult":"APPROVED", "TrxTime":"20:41:00", "TrxUrl":"/payment/sale", "TrxUser":"1234" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAmount":"50096", "TrxCurrency":"1", "TrxDate":"15/06/2020", "TrxDescription":"D - 65 - LIMITE EXCEDIDO", "TrxDevice":"PP35271909103698", "TrxFValue":"A1", "TrxPaymentMode":"6", "TrxReference":"Ref 1", "TrxResult":"DENIED", "TrxResultCode":"TXE_0001", "TrxTime":"20:45:59", "TrxUrl":"/payment/sale", "TrxUser":"1234" } Transacción con Error { "TrxResult": "ERROR", "TrxResultCode": "E1", "TrxDescription": "Invalid request", "TrxAmount": "100", "TrxTime": "20:45:59", "TrxDate": "15/06/2020", "TrxReference": "Ref 1" } |
Venta con parámetros mínimos obligatorios
| Request | Response |
|---|---|
|
{ "TrxCurrency": "1", "TrxUser": "Caja2", "TrxReference": "Prueba de cobro", "TrxDevice": "PP35271909112345", "TrxAmount": 14 } |
Transacción Aprobada { "TrxAID": "A0000000041010", "TrxAmount": "900.30", "TrxArqc": "**** 417A", "TrxAuth": "994884", "TrxCard": "**** 5628", "TrxCardBank": "SANTANDER", "TrxCardBrand": "MasterCard", "TrxCardInstrument": "CREDITO", "TrxCcBin": "547046", "TrxCurrency": "MXN", "TrxDate": "08/10/2020", "TrxDescription": "", "TrxDevice": "PP352719091036982", "TrxFValue": "", "TrxMerchant": "7628597 TABAQUERIA VMC", "TrxLatitude":"19.288608806676656", "TrxLongitude":"-99.18510456367036", "TrxOperationType": "VENTA", "TrxOriginalNumber": "301308638", "TrxPaymentMode": "Contado", "TrxReference": "PRUEBAS CERT QA1", "TrxResult": "APPROVED", "TrxTime": "17:31:08", "TrxUrl": "/payment/sale", "TrxUser": "12345678901234", "integrationMode": "ws" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada por el emisor { "TrxAmount": "51000.3", "TrxCurrency": "MXN", "TrxDate": "08/10/2020", "TrxDescription": "D - 57 - PAGO DIFERIDO NO PERMITIDO", "TrxDevice": "PP352719091036982", "TrxLatitude":"19.288608806676656", "TrxLongitude":"-99.18510456367036", "TrxOperationType": "ERROR", "TrxReference": "PRUEBAS CERT QA1", "TrxResult": "DENIED", "TrxResultCode": "", "TrxTime": "17:43:20", "TrxUrl": "/payment/sale", "TrxUser": "12345678901234", "integrationMode": "ws" } Transacción Denegada por reglas de negocio { "TrxAmount": "51000.3", "TrxCurrency": "MXN", "TrxDate": "08/10/2020", "TrxDescription": "ya existe una transacción DENEGADA con el mismo importe y referencia con la tarjeta **** 5628", "TrxDevice": "PP352719091036982", "TrxLatitude":"19.288608806676656", "TrxLongitude":"-99.18510456367036", "TrxOperationType": "ERROR", "TrxReference": "PRUEBAS CERT QA1", "TrxResult": "DENIED", "TrxResultCode": "100", "TrxTime": "18:02:09", "TrxUrl": "/payment/sale", "TrxUser": "12345678901234", "integrationMode": "ws" } Transacción con Error { "TrxAmount": "1600", "TrxDate": "08/10/2020", "TrxDescription": "Transaction cancelled by user", "TrxLatitude":"19.288608806676656", "TrxLongitude":"-99.18510456367036", "TrxReference": "PRUEBAS CERT QA1", "TrxResult": "ERROR", "TrxResultCode": "DSE_0006", "TrxTime": "19:00:45", "TrxUrl": "/payment/sale", "integrationMode": "ws" } |
| Request | Response |
|---|---|
|
{ "License":"MjkyNTExZjE", "TrxAAmount":"25", "TrxAmount":"1000", "TrxCurrency":"1", "TrxReference":"Ref prop", "TrxUrl":"https://integration.pos.io/payment/saleWithTip", "TrxUser":"1234" } |
Transacción Aprobada { "TrxAAmount":"25", "TrxAID":"A000000003101001", "TrxAmount":"1000", "TrxArqc":"***********A28A", "TrxAuth":"581585","TrxCard":"**** 2027", "TrxCardBank":"BANREGIO", "TrxCardBrand":"Visa", "TrxCardInstrument":"DEBITO", "TrxCurrency":"MXN", "TrxDate":"12/05/2020", "TrxDescription":"", "TrxDevice":"PP35271909103698", "TrxMerchant":"7628597 TABAQUERIA VMC", "TrxOriginalNumber":"301258403", "TrxPaymentMode":"Contado", "TrxReference":"Ref prop", "TrxResult":"APPROVED", "TrxTime":"19:28:38", "TrxUrl":"/payment/saleWithTip", "TrxUser":"1234" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAmount":"54000", "TrxCurrency":"1", "TrxDate":"12/05/2020", "TrxDescription":"D - 54 - TARJETA VENCIDA", "TrxDevice":"PP35271909103698", "TrxPaymentMode":"Contado", "TrxReference":"Ref 16", "TrxResult":"DENIED", "TrxResultCode":"TXE_0001", "TrxTime":"17:00:00", "TrxUrl":"/payment/sale", "TrxUser":"1234" } Transacción con Error { "TrxResult": "ERROR", "TrxResultCode": "E1", "TrxDescription": "Invalid request", "TrxAmount": "110", "TrxTime": "17:00:00", "TrxDate": "12/05/2020", "TrxReference": "Ref 16" } |
| Request | Response |
|---|---|
|
{ "TrxDevice":"PP352719091036982", "TrxAmount":500, "TrxUser":"Restaurante", "TrxReference":"comensal4", "TrxCurrency":"1", "TrxAAmount":60 } |
Transacción Aprobada { "TrxAAmount": "80", "TrxAID": "A0000000032010", "TrxAmount": "300", "TrxArqc": "**** 2580", "TrxAuth": "139078", "TrxCard": "**** 8600", "TrxCardBank": "AZTECA", "TrxCardBrand": "Visa", "TrxCardInstrument": "DEBITO", "TrxCcBin": "402766", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription": "", "TrxDevice": "PP352719091036982", "TrxMerchant": "1122332 E1 VMC MX", "TrxOriginalNumber": "301308967", "TrxPaymentMode": "E1 VMC MX", "TrxReference": "comensal5", "TrxResult": "APPROVED", "TrxTime": "14:53:18", "TrxUrl": "/payment/saleWithTip", "TrxUser": "Restaurante2", "integrationMode": "ws" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAAmount": "80", "TrxAmount": "51000.0", "TrxCard": "", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription": "D - 51 – FONDOS INSUFICIENTES", "TrxDevice": "PP352719091036982", "TrxOriginalNumber": "", "TrxReference": "TestCheckIn2", "TrxResult": "DENIED", "TrxResultCode":"", "TrxRoomNbr": "5", "TrxTime": "11:44:17", "TrxUser":"Restaurante", "TrxUrl": "/payment/ saleWithTip", "integrationMode": "ws" } Transacción con Error { "TrxAAmount": "80", "TrxAmount": "51000.0", "TrxCard": "", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription": "E - 13 - No se puede hacer Check In con tarjeta de debito", "TrxDevice": "PP352719091036982", "TrxOriginalNumber": "", "TrxReference": "TestCheckIn3", "TrxResult": "DENIED", "TrxResultCode": "13", "TrxRoomNbr": "5", "TrxTime": "11:47:14", "TrxUrl": "/payment/checkIn", "integrationMode": "ws", "TrxUser":"Restaurante" } |
| Request | Response |
|---|---|
|
{ "License":"OTZlMDY3ZTMtZWIwZC00", "TrxAmount":"500", "TrxAuth":"402294", "TrxCurrency":"1", "TrxOriginalNumber":"301268980", "TrxReference":"Ref 1", "TrxUrl":"https://integration.pos.io/payment/refund", "TrxUser":"1234" } |
Transacción Aprobada { "TrxAmount":"-500.0", "TrxAuth":"436601", "TrxCurrency":"MXN", "TrxDate":"15/06/2020", "TrxDescription":"", "TrxDevice":"PP35271909103698", "TrxMerchant":"7628597 TABAQUERIA VMC", "TrxOriginalNumber":"301268983", "TrxPaymentMode":"Contado", "TrxReference":"Ref 1", "TrxResult":"APPROVED", "TrxTime":"21:03:46", "TrxUrl":"/payment/refund", "TrxUser":"1234" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAmount":"54000", "TrxCurrency":"1", "TrxDate":"12/05/2020", "TrxDescription":"Rechazada", "TrxDevice":"PP35271909103698", "TrxFValue":"MEX", "TrxReference":"Ref 16", "TrxResult":"DENIED", "TrxResultCode":"TXE_0001", "TrxTime":"17:00:00", "TrxUrl":"/payment/sale", "TrxUser":"1234" } Transacción con Error { "TrxResult": "ERROR", "TrxResultCode": "E1", "TrxDescription": "Invalid request", "TrxTime": "17:00:00", "TrxDate": "12/05/2020", "TrxReference": "My custom reference", "TrxUser": "My cashier identifier" } |
| Request | Response |
|---|---|
|
{ "TrxCurrency":"1", "TrxDevice" : "PP352719091036982", "TrxAmount" : 1700.00, "TrxOriginalNumber" : "301308862", "TrxAuth" : "082244" } |
Transacción Aprobada { "TrxAmount": "-1700.0", "TrxAuth": "486617", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription":"", "TrxDevice": "PP352719091036982", "TrxMerchant": "7628597 TABAQUERIA VMC", "TrxOriginalNumber": "301308863", "TrxPaymentMode": "Contado", "TrxReference": "PRUEBAS QA", "TrxResult": "APPROVED", "TrxTime": "11:15:29", "TrxUrl": "/payment/refund", "TrxUser": "12345678901234", "integrationMode": "ws" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAmount": "-1700.0", "TrxAuth": "486617", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription":"", "TrxDevice": "PP352719091036982", "TrxMerchant": "7628597 TABAQUERIA VMC", "TrxOriginalNumber": "301308863", "TrxPaymentMode": "Contado", "TrxReference": "PRUEBAS QA", "TrxResult": "APPROVED", "TrxTime": "11:15:29", "TrxUrl": "/payment/refund", "TrxUser": "12345678901234", "integrationMode": "ws" } |
| Request | Response |
|---|---|
|
{ "License":"NGM5OTI5NDMtZDc5Yy00", "TrxAmount":"1000", "TrxCurrency":"1", "TrxReference":"Ref 1", "TrxRoomNbr":"64", "TrxUrl":"https://integration.pos.io/payment/checkIn", "TrxUser":"1234" } |
Transacción Aprobada { "TrxAID":"A0000000041010", "TrxAmount":"1000.00", "TrxArqc":"**** 4ED0", "TrxAuth":"721726", "TrxCard":"**** 5628", "TrxCardBank":"SANTANDER", "TrxCardBrand":"MasterCard", "TrxCardInstrument":"CREDITO", "TrxCurrency":"MXN", "TrxDate":"16/06/2020", "TrxDescription":"", "TrxDevice":"00106000", "TrxMerchant":"7654897 INTEGRA VI MX", "TrxOriginalNumber":"301269850", "TrxPaymentMode":"Contado", "TrxReference":"Ref 1", "TrxResult":"APPROVED", "TrxRoomNbr":"64", "TrxTime":"19:41:57", "TrxUrl":"/payment/checkIn", "TrxUser":"1234" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAmount":"54000", "TrxCurrency":"1", "TrxDate":"12/05/2020", "TrxDescription":"D - 51 – FONDOS INSUFICIENTES", "TrxDevice":"PP35271909103698", "TrxPaymentMode":"Contado", "TrxReference":"Ref 16", "TrxResult":"DENIED", "TrxResultCode":"TXE_0001", "TrxRoomNbr": "1", "TrxTime":"17:00:00", "TrxUrl":""/payment/checkIn ", "TrxUser":"1234" } Transacción con Error { "TrxAmount": "200.10", "TrxCurrency": "1", "TrxDate": "23/04/2020", "TrxDescription": ya existe una transacción APROBADA con el mismo importe y referencia con la tarjeta **** 8705", "TrxDevice": "PP35271909103042", "TrxPaymentMode":"Contado", "TrxReference": "AGC INT QR-P01", "TrxResult": "DENIED", "TrxResultCode": "TXE_0001", "TrxRoomNbr": "1", "TrxTime": "10:20:16", "TrxUrl": "/payment/checkIn", "TrxUser": "1234" } |
| Request | Response |
|---|---|
|
{ "TrxCurrency":"1", "TrxAmount":2000.00, "TrxReference":"TestCheckInReAUTCHEOUT", "TrxRoomNbr":"5", "TrxDevice":"PP35271909103698" } |
Transacción Aprobada { "TrxAID": "A0000000041010", "TrxAmount": "2000.00", "TrxArqc": "**** 4545", "TrxAuth": "110142", "TrxCard": "**** 6989", "TrxCardBank": "NU BN MEXICO", "TrxCardBrand": "MasterCard", "TrxCardInstrument": "CREDITO", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription":"", "TrxDevice": "PP352719091036982", "TrxMerchant": "7628123 TABAQUERIA VMC", "TrxOriginalNumber": "301308873", "TrxPaymentMode": "TABAQUERIA VMC", "TrxReference": "TestCheckIn", "TrxResult": "APPROVED", "TrxRoomNbr": "5", "TrxTime": "11:37:22", "TrxUrl": "/payment/checkIn", "integrationMode": "ws" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAmount": "51000.0", "TrxCard": "", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription": "D - 51 – FONDOS INSUFICIENTES", "TrxDevice": "PP352719091036982", "TrxOriginalNumber": "", "TrxReference": "TestCheckIn2", "TrxResult": "DENIED", "TrxResultCode":"", "TrxRoomNbr": "5", "TrxTime": "11:44:17", "TrxUrl": "/payment/checkIn", "integrationMode": "ws" } Transacción con Error { "TrxAmount": "51000.0", "TrxCard": "", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription": "E - 13 - No se puede hacer Check In con tarjeta de debito", "TrxDevice": "PP352719091036982", "TrxOriginalNumber": "", "TrxReference": "TestCheckIn3", "TrxResult": "DENIED", "TrxResultCode": "13", "TrxRoomNbr": "5", "TrxTime": "11:47:14", "TrxUrl": "/payment/checkIn", "integrationMode": "ws" } |
| Request | Response |
|---|---|
|
{ "License":"NzhlZTVhNzQtZGFiOS00MmZjLWJlOGMtYzBlMzk1Yjg1MDZl", "TrxAmount":"1500", "TrxAuth":"721726", "TrxCurrency":"1", "TrxOriginalNumber":"301269850", "TrxReference":"Ref 112", "TrxRoomNbr":"64", "TrxUrl":"https://integration.pos.io/payment/reauth", "TrxUser":"1234" } |
Transacción Aprobada { "TrxAmount":"100.00", "TrxArqc":"", "TrxAuth":"983529", "TrxCard":"**** 6989", "TrxCardBank":"NU BN MEXICO", "TrxCardBrand":"MasterCard", "TrxCardInstrument":"CREDITO", "TrxCurrency":"MXN", "TrxDate":"27/07/2020", "TrxDescription":"", "TrxDevice":"PP35271909103698", "TrxMerchant":"7628597 TABAQUERIA VMC", "TrxOriginalNumber":"301293627", "TrxPaymentMode":"Contado", "TrxReference":"Ref 112", "TrxResult":"APPROVED", "TrxRoomNbr":"14", "TrxTime":"20:52:27", "TrxUrl":"/payment/reauth", "TrxUser":"1234" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAmount":"54000", "TrxCurrency":"1", "TrxDate":"12/05/2020", "TrxDescription":"D - 51 – FONDOS INSUFICIENTES", "TrxDevice":"PP35271909103698", "TrxPaymentMode":"Contado", "TrxReference":"Ref112", "TrxResult":"DENIED", "TrxResultCode":"TXE_0001", "TrxRoomNbr": "4", "TrxTime":"17:00:00", "TrxUrl":"/payment/reauth", "TrxUser":"1234" } Transacción con Error { "TrxAmount": "200.10", "TrxCurrency": "1", "TrxDate": "23/04/2020", "TrxDescription": ya existe una transacción APROBADA con el mismo importe y referencia con la tarjeta **** 8705", "TrxDevice": "PP35271909103042", "TrxPaymentMode":"Contado", "TrxReference": "Ref112", "TrxResult": "DENIED", "TrxResultCode": "TXE_0001", "TrxRoomNbr": "14", "TrxTime": "10:20:16", "TrxUrl": "/payment/reauth", "TrxUser": "1234" } |
| Request | Response |
|---|---|
|
{ "TrxCurrency": "1", "TrxAmount": 1000, "TrxRoomNbr":"5", "TrxAuth": "110142", "TrxOriginalNumber": "301308873", "TrxReference":"TestCheckIn", "TrxDevice": "PP352719091036982" } |
Transacción Aprobada { "TrxAmount": "1000.00", "TrxArqc": "", "TrxAuth": "965660", "TrxCard": "**** 6989", "TrxCardBank": "NU BN MEXICO", "TrxCardBrand": "MasterCard", "TrxCardInstrument": "CREDITO", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription": "", "TrxDevice": "PP352719091036982", "TrxMerchant": "7628597 TABAQUERIA VMC", "TrxOriginalNumber": "301308897", "TrxPaymentMode": "E1 VMC MX", "TrxReference": "TestCheckIn", "TrxResult": "APPROVED", "TrxRoomNbr": "5", "TrxTime": "12:07:12", "TrxUrl": "/payment/reauth", "integrationMode": "ws" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAmount": "51000.0", "TrxCard": "", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription": "D - 51 – FONDOS INSUFICIENTES", "TrxDevice": "PP352719091036982", "TrxOriginalNumber": "", "TrxReference": "TestCheckIn2", "TrxResult": "DENIED", "TrxResultCode":"", "TrxRoomNbr": "5", "TrxTime": "11:44:17", "TrxUrl": "/payment/checkIn", "integrationMode": "ws" } Transacción con Error { "TrxAmount": "51000.0", "TrxCard": "", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription": "E - 13 - No se puede hacer Check In con tarjeta de debito", "TrxDevice": "PP352719091036982", "TrxOriginalNumber": "", "TrxReference": "TestCheckIn3", "TrxResult": "DENIED", "TrxResultCode": "13", "TrxRoomNbr": "5", "TrxTime": "11:47:14", "TrxUrl": "/payment/checkIn", "integrationMode": "ws" } |
| Request | Response |
|---|---|
|
{ "License":"OTZlMDY3ZTMtZWIwZC00MzkwLWI2ZDQtMDE2N2Q3YWQ3YmM0", "TrxAmount":"200", "TrxAuth":"9835529", "TrxCurrency":"1", "TrxOriginalNumber":"301293626", "TrxReference":"Ref 112", "TrxRoomNbr":"14", "TrxUrl":"https://integration.pos.io/payment/checkOut", "TrxUser":"1234" } |
Transacción Aprobada { "TrxAID":"A0000000041010", "TrxAmount":"200.00", "TrxArqc":"", "TrxAuth":"985750", "TrxCard":"**** 6989", "TrxCardBank":"NU BN MEXICO", "TrxCardBrand":"MasterCard", "TrxCardInstrument":"CREDITO", "TrxCurrency":"MXN", "TrxDate":"27/07/2020", "TrxDescription":"", "TrxDevice":"PP35271909103698", "TrxMerchant":"7628597 TABAQUERIA VMC", "TrxOriginalNumber":"301293628", "TrxPaymentMode":"Contado", "TrxReference":"Ref 112", "TrxResult":"APPROVED", "TrxRoomNbr":"14", "TrxTime":"20:53:52", "TrxUrl":"/payment/checkOut", "TrxUser":"1234" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAmount":"54000", "TrxCurrency":"1", "TrxDate":"12/05/2020", "TrxDescription":"D - 51 – FONDOS INSUFICIENTES", "TrxDevice":"PP35271909103698", "TrxPaymentMode":"Contado", "TrxReference":"Ref112", "TrxResult":"DENIED", "TrxResultCode":"TXE_0001", "TrxRoomNbr": "4", "TrxTime":"17:00:00", "TrxUrl":"/payment/checkOut ", "TrxUser":"1234" } Transacción con Error { "TrxAmount": "200.10", "TrxCurrency": "1", "TrxDate": "23/04/2020", "TrxDescription": ya existe una transacción APROBADA con el mismo importe y referencia con la tarjeta **** 8705", "TrxDevice": "PP35271909103042", "TrxPaymentMode":"Contado", "TrxReference": "Ref112", "TrxResult": "DENIED", "TrxResultCode": "TXE_0001", "TrxRoomNbr": "14", "TrxTime": "10:20:16", "TrxUrl": "/payment/checkOut ", "TrxUser": "1234" } |
| Request | Response |
|---|---|
|
{ "TrxCurrency" : "1", "TrxAmount" : 2500, "TrxOriginalNumber" : "301308873", "TrxAuth": "965660", "TrxRoomNbr":"5", "TrxReference":"TestCheckIn", "TrxDevice" : "PP352719091036982" } |
Transacción Aprobada { "TrxAID": "A0000000041010", "TrxAmount": "2500.00", "TrxArqc":"", "TrxAuth": "382918", "TrxCard": "**** 6989", "TrxCardBank": "NU BN MEXICO", "TrxCardBrand": "MasterCard", "TrxCardInstrument": "CREDITO", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription":"", "TrxDevice": "PP352719091036982", "TrxMerchant": "7628597 TABAQUERIA VMC", "TrxOriginalNumber": "301308908", "TrxPaymentMode": "E1 VMC MX", "TrxReference": "TestCheckIn", "TrxResult": "APPROVED", "TrxRoomNbr": "5", "TrxTime": "12:22:34", "TrxUrl": "/payment/checkOut", "integrationMode": "ws" "TrxPin": false, "TrxQps": true, "TrxCdcvm": false, "TrxPosEntryMode": "071" } Transacción Denegada { "TrxAmount": "51000.0", "TrxCard": "", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription": "D - 51 – FONDOS INSUFICIENTES", "TrxDevice": "PP352719091036982", "TrxOriginalNumber": "", "TrxReference": "TestCheckIn2", "TrxResult": "DENIED", "TrxResultCode":"", "TrxRoomNbr": "5", "TrxTime": "11:44:17", "TrxUrl": "/payment/checkIn", "integrationMode": "ws" } Transacción con Error { "TrxAmount": "51000.0", "TrxCard": "", "TrxCurrency": "MXN", "TrxDate": "09/10/2020", "TrxDescription": "E - 13 - No se puede hacer Check In con tarjeta de debito", "TrxDevice": "PP352719091036982", "TrxOriginalNumber": "", "TrxReference": "TestCheckIn3", "TrxResult": "DENIED", "TrxResultCode": "13", "TrxRoomNbr": "5", "TrxTime": "11:47:14", "TrxUrl": "/payment/checkIn", "integrationMode": "ws" } |
Intent
A continuación se muestra un fragmento de código de ejemplo que muestra como
declarar el intent asociado a un evento. Las solicitudes de cobro se realizan
a través de Intents , dentro del intent se informan los datos de la intención
de cobro en formato JSON. Una vez procesada la transacción la interfaz de
cobro devolverá la respuesta a la aplicación en el mismo formato.
En el ejemplo, al formar el JSON se manda a llamar la clase Transaction
la cual contiene la serialización del las propiedades del JSON tanto para
realizar el request como para recibir la respuesta. Se muestra el ejemplo más adelante.
...
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
...
...
private static int PAYMENT_PROCESS_RESULT = 222;
private static int REPORT_PROCESS_RESULT = 322;
private static int CARD_PROCESS_RESULT = 422;
...
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(Transaction.getInstance().getUrl()));
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
String json = gson.toJson(Transaction.getInstance()); // Transaction is a bean that encapsule the request values
myIntent.putExtra("request", json);
startActivityForResult(myIntent, PAYMENT_PROCESS_RESULT);
Importante:
Cuando la respuesta pertenece a una solicitud de venta con propina se regresará la
respuesta con un formato JsonArray [{},{}], sí y solo sí, en el módulo de
restaurante se eligió una cuenta dividida.
En esta sección mostramos dos formas diferentes de realizar la recepción de la respuesta, sin embargo, es importante que se tome en cuenta que no son las únicas y que el desarrollador de la aplicación puede codificar la mejor forma de acuerdo a las necesidades y flujos de su aplicación.
Ejemplo 1:
Una vez que se hace la petición, se puede recibir el resultado declarando un listener.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PAYMENT_PROCESS_RESULT) {
String response = data.getStringExtra("response");
Transaction.getInstance().initFromJson(response);
} else if (requestCode == REPORT_PROCESS_RESULT) {
Transaction.getInstance().initFromJson(data.getStringExtra("response"));
} else if (requestCode == CARD_PROCESS_RESULT) {
Transaction.getInstance().initFromJson(data.getStringExtra("response"));
}
}
...
public void initFromJson(String response) {
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
Transaction t = gson.fromJson(response, Transaction.class);
instance = t;
}
...
Ejemplo 2:
En este código se muestra como realizar la recepción y comparación del Intent,
el cual debe ser el mismo con el que se inició la transacción. La información de
la transacción se proporcionará en la propiedad response, una vez que es entregada
deberá deserializarse para manejar las propiedades contenidas en el JSON.
Adicionalmente se debe tener en cuenta que si el usuario final cancela la
intención de pago entonces se obtendrá un mensaje de error, por lo que se consideran
los escenarios posibles.
//Método que se sobreescribe en la actividad desde donde se invoca la interfaz de cobro, su funcion es recibir la respuesta de la transacción.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Gson oGson = new Gson();
if (requestCode == 222) {
String message;
if (data != null) {
//procesa respuesta servicio bancario
String lsResponse = data.getStringExtra("response");
//Declara el objeto donde se almacenara el response
Transaction oTran;
//Valida si en la respuesta llega la propiedad "response"
if (lsResponse != null && lsResponse.trim().length() > 0) { //entra cuando se proceso la lectura, pero, aun puede ser APROBADA o DENEGADA
//Recupera la informacion desde el JSON response
Log.e("LOGTRX", lsResponse);
//Deserializar el JSON en la entidad
oTran = trx.initFromJson(lsResponse);
} else //Entra cuando el usuario presiona CANCELAR LECTURA
{
//Inicializar manualmente el objeto y llenar manualmente las propiedades
oTran = new Transaction();
//Propiedades que siempre vendran en el request (AUN ASI SE PODRIAN VALIDAR)
oTran.setTrxResult((data.getStringExtra("TrxResult") == null) ? "Denied" : data.getStringExtra("TrxResult"));
oTran.setTrxDescription(data.getStringExtra("TrxDescription"));
//OJO, EN ESTA CASO LAS UNICAS 2 PROPIEDADES QUE SIEMPRE LLEGAN SON TrxResult y TrxDescription, LAS DEMAS PODRIAN NO LLEGAR
//Lo recomendable es validar cada una antes de hacer la asignacion para evitar bugs
//... etc.. etc...
//EJEMPLO: Valida una propiedad OPCIONAL
oTran.setTrxDescription((data.getStringExtra("TrxCard") == null) ? "**** **** **** ****" : data.getStringExtra("TrxCard"));
}
//Validar el resultado recuperado (SE CAMBIO A IGNORECASE YA QUE LA CADENA AE ENTREGA DE LA SIGUIENTE FORMA: Approved)
if (oTran.getTrxResult().equalsIgnoreCase(WSKeys.APPROVED)) {
//Pago aprobado
} else {
//Pago denegado
}
} else {
//no respondió servicio bancario
}
}
}
...
//Ejemplo de la clase Transaction
public class Transaction implements java.io.Serializable {
@Expose
String License;
@Expose
String TrxAmount;
@Expose
String TrxCurrency;
@Expose
String TrxPaymentMode;
@Expose
String TrxReference;
@Expose
String TrxUser;
@Expose
String TrxUrl;
//response approved
@Expose
String TrxResult;
@Expose
String TrxCard;
@Expose
String TrxAuth;
@Expose
String TrxOriginalNumber;
@Expose
String TrxMerchant;
@Expose
String TrxArqc;
@Expose
String TrxAID;
@Expose
String TrxCardBrand;
@Expose
String TrxBank;
@Expose
String TrxCardInstrument;
@Expose
String TrxTime;
@Expose
String TrxDate;
@Expose
String TrxCardBank;
@Expose
String TrxResultCode
@Expose
String TrxDescription;
}
Como función adicional, la aplicación tiene la opción de enviar
la respuesta de la transacción a un Webhook, es decir, el resultado del
cobro se envía de manera asíncrona a tu servidor mediante el método POST a la url
provista en el proceso de registro en formato JSON.
Las consideraciones que se deben tener son las siguientes:
endpoint por lo que no hay modificaciones en los
headers para autenticación en los servidores.Ejemplo de respuesta en WebHook:
{
"TrxAID":"A0000000041010",
"TrxAmount":"100.00",
"TrxArqc":"**** D05D",
"TrxAuth":"712009",
"TrxCard":"**** 5628",
"TrxCardBank":"SANTANDER",
"TrxCardBrand":"MasterCard",
"TrxCardInstrument":"CREDITO",
"TrxCurrency":"MXN",
"TrxDate":"15/06/2020",
"TrxDescription":"",
"TrxDevice":"PP35271909103698",
"TrxMerchant":"7628597 VMC",
"TrxOriginalNumber":"301268962",
"TrxPaymentMode":"Contado",
"TrxReference":"Ref 1",
"TrxResult":"APPROVED",
"TrxTime":"19:29:36",
"TrxUrl":"/payment/sale",
"TrxUser":"1234"
}
Las respuestas del terminal se manejan a través del evento ResponseReceived. Puedes suscribirte a este evento para procesar la respuesta del terminal.
public event EventHandler<string> ResponseReceived:
Un evento que se activa cuando se recibe una respuesta del terminal POS.
// Manejar respuesta
serialPortManager.ResponseReceived += (sender, response) =>
{
Console.WriteLine("Respuesta Recibida: " + response);
};
Aquí te presentamos los servicios disponibles que podrán consumirse para el funcionamiento del encolamiento de transacciones.
Es un tipo de sistema de información que recolecta, almacena, modifica y recupera toda la información generada por las transacciones.
EndPoint
POST: "https://www.intelipos.io/mmc-ws/i/payment/saleIntegrator"
EndPoint ambiente productivo
https://www.intelipos.io/mmc-ws/i/payment/saleIntegrator
EndPoint ambiente de pruebas
https://qa.intelipos.io/mmc-ws/i/payment/saleIntegrator
| Parámetro | Descripción |
|---|---|
| License | Id licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. |
| TrxCurrency | Moneda
|
| TrxUser | Su usuario asociado a la transacción, puede ser el nombre del cajero o el identificador del sistema. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor se asigna el usr de cobro. |
| TrxReference | Su identificador único para cada pago. Es una cadena con un máximo de 30 caracteres. Si no asigna un valor, el sistema asigna una marca de tiempo en formato largo. |
| TrxDevice | Número de autorización del banco |
| TrxAmount | Monto de la transacción con 2 decimales |
| Request | Response | ||||
|---|---|---|---|---|---|
|
{ "License":"MjllNGMxODItNjQxZC00OTBkLTgzM2EtZDg1YzRmM2NmZThh", "TrxCurrency:"1", "TrxUser:"agc", "TrxReference":"AGC-20210419-2", "TrxDevice": "PP352720B1002266", "TrxAmount": 12.22 } |
Transacción Procesada { "idTrx":"6173178f303c4b050b982aa9", "success":true, "code":"00", "description":"Transacción procesada inmediatamente" } |
Transacción Encolada { "idTrx":"6173178f303c4b050b982aa9", "success":true, "code":"01", "description":"Petición encolada", "Transaction":null } |
Error (HTTP Status 400) { "errorCode": "BAD_REQUEST", "message": "La sucursal no esta registrada" } |
Error (HTTP Status 400) { "errorCode": "BAD_REQUEST", "message": "Transaccion repetida" } |
Error (HTTP Status 500) { "errorCode": "500", "message": "INTERNAL_SERVER_ERROR" } |
El campo trxID se envía en la respuesta de la petición y es recomendable que el comercio lo almacene para futuras acciones.
Se obtiene la informacion con parametro de referencia por Id
EndPoint
GET: "https://www.intelipos.io/mmc-ws/i/payment/queue?id"
EndPoint ambiente productivo
https://www.intelipos.io/mmc-ws/i/payment/queue
EndPoint ambiente de pruebas
https://qa.intelipos.io/mmc-ws/i/payment/queue
| Parámetro | Descripción |
|---|---|
| id | Identificador de referencia. |
| Response | ||
|---|---|---|
|
{ "id":"6165f04e303c4b04e2272069", "status:"QUEUE", "amount:12.22, "reference":"AGC-20210419-2", "device": "PP352720B1002266" } |
Not Found (HTTP Status 404) { "errorCode": "NOT_FOUND", "message": "ERR: Información no encontrada" } |
Error (HTTP Status 500) { "errorCode": "500", "message": "INTERNAL_SERVER_ERROR" } |
Se obtiene la informacion con parametro de id de serie de la terminal
EndPoint
GET: "https://www.intelipos.io/mmc-ws/i/payment/queue?serie={serie}"
EndPoint ambiente productivo
https://www.intelipos.io/mmc-ws/i/payment/queue?serie={serie}
EndPoint ambiente de pruebas
https://qa.intelipos.io/mmc-ws/i/payment/queue?serie={serie}
| Parámetro | Descripción |
|---|---|
| serie | Número de serie de la terminal |
| Response | |||
|---|---|---|---|
|
{ "id":"6165f44410671921acf355c5", "status":"PROCESSED", "amount":10.01, "reference":"AGC-20210419-20" } |
{ "id":"61670569303C4b04e23ab27b", "status":"PROCESSED", "amount":7.03, "reference":"AGC-20211007-02" } |
Error (HTTP Status 400) { "errorCode": "BAD_REQUEST", "message": "La sucursal no esta registrada" } |
Error (HTTP Status 500) { "errorCode": "500", "message": "INTERNAL_SERVER_ERROR" } |
Se borra la petición con el id de transacción
EndPoint
DELETE: "https://www.intelipos.io/mmc-ws/i/payment/queue/{id}"
EndPoint ambiente productivo
https://www.intelipos.io/mmc-ws/i/payment/queue
EndPoint ambiente de pruebas
https://qa.intelipos.io/mmc-ws/i/payment/queue
| Parámetro | Descripción |
|---|---|
| IdTrx | Id de transacción |
| Response | ||
|---|---|---|
|
Transacción Eliminada { "idTrx":"616721da1067190503899cfb", "success":true, "code":"00", "description":"Petición eliminada correctamente" } |
Error de Transacción { "idTrx":"616721de145671905", "success":false, "code":"01", "description":"La petición no existe o no está encolada" } |
Error (HTTP Status 500) { "errorCode": "500", "message": "INTERNAL_SERVER_ERROR" } |
Desencolar petición
EndPoint
POST: "https://qa.intelipos.io/mmc-ws/i/transaction/free"
EndPoint ambiente productivo
https://www.intelipos.io/mmc-ws/i/payment/free
EndPoint ambiente de pruebas
https://qa.intelipos.io/mmc-ws/i/transaction/free
| Parámetro | Descripción |
|---|---|
| device | Número de serie del dispositivo |
| Request | Response | ||
|---|---|---|---|
|
{ "device":"PP352720B1002266" } |
{ "idTrx":null, "success":false, "code":"00", "description":"No hay más peticiones pendientes", "transaction": null } |
Error (HTTP Status 400) { "errorCode": "BAD_REQUEST", "message": "ERR: Información no disponible" } |
Error (HTTP Status 500) { "errorCode": "500", "message": "INTERNAL_SERVER_ERROR" } |
Se cancela la transacción
EndPoint
POST: "https://qa.intelipos.io/mmc-ws/i/payment/immediateRefund"
EndPoint ambiente productivo
https://www.intelipos.io/mmc-ws/i/payment/immediateRefund
EndPoint ambiente de pruebas
https://qa.intelipos.io/mmc-ws/i/payment/immediateRefund
| Parámetro | Descripción |
|---|---|
| TrxDevice | Número de serie del dispositivo |
| TrxAuth | Número de serie de autenticación | TrxAAmount | Monto adicional de la propina con 2 decimales |
| Request | Response | |
|---|---|---|
|
{ "TrxDevice":"ce091719e8cf7d09017e", "TrxAuth":"262867", "TrxAAmount":"50" } |
{ "idTrx":20220317153045, "success":true, "code":null, "description":"Cancelacion", "transaction":null } |
Error (HTTP Status 500) { "errorCode": "500", "message": "INTERNAL_SERVER_ERROR" } |
CENTRO DE PAGOS permite consultar las operaciones a través de una referencia. Esta funcionalidad aplica cuando el comercio maneja datos únicos en el campo de referencia, como número de cliente o suscriptor, factura, póliza, etcétera.
La consulta también permite obtener las transacciones realizadas en una fecha específica hasta 6 meses de antigüedad.
Para invocar la Consulta WEB Online es necesario que el cliente desarrolle su propio cliente para invocar el método de transacciones e integrarlo a su herramienta de consulta de ventas.
AESEncryption. java. Archivo fuente que contiene el código del algoritmo de cifrado AES-128.
AESEncryption.class. Ejecutable para integrar algoritmo AES-128. (También se incluyen algoritmos en .NET y PHP)
La llave de cifrado que tiene una longitud de 128 bits en formato hexadecimal con longitud de 32 caracteres:
Como medida de seguridad la llave se proporcionará vía correo electrónico y con contraseña y sólo al responsable del desarrollo en el Comercio.
Ejemplo de llave de cifrado: 4BA0A9AF04CAC18CE315B016EA703496.
Cadena alfanumérica fija y única por Comercio asignada por MIT.
Para garantizar la seguridad de los pagos, CENTRO DE PAGOS utiliza servidores SSL (Security Socket Layer), que certifica el intercambio seguro de información de transacciones.
Además, CENTRO DE PAGOS envía y recibe transacciones de datos sensibles cifrados mediante algoritmos en el estándar AES-128 versión 2.
La cadena cifrada en AES se codifica en base64 para su envío en el xml de cobro en un campo llamado data.
CENTRO DE PAGOS realiza una conexión a través del protocolo de HTTPS a los servidores de transacciones de MIT, por lo que es necesario que el servidor del comercio cuente con los permisos de conexión.
| Servicio | URL | IP |
|---|---|---|
| Portal Centro de Pagos | https://ssl.e-pago.com.mx | 200.53.155.130 |
La conexión HTTPS opera a través del puerto 443
El servicio web incluye varias consultas. Todas con los mismos parámetros de entrada.
Las consultas disponibles son:
| transacciones | Consulta de las transacciones en línea de CENTRO DE PAGOS. |
| transaccionesCautM | Consulta las transacciones de cargos automáticos versión 2 y superior. |
| transaccionesDomi | Consulta las transacciones de domiciliación versión 2 y superior. |
| Parámetro | Tipo | Longitud | Requerido | Descripción | Notas adicionales |
|---|---|---|---|---|---|
| dominio | String | Variable | Mandatorio | URL del ambiente donde se enviarán las operaciones | Depende del ambiente (QA, Producción, VIP) |
| user | String | Máx. 10 | Mandatorio | Usuario con perfil de Administrador de empresa | Usuario del sistema a nombre del que se realizará la solicitud de cargo. Como el servicio se integra a la solución del comercio, el usuario que se envíe en este parámetro servirá para asegurar que los códigos empresa - sucursal - usuario tienen privilegios para solicitar esta información. |
| pwd | String | Máx. 15 | Mandatorio | Contraseña del usuario Administrador | Cadena cifrada y única de la Empresa dentro de CENTRO DE PAGOS. |
| id_company | String | Máx. 5 | Mandatorio | Número único asociado a cada comercio | Identificador único de la Empresa dentro de CENTRO DE PAGOS. |
| date | String | Máx. 10 | Mandatorio | Fecha para obtener el reporte (formato: dd/mm/aaaa) | Fecha de registro de la transacción a consultar. Utilizar formato: dd/mm/aaaa |
| id_branch | String | Máx. 8 | Opcional | Identificador de unidad de negocio/sucursal | Es el identificador único que se le da a cada unidad de negocio / sucursal para identificar en los reportes la procedencia de una venta. Si el campo es vacío, se entenderá que se trata de todas las sucursales. |
| reference | String | Máx. 40 | Opcional | Referencia única del comercio | Referencia única del comercio para conciliar un cargo; permitirá diferenciar una solicitud de cargo de otra. En caso de que el campo sea vacío, se entenderá que se trata de todas las referencias. |
| Ambiente | URL |
|---|---|
| QA | https://qa3.mitec.com.mx/pgs/services/xmltransacciones?wsdl |
| Producción | https://ssl.e-pago.com.mx/pgs/services/xmltransacciones?wsdl |
| VIP | https://vip.e-pago.com.mx/pgs/services/xmltransacciones?wsdl |
NOTA:
En el siguiente ejemplo se incluyeron caracteres de rompimiento de línea (newline) y tabuladores entre componentes y elementos, para facilitar su lectura. Sin embargo en la transacción real toda la información forma una sola línea.
//CONSULTA ONLINE.
<user>Z701CIUS0</user>
<pwd>Z701CIUS0</pwd>
<id_company>Z701</id_company>
<date>17/11/2015</date>
<id_branch>001</id_branch>
<reference>TESTOKEN001</reference>
Seguir los siguientes pasos para cifrar la cadena xml:
1 El vector de inicialización es una función de seguridad que puede generar diferentes cifrados, incluso cuando se utiliza la misma cadena de pago y la misma clave de cifrado.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wst="http://wstrans.cpagos">
<soapenv:Header/>
<soapenv:Body>
<wst:transacciones>
<wst:in0>Cadena_Fija_Asignada_al_Comercio</wst:in0>
<wst:in1>Cadena_de_Consulta_cifrada_en_AES_y_Codificada_en_base64</wst:in1>
<wst:in2></wst:in2>
<wst:in3></wst:in3>
<wst:in4></wst:in4>
<wst:in5></wst:in5>
</wst:transacciones>
</soapenv:Body>
</soapenv:Envelope>
in0= Cadena alfanumérica fija y única por Comercio.
In1= Cadena en base 64, resultado del cifrado de la cadena de consulta en punto 4.
El xml debe ser enviado por método SOAP.
| Request | Response |
|---|---|
<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wst="http://wstrans.cpagos"> <soapenv:Header/> <soapenv:Body> <wst:transacciones> <wst:in0>9265654607</wst:in0> <wst:in1>eV/5/gj92+XBZF1kIJ6AkVnOBPPhmy8sMZFuUD8/lR6qVjHYoz oC5Oi4OYX2KKVew8Z/PRQREleDGfHQfeDikQdUaFJ/cRG6VlRWXDWX aRH26SQ3R/s4Q19soiEJVBHMr/b+6h0aHHpbVdCqD2JaWWBp30idYF nEhm0xXhDyES6Yyf3gVd6PIngrdTPKp8A/f0GZWYJo4V5K/y0krvGdiK oTMOTaG7gtZRuboE3zeVA=</wst:in1> <wst:in2></wst:in2> <wst:in3></wst:in3> <wst:in4></wst:in4> <wst:in5></wst:in5> </wst:transacciones> </soapenv:Body> </soapenv:Envelope> |
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Body> <ns1:transaccionesResponse xmlns:ns1="http://wstrans.cpagos"> <ns1:out>CmyGuDEqP56HagO5FI2xFWZSmdRO9p8yMaa49l+5WGRnT PQvPST2ELQqy2lAZgELFHA1kMV4VzPWcwIhxtEJX2NoFUiZvPBOcWg uFYi+X50QuUu44qiWW770ze16sz8wzcyryG1BlMXhIAXeSv57AIGYN0y6 UIs07AxaeELuOvRMdjdQlrvPrpKGEKFcwidZHsJkeVPMX8vWxk0KiKJk VjfVxBtee3hAA1EZmkXGIbfeDEbT9i3Qe/pcoG7G4pSXi6OHqGZ+3xunbw/6KdPh/qZsKLk1Ja9Pw2KIIg+viPr2Xo2Ll9XGwAq+bMgI2VWsQtjrKVzT 2Z1hZ4xR0Q6zJZXVdhSSZ3jj8S7KFLDl6Y/1kJMP/MfoLj8lmru6vo+p7+x AIOqW12NpqJW1FMzQg5CjbPYuCJEvaGoO2fsQ0WlSW8ctKavpObF2L 0d2V+NrjVd8sfB5XTIhBXWySvZ2LPfL62QxL8hYDeBYUoJWCXkRdEHR Y+IxHCkQsNYmpF+wU5Xst8dyqkAEECGZA01VSX4KK0ZCmYfdC1LGkq 7q/dYOqXxTWctVG8Yz0A131vQ5zM1iPS0k7862M8VNqKPlqEDBtJGXzQ hzukG6ZsEDH1uV8O/qbSURTGLtlfYgLo0GyjL0proSXoPMrZSjI25R/YEO t6Wir6Ttb7xDRfiiQHVfW1Nzw3wrGPsELpG/Vt8vtunBUffaNGFmPmDQ ISFvcjahxYlBCisy7b3X/kgOQ32gkde+3gESDuIz1O0q9eX4Gxd/j6WvhAg /cCSTxqf9yGQ0gkEZ21awdGmRvcq8IPdArwXMpiC1PLkfxLPVkR6H0ts mAG2wYdxzG0CVHMLSjeirvbHjEiEAxWST290413dvv9d6dCt9XvRKcqQ 5kCkJ7i0mRKt1486+c4LqhZBzfPLbHpDCtDmTcL52ud3p/Ow9ShSr+Uk 0yIENprKUdBmQ3UX/P8HyR1nyH/e0S9xuNUlJ6N6h+L9UiQB+OPrAfGj ke/2zpGj6cUcBgWy2shLgFj2w6hLqdSlbGaEKI0LHHGfQECOYQHF84G TN2Z112pdxCJFpJJkKyEDPuu9c/KJlZuYbM/MEkkk68jFUk6i7ZE6utlUyk 3h/f2ZLpNVWTzk7KDBk5wORfESX+ietxVoh </ns1:transaccionesResponse> </soap:Body> </soap:Envelope> |
Ejemplo para cifrar:
cadenaCifrada=AESEncryption.encrypt(cadenaConsulta, llaveCifrado));
Ejemplo para descifrar:
cadenaConsulta=AESEncryption.decrypt(cadenaCifrada, llaveCifrado));
El servicio entrega la respuesta en formato XML, con el arreglo de tags que a continuación listamos:
<transacciones>
<transaccion>
<nu_operacion></nu_operacion>
<cd_usuario></cd_usuario>
<cd_empresa></cd_empresa>
<nu_sucursal></nu_sucursal>
<nu_afiliacion></nu_afiliacion>
<nb_referencia> </nb_referencia>
<cc_nombre>
<cc_nombre />
<cc_num></cc_num>
<cc_tp></cc_tp>
<nu_importe></nu_importe>
<cd_tipopago></cd_tipopago>
<cd_tipocobro></cd_tipocobro>
<cd_instrumento></cd_instrumento>
<nb_response></nb_response>
<nu_auth></nu_auth>
<fh_registro></fh_registro>
<fh_bank></fh_bank>
<cd_usrtransaccion></cd_usrtransaccion>
<tp_operacion></tp_operacion>
<nb_currency></nb_currency>
</transaccion>
<transacciones>
<transaccionesCautM>
<transaccion>
<nu_operacion></nu_operacion>
<cd_usuario></cd_usuario>
<cd_empresa></cd_empresa>
<nu_sucursal></nu_sucursal>
<nu_afiliacion></nu_afiliacion>
<nb_referencia> </nb_referencia>
<cc_nombre>
<cc_nombre />
<cc_num></cc_num>
<cc_tp></cc_tp>
<nu_importe></nu_importe>
<cd_tipopago></cd_tipopago>
<cd_tipocobro></cd_tipocobro>
<cd_instrumento></cd_instrumento>
<nb_response></nb_response>
<nu_auth></nu_auth>
<fh_registro></fh_registro>
<fh_bank></fh_bank>
<cd_usrtransaccion></cd_usrtransaccion>
<tp_operacion></tp_operacion>
<nb_currency></nb_currency>
<cd_resp></cd_resp>
<nb_resp></nb_resp>
</transaccion>
</transaccionesCautM>
<transaccionesDomi>
<transaccion>
<nu_operacion></nu_operacion>
<cd_usuario></cd_usuario>
<cd_empresa></cd_empresa>
<nu_sucursal></nu_sucursal>
<nu_afiliacion></nu_afiliacion>
<nb_referencia> </nb_referencia>
<cc_nombre>
<cc_nombre />
<cc_num></cc_num>
<cc_tp></cc_tp>
<nu_importe></nu_importe>
<cd_tipopago></cd_tipopago>
<cd_tipocobro></cd_tipocobro>
<cd_instrumento></cd_instrumento>
<nb_response></nb_response>
<nu_auth></nu_auth>
<fh_registro></fh_registro>
<fh_bank></fh_bank>
<cd_usrtransaccion></cd_usrtransaccion>
<tp_operacion></tp_operacion>
<nb_currency></nb_currency>
<cd_resp></cd_resp>
<nb_resp></nb_resp>
</transaccion>
</transaccionesDomi>
| Parámetro | Tipo de Dato | Naturaleza | Descripción | Valor |
|---|---|---|---|---|
| nu_operation | String | Obligatorio | Número de Operación de la solicitud de autorización | Longitud máxima: 12 |
| cd_usuario | String | Obligatorio | Usuario de CENTRO DE PAGOS donde se registró la transacción | Longitud mínima: 8 |
| cd_empresa | String | Obligatorio | Valor asignado por MIT. Es único para cada empresa de CENTRO DE PAGOS | Longitud máxima: 5 |
| nu_sucursal | String | Obligatorio | Identificador único que se le da a cada unidad de negocio / sucursal para identificar la procedencia de una solicitud de autorización | Longitud máxima: 8 |
| nu_afiliacion | String | Obligatorio | Número de afiliación con la que se realiza la solicitud de autorización | Longitud máxima: 12 |
| nb_referencia | String | Obligatorio | Referencia única del Comercio para conciliar un cargo con su aplicación, se sugiere ID de cliente, factura, pedido, etc. | Longitud máxima: 40 |
| cc_nombre | String | Obligatorio | Nombre del tarjetahabiente | Longitud: Variable |
| cc_num | String | Obligatorio | Últimos 4 dígitos de la tarjeta | Longitud: 4 |
| cc_tp | String | Obligatorio | Marca de la tarjeta | Longitud: Variable |
| nu_importe | String | Obligatorio | Importe de la transacción | El importe se regresa sin comas (en caso de miles), con punto y 2 decimales. Ejemplo: 12345.45 |
| cd_tipocobro | String | Obligatorio | Tipo de cobro de la transacción | Valor: MOTO |
| d_instrumento | String | Obligatorio | Tipo de tarjeta | Valor: Débito / Crédito |
| nb_response | String | Obligatorio | Respuesta proporcionada por Centro de Pagos | Valor: (approved, denied o error) |
| nu_auth | String | Obligatorio | Número de autorización de la solicitud de cobro | Longitud máxima: 8 |
| fh_registro | String | Obligatorio | Fecha en la que se registró la operación consultada | Valor: dd/mm/aaaa hh:mm |
| fh_bank | String | Obligatorio | Fecha en la que se registró la operación en el banco | Valor: dd/mm/aaaa |
| cd_usrtransaccion | String | Obligatorio | Campo de control del comercio | Longitud máxima: 30 |
| tp_operacion | String | Obligatorio | Tipo de operación | Valor: Variable |
| nb_currency | String | Obligatorio | Moneda en la que se realiza la operación | Valor: MXN |
| cd_resp | String | Obligatorio | Código de Respuesta | Longitud máxima: 5 |
| nb_resp | String | Obligatorio | Descripción del código de la respuesta | Longitud: Variable |
La biblioteca UsbIntegration depende de los siguientes paquetes NuGet para su correcto funcionamiento:
Proporciona el acceso a los puertos seriales en .NET. Este paquete es necesario para la comunicación con terminales POS vía USB.
Proporciona acceso a un amplio conjunto de información de administración y eventos de administración sobre Windows (WMI).
Una biblioteca popular para la manipulación de JSON en .NET. Es utilizada en la biblioteca UsbIntegration para serializar y deserializar datos JSON.
Una biblioteca de criptografía que ofrece un amplio conjunto de funcionalidades criptográficas. Es utilizada para cifrado y descifrado de datos cuando se requiere.
Para asegurarte de que tu aplicación tiene todas las dependencias necesarias, sigue estos pasos:
Instalar Dependencias a través de NuGet:
Abre la consola del Administrador de Paquetes en Visual Studio y ejecuta los siguientes comandos para instalar las dependencias necesarias:
Install-Packages System.IO.Ports
Install-Packages System.Management
Install-Packages Newtonsoft.Json
Install-Packages BouncyCastle.Cryptography
Agregar Referencias:
Si estás utilizando archivos DLL descargados directamente, debes agregar referencias a estas bibliotecas de manera manual en tu proyecto:
La integración Close Loop está dirigida a comercios que cuentan con alternativas de pago con tarjetas de fidelidad o monederos electrónicos, la diferencia tecnológica de estas tarjetas es que no cuentan con un grabado estándar y deben definirse las reglas necesarias para realizar una lectura y entrega de información correcta por medio de banda magnética, por lo anterior se adaptó en el modo de integración “App to App” en la solución GETNET APP para poder obtener el valor del track en claro y poder proporcionar al comercio para su uso en procesos internos.
La Integración a través de app to app requiere que mediante un Intent a la URL https://integration.pos.io/card/data se envíen los parámetros License y TrxCardType.
| Elemento | Tipo de Dato | Longitud | Descripción | Validación |
|---|---|---|---|---|
| License | String | 50 | Licencia que es proporcionado al administrador y que sirve como autenticación en el proceso de cobro. | Obligatorio |
| TrxUrl | String | 50 | URL al cual se manda la petición en el Intent. | Obligatorio |
| TrxCardType | Numérico | - | Identificador que será proporcionado al comercio para la lectura de sus tarjetas y con ello se pueda devolver el track de acuerdo con las reglas establecidas. | Obligatorio |
{
"License": "N2YyYjBhYzAtMWIwMi00ZDMzLTk5OWItNTkyNTM0ZDJi9aQz",
"TrxUrl": "https://integration.pos.io/card/data",
"TrxCardType": X
}
| Elemento | Tipo de Dato | Longitud | Descripción |
|---|---|---|---|
| TrxCard | String | 20 | Número de tarjeta, siempre y cuando el valor de “TrxResul” sea “SUCCESS” |
| TrxResult | String | 7 | Indica el resultado de la operación. “SUCCESS” “ERROR” |
| TrxUrl | String | 50 | End point al cual se mandó la petición. |
| TrxDevice | String | 32 | Número de serie de la terminal. |
| TrxResultCode | String | 10 | Código del error obtenido. |
| TrxDescription | String | 50 | Descripción del error. |
Códigos para una transacción en progreso
| Valor | Descripción | Acción sugerida |
|---|---|---|
| SM_P002 | Por favor inserte, acerque o deslice tarjeta. | Indica que el proceso de lectura inicio y el dispositivo está esperando el contacto con la tarjeta. |
| SM_P010 | Se deslizó tarjeta. | Se detecto una tarjeta Banda. |
| SM_P011 | Se acercó tarjeta. | Se detecto una tarjeta Contactless. |
| SM_P009 | Leyendo tarjeta. | Se detecto una tarjeta Chip. |
| SM_P012 | Esperando autorización. | La transacción se ha enviado al servidor. |
| SM_P041 | Comunicación activa, por favor revise terminal PinPad. | Se necesita revisar si existe una interacción con el pinpad, por ejemplo, darle clic en el botón de finalizar al concluir una transacción. Este mensaje puede recibirse en caso de intentar mandar un segundo comando cuando un comando de venta ya está en proceso. |
Aquí puedes descargar los archivos útiles para acceder a la impresora de
,
con la que podrás imprimir imágenes, texto en diferentes formatos,
códigos de barras y QR’s.