Prueba
Prueba
Prueba
IMPLEMENTACIÓN 3.0
DATAWEB (BOTÓN DE PAGOS)
ANDRÉS FLORES / MARIO TORRES
2020
1
Fecha Versión Descripción Autor
08/07/2020 3.0 Nueva versión que incluye: Andrés Flores /
Mario Torres
1. Nuevos parámetros de
envío de información.
2. Nuevas validaciones en
cálculos de impuestos.
3. Mejoras en texto de
mensajería de respuesta de
las transacciones
4. Eliminación de campos
SHOPPER_interes /
SHOPPER_gracia
5. Nuevo método de anulación
6. Nuevo parámetro para
tipos de crédito.
2
Índice
1. Introducción .............................................................................................................. 8
2. DATAWEB .................................................................................................................. 8
2.1 Front-end ................................................................................................................ 8
2.2 Back-end (Tecnologías) ........................................................................................... 8
2.3 Certificados ............................................................................................................. 9
2.4 Sobre los ejemplos .................................................................................................. 9
2.5 Sobre los Plugins ..................................................................................................... 9
2.6 Sobre las transacciones y monto ............................................................................ 9
2.7 Esquema de Seguridad............................................................................................ 9
2.8 Validación de conexión al Gateway ...................................................................... 10
3. Fases de Integración................................................................................................ 10
3.1 Fase uno (Prueba Inicial) .................................................................................. 11
3.1.1 Identificador de Pago (CheckoutId) .......................................................... 11
3.1.2 Formulario de Pago .................................................................................. 12
3.1.3 Procesamiento de la compra .................................................................... 14
3.2 Fase dos (Prueba Final) .................................................................................... 16
3.2.1 Nuevos campos .............................................................................................. 16
3.2.1.1 Nombre .................................................................................................... 16
3.2.1.2 Segundo Nombre ..................................................................................... 16
3.2.1.3 Apellido .................................................................................................... 16
3.2.1.4 Dirección IP .............................................................................................. 17
3.2.1.5 Identificador del Cliente en el Comercio ................................................. 17
3.2.1.6 Número de Transacción .......................................................................... 17
3.2.1.7 Dirección de Correo Electrónico .............................................................. 17
3.2.1.8 Tipo de Documento de Identificación del Usuario .................................. 17
3.2.1.9 Documento de Identificación del Usuario ............................................... 17
3.2.1.10 Datos del producto ................................................................................ 18
3.2.1.10.1 Nombre ........................................................................................... 18
3.2.1.10.2 Descripción ..................................................................................... 18
3.2.1.10.3 Precio .............................................................................................. 18
3
3.2.1.10.4 Cantidad .......................................................................................... 18
3.2.1.11. Teléfono del cliente .............................................................................. 18
3.2.1.12 Dirección de entrega ............................................................................. 18
3.2.1.13 Dirección del Cliente.............................................................................. 19
3.2.1.14 País de entrega ...................................................................................... 19
3.2.1.15 País del Cliente ...................................................................................... 19
3.2.1.16 Modo de Prueba .................................................................................... 19
3.2.1.17 Parámetros Personalizados ............................................................... 19
3.2.1.17.1 Datos de Impuestos ........................................................................ 19
3.2.1.17.2 Datos del comercio (MID / TID) ...................................................... 20
3.2.1.17.3 Datos de identificación ................................................................... 21
3.2.1.17.4 Versión ............................................................................................ 21
3.2.1.18 Risk Parameters .................................................................................... 21
4 Código de Mensajes. ............................................................................................... 24
4.2 Códigos Generales ........................................................................................... 24
4.3 Códigos de Mensajes Detallados ..................................................................... 28
4.3.1 Aprobación de la transacción (Banco adquirente) ................................... 28
4.3.2 Rechazo de la Transacción (Respuestas del Banco) ................................. 29
5 Opciones Avanzadas................................................................................................ 31
5.1 Diferidos ........................................................................................................... 31
5.2 Tipo de Crédito................................................................................................. 34
5.3 Validación campos vacíos ..................................................................................... 36
5.6 Estilo del formulario.............................................................................................. 37
5.7 Optimización Móvil ............................................................................................... 37
5.7.1 Habilitar el diseño responsivo en el HTML..................................................... 37
5.7.2 Mobile First (CSS) ........................................................................................... 37
5.7.3 Botones y Campos de texto (CSS) .................................................................. 38
6 OneclickCheckout (Pago con un click)..................................................................... 39
6.2 Preparación del pago (primera compra) ......................................................... 39
6.3 Eliminación del Token ...................................................................................... 41
7 Anulaciones ............................................................................................................. 41
8 Otros métodos de integración ................................................................................ 43
4
9 Personalización........................................................................................................ 43
10 Verificador de transacciones ............................................................................... 44
9.1 Verificar por identificador de la transacción ........................................................ 44
9.2 Verificar por el número de transacción del comercio ..................................... 45
11 Paso a Producción (Cronograma estimado) ........................................................ 46
ANEXOS ........................................................................................................................... 48
Anexo A.1 Php ............................................................................................................. 48
Anexo A.2 .................................................................................................................... 49
Anexo B.1 Java ............................................................................................................ 50
Anexo B.2 .................................................................................................................... 51
Anexo C.1 C# ............................................................................................................... 52
Anexo C.2 .................................................................................................................... 53
Anexo D.1 Python ....................................................................................................... 54
Anexo D.2 .................................................................................................................... 55
Anexo E.1 Node.js ....................................................................................................... 56
Anexo E.2 .................................................................................................................... 57
Anexo F.1 VB.net ......................................................................................................... 59
Anexo F.2 .................................................................................................................... 60
Anexo G ....................................................................................................................... 61
Anexo H ....................................................................................................................... 62
Anexo I ........................................................................................................................ 64
5
Figuras
FIGURA 1. ESQUEMA DE SEGURIDAD 10
FIGURA 2. EJEMPLO EN PHP DEL PRIMER MÉTODO (PARA OBTENER EL ID) 12
FIGURA 3. RESPUESTA EN FORMATO JSON (ID) 12
FIGURA 4. SCRIPT DE FORMULARIO DE PAGO. 13
FIGURA 5. CÓDIGO HTML DE INVOCACIÓN DEL FORMULARIO DE PAGO 13
FIGURA 6. CÓDIGO EJEMPLO DEL FORMULARIO DE PAGO 13
FIGURA 7. FORMULARIO DE PAGO CON DATOS DE PRUEBAS PARA SU USO 14
FIGURA 8. PARÁMETRO RESOURCEPATH OBTENIDO DEL GATEWAY DE PAGOS 14
FIGURA 9. SEGUNDO MÉTODO UTILIZANDO EL PARÁMETRO RESOURCEPATH 15
FIGURA 10. PROCESAMIENTO DE LA TRANSACCIÓN – RESPUESTA FORMATO JSON FASE 1. 15
FIGURA 11 . CÓDIGO EJEMPLO DEL PRIMER MÉTODO QUE HACE LA PETICIÓN DEL ID (CHECKOUTID)
FASE 2. 22
FIGURA 12. PARTE DE LA RESPUESTA EN FORMATO JSON EN LA FASE 2 23
FIGURA 13. JAVASCRIPT PARA DIFERIDOS (INSTALLMENTS). 31
FIGURA 14. EJEMPLO DE INTERFAZ PREVIA DE SELECCIÓN DE DIFERIDOS 33
FIGURA 15. CAMPO DE DIFERIDOS EN RESPUESTA DE LA TRANSACCIÓN 33
FIGURA 16. OPCIÓN DE DIFERIDOS 33
FIGURA 17. OPCIÓN TIPO DE CRÉDITO 34
FIGURA 18. CÓDIGO JAVASCRIPT DE LA IMPLEMENTACIÓN DE DIFERIDOS Y TIPOS DE CRÉDITO 35
FIGURA 19. FORMULARIO CON LAS OPCIONES DE DIFERIDOS Y TIPOS DE CRÉDITO 36
FIGURA 20. PARTE DE LA RESPUESTA DE UNA TRANSACCIÓN CON TIPO DE CRÉDITO. 36
FIGURA 21. CÓDIGO PARA VALIDACIÓN DEL CAMPO CARDHOLDER (NOMBRE DEL DUEÑO DE LA
TARJETA). 37
FIGURA 22. ESTILO PLANO DEL FORMULARIO DE PAGO 37
FIGURA 23. FORMULARIO ADAPTADO PARA APLICACIONES MÓVILES 38
FIGURA 24. CÓDIGO PARA ACTIVAR LA CAPTURA (TOKENIZACIÓN) DE LOS DATOS DE LA TARJETA DEL
CLIENTE. 39
FIGURA 25. FORMULARIO INCLUYENDO LA OPCIÓN DE CAPTURA DE DATOS. 39
FIGURA 26. FORMULARIO DE PAGO ONECLICKCHECKOUT (PAGO CON UN CLICK) 40
FIGURA 27. CAMBIO DE REGLA CSS PARA LOS DIFERIDOS Y TIPOS DE CRÉDITO ONECLICKCHECKOUT 40
FIGURA 28. FUNCIÓN DE ELIMINACIÓN DEL TOKEN. 41
FIGURA 29. JSON DE RESPUESTA AL EJECUTAR LA FUNCIÓN DE ELIMINACIÓN. 41
FIGURA 30. MENSAJE DE ERROR EN LA TRANSACCIÓN YA QUE NO EXISTE EL TOKEN. 41
FIGURA 31. PARTE DEL CONTENIDO DEL JSON EN UNA TRANSACCIÓN APROBADA 42
FIGURA 32. MÉTODO DE ANULACIÓN 42
FIGURA 33. RESPUESTA DE UNA ANULACIÓN EN FORMATO JSON 43
FIGURA 34. IMAGEN DE REFERENCIA EN LA PERSONALIZACIÓN DE REGLAS DE ESTILOS. 44
FIGURA 35. FUNCIÓN PARA VERIFICAR Y OBTENER SI UNA TRANSACCIÓN FUE PROCESADA
(ACEPTADA/RECHAZADA) 45
FIGURA 36. MUESTRA PARCIAL DEL JSON DE RESPUESTA DONDE ENCONTRARÁN DATOS IMPORTANTES
45
FIGURA 37. EJEMPLO DE FUNCIONAMIENTO EN UN PORTAL WEB 45
FIGURA 38. FUNCIÓN PARA VERIFICAR Y OBTENER SI UNA TRANSACCIÓN FUE PROCESADA
(ACEPTADA/RECHAZADA) MEDIANTE EL MERCHANTTRANSACTIONID 45
6
Tablas
TABLA 1. PARÁMETROS GENERALES .......................................................................................................... 11
TABLA 2. PARÁMETROS DE LA FASE 1 ........................................................................................................ 12
TABLA 3. EJEMPLO DE UNA COMPRA CON IMPUESTOS ............................................................................ 20
TABLA 4. DESCRIPCIÓN DE DATOS IMPORTANTES ..................................................................................... 23
TABLA 5. CÓDIGOS GENERALES DE MENSAJES TRANSACCIONALES EN PRODUCCIÓN .............................. 24
TABLA 6. CÓDIGO DE MENSAJES GENERALES EN PRUEBAS ....................................................................... 27
TABLA 7. CÓDIGOS DE RESPUESTAS EN LA CREACIÓN DEL FORMULARIO (1RA. FUNCIÓN). ..................... 28
TABLA 8. BANCO ADQUIRENTE.................................................................................................................. 28
TABLA 9. AZ TARJETAS DE CRÉDITO............................................................................................................ 29
TABLA 10. CÓDIGO DE RESPUESTA EMITIDA POR EL BANCO. .................................................................... 30
TABLA 11. TIPOS DE CRÉDITO ..................................................................................................................... 34
TABLA 12. PASOS PARA LA SALIDA A PRODUCCIÓN ................................................................................... 46
7
1. Introducción
Dataweb les permite integrar su negocio al e-commerce mediante la implementación
de un botón de pagos en su sitio web. Con este producto, podrá ofrecerles a sus
clientes la mejor experiencia al momento de realizar sus pagos en compras en línea
con todas las tarjetas bancarias.
Todo lo expuesto en el documento es lo que se debe integrar en sus portales web, los
campos son mandatorios, el código fuente adjunto es referencial y sirve como guía,
finalmente la implementación del botón es responsabilidad del comercio y depende de
la experiencia de la persona que hayan designado como implementador.
Si existe algún problema con la obtención de un dato del documento entonces tienen
que comunicarlo vía correo electrónico al personal técnico que le dará soporte en la
integración, una vez puesto en producción cualquier consulta o soporte debe ser
mediante la cuenta de correo electrónico de servicio servddpago@datafast.com.ec
Antes de pasar a producción, Datafast S.A. deberá certificar el desarrollo aplicado por
el comercio, por favor revisar la tabla 12 donde se muestran los tiempos estimados a
este proceso.
2. DATAWEB
Es una solución de forma de pago compuesta por una API y un widget (Con
certificación PCI DSS). Permite la integración en los diferentes portales e-commerce ya
sean de desarrollo propio o por medio de CMS, de aquí en adelante se lo describirá
como botón de pagos.
2.1 Front-end
Al ser una solución web, su estructura está definida por las tecnologías:
➢ HTML
➢ CSS
➢ JavaScript
➢ Python
➢ Java
➢ Php
➢ Groovy
8
➢ VB.Net
➢ Ruby
➢ NodeJs
➢ C#
➢ Scala
2.3 Certificados
El botón de pagos utiliza certificado TLS 1.2 con encriptación SHA-2 (256 bits)
por lo que su sitio web debe poseer el mismo tanto en ambientes de pruebas y
producción.
9
Figura 1. Esquema de seguridad
Puede que se tenga que activar el módulo CURL para esta prueba.
3. Fases de Integración
Para la integración de la solución se ha dividido en dos etapas de pruebas antes
del paso al ambiente de producción.
En ambos casos se debe incluir la siguiente línea de Javascript después del tag
de cierre </body>
10
<script type="text/javascript" src="https://www.datafast.com.
ec/js/dfAdditionalValidations1.js">
Parámetro Descripción
url Indica el ambiente en el cual se está trabajando (Prueba /
Producción)
mid Indica el identificador del comercio
tid Indica el identificador del terminal
textMode Este parámetro en ambiente de producción no se incluye en
el método, pero en pruebas si es necesaria (Fase 2) tal como
se verá en los ejemplos.
11
Los parámetros en esta sección son los que se describen en la tabla
2.
Parámetro Descripción
url https://test.oppwa.com
entityId 8a829418533cf31d01533d06f2ee06fa
amount Monto de la transacción, ejemplo: 5.00
currency El valor es USD
paymentType Para compras el valor es DB
Authorization Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8
WHQ3RjIyUUVOWA==
12
que este checkoutId se obtiene cada vez que se ejecute el método y
tiene una caducidad de 30 minutos.
13
Figura 7. Formulario de Pago con datos de pruebas para su uso
Para esta fase puede utilizar los datos de tarjeta de crédito que se
muestran en la figura 7. Por asuntos de revisión, en el campo
cardholder se debe poner el nombre del comercio.
14
Figura 9. Segundo método utilizando el parámetro resourcePath
15
3.2 Fase dos (Prueba Final)
Una vez integrado el botón en su fase inicial de pruebas procederemos a
realizar algunos cambios en el método inicial para poder así realizar
transacciones de pruebas hacia el switch transaccional de Datafast en
ambiente de desarrollo. En la fase uno las transacciones no llegan a
Datafast.
➢ entityId
➢ Authorization (Bearer)
3.2.1.1 Nombre
Este campo se refiere al nombre del usuario que está
realizando la transacción, el mismo será asignado a un
campo disponible de la plataforma.
3.2.1.3 Apellido
Este campo se refiere al apellido del usuario que está
realizando la transacción, el mismo será asignado a un
campo disponible de la plataforma.
16
3.2.1.4 Dirección IP
Este campo se refiere a la dirección ip del equipo desde
donde el usuario está realizando la transacción, el mismo
será asignado a un campo disponible de la plataforma, no
debe enviar la IP de su servidor.
17
contrario le emitirá error. En el caso de usar RUC se debe
cortar y solo enviar la longitud indicada, internamente en
su sistema puede guardar el dato completo, si el dato es
menor a la longitud requerida entonces se debe
completar con ceros a la izquierda.
3.2.1.10.1 Nombre
Nombre del producto, no se acepta el &
3.2.1.10.2 Descripción
Descripción del producto.
3.2.1.10.3 Precio
Precio del producto
3.2.1.10.4 Cantidad
Cantidad del producto
18
3.2.1.13 Dirección del Cliente
Dirección del cliente que realice la compra (generalmente
el de la factura), de formato alfanumérico y longitud
máxima de 100 caracteres.z
testMode
19
customParameters[SHOPPER_VAL_BASE0]
customParameters[SHOPPER_VAL_BASEIMP]
customParameters[SHOPPER_VAL_IVA]
a. % Base imponible $1
b. Valor de impuesto $0.12
c. Total (a+b) $1.12
d. % Base 0 $2
Total (c+d) $3.12 (Monto)
customParameters[SHOPPER_VAL_BASE0]=2.00
customParameters[SHOPPER_VAL_BASEIMP]=1.00
customParameters[SHOPPER_VAL_IVA]=0.12
customParameters[SHOPPER_MID]= 1000000406
customParameters[SHOPPER_TID]= PD100406
20
3.2.1.17.3 Datos de identificación
En esta sección se describen datos necesarios para
validación de identificación, estos valores son fijos.
3.2.1.17.4 Versión
Para obtener las nuevas características es importante
enviar la versión.
customParameters[SHOPPER_VERSIONDF]=2
risk.parameters[USER_DATA2]=SuComercio
21
Figura 11 . Código ejemplo del primer método que hace la petición del id (CheckoutId) fase 2.
22
Figura 12. Parte de la respuesta en formato JSON en la fase 2
Campo Descripción
Id Identificador de la
transacción ya sea
aprobada o rechazada
resultDetails.Authcode Campo código de
autorización de la
transacción aprobada. Ej.
058142.
23
generados por el banco en
la transacción, sino el valor
será igual al monto normal.
resultDetails.Interest El valor individual del
interés generado por el
banco en la transacción
resultDetails.Response Campo que indica si la
transacción fue aprobada o
rechazada, esto se detalla
en la sección de mensajes.
resultDetails.AcquirerCode Código asociado a la
entidad financiera que
aprobó/rechazó la
transacción.
resultDetails.ReferenceNo Número de referencia
resultDetails.CardType Nomenclatura del Banco
dueño de la tarjeta
utilizada en la transacción
4 Código de Mensajes.
El listado a continuación muestra los códigos de respuestas emitidos por el
switch transaccional. La descripción de los códigos debe ser personalizados
para una mejor comprensión por parte del cliente y evitar bloqueos, es decir
usted puede cambiar la descripción que le llega como respuesta en el JSON
para mostrarlo de mejor manera al usuario. De manera general los códigos que
empiezan por 800 son debido a un rechazo por la entidad bancaria.
24
interacción de la interfaz
provocando el envío del
identificador de la transacción más
de una vez. El técnico del comercio
debe solucionarlo.
200.100.101 invalid Request Message. No valid Mensaje generalmente emitido
XML. XML must be url-encoded! cuando se pone mal el dato de la
maybe it contains a not encoded cédula de identidad, teléfono entre
ampersand or something similar. otro. Si todo está bien, entonces se
debe revisar el campo Response, si
tiene el valor de 05 quiere decir
que la respuesta del banco
presentó una demora, esto puede
causar confusión al cliente debido
a que puede haberle llegado un
mensaje de consumo sin embargo
la respuesta no llegó a Datafast y
por ende no le llega al portal web
del comercio.
200.100.103 Invalid Request Message. The request Mensaje invalido. Cuando hay
contains structural errors algún dato errado enviado por
ejemplo una cédula así
1234567890
800.100.171 Transaction declined (pick up card) Pick up: Retenga y llame
700.300.700 referenced tx can not be reversed Reverso declinado
(reversal not possible anymore)
800.100.174 transaction declined (invalid amount) Monto inválido
800.100.151 transaction declined (invalid card) Tarjeta de crédito inválida
800.100.402 cc/bank account holder not valid No such issuer. Omisión de nombre
de tarjetahabiente.
800.100.190 transaction declined (invalid Transacción declinada por el
configuration data) banco, puede ser por estos
motivos dependiendo del campo
Response:
Enviaron un tipo de crédito que no
está autorizado por el banco al
comercio.
No está autorizado a transaccionar
con dicha tarjeta.
Transacción rechazada por el
banco que no pertenece a nuestra
red.
800.100.197 transaction declined (registration Customer cancellation
cancelled externally)
800.100.176 transaction declined (account Transacción rechazada por el
temporarily not available. Please try banco, intentar de nuevo. Esto
again later) ocurre generalmente con las
tarjetas de débito.
100.400.311 transaction declined (format error) Format Error
100.100.100 request contains no creditcard, bank No se envió datos de la tarjeta,
account number or bank name generalmente este un problema
25
técnico de la página web del
comercio, no del botón.
800.100.165 transaction declined (card lost) Tarjeta reportada como pérdida
800.100.159 transaction declined (stolen card) Tarjeta reportada como sustraída
800.100.155 transaction declined (amount Fondos insuficientes
exceeds credit)
100.100.400 request contains no cc/bank account Se envía vacío el cardholder, esto
holder lo controla la página web del
comercio.
100.100.303 Card Expired Tarjeta expirada
800.100.170 transaction declined (transaction not Puede darse por el uso de una
permitted) tarjeta de débito que no puede
realizar compras por internet.
100.550.310 amount exceeds limit for the Monto excede el cupo
registered account
800.100.168 transaction declined (restricted card) Tarjeta restringida, cliente debe
llamar al banco.
800.100.179 transaction declined (exceeds Hay tarjetas que tiene un máximo
withdrawal count limit) de transacciones permitidas.
100.100.402 cc/bank account holder not valid Cardholder inválido, puede ser que
tenga caracteres especiales, la
validación es del gateway, no del
banco.
600.200.100 invalid Payment Method Modalidad invalida
700.100.200 non matching reference amount Verifique interés
700.400.200 cannot refund (refund volume Se intentó anular una transacción
exceeded or tx reversed or invalid que ya había sido anulada
workflow? previamente.
800.100.157 transaction declined (wrong expiry Vigencia de la tarjeta errada
date)
800.100.501 Card holder has advised his bank to Establecimiento cancelado
stop all recurring payments for this
merchant
800.100.100 transaction declined for unknown Puede ser por dos motivos:
reason La tarjeta tiene problemas por lo
que el cliente debe llamar al
Banco.
Transacción con una tarjeta de
débito que no tiene autorizado
compras por internet.
800.100.171 transaction declined (pick up card) Llame al centro de Autorización
800.300.500 transaction temporary blacklisted La tarjeta se encuentra en lista
(too many tries invalid CVV) negra debido a múltiples intentos
de transacciones con CVV errado,
se libera después de 48 horas.
800.300.501 transaction temporary blacklisted La tarjeta se encuentra en lista
(too many tries invalid expire date) negra debido a múltiples intentos
de transacciones con fecha de
caducidad errada, se libera
después de 48 horas.
900.100.201 error on the external gateway (bank) Se ha perdido la conexión con el
26
banco, inténtelo después de unos
minutos.
900.100.300 no response from connector/acquirer Existió una desconexión en el
[uncertain result] instante de la transacción, si el
problema persiste entonces
comunicarse rápidamente con
Datafast.
800.100.176 transaction declined (account Try Request Again. Transacción
temporarily not available. Please try rechazada por el banco, intente
again later) luego o llame al banco
600.200.201 Channel/Merchant not configured for Terminal inválido o diferido no
this payment method permitido.
600.200.500 Invalid payment data. You are not Mensaje emitido cuando no se ha
configured for this currency or sub asignado una marca de tarjeta para
type (country or brand) transaccionar.
800.100.151 transaction declined (invalid card) Tarjeta inválida
800.100.156 transaction declined (format error) Depende del valor del código en el
campo Response, revisar el
apartado 4.3.2
800.100.162 Transaction declined (limit exceeded) La tarjeta tiene un límite en el
monto en compras, aún teniendo
cupo.
100.100.101 invalid creditcard, bank account Tarjeta de crédito inválida
number or bank name /
100.700.801 identity contains no or invalid Se está enviando un campo mal, ya
identification value sea en el nombre o en su valor, el
técnico debe revisar internamente.
100.400.147 Payment void and transaction denied La transacción infringió una regla
by ReD Shield antifraude. Estas reglas fueron
definidas por el comercio al
momento de firmar.
Para detalles de que regla se activó
deben enviar un email servicio al
cliente
servbdpago@datafast.com.ec
100.400.149 Payment void and data error by ReD La transacción tiene datos que
Shield infringe una regla antifraude.
Para detalles de que regla se activó
deben enviar un email servicio al
cliente
servbdpago@datafast.com.ec
100.400.325 External risk system not available Si este mensaje se presenta en
muchas transacciones entonces el
comercio debe comunicarse con
Datafast de manera inmediata.
27
Código Descripción Web Detalle
000.100.112 Request successfully Approved (Pruebas), este
processed in 'Merchant in mensaje se recibe en la fase 2
Connector Test Mode' cuando se agrega el campo
testMode=External
000.100.110 Request successfully Approved (Pruebas), este
processed in 'Merchant in mensaje se recibe en la fase 1
Integrator Test Mode'
## Descripción
01 Pacificard
02 Diners
03 Pichincha
04 Banco Guayaquil
06 Solidario
07 Medianet
08 Banco del Austro
28
09 Coop. 29 de
Octubre
AZ Descripción
DC Diners
PM Mastercard Pacifico
MI Mastercard Internacional
PV Visa Pacífico
VI Visa Internacional
VP Visa Pichincha
BG American Express
VG Visa Banco Guayaquil
MG Mastercard Banco
Guayaquil
DG Débito Banco Guayaquill
DP Débito Pacificard
MP Mastercard Pichincha
DI Discover
CO Coop. 29 de Octubre
VM Visa Medianet
VA Visa Banco del Austro
MM Mastercard Medianet
MA Mastercard Banco del
Austro
CS Crédito Solidario
DS Débito Solidario
UP Unión Pay
29
Tabla 10. Código de respuesta emitida por el banco.
## Descripción
02 Significa que hay un problema con la tarjeta
del cliente, y tiene que llamar al Centro de
Autorización del banco
03 Establecimiento inválido. Primero debe
verificar si el comercio tiene asignado el tipo
de crédito reportado, si todo está bien
entonces llamar a DF y consultar.
04 Retenga la tarjeta y llame (puede haber sido
reportada como robada o está utilizando una
T.C. no válida)
05 Transacción rechazada por el banco, no
especifica el motivo, en este caso puede
llamar al banco y consultar
07 Retenga la tarjeta y llame
12 Transacción invalida, mensaje general
emitido por el banco, puede ser por que la
tarjeta no tiene permitido compras por
internet, generalmente las de débito.
13 Monto inválido
14 Error en el número de tarjeta
15 Error en el número de tarjeta
17 Socio cancelado
19 Transacción rechazada, favor reintente
41 Tarjeta pérdida. Retenga la tarjeta y llame
43 Tarjeta robada. Retenga la tarjeta y llame
51 Fondos insuficientes
54 Tarjeta expirada
57 Transacción inválida o no permitida (diferidos
mal enviado o transacción realizada con una
tarjeta de débito con restricciones)
61 Monto excede el crédito disponible
62 Tarjeta restringida
76 Cuenta Inválida. En este caso es por el uso de
una tarjeta de crédito no valida
(Renovaciones)
77 Modalidad inválida. Cuando no tiene
autorizado un tipo de crédito (diferido)
79 Vigencia errada (Fecha de caducidad)
80 Establecimiento cancelado
84 Significa que hay un problema con la tarjeta
del cliente, y tiene que llamar al Centro de
Autorización del banco
88 Transacción rechazada, favor reintente
89 Terminal inválida, se debe verificar si tiene el
tipo de crédito autorizado por el banco caso
contrario el comercio debe comunicarse con
Datafast para revisión.
30
91 Entidad fuera de linea (Puede ser que el
banco tuvo una intermitencia y justamente
llegó la transacción y no la procesó
FORMAT_ERROR Este mensaje es debido a la validación de la
cédula es decir está sobrepasando los 10
caracteres, generalmente cuando envían el
RUC
ER Puede ser por 3 motivos:
1. Transacción con mal cálculo de
impuestos.
2. No se está enviando el MID y TID
correctos (Error en la programación)
3. Transacciones con monto menor a
$1.00
5 Opciones Avanzadas
Esta sección describirá como utilizar las opciones de tipos de créditos otorgados
y autorizados por los bancos. Para esto se debe incluir la librería JQuery, por
ejemplo:
5.1 Diferidos
Para los diferidos o cuotas se debe agregar código javascript en la misma página
o sección en donde se invoca el formulario de pago, en el ejemplo a
continuación se lo agrega de forma estática, pero se recomienda que esto sea
dinámico.
Este código se puede generar de forma dinámica si acaso se posee los tipos de
diferidos aprobados por el banco emisor en alguna tabla de la base de datos y
agregarlos en campos de texto ocultos, sino puede dejarlo fijo en el formulario,
igual la validación es que si se selecciona la opción 0 “cero” o simplemente no
se envía este campo entonces se lo interpreta como una transacción corriente.
31
Código:
<script type="text/javascript">
var wpwlOptions = {
onReady: function() {
'<select name="recurring.numberOfInstallments"><option
value="0">0</option><option value="3">3'+
'</option><option value="6">6</option><option
value="9">9</option></select>' +
'</div>';
$('form.wpwl-form-card').find('.wpwl-
button').before(numberOfInstallmentsHtml);
} } </script>
Muy importante que el nombre (atributo name) del elemento HTML (select)
sea recurring.numberOfInstallments debido a que es un campo válido y
reconocido por la plataforma de pago, cualquier cambio de este nombre no se
garantiza el correcto funcionamiento.
32
Figura 14. Ejemplo de interfaz previa de selección de diferidos
33
5.2 Tipo de Crédito
Para utilizar la opción de tipos de crédito se debe conocer con exactitud
lo que el banco le haya autorizado, una vez en conocimiento de lo antes
expuesto se debe utilizar el campo
customParameters[SHOPPER_TIPOCREDITO]. La siguiente tabla
muestra los tipos de crédito disponibles con el respectivo valor del
parámetro.
SHOPPER_TIPOCREDITO Descripción
00 Transacción corriente
01 Diferido corriente
02 Diferido con Interés
03 Diferido sin Interés
07 Diferido con Interés + Meses de
Gracia
09 Diferido sin Interés + Meses de
Gracia
21 Diferido Plus Cuotas
22 Diferido Plus
var tipocredito =
34
'Tipo de crédito:<select
name="customParameters[SHOPPER_TIPOCREDITO]"><option
value="00">Corriente</option>'+
'</div>';
$('form.wpwl-form-card').find('.wpwl-
button').before(tipocredito);
35
Figura 19. Formulario con las opciones de diferidos y tipos de crédito
36
Figura 21. Código para validación del campo cardholder (Nombre del dueño de la
tarjeta).
<meta name = "viewport" content = "ancho = ancho del dispositivo, escala inicial = 1">
37
/* Valor por defecto, aplica a todos los dispositivos */
.button {
width: 50%;
38
6 OneclickCheckout (Pago con un click)
Esta guía le permite lograr una aceleración significativa del proceso de compra
reutilizando los datos que un cliente ingresó para una transacción.
Figura 24. Código para activar la captura (tokenización) de los datos de la tarjeta del cliente.
A continuación el código.
$('form.wpwl-form-card').find('.wpwl-
button').before(createRegistrationHtml);
39
En el Json de respuesta de la transacción podrá observa un nuevo campo
llamado registrationId el cual contiene el token asociado a los datos de la
tarjeta de crédito. Este campo debe ser guardado en una tabla de su base
de datos asociada a un id del usuario del sistema, de esta manera usted
podrá consultar en la siguiente compra si ese usuario tiene tokens
asociados.
Figura 27. Cambio de regla CSS para los diferidos y tipos de crédito OneclickCheckout
40
6.3 Eliminación del Token
Una vez almacenado, un token se puede eliminar usando el método
DELETE HTTP usando la siguiente función.
7 Anulaciones
En este apartado se indicará el proceso de anulación que debe ser
implementado por el comercio de acuerdo con sus metodologías y estándares.
41
Figura 31. Parte del contenido del JSON en una transacción aprobada
42
Figura 33. Respuesta de una anulación en formato JSON
Esta modalidad debe ser validada por Datafast y las entidades financieras
involucradas.
9 Personalización
El botón de pagos puede ser personalizado en su apariencia (CSS), solo basta
conocer el nombre de las clases asociadas actualmente a los elementos. Para
adicional información se debe solicitar a Datafast.
43
Figura 34. Imagen de referencia en la personalización de reglas de estilos.
10 Verificador de transacciones
En el caso de que el portal no reciba el mensaje de aprobación o rechazo de la
transacción se ha implementado la funcionalidad de verificar si la misma consta
en nuestra base, de ser así usted podrá realizar una consulta y obtener los
datos de esta e ingresarla a su sistema. Existen dos maneras de realizar las
verificaciones.
44
Figura 35. Función para verificar y obtener si una transacción fue procesada (aceptada/rechazada)
Figura 36. Muestra parcial del JSON de respuesta donde encontrarán datos importantes
Figura 38. Función para verificar y obtener si una transacción fue procesada (aceptada/rechazada) mediante el
merchantTransactionId
45
Al igual que la primera modalidad esta función retorna como respuesta
un JSON en el cual podrán obtener los datos de la transacción. Deben
tomar en cuenta que cambian ciertas claves (keys) dentro del array y
que puede retornar más de un dato en el caso de que se desea consultar
una transacción y esta fue anulada, por lo que en la consulta se
obtendrán dos registros, el DB y el RF
46
horas laborables para entregar el
informe.
Gestión de Datafast se encargar de gestionar 4 días Datafast
códigos la creación de códigos bancarios laborables
bancarios que autoricen al comercio poder
transacciones con el botón de
pagos.
Es importante tener claro los
tipos de créditos habilitados por
la entidad financiera
Gestión de Datafast se encarga de la 1 día Datafast
códigos creación de MID y TID una vez
transaccionales que el banco haya proporcionado
los códigos como se menciona en
el ítem anterior.
47
ANEXOS
Anexo A.1 Php
Paso 1. Código básico en lenguaje PHP, función para obtener el CheckoutId.
function request() {
$url = "https://test.oppwa.com/v1/checkouts";
$data = "entityId=8a829418533cf31d01533d06f2ee06fa" .
"&amount=92.00" .
"¤cy=USD" .
"&paymentType=DB";
$ch = curl_init();
'Authorization:Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA=='));
$responseData = curl_exec($ch);
if(curl_errno($ch)) {
return curl_error($ch);
curl_close($ch);
return $responseData;
48
Anexo A.2
PASO 3. Código básico en PHP, función de comprobación del estado de la transacción.
Previamente ya se ha obtenido el parámetro $resourcePath basado en la URL en el
atributo action del tag FORM
function request() {
$url = "https://oppwa.com".$resourcePath;
$url .= "?entityId=".$entityId;
$ch = curl_init();
'Authorization:Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA=='));
$responseData = curl_exec($ch);
if(curl_errno($ch)) {
return curl_error($ch);
curl_close($ch);
return $responseData;
49
Anexo B.1 Java
Paso 1. Código básico en lenguaje JAVA, función para obtener el checkoutId
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization", "Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA==");
conn.setDoInput(true);
conn.setDoOutput(true);
+ "entityId=8a829418533cf31d01533d06f2ee06fa"
+ "&amount=92.00"
+ "¤cy=USD"
+ "&paymentType=DB";
wr.writeBytes(data);
wr.flush();
wr.close();
InputStream is;
else is = conn.getInputStream();
return IOUtils.toString(is);
50
Anexo B.2
PASO 3. Código básico en JAVA, función de comprobación del estado de la transacción.
Previamente ya se ha obtenido el parámetro String resourcePath basado en la URL en
el atributo action del tag FORM
conn.setRequestMethod("GET");
conn.setRequestProperty("Authorization", "Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA==");
InputStream is;
else is = conn.getInputStream();
return IOUtils.toString(is);
51
Anexo C.1 C#
Paso 1. Código básico en lenguaje C#, función para obtener el checkoutId
"&amount=92.00" +
"¤cy=USD" +
"&paymentType=DB";
request.Method = "POST";
request.Headers["Authorization"] = "Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA==";
request.ContentType = "application/x-www-form-urlencoded";
PostData.Write(buffer, 0, buffer.Length);
PostData.Close();
responseData = s.Deserialize<Dictionary<string,
dynamic>>(reader.ReadToEnd());
reader.Close();
dataStream.Close();
} return responseData;
52
Anexo C.2
PASO 3. Código básico en C#, función de comprobación del estado de la transacción.
Previamente ya se ha obtenido el parámetro String resourcePath basado en la URL en
el atributo action del tag FORM
string data="entityId=8a829418533cf31d01533d06f2ee06fa";
request.Method = "GET";
request.Headers["Authorization"] = "Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA==";
responseData = s.Deserialize<Dictionary<string,
dynamic>>(reader.ReadToEnd());
reader.Close();
dataStream.Close();
return responseData;
53
Anexo D.1 Python
Paso 1. Código básico en lenguaje Python, función para obtener el checkoutId
def request():
url = "https://test.oppwa.com/v1/checkouts"
data = {
'entityId' : '8a829418533cf31d01533d06f2ee06fa',
'amount' : '92.00',
'currency' : 'USD',
'paymentType' : 'DB'
try:
opener = urllib2.build_opener(urllib2.HTTPHandler)
request.add_header('Authorization', 'Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA==')
response = opener.open(request)
return json.loads(response.read());
except urllib2.HTTPError, e:
return e.code;
54
Anexo D.2
PASO 3. Código básico en Python, función de comprobación del estado de la
transacción. Previamente ya se ha obtenido el parámetro String resourcePath basado
en la URL en el atributo action del tag FORM
def request():
url = "https://test.oppwa.com/v1/checkouts/{id}/payment"
url += '?entityId=8a829418533cf31d01533d06f2ee06fa'
try:
opener = urllib2.build_opener(urllib2.HTTPHandler)
request.add_header('Authorization', 'Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA==')
response = opener.open(request)
return json.loads(response.read());
except urllib2.HTTPError, e:
return e.code;
55
Anexo E.1 Node.js
Paso 1. Código básico en Node.js, función para obtener el checkoutId
function request(callback) {
var path='/v1/checkouts';
'entityId':'8a829418533cf31d01533d06f2ee06fa',
'amount':'92.00',
'currency':'USD',
'paymentType':'DB'
});
var options = {
port: 443,
host: 'https://test.oppwa.com',
path: path,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': data.length,
'Authorization':'Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA=='
};
res.setEncoding('utf8');
jsonRes = JSON.parse(chunk);
return callback(jsonRes);
56
});
});
postRequest.write(data);
postRequest.end();
request(function(responseData) {
console.log(responseData);
});
Anexo E.2
PASO 3. Código básico en Node.js, función de comprobación del estado de la
transacción. Previamente ya se ha obtenido el parámetro String resourcePath basado
en la URL en el atributo action del tag FORM
function request(callback) {
var path='/v1/checkouts/{id}/payment';
path += '?entityId=8a829418533cf31d01533d06f2ee06fa';
var options = {
port: 443,
host: 'https://test.oppwa.com',
path: path,
method: 'GET',
headers: {
'Authorization':'Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA=='
};
57
var postRequest = https.request(options, function(res) {
res.setEncoding('utf8');
jsonRes = JSON.parse(chunk);
return callback(jsonRes);
});
});
postRequest.end();
request(function(responseData) {
console.log(responseData);
});
58
Anexo F.1 VB.net
Paso 1. Código básico en VB.net, función para obtener el checkoutId
"entityId=8a829418533cf31d01533d06f2ee06fa" +
req.Method = "POST"
req.Headers.Add("Authorization", "Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA==")
req.ContentType = "application/x-www-form-urlencoded"
req.ContentLength = byteArray.Length
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
reader.Close()
resStream.Close()
res.Close()
Return dict
End Function
59
Anexo F.2
PASO 3. Código básico en VB.net, función de comprobación del estado de la
transacción. Previamente ya se ha obtenido el parámetro String resourcePath basado
en la URL en el atributo action del tag FORM
"?entityId=8a829418533cf31d01533d06f2ee06fa"
req.Method = "GET"
req.Headers.Add("Authorization", "Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA==")
req.ContentType = "application/x-www-form-urlencoded"
reader.Close()
resStream.Close()
res.Close()
Return dict
End Function
responseData = Request()("result")("description")
60
Anexo G
Comprobación de conectividad con el gateway de pagos
curl https://test.oppwa.com/v1/checkouts -d
"entityId=8a829418533cf31d01533d06f2ee06fa" -d "amount=92.00" -d
"currency=USD" -d "paymentType=DB" -H "Authorization: Bearer
OGE4Mjk0MTg1MzNjZjMxZDAxNTMzZDA2ZmQwNDA3NDh8WHQ3RjIyUUVOWA=="
61
Anexo H
Los requerimientos técnicos se mencionan a continuación:
Cifrados seguros:
1. TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
2. TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
3. TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
4. TLS_DHE_RSA_WITH_AES_256_CCM_8
5. TLS_DHE_RSA_WITH_AES_256_CCM
6. TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384
7. TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384
8. TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
9. TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
10. TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
11. TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
12. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
13. TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
14. TLS_DHE_RSA_WITH_AES_128_CCM_8
15. TLS_DHE_RSA_WITH_AES_128_CCM
62
1. ECDHE-RSA-AES128-SHA
2. ECDHE-RSA-AES256-SHA384
3. ECDHE-RSA-AES256-SHA
4. DHE-RSA-AES128-SHA256
5. DHE-RSA-AES128-SHA
6. DHE-RSA-AES256-SHA256
7. DHE-RSA-AES256-SHA
63
Anexo I
Actualización de código para el paso a producción:
4.- Cambiar las credenciales de test a producción (Estas deben ser proporcionadas por
DF).
a) ID de entidad
b) ACCESS TOKEN
5.- Cambiar el MID y TID (Estas deben ser proporcionadas por DF).
c) MID
d) TID
6.- Agregar imagen de certificación. Si no tiene JS entonces agregue esto debajo del
formulario de pago(<form></form>)
<script type="text/javascript">
var wpwlOptions = {
onReady: function() {
$('form.wpwl-form-card').find('.wpwl-button'). before(datafast);
</script>
64
Una vez realizado esto, por favor enviar una captura de pantalla del botón ya que con
este cambio, debe mostrarse el Powered by Datafast con la imagen de las marcas de
tarjetas. Para ALIA, Datafast debe proporcionarle la instrucción para incluir el logo.
65