Introduccion
El presente manual tiene como propósito establecer la descripción del modelo de integración y funcionamiento de la estructura a implementar para la operatividad del sistema Sipay Plus y Sipay Ecommerce con el software del Cliente.
La solución para la gestión del cobro con tarjeta en el punto de venta o a nivel de comercio electrónico, mediante transferencia electrónica de fondos, está basada en la plataforma de cobro con tarjeta de crédito y/o débito de Sipay. El servicio a implantar constituye la alternativa que hace la gestión más rápida, fiable y reduce a un solo sistema, el control de las diferentes entidades financieras.
La solución para la gestión del cobro con tarjeta mediante transferencia electrónica, está basada en la plataforma denominada SIPAY. La solución única y diferenciada con mayor capacidad funcional, siendo complementaria a cualquier sistema de información y gestión de punto de venta y/o comercio electrónico. Es una aplicación informática que ofrece muchas ventajas frente a otros sistemas de cobro, y la más avanzada pasarela de pagos.
A diferencia del cobro con datafonos, nuestra solución integrada Sipay permite al Cliente dirigir las transacciones a la entidad bancaria que desee, permitiendo una completa integración operativa y un ahorro en comisiones al dirigir las operaciones a cada entidad de manera directa sin procesos de intercambio entre las diferentes redes, distinguiendo en todo momento el tipo y origen de tarjeta, lo que posibilitará conocer con antelación el tipo de tarjeta, crédito, débito y, origen de la misma.
Y todo ello con la máxima flexibilidad, por lo que el Cliente no dependerá más de los datafonos que permiten al banco fijar a su empresa unas comisiones alterables en tiempo real, sin opción a rebaja, ni flexible para rápidos procesos de cambio, en caso de necesidad por aumento o reducción de las comisiones.
Las actividades de Sipay en este servicio corresponden a servicios consistentes en el proceso de integración de su solución con la del Cliente para la puesta en marcha de la solución de transferencia electrónica de fondos en pago por uso.
API Funtions calls
Función | Parámetros de entrada | Parámetros de salida |
---|---|---|
InitializeDevice() | initializeDeviceRequest[] | initializeDeviceResponse[] |
BeginSellTransaction() | beginSellTransactionRequest[] | beginSellTransactionResponse[] |
BeginDevolution() | beginDevolutionRequest[] | beginDevolutionResponse[] |
RestartPINPadConnection() | restartPinpadConnectionRequest[] | restartPinpadConnectionResponse[] |
GetNextMessage() | getNextMessageRequest[] | getNextMessageResponse[] |
CallSpecificFunction() | callSpecificFunctionRequest[] | callSpecificFunctionResponse[] |
BeginPreAuthorization() | beginPreAuthorizationRequest[] | beginPreAuthorizationResponse[] |
ProcessPreAuthorization() | processPreAuthorizationRequest[] | processPreAuthorizationResponse[] |
CancelPreAuthorization() | cancelPreAuthorizationRequest[] | cancelPreAuthorizationResponse[] |
Api device-hub
InitializeDevice
Se utiliza para inicializar el dispositivo, configurar sobre el PIN Pad, la fecha y hora local además de otros parámetros administrativos. Debe ser llamada antes que las demás funciones de la API. Esta función no recibe respuesta de proceso por lo que no es necesario utilizar la función GetNextMessage para recibir su respuesta.
Funcion
InitializeDevice(initializeDeviceRequest[], initializeDeviceResponse[])
Parámetros de entrada
initializeDeviceRequest
Tipo | Nombre | Comentarios* |
---|---|---|
Header | Header | Datos utilizados durante las siguientes consultas |
Header
Tipo | Nombre | Comentarios |
---|---|---|
String | Clientid | Identificador del Comercio |
String | Storeid | Identificador de la Tienda |
String | Posid | Identificador del Terminal Punto de Venta |
String | Language | Identificador del idioma 0-Español 1-English |
String | ExtraData1 | No usado |
Parámetros de salida
initializeDeviceResponse
Tipo | Nombre | Comentarios |
---|---|---|
Result | Result | Retorna 0=OK o un código de error y su descripción |
Result
Tipo | Nombre | Comentarios |
---|---|---|
Int | Code | Código de error |
String | Descripción | Descripción del error |
BeginSellTransaction
A continuación se describe el método que, dado un importe y un número de recibo, lanza la transacción de venta solicitando la autorización financiera. El código de respuesta solamente refleja si la petición ha sido entregada al servicio device-hub. Para obtener el resultado de la transacción es necesario utilizar la función GetNextMessage.
Funcion
BeginSellTransaction(beginSellTransactionRequest[], beginSellTransactionResponse[])
Parámetros de entrada
beginSellTransactionRequest
Tipo | Nombre | Comentarios |
---|---|---|
Header | Header | Datos utilizados durante las siguientes consulta |
String | Amount | Importe de Venta. Importe de la operación con 10 dígitos numéricos, dónde los dos últimos dígitos representan a los céntimos. Ej.: 1€ -> 0000000100 2,25€-> 0000000225 |
String | TicketNumber | Número de Recibo de la Venta |
Header
Tipo | Nombre | Comentarios |
---|---|---|
String | Clientid | Identificador del Comercio |
String | Storeid | Identificador de la Tienda |
String | Posid | Identificador del Terminal Punto de Venta |
String | Language | Identificador del idioma 0-Español 1-English |
String | ExtraData1 | No usado |
Parámetros de salida
beginSellTransactionResponse
Tipo | Nombre | Comentarios |
---|---|---|
Result | Result | Retorna 0=OK o un código de error y su descripción |
Result
Tipo | Nombre | Comentarios |
---|---|---|
Int | Code | Código de error |
String | Descripción | Descripción del error |
BeginDevolution
A continuación se describe el método que, dado un importe y un número de recibo, lanza la transacción de devolución solicitando la autorización financiera. El código de respuesta solamente refleja si la petición ha sido entregada al servicio device-hub. Para obtener el resultado de la transacción es necesario utilizar la función GetNextMessage.
Funcion
BeginDevolution(beginDevolutionRequest[], beginDevolutionResponse[])
Parámetros de entrada
beginDevolutionRequest
Tipo | Nombre | Comentarios |
---|---|---|
Header | Header | Datos utilizados durante las siguientes consulta |
String | Amount | Importe de Venta. Importe de la operación con 10 dígitos numéricos, dónde los dos últimos dígitos representan a los céntimos. Ej.: 1€ -> 0000000100 2,25€-> 0000000225 |
String | TicketNumber | Número de Recibo de la Venta |
Header
Tipo | Nombre | Comentarios |
---|---|---|
String | Clientid | Identificador del Comercio |
String | Storeid | Identificador de la Tienda |
String | Posid | Identificador del Terminal Punto de Venta |
String | Language | Identificador del idioma 0-Español 1-English |
String | ExtraData1 | No usado |
Parámetros de salida
beginDevolutionResponse
Tipo | Nombre | Comentarios |
---|---|---|
Result | Result | Retorna 0=OK o un código de error y su descripción |
Result
Tipo | Nombre | Comentarios |
---|---|---|
Int | Code | Código de error |
String | Descripción | Descripción del error |
RestartPINPadConnection
A continuación se describe el método que reinicializa la conexión entre el concentrador o Sipay Plus y el PIN Pad. Normalmente no es necesario llamar a este método ya que el sistema lo hace de forma automática cuando detecta que el PIN Pad se ha desconectado.
Funcion
RestartPinpadConnection(restartPinpadConnectionRequest[], restartPinpadConnectionResponse[])
Parámetros de entrada
restartPinpadConnectionRequest
Tipo | Nombre | Comentarios |
---|---|---|
Header | Header | Datos utilizados durante las siguientes consulta |
Header
Tipo | Nombre | Comentarios |
---|---|---|
String | Clientid | Identificador del Comercio |
String | Storeid | Identificador de la Tienda |
String | Posid | Identificador del Terminal Punto de Venta |
String | Language | Identificador del idioma 0-Español 1-English |
String | ExtraData1 | No usado |
Parámetros de salida
restartPinpadConnectionResponse
Tipo | Nombre | Comentarios |
---|---|---|
Result | Result | Retorna 0=OK o un código de error y su descripción |
Result
Tipo | Nombre | Comentarios |
---|---|---|
Int | Code | Código de error |
String | Descripción | Descripción del error |
GetNextMessage
A continuación se describe el método que, una vez iniciada la transacción, ya sea de venta o devolución, permite obtener los mensajes del dispositivo para saber en qué paso del proceso se encuentra la operación. (Véase tabla de códigos)
Funcion
GetNextMessage(getNextMessageRequest[], getNextMessageResponse[])
Parámetros de entrada
getNextMessageRequest
Tipo | Nombre | Comentarios |
---|---|---|
Header | Header | Datos utilizados durante las siguientes consulta |
Header
Tipo | Nombre | Comentarios |
---|---|---|
String | Clientid | Identificador del Comercio |
String | Storeid | Identificador de la Tienda |
String | Posid | Identificador del Terminal Punto de Venta |
String | Language | Identificador del idioma 0-Español 1-English |
String | ExtraData1 | No usado |
Parámetros de salida
getNextMessageResponse
Tipo | Nombre | Comentarios |
---|---|---|
Result | Result | Retorna 0=OK o un código de error y su descripció |
Message | Message | Contiene el código de respuesta y su mensaje correspondiente, además de guardar la información de impresión y otra información extra para flags |
Result
Tipo | Nombre | Comentarios |
---|---|---|
Int | Code | Código de error |
String | Descripción | Descripción del error |
Message
Tipo | Nombre | Comentarios |
---|---|---|
Int | MessageCode | Código de respuesta de la transacción |
String | MessageText | Mensaje de respuesta |
PrintableData* | PrintableData | Datos para la impresión |
Extrainfo* | Extrainfo | Información para flags de transacción |
String* | ExpansionData | Datos de expansión en formato XML |
PrintableData
Tipo | Nombre | Comentarios |
---|---|---|
String | OperationType | Tipo de Operación |
String | AuthorizationMode | Modo de autorización |
String | ACRCode | Código de ARC en transacciones EMV |
String | DataInputType | Tipo de entrada de datos en el,PIN Pad |
String | DataVerificationType | Tipo de Verificación utilizada para autenticar el comprador. |
String | FUCCode | Código FUC, número de comercio |
String | HCP | Entidad/Procesadora autorizadora |
String | Store | No Usado |
String | City | No Usado |
String | CardHolder | Propietario de la tarjeta, solo si viaja en el mensaje |
String | AID | Dato EMV |
String | DDFName | Dato EMV |
String | AppLabel | Aplicación utilizada en el PIN Pad |
String | ContactLessLiteral | Indicador de operación sin contacto |
String | CardNumber | Número de Tarjeta con máscara |
String | SequenceNumber | Número de secuencia de la transacción. Puede localizar una transacción en Sipay Plus |
String | TerminalLabel | Número de terminal bancario |
String | TerminalSequence | |
String | DataTime | Fecha y Hora |
String | AuthorizationNumber | Número de autorización de la transacción |
String | Amount | Importe de la operación. En la moneda en que se realizó la misma |
String | CurrencySimbol | Código ISO, Nombre de la moneda en que se realizó la operación. |
String | InfoText | Información proveniente del centro autorizador |
String | Aclaratory | Información proveniente del centro autorizador |
String | ExtraData1 | Datos extra para imprimir en formato XML. Véase ExtraData1 en la tabla inferior. |
String | ExtraData2 | Futura expansión |
ExtraData1
<EXTRA_DATA>
<DCC>
<EXCHANGE_RATE/> <!--Tasa de intercambio aplicada-->
<MARK_UP/>
<COMMISION/> <!--Comisión del procesador DCC-->
<DCC_MERCHANT>CAIXABANK, S.A.</DCC_MERCHANT> <!--Operador DCC-->
<DCC_AMOUNT/> <!--Importe de la operación-->
<DCC_CURRENCY_CODE/> <!--Nombre de la moneda-->
</DCC>
<COMMERECE>
<IDENT>SIPAY PLUS S.L.</IDENT>
<ADDRESS>AVDA. EUROPA 14 PLANTA 1o A</ADDRESS>
<TEL>620857910</TEL>
<STORE>TIENDA SIPAY PLUS 1</STORE>
<CITY>Madrid</CITY>
<CIF>B67890980</CIF>
</COMMERECE>
<CARD_INFO>
<BIN>46456</BIN> <!--Bin de la tarjeta que ha operado-->
<FAMILY_ID>20</FAMILY_ID> <!--ID de la familia de la tarjeta (máx 3 dígitos)-->
<FAMILY_NAME>VISA</FAMILY_NAME> <!--Nombre de la familia de la tarjeta (máx 45 dígitos)-->
<EMIT_BANK_CODE>2100</EMIT_BANK_CODE> <!--Código ISO de la entidad emisora de la tarjeta (4 dígitos)-->
<EMIT_BANK_NAME>CAIXA BANK S.A</EMIT_BANK_NAME> <!--Nombre de la entidad emisora-->
<ADQ_BANK_CODE>0049</ADQ_BANK_CODE> <!--Código ISO de la entidad adquiriente (4 digitos)-->
<ADQ_BANK_NAME>BANCO SANTANDER S.A.</ADQ_BANK_NAME> <!--Nombre de la entidad adquiriente (máx 45 dígitos)-->
<BANK_NETWORK>A101</BANK_NETWORK> <!--Nombre de la red en que opera la tarjeta-->
</CARD_INFO>
<PRIVATE_CARD>
<INFO_TYPE> tipo de información </INFO_TYPE>
<REFERENCE>nº de referencia de la operación</REFERENCE>
<DESTINY> destino (impresión o pantalla) </DESTINY>
<LETTER> tipo de letra </LETTER>
<PAYMENT_INFO> datos enviados por la entidad sobre el pago</PAYMENT_INFO>
</PRIVATE_CARD>
</EXTRA_DATA>
ExtraData1(XML)
Actualmente, en ExtraData1, se encuentran los datos de operaciones multi-divisa (DCC) y los datos del establecimiento donde se produjo la operación. Los datos de multi-divisa, son obligatorios en los tickets de operaciones DCC.
En las operaciones DCC, los campos “Amount” y CurrencySymbol de PrintableData, muestran el importe y la moneda seleccionada durante la transacción, por lo que siempre pueden ser usados. Del sub campo DCC del XML será necesario extraer como mínimo los datos “EXCHANGE_RATE”, “DCC_MERCHANT”, cuando vengan alimentados (Operaciones DCC).
El cliente hace una venta en la respuesta de la venta, si el flag TaxFreeEnabled viene con valor 1, significa que se puede ofrecer TaxFree para la tarjeta procesada.
A continuación en el campo, FeatureInfo , vendrá un XML que indicará el BIN de la tarjeta utilizada. Este dato podrá ser utilizado en la llamada TaxFree cuando se realice.
Tarjeta Privada.
El sub-tag PRIVATE_CARD solamente se recibirá cuando estén realizando una modalidad de pago especifica con la entidad BBVA / Uno-e El número de referencia, deberá ser utilizado como numero de ticket en una posible devolución de la operación, precedido del literal “@ref:”
Para más detalles véase la función “BeginDevolutioRequest”.
Posteriormente en la función BEginDevolution, en el campo TicketNumber, se debe modificar para que quede de la siguiente manera:
TicketNumber: Número de Recibo de la Devolución. En caso de que se trate de una devolución de una venta por pago aplazado con tarjeta privada y el numero sea el de la referencia de la venta original, entonces deberá ser precedido del literal “@ref:”
E.J.: @ref:0321458
ExtraInfo
Tipo | Nombre | Comentarios |
---|---|---|
Int | TaxFreeEnabled | Flag de transacción retorna 1 cuando es posible realizar una transacción TaxFree |
Int | Feature1 | Expansión |
Int | Feature2 | Expansión |
Int | Feature3 | Expansión |
Int | Feature4 | Expansión |
String | AuthorizationCode | Expansión |
String | FeatureInfo | Una vez realizada la venta, Sipay Plus comprobará si la tarjeta está habilitada para ofrecer una operativa TaxFree. En los casos que sea posible este ofrecimiento, el flag TaxFreeEnabled retornará con valor 1 y el campo FeatureInfocontendrá el XML ejemplificado a continuación, indicando el bin de la tarjeta, que será necesario en la operativa TAXFREE |
<FeatureInfo>
<TXFBIN>514600</TXFBIN> // Bin de la tarjeta utilizada
</FeatureInfo>
ExpansionData
<EXPANSION>
<SIGNATURE>
<TYPE>03</TYPE> <!--Firma digitalizada en format ASCII Tipo de imagen( 03 = .tiff ) -->
4D4D002A00000008000D00FE0004000000010000000001000004000000010000012001010004000000010000007
8010200030000000100010000010300030000000100020000010600030000000100000000011100040000000F00
0000DC011600040000000100000008011700040000000F00000118011A000500000001000000AA011B000500000
001000000B2013100020000000E000000BA0132000200000014000000C8000000000000012C000000010000012C
00000001496E67656E69636F000000000000323031333A30383A33302031313A34313A353800000001540000016
40000017D000001A3000001CB000001F30000021F000002520000028A000002C2000002F20000031A0000033A00
00035A0000037A00000010000000190000002600000028000000280000002C00000033000000380000003800000
03000000028000000200000002000000020000000166E366E366E366E366E366E366E366E366E366E366E366E36
5C0AD9A85D41C6665C619D19005F57A2335CE69D19805F9834685DD9346891A404B66A92531A5B1C92C3135B709
2AC2CB700929E50B760905452B780916C56B7C0915E5AB7E0914408B73090AC14B740909EA4B67090D4A5ED0090
16A8B618924D556F409288916F50903D616EA090C9656EB0957AD7B4E096BADAD880907ADFB2E09234A5B080953
4B5B50097E97ED58096664B690094665ECC0090F99AD818D9A6B5DAD8D0D996B547B1B0DA56B69D3AD898DADA5B
DD3AD8A0DACEB6A10FEC54DAC24A50875B17D92694AFD940DAAA4AEFD948DA9E94B16CACDA924B59ECACD85696B
3D960D82A3258875B2CD96E64B10EB65AD95E66B13AD968D95233EF75B040D94A3358AD6C10D9423358AD6C14D9
423258B16C14D80DA8545B52090D28545B530901A7CEB6A6090127485B5409184E885B5409244E885B5509134E8
2B43FABA3258B16C28D9420822458B96C280D94C70828B172D8580D96042D57FAD858090DAB535B5209235B5509
DAA892843AD56C9090443AA96C9090343AAD6C9091743A4EB64890843A10B6AA90C8BFB54090C4AD6D4C927493D
85895680D6C2895680D6C2895486D6C149292D8289292D828929AD820929AD820929AD820929AD820929AD82092
9AD820929AD820929AD820929AD8209292D8289292D8289292D8289292D8289292D8289292D828905AD850905AD
850905AD850905AD850905AD8509292D8289292D8289292D828929AD820929AD82092A2D9686E366E366E366E36
6E36
</SIGNATURE>
</EXPANSION>
ExpansionData
Cuando viaja, contiene texto en formato xml. En la versión actual, transporta los datos de la firma digital, cuando los PIN Pads permitan la captura de firma digital. El contenido de la firma viene en formato ASCII desdoblado, de la misma manera que la emite del PIN Pads. La imagen recibida, será del tipo que emita el PIN Pads. Este formato varía según marcas y modelos. Consulte al equipo de soporte de Sipay sobre los datos y algoritmos de conversión, necesarios para extraer esta imagen.
CallSpecificFunction
El método descrito a continuación, está pensado para realizar otras llamadas no definidas entre las funciones estándar. (Véase “AdvancedFunctions”)
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros de entrada
callSpecificFunctionRequest
Tipo | Nombre | Comentarios |
---|---|---|
Header | Header | Datos utilizados durante las consultas |
Int | Function | Dato para funciones específicas |
Int | Modifier | Dato para funciones específicas |
String | Parameter1 | Dato para funciones específicas |
String | Parameter2 | Dato para funciones específicas |
String | Parameter3 | Dato para funciones específicas |
Header
Tipo | Nombre | Comentarios |
---|---|---|
String | Clientid | Identificador del Comercio |
String | Storeid | Identificador de la Tienda |
String | Posid | Identificador del Terminal Punto de Venta |
String | Language | Identificador del idioma 0-Español 1-English |
String | ExtraData1 | No usado |
Parámetros de salida
callSpecificFunctionResponse
Tipo | Nombre | Comentarios |
---|---|---|
Result | Result | Retorna 0=OK o un código de error y su descripción |
Result
Tipo | Nombre | Comentarios |
---|---|---|
Int | Code | Código de error |
String | Descripción | Descripción del error |
BeginPreAuthorization
A continuación se detalla el método que dado un importe lanza la transacción para solicitar una reserva del importe en cuestión
Funcion
BeginPreAuthorization(beginPreAuthorizationRequest[], beginPreAuthorizationResponse[])
Parámetros de entrada
beginPreAuthorizationRequest
Tipo | Nombre | Comentarios |
---|---|---|
Header | Header | Datos utilizados durante las consultas |
String | Amount | Importe y Ticket de la Operación. El ticket no es obligatorio, pero se recomienda su uso. El formato del campo puede ser: Sin Ticket: Importe de la operación con 10 dígitos numéricos, dónde los dos últimos dígitos representan a los céntimos. Ej.: 1€ -> 0000000100 2,25€-> 0000000225 Con Ticket: Importe de la operación del mismo formato que sin ticket, más el número de ticket, separados por una @. Ej.: Importe de 1,15€ y ticket número 453AF01 0000000115@453AF01 |
String | Ticket | A partir de la versión 4.0.1.0 del devicehub, está disponible este campo. La longitud máxima del ticket no debe superar 40 caracteres. |
Header
Tipo | Nombre | Comentarios |
---|---|---|
String | Clientid | Identificador del Comercio |
String | Storeid | Identificador de la Tienda |
String | Posid | Identificador del Terminal Punto de Venta |
String | Language | Identificador del idioma 0-Español 1-English |
String | ExtraData1 | No usado |
Parámetros de salida
beginPreAuthorizationResponse
Tipo | Nombre | Comentarios |
---|---|---|
Result | Result | Retorna 0=OK o un código de error y su descripción |
Result
Tipo | Nombre | Comentarios |
---|---|---|
Int | Code | Código de error |
String | Descripción | Descripción del error |
ProcessPreAuthorization
A continuación se detalla el método que dado un importe y el código de autorización o número de ticket hace efectiva la reserva asociada a dicho código, donde el importe puede ser mayor hasta un 15 % sobre el importe preautorizado o menor al solicitado según condiciones negociadas con la entidad financiera.
También será importante establecer las condiciones de disponibilidad del plazo para confirmar este tipo de operación. En caso de no haber confirmado esta operación en el plazo estipulado por la entidad, la preautorización inicial quedaría liberada
Funcion
ProcessPreAuthorization(processPreAuthorizationRequest[], processPreAuthorizationResponse[])
Parámetros de entrada
processPreAuthorizationRequest
Tipo | Nombre | Comentarios |
---|---|---|
Header | Header | Datos utilizados durante las consultas |
String | Amount | Importe Autorizado para la Reserva de Pago, con un margen según la entidad bancaria que lo procesa. Importe de la operación con 10 dígitos numéricos, dónde los dos últimos dígitos representan a los céntimos. Ej.: 1€ -> 0000000100 2,25€-> 0000000225 |
String | AuthorizationCode | Código de Autorización o número de ticket de la transacción original. ( En el caso del Ticket, éste ha de ser un valor único ) |
String | Ticket | A partir de la versión 4.0.1.0 del devicehub, está disponible este campo. La longitud máxima del ticket no debe superar 40 caracteres. Es el ticket original enviado en la Preautorización inicial. Si se informa este campo no es obligatorio el campo AuthorizationCode. |
Header
Tipo | Nombre | Comentarios |
---|---|---|
String | Clientid | Identificador del Comercio |
String | Storeid | Identificador de la Tienda |
String | Posid | Identificador del Terminal Punto de Venta |
String | Language | Identificador del idioma 0-Español 1-English |
String | ExtraData1 | No usado |
Parámetros de salida
processPreAuthorizationResponse
Tipo | Nombre | Comentarios |
---|---|---|
Result | Result | Retorna 0=OK o un código de error y su descripción |
Result
Tipo | Nombre | Comentarios |
---|---|---|
Int | Code | Código de error |
String | Descripción | Descripción del error |
CancelPreAuthorization
A continuación se detalla el método que anula la reserva solicitada dado el número de autorización o el número de ticket original.
Funcion
CancelPreAuthorization(cancelPreAuthorizationRequest[], cancelPreAuthorizationResponse[])
Parámetros de entrada
cancelPreAuthorizationRequest
Tipo | Nombre | Comentarios |
---|---|---|
Header | Header | Datos utilizados durante las consultas |
String | Amount | Importe Autorizado para la Reserva de Pago. Importe de la operación con 10 dígitos numéricos, dónde los dos últimos dígitos representan a los céntimos. Ej.: 1€ -> 0000000100 2,25€-> 0000000225 |
String | AuthorizationCode | Código de Autorización o número de ticket de la transacción original. ( En el caso del Ticket, éste ha de ser un valor único ) |
String | Ticket | A partir de la versión 4.0.1.0 del devicehub, está disponible este campo. La longitud máxima del ticket no debe superar 40 caracteres. Es el ticket original enviado en la Preautorización inicial. Si se informa este campo no es obligatorio el campo AuthorizationCode. |
Header
Tipo | Nombre | Comentarios |
---|---|---|
String | Clientid | Identificador del Comercio |
String | Storeid | Identificador de la Tienda |
String | Posid | Identificador del Terminal Punto de Venta |
String | Language | Identificador del idioma 0-Español 1-English |
String | ExtraData1 | No usado |
Parámetros de salida
cancelPreAuthorizationResponse
Tipo | Nombre | Comentarios |
---|---|---|
Result | Result | Retorna 0=OK o un código de error y su descripción |
Result
Tipo | Nombre | Comentarios |
---|---|---|
Int | Code | Código de error |
String | Descripción | Descripción del error |
ReplacementPreAuthorization
Mensaje utilizado para sustituir una preautorización, aun no confirmada. La nueva preautorización puede tener un valor distinto de la original o el mismo valor, en ambos casos el plazo de retención de la preautorización se modifica, tomando como base la fecha de esta operación.
Funcion
ReplacePreAuthorization(replacePreAuthorizationRequest[], replacePreAuthorizationResponse[])
Parámetros de entrada
replacePreAuthorizationRequest
Tipo | Nombre | Comentarios |
---|---|---|
String | Header | Datos utilizados durante las consultas |
String | Amount | Importe Autorizado para la Reserva de Pago, con un margen según la entidad bancaria que lo procesa. Importe de la operación con 10 dígitos numéricos, dónde los dos últimos dígitos representan a los céntimos. Ej.: 1€ -> 0000000100 2,25€-> 0000000225 |
String | Ticket | Ticket de la operación puede ser el mismo que el original o un nuevo número de ticket. No debe sobrepasar 35 caracteres.,Es importante que los tickets no se repitan entre los distintos establecimientos con el fin de evitar cualquier confusión entre operaciones. |
String | OriginalTicket | Número del Ticket de la preautorización que se va a reemplazar. Es un campo no, obligatorio si se informa el campo OriginalAuthorization |
String | OriginalAuthorization | Código de Autorización de la transacción original. ( En el caso del Ticket, éste ha de ser un valor único ) |
Header
Tipo | Nombre | Comentarios |
---|---|---|
String | Clientid | Identificador del Comercio |
String | Storeid | Identificador de la Tienda |
String | Posid | Identificador del Terminal Punto de Venta |
String | Language | Identificador del idioma 0-Español 1-English |
String | ExtraData1 | No usado |
Parámetros de salida
replacePreAuthorizationResponse
Tipo | Nombre | Comentarios |
---|---|---|
Result | Result | Retorna 0=OK o un código de error y su descripción |
Result
Tipo | Nombre | Comentarios |
---|---|---|
Int | Code | Código de error |
String | Descripción | Descripción del error |
Recomendaciones de uso
Ejemplo Pseudocódigo
Función: Iniciar_Transaccion_Venta
Entorno:soap_con (puntero a objeto soap)
Algoritmo:
Variables:
is_transOK: booleano
numTicket, importe: cadena
INICIO:
soap_con->connect()
SI soap_con->onInitializeDevice()
is_transOK=soap_con->onBeginSellTransaction(importe,numTicket)
SI is_transOK
Variables:
tMessageResp: _ns1__GetNextMessageResponse
is_endTransaction: booleano = false
t1,t2 :tiempo
t1=currentTime() + 120 segundos
MIENTRAS !is_endTransaction AND soap_conn->onGetNextMessage(tMessageResp)
SWITCH tMessageResp.Message.MessageCode
CASO10
t2=currentTime()
SI t2>t1
Mostrar Mensage_Timeout
Llamar_funciónCancelar_Transaccion()
is_endTransaction=true
FIN SI
FIN CASO
CASO11
t1=currentTime()
MostrartMessageResp.Message.MessageText
FIN CASO
CASO1000
t1=currentTime()
MostrartMessageResp.Message.MessageText
SI !is_sell_end
Llamar a ImprimirTicket(PrintableData)
is_sell_end=true
SI NO
is_endTransaction=true
FIN SI
FIN CASO
CASO1001
MostrartMessageResp.Message.MessageText
SI MessageText = LBNOCONNECTION
Llamar_funciónCancelar_Transaccion()
FIN SI
is_endTransaction=true
FIN CASO
CASO1002
MostrartMessageResp.Message.MessageText
Variable:
dcc_option: cadena
Leerdcc_option: '00','01'o '02'
is_transOK = soap_conn->onCallSpecificFunction( 8, 0, dcc_option, "", "" )
FIN CASO
FIN SWICTH
tMessageResp.Message.MessageCode=0
FIN MIENTRAS
SI NO
Mostrar Mensaje Error_Transaccion (posible error en los datos)
FIN SI
SI NO
Mostrar Mensaje Error_Conexión
FIN SI
soap_conn->disconnect()
FIN Iniciar_Transaccion_Venta
Cancelar_Transaccion
Entorno: soap_con(puntero a objeto soap)
Algoritmo:
Variables:
is_transOK: booleano
numTicket, importe: cadena
INICIO:
soap_con->connect()
is_transOK=soap_con->onCancelSellTransaction(importe,numTicket)
SI is_transOK
Variables:
tMessageResp: _ns1__GetNextMessageResponse
is_endCancelation: booleano = false
t1,t2 :tiempo
t1=currentTime() + 120 segundos
MIENTRAS !is_ endCancelation AND soap_conn>onGetNextMessage(tMessageResp)
SWITCH tMessageResp.Message.MessageCode
CASO10
t2=currentTime()
SI t2>t1
MostrarMensage_Timeout
is_ endCancelation =true
FIN SI
FIN CASO
CASO11
t1=currentTime()
MostrartMessageResp.Message.MessageText
FIN CASO
CASO1000
t1=currentTime()
MostrartMessageResp.Message.MessageText
Llamar a ImprimirTicket(PrintableData)
is_ endCancelation =true
FIN CASO
CASO1001
MostrartMessageResp.Message.MessageText
is_ endCancelation = true
FIN CASO
FIN SWICTH
tMessageResp.Message.MessageCode=0
FIN MIENTRAS
SI NO
Mostrar Mensaje Error_Conexión
FIN SI
soap_conn->disconnect()
FIN Cancelar_Transaccion
Uso de InitializeDevice
Al inicio de cada transacción ya sea de Venta, de Pre autorización o de Devolución se debe llamar a la función InitializeDevice, tal y como se menciona en su descripción es importante que esta llamada se realice siempre antes de lanzar cualquier función de la API. (Véase ejemplo en pseudocódigo)
Tiempo de espera
Es importante que haya un control del tiempo de espera (TimeOut), si se recibe durante más de 2 minutos el Código 10 en el circuito de la funciónGetNextMessage, se debe parar la llamada, ya sea de Venta, Pre autorización o Devolución, y enviar una Cancelación de la operación con el número de Ticket. (Véase ejemplo en pseudocódigo SI t2>t1 -> Cancelar Transacción)
Cancelar Transacción
Hay que tener en cuenta que si se excede el tiempo de espera o hay algún error durante la transacción, es muy importante llamar a la función de Cancelación con el número de Ticket (esta operación no requiere InitializeDevice). Tras lanzar la llamada de Cancelación se debe seguir el circuito para comprobar con la funciónGetNextMessage si la operación de Cancelación ha ido bien o no. (Véase ejemplo en pseudocódigo Llamar_funciónCancelar_Transaccion
DCC en TPV
Para poder integrar Multidivisa (DCC) en TPV hay que esperar en la respuesta de la funciónGetNextMessage el Código 1002, al recibir este código se debe recoger el mensaje con la información de Multidivisa:
* Mensaje solicitando selección (2 líneas)
* Moneda1 Importe1
* Moneda2 Importe2
* ExtraData
En este caso el TPV deberá mostrar el mensaje dado con el formato deseado pidiendo que se escoja entre estas tres opciones:
* 00: aplicar Multidivisa en TPV con la moneda local
* 01: aplicar Multidivisa en TPV con la moneda del cambio
* 02: cancelar Multidivisa en TPV
El TPV deberá esperar la opción seleccionada y se debe realizar la llamada correspondiente a la Operativa de Multidivisa de las funciones específicas con el código de Función 8, el modificador 0 y la Opción seleccionada (00, 01, 02) (Anexo 1: Operativa de Multidivisa (DCC) en TPV).
Finalmente, tras lanzar la llamada de Multidivisa en TPV se debe seguir el circuito para comprobar con la función GetNextMessage si la operación ha ido bien o no.
Información importante
Unicidad de la relación
Si la pasarela Sipay Plus recibe varios números de ticket diferentes, los interpretará, evidentemente como operaciones distintas. Así pues, para una misma operación de venta, independientemente del número de veces que se intente la misma, el número de ticket que se envía desde caja debe ser el mismo. El objetivo de esta regla es evitar duplicidades en las operaciones. Como resultado de lo anterior, las operaciones que no han sido procesadas o no han sido finalizadas con resultado positivo deberán también ingresarse con el mismo número de ticket original.
Arquitectura de la conexión
La arquitectura de la plataforma Sipay Plus requiere que cada PIN Pad se conecte al Device Hub empleando un puerto diferente y apuntando a la dirección IP del Device Hub.
Previo a la configuración del sistema y al inicio de la fase de integración y pruebas, el cliente deberá entregar a Sipay el esquema / diagrama / gráfico de configuración final de PIN Pad, caja y Device Hub que empleará en el despliegue, con el detalle de PIN Pads, TPV’s, Device Hub’s y direccionamiento de red de cada uno de ellos.
ANEXO 1 Advanced Functions
Cancelaciones desde TPV
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 0 |
Modifier | 0 |
Parameter1 | Importe de la transacción original que se va a anular |
Parameter2 | Numero de Ticket de la operación que se desea cancelar |
Parameter3 | No utilizado |
DuplicateTicket
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 1 |
Modifier | 0 |
Parameter1 | No utilizado |
Parameter2 | Numero de Ticket de la operación que se desea recuperar el ticket |
Parameter3 | No utilizado |
GetSignature
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 3 |
Modifier | 0 |
Parameter1 | No utilizado |
Parameter2 | No utilizado |
Parameter3 | No utilizado |
Retorna la firma capturada en el pinpad en el mismo formato definido por el pinpad. Los formatos de las firmas vienen dados en el campo TYPE
RequestPinOnlinekey UPDATE
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 4 |
Modifier | 0 |
Parameter1 | Numero del cajón a actualizar (1.9 |
Parameter2 | No utilizado |
Parameter3 | No utilizado |
Operativa de Guardado de Tarjeta en bóveda
La operativa de bóveda permite la realización de operaciones recurrentes, sobre una tarjeta almacenada. Para la contratación de esta operativa es necesario contactar con el departamento comercial de Sipay Plus. Esta operativa conlleva algunas imposiciones legales a cumplirse. Para esta información también puede contactar con el departamento comercial de Sipay Plus. En los siguientes puntos se explicaran los detalles técnicos de la operativa.
Cómo funciona la operativa
Como primer paso, es necesario registrar la tarjeta, esta acción se puede realizar directamente almacenando los datos de la tarjeta sin necesidad de ninguna operación financiera, o bien aprovechando una transacción de venta o devolución para almacenar los datos. La tarjeta queda registrada con número de contracto, que posteriormente se puede utilizar para efectuar ventas o devoluciones recurrentes, sin necesidad de utilizar los datos de la tarjeta en las transacciones. Para la realización de estos procesos, Sipay Plus entregara un certificado de seguridad el cual deberá estar instalado en los PCs que utilicen esta funcionalidad.
Requerimientos para utilizarl a operativa de bóveda
Los siguientes requerimientos son necesarios para la operativa de bóveda:
En el caso que se utilice el almacenamiento basado en ventas y devoluciones deberá utilizar un PIN Pad con PUP 1.4 o PUP 1.5 en escenario 2.
Integrar la mensajería descrita en los siguientes apartados.
Haber contratado este servicio a Sipay Plus.
Tener instalado el servicio devicehub release 4.0.2.0 o superior.
Operaciones con bóveda (Mensajería)
Para todas las operaciones de bóveda, se utilizan la función CallSpecificFunction. A continuación se enumeran las distintas funciones permitidas:
Almacenamiento en bóveda directa (Sin operaciones de venta o devolución)
XML Parameter1
<DATA>
<PAN>0123456789012345</PAN>
<CCV>123</CCV>
<EXPIRATION_DATE>1249</EXPIRATION_DATE>
<CONTRACT>00025123</CONTRACT>
<TICKET>0023</TICKET>
<EXPIRE_DAYS>90</EXPIRE_DAYS>
</DATA>
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 5 |
Modifier | 0 |
Parameter1 | XML con la información de la tarjeta |
Parameter2 | No utilizado |
Parameter3 | No utilizado |
Campos XML
Etiqueta | Comentarios |
---|---|
PAN | Número de la tarjeta a guardar |
CCV | No se debe informar |
EXPIRATION_ DATE | La fecha de caducidad de la tarjeta debe estar con el siguiente formato: MMAA,Por ejemplo, el mes octubre de 2015 quedaría como 1015 |
CONTRACT | El número de contrato es la identificación con la que se guarda la información de tarjeta en el sistema, dicha identificación se puede usar posteriormente para poder realizar transacciones sobre dicha tarjeta solo con este identificador. |
TICKET | Si solo se quiere guardar la tarjeta este campo debe venir en blanco. |
EXPIRE_DAYS | Este campo guarda en el sistema el número de días en los que el contrato es válido, este dato debe ser un número entero. |
Almacenamiento en bóveda, con una operación de venta
XML Parameter3
<SHIELD>
<CONTRACT_NUMBER>00025123</CONTRACT_NUMBER>
<EXPIRATION_DAYS>1249</EXPIRATION_DAYS>
<EXPIRATION_DATE>365</EXPIRATION_DATE>
</SHIELD>
Esta función realiza una venta, a través del PIN Pad y almacena la tarjeta en una única operación. No obstante debido a la criptografía utilizada en los PIN Pads, es necesario que se complemente la petición con la fecha de caducidad de la tarjeta. Por lo que durante la integración es necesario que se desarrolle, una operativa, donde el operador final del software, introduzca la Fecha de caducidad de la tarjeta para iniciar el proceso.
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 13 |
Modifier | 0 |
Parameter1 | Importe de la transacción |
Parameter2 | Numero de Ticket para la venta que se va a realizar |
Parameter3 | XML con datos relacionados con el almacenamiento de la operación |
Campos XML
Etiqueta | Comentarios |
---|---|
CONTRACT_NUMBER | Número de la tarjeta a guardar |
EXPIRATION_DAYS | Número de días en que la tarjeta permanecerá almacenada en bóveda |
EXPIRATION_DATE | La fecha de caducidad de la tarjeta debe estar con el siguiente formato: MMAA,Por ejemplo, el mes octubre de 2015 quedaría como 1015 |
Almacenamiento en bóveda, con una operación de devolución
XML Parameter3
<SHIELD>
<CONTRACT_NUMBER>00025123</CONTRACT_NUMBER>
<EXPIRATION_DAYS>1249</EXPIRATION_DAYS>
<EXPIRATION_DATE>365</EXPIRATION_DATE>
</SHIELD>
Esta función realiza una venta, a través del PIN Pad y almacena la tarjeta en una única operación. No obstante debido a la criptografía utilizada en los PIN Pads, es necesario que se complemente la petición con la fecha de caducidad de la tarjeta. Por lo que durante la integración es necesario que se desarrolle, una operativa, donde el operador final del software, introduzca la Fecha de caducidad de la tarjeta para iniciar el proceso.
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 14 |
Modifier | 0 |
Parameter1 | Importe de la transacción |
Parameter2 | Numero de Ticket para la venta que se va a realizar |
Parameter3 | XML con datos relacionados con el almacenamiento de la operación |
Campos XML
Etiqueta | Comentarios |
---|---|
CONTRACT_NUMBER | Número de la tarjeta a guardar |
EXPIRATION_DAYS | Número de días en que la tarjeta permanecerá almacenada en bóveda |
EXPIRATION_DATE | La fecha de caducidad de la tarjeta debe estar con el siguiente formato: MMAA,Por ejemplo, el mes octubre de 2015 quedaría como 1015 |
Operativa Transacción de Venta con una Tarjeta de bóveda
Esta funcionalidad realiza la transacción de venta sobre una tarjeta previamente guardada en bóveda dado su no de contrato.
Si tienes contratada la operativa de DCC y la tarjeta almacenada permite DCC, se aplicará automáticamente la moneda de la tarjeta. Véase la tabla de valores para el modificador
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 6 |
Modifier | 1 o 3 o 4 |
Parameter1 | Nº Ticket de la venta |
Parameter2 | Nº Contrato para cobrar con la tarjeta guardada |
Parameter3 | Importe de la venta |
Operativa de Devolución con una Tarjeta de bóveda
Esta funcionalidad realiza la transacción de devolución sobre una tarjeta previamente guardada en bóveda dado su no de contrato.
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 6 |
Modifier | 2 |
Parameter1 | Nº Ticket de la venta |
Parameter2 | Nº Contrato para cobrar con la tarjeta guardada |
Parameter3 | Importe a devolver |
Operativa Recarga de Móviles
XML Parameter1
<DATA>
<AMOUNT>Importe</AMOUNT>
<PHONE_NUMBER> Nº de Teléfono</ PHONE_NUMBER>
<TICKET>Nº de Ticket</TICKET>
<REFERENCE></REFERENCE>
<OPERATOR_CODE> Código de Operador</OPERATOR_CODE>
</DATA>
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 7 |
Modifier | 1 |
Parameter1 | XML con la información de la recarga |
Parameter2 | No utilizado |
Parameter3 | No utilizado |
Campos XML
Etiqueta | Comentarios |
---|---|
AMOUNT | Importe de la operación, valor en euros. |
PHONE_NUMBER | El número de teléfono. |
TICKET | El número de ticket es obligatorio |
REFERENCE | No utilizado |
OPERATOR_CODE | El código de operador es obligatorio y numérico |
Operativa Devolución de una Recarga de Móviles
XML Parameter1
<DATA>
<AMOUNT>Importea Devolver</AMOUNT>
<PHONE_NUMBER> Nº de Teléfono</PHONE_NUMBER>
<TICKET> Nº de Ticket de la Devolución </TICKET>
<REFERENCE> Nº de Referencia (NºTicket Recarga)</REFERENCE>
<OPERATOR_CODE> Código de Operador </OPERATOR_CODE>
</DATA>
Realiza la devolución de una recarga de móvil dado el nº de Ticket y el importe de la recarga que se quiere anular.
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 7 |
Modifier | 9 |
Parameter1 | XML con la información de la recarga |
Parameter2 | No utilizado |
Parameter3 | No utilizado |
Campos XML
Etiqueta | Comentarios |
---|---|
AMOUNT | Importe de la operación, valor en euros. debe ser el mismo importe de la recarga a anular |
PHONE_NUMBER | El número de teléfono. |
TICKET | El número de ticet para las devoluciones no es obligatorio |
REFERENCE | Número de ticke de la recarga a anular |
OPERATOR_CODE | El código de operador es obligatorio y numérico |
Operativa de Multidivisa (DCC) en TPV
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 8 |
Modifier | 0 |
Parameter1 | Nº Operación de 2 dígitos |
Parameter2 | No utilizado |
Parameter3 | No utilizado |
Operativa de pago fraccionado
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 10 |
Modifier | 0 |
Parameter1 | Ticket |
Parameter2 | Tipo de pago seleccionado |
Parameter3 | No utilizado |
Procedimiento
La operativa en este modelo de proceso no se diferencia en su inicio a la operativa de una venta normal. EN los casos dónde se produzcan ventas con tarjetas privadas, el funcionamiento será el siguiente:
* Se inicia la venta normalmente, leyendo por banda magnética la tarjeta privada.
* El Concentrador detectará que la tarjeta es una tarjeta privada.
* Ofrecerá el fraccionamiento del pago, en la respuesta de GetNextMessage retornando el código 1004 y sin ningún dato adicional.
* El TPV deberá empezar una llamada con CallSepecificFunction, Función 10, modificador 0, indicando la selección realizada y el número de ticket de la operación, que será objeto de comprobación.
* La Transacción seguirá normalmente, y a través de la llamada a GetNextMessage que retornará 1000 o 1001 como se tratase de una venta normal.
Requisitos para el Pago Fraccionado
1. El comercio debe tener habilitada esta modalidad con las entidades bancarias con las que trabajará.
2. El comercio deberá entregar a Sipay Plus un listado con los rangos de bines de tarjeta que están reservadas para sus tarjetas privadas.
3. El comercio debe adaptar su operativa de TPV para trabajar con esta funcionalidad.
4. Las tarjetas privadas ha de ser leídas por banda magnética
Key Entry Sell
XML Parameter3
<CARD>
<PAN>Numero de la tarjeta</PAN>
<EXPIRATION_DATE> Fecha de expiración Tarjeta</EXPIRATION_DATE>
</CARD>
Esta operativa permite la realización de una venta con tecleo manual, sin la intervención de un PIN Pad. No obstante es necesario que exista el registro de un PIN Pad en el mismo puesto de venta o establecimiento para que la operativa funcione correctamente.
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 16 |
Modifier | 0 |
Parameter1 | Importe de la operaciónde la operación |
Parameter2 | Numero del ticket |
Parameter3 | String, con formato XML |
Campos XML
Etiqueta | Comentarios |
---|---|
PAN | Número de la tarjeta a guardar |
EXPIRATION_ DATE | La fecha de caducidad de la tarjeta debe estar con el siguiente formato: MMAA,Por ejemplo, el mes octubre de 2015 quedaría como 1015 |
Key Entry Refund
XML Parameter3
<CARD>
<PAN>Numero de la tarjeta</PAN>
<EXPIRATION_DATE> Fecha de expiración Tarjeta</EXPIRATION_DATE>
</CARD>
Esta operativa permite la realización de una devolución con tecleo manual, sin la intervención de un PIN Pad. No obstante es necesario que exista el registro de un PIN Pad en el mismo puesto de venta o establecimiento para que la operativa funcione correctamente.
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 17 |
Modifier | 0 |
Parameter1 | Importe de la operaciónde la operación |
Parameter2 | Numero del ticket |
Parameter3 | String, con formato XML |
Campos XML
Etiqueta | Comentarios |
---|---|
PAN | Número de la tarjeta a guardar |
EXPIRATION_ DATE | La fecha de caducidad de la tarjeta debe estar con el siguiente formato: MMAA,Por ejemplo, el mes octubre de 2015 quedaría como 1015 |
Carga fichero 3000
Esta operativa permite la carga de un fichero 3000 de configuración a los PIN Pads INGENICO, durante el proceso no se pueden realizar operaciones financieras.
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 20 |
Modifier | 0 |
Parameter1 | Path y nombre del fichero 3000 a cargar |
Parameter2 | No utilizado |
Parameter3 | No utilizado |
Cambio forzado de modo OFFLINE ( ON y OFF )
Esta operativa permite el paso de la operativa a modo OFFLINE / ONLINE de manera forzada, el estado seleccionado se mantendrá hasta una nuevo cambio o hasta que se reinicie el Devicehub. Para trabajar en Modo Offline, es necesario tener habilitada una entidad bancaria que permita esta característica.
Funcion
CallSpecificFunction(callSpecificFunctionRequest[], callSpecificFunctionResponse[])
Parámetros
Parámetro | Descripción |
---|---|
Function | 21 |
Modifier | 0 |
Parameter1 | Modo Offline On/Off* |
Parameter2 | No utilizado |
Parameter3 | No utilizado |
Posibles valores de Parameter1
Valor | Descripción |
---|---|
0 | Modo Offline deshabilitado, El sistema entrará en Offline solamente cuando sea necesario. |
1 | Modo Offline habilitado, el sistema permanecerá siempre en OFFLINE hasta que sea deshabilitado o el Devicehub sea reiniciado. |
Códigos de respuesta
Descripción de los posibles códigos que devuelve la llamada de la función GetNextMessage(getNextMessageRequest[], getNextMessageResponse[])
.
MessageCode
getNextMessageResponse[Message][MessageCode]
Código Mensaje | Descripción del Mensaje |
---|---|
10 | El proceso aún no ha terminado, continua sin mostrar Texto |
11 | El proceso aún no ha terminado, continua con Texto |
1000 | Fin de la transacción. Proceso Finalizado correctamente, muestra Texto y acaba |
1001 | Cancelación de la transacción. Proceso Denegado, muestra Texto de error y acaba |
1002 | El proceso aún no ha terminado. Opción de Multidivisa (DCC) en TPV, muestra mensaje,con la información de Multidivisa y continua |
1004 | Ofrecimiento de Pago fraccionado. |
Almacenamiento en boveda
Código Mensaje | Descripción del Mensaje |
---|---|
1000 | Denegada (La venta/devolución ha sido denegada, por lo tanto no se almacena la tarjeta) |
1001 | Aceptada (La venta/devolución ha sido aceptada y se ha almacenado correctamente la tarjeta) |
1005 | Aceptada, la venta/devolución ha sido aceptada, pero no se pudo almacenar la tarjeta, en este caso el comercio deberá tomar la medida para tomar los datos de la tarjeta con el fin de realizar un registro posterior sin tarjeta |
Valores Modificador
Modificador | Comentarios |
---|---|
1 | Operación de venta, si la tarjeta permite DCC, se aplicará la moneda extranjera por defecto. |
2 | Utilizado en devoluciones.Véase devolucion on tarjeta en boveda |
3 | Operación de venta, si la tarjeta permite DCC, se aplicará la moneda extranjera por defecto. |
4 | Operación de venta, si la tarjeta permite DCC, se aplicará la moneda local (Euros) por defecto |
Formatos de firma
Código | Formato |
---|---|
00 | Formato propietario |
01 | BMP |
02 | JPG |
03 | TIF |
Código de Operaciones
Código operción | Descripción |
---|---|
00 | Operación DCC con Importe local |
01 | Operación DCC con Importe extranjer |
02 | Cancelar la Operación DCC |
Pago fraccionado
Forma Pago | Código | Observaciones |
---|---|---|
Fin de Mes | 000 | Dependerá de que el comercio tenga contratada esta opción con su entidad financiera habitual. |
Debito Inmediato | 800 | Dependerá de que el comercio tenga contratada esta opción con su entidad financiera habitual. |
3 Meses | 043 | Dependerá de que el comercio tenga contratada esta opción con su entidad financiera habitual. |
6 Meses | 046 | Dependerá de que el comercio tenga contratada esta opción con su entidad financiera habitual. |
10 Meses | 100 | Dependerá de que el comercio tenga contratada esta opción con su entidad financiera habitual. |
12 Meses | 052 | Dependerá de que el comercio tenga contratada esta opción con su entidad financiera habitual. |
Revolving | 000 | Dependerá de que el comercio tenga contratada esta opción con su entidad financiera habitual. |
Codigos de operador
Código | Nombre Operador | Importes permitidos |
---|---|---|
1 | MOVISTAR | 5 A 150€ (MULTIPLOS DE 5€ |
2 | VODAFONE | 5 A 150€ (MULTIPLOS DE 5€ |
3 | ORANGE | 5 A 150€ (MULTIPLOS DE 5€ |
32 | YOIGO | 5 A 150€ (MULTIPLOS DE 5€ |
33 | CARREFOUR | 5 A 150€ (MULTIPLOS DE 5€ |
54 | LEBARA_ON | 5 A 150€ (MULTIPLOS DE 5€ |
56 | MASMOVIL_ON | 5 A 150€ (MULTIPLOS DE 5€ |
58 | EUSKALTEL | 5 A 150€ (MULTIPLOS DE 5€ |
95 | DIGIMOBIL | 5 A 150€ (MULTIPLOS DE 5€ |
108 | SIMYO | 5 A 150€ (MULTIPLOS DE 5€ |
111 | BLAU | 5 A 150€ (MULTIPLOS DE 5€ |
111 | TALKOUT | 5 A 150€ (MULTIPLOS DE 5€ |
112 | MUNDIMOVIL | 5 A 150€ (MULTIPLOS DE 5€ |
113 | CLM | 5 A 150€ (MULTIPLOS DE 5€ |
114 | HONGDA | 5 A 150€ (MULTIPLOS DE 5€ |
116 | HABLAFACIL | 5 A 150€ (MULTIPLOS DE 5€ |
123 | HITSMOBILE | 5 A 150€ (MULTIPLOS DE 5€ |
125 | LLAMAYA_ON | 5 A 150€ (MULTIPLOS DE 5€ |
127 | ORBITEL_ON | 5 A 150€ (MULTIPLOS DE 5€ |
130 | LYCAMOBILE | 5 A 50€ (MULTIPLOS DE 5€) |
131 | ORTEL | 5 A 150€ (MULTIPLOS DE 5€ |
139 | TUENTI | 5 A 150€ (MULTIPLOS DE 5€ |
239 | JAZZTELMOVIL | 5 A 150€ (MULTIPLOS DE 5€ |
240 | HAPPYMOVIL_ON | 5 A 150€ (MULTIPLOS DE 5€ |
244 | GTMOBILE | 5 A 150€ (MULTIPLOS DE 5€ |
373 | BESTMOVIL | 5 A 150€ (MULTIPLOS DE 5€ |
586 | EPLUS | 5 A 150€ (MULTIPLOS DE 5€ |
587 | ALOW | 5 A 150€ (MULTIPLOS DE 5€ |
590 | MOVIDATA | 5 A 90€ (MULTIPLOS DE 5€) |
591 | YOUMOBILE | 5 A 90€ (MULTIPLOS DE 5€) |
635 | JAZZPANDA | 5 A 90€ (MULTIPLOS DE 5€) |
636 | DIAMOVI | 5 A 150€ (MULTIPLOS DE 5€ |