ALIGNET MERCHANT SOLUTION Virtual POS (V-POS)
Transcripción
ALIGNET MERCHANT SOLUTION Virtual POS (V-POS)
ALIGNET MERCHANT SOLUTION Virtual POS (V-POS) Guía de integración de comercios Documento técnico funcional que describe el procedimiento para la integración de un nuevo comercio a la plataforma AMS a través del Virtual Point Of Sale (V-POS) © 2005 - 2012 ALIGNET. Todos los Derechos reservados. Este documento es de carácter confidencial. Los contenidos y conceptos que se desarrollan en el presente documento no pueden ser utilizados por personas naturales o jurídicas a las que no se encuentre dirigida de manera explícita dicha información. Historia de Revisiones Fecha 2005-08-25 2005-09-02 2005-09-15 2005-09-19 Versión 0.1 0.2 0.8 0.9 Descripción Elaboración inicial del documento Definición de objetivos del documento Diagrama secuencia, mejoras varias Especificaciones Técnicas 2005-09-19 2005-09-30 1.0 1.2 2005-11-30 2005-11-30 2005-12-06 2006-03-27 2006-05-30 1.3 1.3 1.4 1.5 1.5 Revisión final Generación de llaves para esquema de seguridad Actualización de puntos 7, 8 , 9 Revisión final Actualizaciones puntos 7, 8 y Anexos Actualizaciones puntos 7, 8 y Anexos Revisión y control 2006-06-26 1.5 Modificación de plantilla 2008-06-30 2010-02-26 2.0.1 2.1.0 2012-05-12 2.3.1 Revisión general Revisión general: actualización de dominios para ambiente de pruebas y campos adicionales para el envío de datos Inclusión de campos adicionales de respuesta Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Autor R. Barturen H. Alosilla R. Barturén J. Botta y D. Cruz D. Cruz D. Cruz R. Barturén D. Cruz R. Barturén R. Barturén T. J. Carrasco T. J. Carrasco M. Alcalá J. Bautista J. Bautista Pág. 1 Índice 1. INTRODUCCIÓN.......................................................................................3 OBJETIVOS ..................................................................................................3 GLOSARIO ...................................................................................................3 FLUJO DE COMPRA ......................................................................................3 EXPERIENCIA DE COMPRA ............................................................................5 2. ¿QUÉ ES EL V-POS?...............................................................................8 DESCRIPCIÓN ..............................................................................................8 ARQUITECTURA ...........................................................................................8 SOLICITUD Y RESPUESTA DEL FLUJO DE PAGO ..............................................9 3. INTEGRACIÓN AL V-POS .....................................................................10 PROCEDIMIENTO DE INTEGRACIÓN AL V-POS .............................................10 ADMINISTRACIÓN DE LLAVES CRIPTOGRÁFICAS ............................................11 SOLICITUD DE PAGO ...................................................................................13 RESPUESTA DE PAGO ...................................................................................1 4. INTEGRACIÓN CON EL PLUG-IN...........................................................2 5. PREGUNTAS Y RESPUESTAS FRECUENTES .....................................3 6. DATOS ADICIONALES ............................................................................4 7. ANEXO 1: INTEGRACIÓN CON EL PLUG-IN PARA .NET C#...............5 INSTALACIÓN DEL PLUG-IN C# ......................................................................5 USO DEL PLUG-IN C# PARA ENVIAR INFORMACIÓN AL V-POS.........................6 USO DEL PLUG-IN C# PARA RECIBIR INFORMACIÓN DEL V-POS......................7 GENERACIÓN DE LLAVES EN C#....................................................................8 8. ANEXO 2: INTEGRACIÓN CON EL PLUG-IN Y GENERADOR DE LLAVES EN JAVA ........................................................................................10 INSTALACIÓN DEL PLUG-IN JAVA .................................................................10 COMPONENTES DEL PLUGIN DE JAVA 2.0.1 .................................................10 USO DEL PLUG-IN JAVA PARA ENVIAR INFORMACIÓN AL V-POS....................10 USO DEL PLUG-IN JAVA PARA RECIBIR INFORMACIÓN DEL V-POS.................12 GENERACIÓN DE LLAVES EN JAVA ...............................................................13 9. ANEXO 3: INTEGRACIÓN CON EL PLUG-IN PARA PHP 5 EN LINUX 15 REQUISITOS NECESARIOS...........................................................................15 COMPROBACIÓN DEL PHP PARA VER SI TIENE LAS LIBRERÍAS INSTALADAS Y FUNCIONANDO CORRECTAMENTE ................................................................15 INSTALACIÓN DEL PLUG-IN EN PHP5 ..........................................................16 USO DEL PLUG-IN EN PHP PARA ENVIAR INFORMACIÓN AL V-POS ...............22 USO DEL PLUG-IN EN PHP PARA RECIBIR INFORMACIÓN DEL V-POS ............26 GENERACIÓN DE LLAVES ............................................................................27 Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 2 1. Introducción Para realizar transacciones electrónicas los comercios requieren de una plataforma que les permita conectarse con el mundo transaccional de pagos virtuales. Para ello el flujo de pago, actualmente, está compuesto por dos procesos principales. El primero es el de autenticación que permite al tarjeta habiente tener mayor seguridad cuando esté realizando una compra por Internet. El proceso de Autenticación está compuesto de tres dominios principales: Adquirente con el servicio Merchant Plug-in (MPI), Emisor con el servicio Access Control Server (ACS) e Interoperabilidad con el servio del Directory Server. El segundo proceso es el de autorización, que permite realizar la solicitud de pago de una compra electrónica. Estos procesos serán atendidos por el V-POS, un servicio centralizado que permitirá al comercio integrarse fácilmente con el proceso de pago. Objetivos Este documento tiene como objetivos lo siguiente: • • Describir las funcionalidades que brinda el V-POS. Describir los pasos necesarios para la integración con el VPOS. Glosario A lo largo del presente documento se utilizan los siguientes términos bajo la conceptualización que se señala a continuación: • • • • • • Proceso de Autenticación: Servicio de verificación del tarjeta habiente Proceso de Autorización: Servicio de autorización del pago MPI: Merchant Plug-In. Servicio de Autenticación para el Adquirente y Comercios ACS: Access Control Server. Servicio de Autenticación para el Emisor V-POS: Virtual Point Of Sale. Interfaz del mundo transaccional de pagos virtuales Tarjeta habiente: Titular de la tarjeta Flujo de Compra El flujo de compra se inicia cuando el tarjeta habiente desea realizar una compra en un comercio electrónico. Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 3 El tarjeta habiente escoge los productos que desea comprar agregándolos al carrito de compras del comercio. A continuación se listan los pasos del flujo de compra (Ver Figura 1. Flujo de Compra): 1. El Comercio desde un formulario envía al V-POS los datos de compras haciendo uso del plug-in proporcionado por ALIGNET, exceptuando el número de Tarjeta de Crédito, la fecha de Vencimiento y el CVV2. 2. El V-POS muestra en el navegador del tarjeta habiente una página donde se ingresa el número de tarjeta de crédito, la fecha de vencimiento, y el valor CVV2. 3. El usuario ingresa en la pantalla anterior, los valores solicitados. 4. El V-POS envía al MPI los valores correspondientes para iniciar el proceso de autenticación. 5. Si la tarjeta está enrolada a Verified by Visa/MasterCard SecureCode, se le presentará una página solicitándole su contraseña que autenticará su compra. 6. Al finalizar el proceso de autenticación, el MPI devuelve al VPOS los valores de respuesta de la autenticación. 7. El V-POS después de analizar los valores devueltos por el MPI, y envía al sistema V-Payment una solicitud de pago que inicia el proceso de autorización. 8. El V-Payment luego de realizar el proceso de autorización devuelve los valores al V-POS para su posterior análisis del proceso de compra. 9. El V-POS devuelve el resultado de la compra al comercio. El comercio haciendo uso del plug-in (ver Anexos) obtiene los valores de respuesta; quien finalmente le mostrará al tarjeta habiente el resultado de su compra. Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 4 Figura 1: Flujo de Compra Experiencia de Compra A continuación se mostrará la experiencia de compra electrónica del tarjeta habiente aprovechando la plataforma: 1. El tarjeta habiente ingresa al sitio Web del Comercio electrónico. Figura 2: Página de Inicio del Comercio 2. El tarjeta habiente llena el carrito de compras, luego ingresa sus datos de compra, dando inicio al flujo de compra. Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 5 Figura 3: Página de Carrito de compras del Comercio 3. Luego al tarjeta habiente se le mostrará la página centralizada del V-POS y le solicitará el ingreso de los datos de su tarjeta. Figura 4: Página centralizada V-POS para el ingreso de datos de la tarjeta 4. Si el tarjeta habiente se encuentra enrolado o afiliado a Verified by Visa (proceso solicitado al Emisor de la tarjeta por el tarjetahabiente) aparecerá la página de autenticación. Figura 5: Página de autenticación del tarjeta habiente Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 6 5. Finalmente al tarjeta habiente le aparecerá la página resultado del Comercio. Figura 6: Página de resultado del comercio Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 7 2. ¿Qué es el V-POS? El V-POS es el sistema que atiende la solicitud de pago enviado desde los comercios virtuales, cuya funciones principales son concentrar y preprocesar las solicitudes de Pago. Concentrar, porque centraliza los dos procesos principales de un flujo de compra (autenticación y autorización); Preprocesar, porque procesa la validación de los datos de la tarjeta antes de iniciar el proceso de autenticación y autorización. Descripción Su función principal es concentrar las transacciones de compra por comercio electrónico para validar datos generales de la compra, así como centralizar la obtención y seguridad de los datos sensibles del tarjeta habiente (número de tarjeta, fecha de expiración y CVV2), iniciar el proceso de pago – Proceso de Autenticación y Proceso de Autorización - para que finalmente se le entregue la respuesta de la transacción al comercio que lo solicitó. Arquitectura El comercio se comunicará vía Internet, a través de un canal seguro (HTTPS) con el V-POS para enviarle los datos de la compra desde un formulario a través del navegador del tarjeta habiente; luego el V-POS le presentará al tarjeta habiente una página de ingreso de datos sensibles para luego iniciar los procesos de pago: Autenticación y Autorización. Finalmente el V-POS le enviará desde un formulario, el resultado de la transacción al comercio vía Internet, a través de un canal seguro (HTTPS). En el siguiente gráfico se muestra la arquitectura general del V-POS: Figura 7: Arquitectura con el V-POS Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 8 Solicitud y Respuesta del Flujo de Pago El comercio enviará una solicitud o petición de pago al V-POS quien se encargará de realizar tanto el proceso de autenticación como de autorización y recibirá una respuesta a los dos proceso como se muestra en la figura anterior. Tarjeta Habiente Sitio Web Comercio V-POS Autenticación V-Payment Autorización 1: Completa Datos de Compra 2: Envía datos de Compra 3: muestra página centralizada 4: Ingresa datos de tarjeta 5: Solicita Autenticación 6: Solicita clave VbV 7: Ingresa su clave VbV 8: envía resultado de Autenticación 9: Solicita Autorización 10: envía resultado de Autorización 11: resultado a la página de respuesta 12: Muestra resultado Fig. 8: Diagrama de secuencia de la solicitud y respuesta del flujo de pago Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 9 3. Integración al V-POS Procedimiento de Integración al V-POS La integración se hace inicialmente en un ambiente de Pruebas y luego se traslada a un ambiente de Producción. Para el Ambiente de Pruebas: Los principales pasos para la integración del comercio al V-POS en el ambiente de Pruebas son: 1. Se le hace entrega al comercio del documento de plataforma de sitio Web, el cual debe ser devuelto con todos los datos llenos 2. Se aprobará el documento y se entregará el KIT de seguridad compuesto por un Componente de seguridad (plug-in) y el Generador de llaves de criptografía y de firma de digital, el cual será utilizado durante el proceso de compra 3. El comercio revisará y evaluará para los desarrollos necesarios la Guía de integración de comercios, el Componente de seguridad (plug-in), así como el Generador de llaves de criptografía y de firma digital 4. El comercio confirmará la fecha de término de su desarrollo y solicitará la habilitación del ambiente de prueba 5. El comercio deberá ser registrado en los sistemas de autenticación y autorización antes de iniciar un proceso de compra de prueba. En esta fase de registro del comercio, se le solicitarán los datos necesarios para su integración en los diferentes sistemas involucrados (Directory Server, MPI, VPayment). 6. Se enviarán las referencias o personas de contacto del comercio, que serán responsables de las pruebas, de iniciar el intercambio de llaves de criptografía y de firma digital entre ALIGNET y el comercio. Se hará entrega al comercio de los valores de configuración (IDACQUIRER, IDECOMMERCE) requeridos por el Componente de seguridad (plug-in). 7. El comercio hace uso de la aplicación Generador de llaves de criptografía y de firma digital que se le proporcionó (ver Administración de llaves criptográficas). Las llaves públicas de pruebas generadas por el comercio serán enviadas a ALIGNET por un canal seguro (Vg.: correo seguro). Se enviarán las llaves públicas del V-POS que son requeridas por el componente de seguridad (plug-in). El comercio definirá un valor para el vector de inicialización que informará por el mismo medio. 8. El comercio y ALIGNET confirman por correo al Adquirente que sus llaves se encuentra configurado en el ambiente de pruebas 9. Se envía al comercio los datos de prueba y la ruta de acceso al V-POS en el ambiente de prueba 10. El comercio acuerda una fecha y hora para realizar las pruebas. Se definen los responsables de las pruebas tanto por el lado de ALIGNET como del comercio 11. Se realizan las pruebas 12. ALIGNET informa al Adquirente el término y el resultado de las pruebas en el Ambiente de Pruebas. Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 10 13. Es posible que el Adquirente realice pruebas adicionales de validación Nota: Según el procedimiento del Adquirente, puede inscribir al comercio en Verified by Visa/MasterCard SecureCode cuando lo estime conveniente. Para el Ambiente de Producción: Los principales pasos para la integración del comercio al V-POS en el ambiente de Producción son: 1. Se solicita al Comercio los datos de producción requeridos para la integración al V-POS. El formato será proporcionado por ALIGNET. Se registrará al Comercio en los sistemas de Autenticación y Autorización de Producción 2. Se enviarán las referencias o personas de contacto del comercio para iniciar el intercambio de llaves de criptografía y de firma digital entre ALIGNET y el Comercio así como la entrega de los valores de configuración (IDACQUIRER, IDECOMMERCE) al comercio 3. El comercio utiliza una vez más de la aplicación Generador de llaves de criptografía y de firma digital que se le proporcionó (ver Administración de llaves criptográficas). Las nuevas llaves públicas generadas por el comercio serán enviadas a ALIGNET por un canal seguro (Vg.: correo seguro). Se enviarán las llaves públicas del V-POS que son requeridas por el Componente de seguridad (plug-in). El comercio definirá un valor para el vector de inicialización que será enviado a ALIGNET 4. El comercio y ALIGNET confirman por correo al Adquirente que sus llaves se encuentran configuradas en el Ambiente de Producción 5. Se envía al comercio la ruta de acceso al V-POS Producción y los datos necesarios para realizar las pruebas en producción 6. El comercio acuerda una fecha y hora para realizar las pruebas. Se definen los responsables de las pruebas tanto por parte de ALIGNET como por el lado del comercio 7. Se realizan las pruebas 8. ALIGNET informa al Adquirente el término de las pruebas en el ambiente de producción 9. Es posible que el Adquirente desee realizar pruebas adicionales de validación Nota: Según el procedimiento del Adquirente, puede inscribir al comercio en Verified by Visa cuando lo estime conveniente. Administración de llaves criptográficas Con la finalidad de que la transmisión de información entre el comercio y el V-POS se realice de manera segura, guardando los tres principios de seguridad: Protección, Integridad y Autenticidad de datos, el comercio generará un par de llaves (pública y privada) para cifrar la información y un par de llaves (pública y privada) Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 11 para la generación de la firma digital de la solicitud de pago. Las llaves públicas serán enviadas por el comercio al V-POS durante la etapa de integración del comercio (ver Integración al V-POS). De la misma manera, el V-POS generará un par de llaves para el cifrado y un par de llaves para la generación de la firma digital de la respuesta de pago. Las llaves públicas serán enviadas por el V-POS hacia el comercio durante la etapa de integración del comercio (ver Integración al V-POS). Una vez que se ha generado las llaves, tanto el comercio como el V-POS deberán intercambiar sus respectivas llaves públicas, enviando éstas a través de correo electrónico seguro. De forma adicional el comercio definirá un valor para el vector de inicialización que se utilizará para la criptografía y también será enviado. Este será un valor hexadecimal de 16 caracteres. Por ejemplo: d412589745df36fa. Es responsabilidad del comercio el almacenamiento de las llaves en un entorno seguro. A continuación se muestra el gráfico resume el intercambio de llaves entre el comercio y el V-POS de ALIGNET: COMERCIO V-POS PAR DE LLAVES RSA 1024 BITS PARA FIRMA DIGITAL PAR DE LLAVES RSA 1024 BITS PARA CIFRADO RSA GENERACION DE LLAVES PAR DE LLAVES RSA 1024 BITS PARA FIRMA DIGITAL PAR DE LLAVES RSA 1024 BITS PARA CIFRADO RSA LLAVE PUBLICA 1024 BITS PARA FIRMA DIGITAL CORREO SEGURO LLAVE PUBLICA 1024 BITS PARA CIFRADO RSA INTERCAMBIO DE LLAVES SE ENVIAN AMBAS LLAVES PUBLICAS GENERADAS POR EL COMERCIO CORREO SEGURO Figura 9: Intercambio de llaves comercio y V-POS Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 12 Solicitud de pago La solicitud de pago se define como el conjunto de datos que necesita el V-POS para generar la solicitud de autenticación así como la solicitud de autorización. Para iniciar la solicitud de pago, el comercio deberá preparar una petición POST HTTPS, en la que utilizará el Componente de seguridad (plug-in) para enviar la petición de manera segura al VPOS. Parámetros de Envío Los parámetros que enviará el comercio al V-POS para iniciar la solicitud de pago son los siguientes: Campo IDACQUIRER IDCOMMERCE XMLREQ DIGITALSIGN SESSIONKEY Descripción Identificador fijo del Adquirente que permite al VPOS reconocer a la entidad adquirente del comercio. Este valor es generado por ALIGNET. Identificador fijo del comercio o tienda virtual que permite al V-POS reconocer al comercio que está enviando la solicitud de pago. Mensaje de solicitud de pago que contiene los datos de la compra. Este mensaje es generado por el plug-in, quien se encarga de cifrarlo para su envío al V-POS. Firma digital del mensaje XMLREQ que asegura tanto la autenticidad del emisor y receptor, como la integridad de la información. Esta firma digital es generada por el plug-in. Llave de sesión con la cual se cifrará el mensaje XMLREQ. Esta llave es generada por el plug-in. Para el envío de la solicitud de pago se deberá de generar una solicitud POST HTTPS, usando un formulario HTML, implementado en el lenguaje de programación del comercio o tienda virtual. A continuación un ejemplo del formulario el cual deberá tener la forma siguiente: <form name=”frmSolicitudPago” method=”post” action=”https://test2.alignetsac.com/VPOS/MM/transactionStart20.do”> <input type=”hidden” name=”IDACQUIRER” value=”99”> <input type=”hidden” name=”IDCOMMERCE” value=”3529”> <input type=”hidden” name=”XMLREQ” value=”D2ZQMEg4c9qlxJE3r2u3Y8PXT7vZ 5JNkrY84pEg4c94c9hS14k9OUWk4Y1”> <input type=”hidden” name=”DIGITALSIGN” value=”hS14k9OUWk4c9qldiN2vfBdjg4jB9 Wk4D2ZQMEg4c94c9qlOxVUg4yj2Q9atvfByY”> <input type=”hidden” name=”SESSIONKEY” value=”S14k9OUWk”> </form> Nota: Los valores que se encuentran en IDACQUIRER e IDCOMMERCE deben modificarse de acuerdo a los datos del comercio respectivo. Así mismo los valores del XMLRES, Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 13 SESSIONKEY y DIGITALSIGN deben ser capturados desde la clase de envío. Parámetros necesarios para el Componente de seguridad Para que el Componente de seguridad (plug-in) pueda generar el mensaje del parámetro XMLREQ, el comercio deberá llenar los siguientes parámetros con sus respectivos valores: Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 14 Campo Plug-in Tipo acquirerId NUMERICO Ancho Máximo 4 commerceId NUMERICO 12 purchaseOperationNumber ALFANUMERICO 12 purchaseAmount NUMERICO 12 purchaseCurrencyCode NUMERICO 12 purchaseIPAddress commerceMallId language ALFANUMERICO ALFANUMERICO 15 12 2 tipAmount NUMERICO 12 billingFirstName ALFANUMERICO 30 billingLastName ALFANUEMRICO 50 billingEMail billingAddress billingZIP billingCity billingState billingCountry ALFANUMERICO 50 50 10 50 15 2 NUMERICO ALFANUMERICO ALFANUMERICO ALFANUMERICO ALFANUMERICO ALFANUMERICO Observaciones Código de adquirente asignado por Alignet. Valor fijo igual al parámetro IDACQUIRER (1) Código único de Comercio asignado por Alignet. Valor fijo igual al parámetro IDCOMMERCE (1) Identificador único por cada transacción, dado por el comercio (1) Valor total de la compra, dado por el Comercio. el monto debe ir sin separador decimal (Si el monto es 100.30 dólares entonces la cantidad a enviar es 10030) (1) Moneda Según Estándar numérico ISO Tipo alfanumérico, longitud de 3 caracteres (Debe estar en las monedas permitidas para el comercio) (1) Dirección IP del comprador (1) Valor del ID del Mall al cual pertenece el comercio Idioma usado, tiene dos posibles valores: Español (SP), Inglés (si no se envía valor alguno el idioma por defecto será el español) Valor de propina. El formato será igual al del campo purchaseAmount Nombre del tarjetahabiente. (como aparece en la tarjeta de crédito) (1) Apellido del tarjetahabiente (como aparece en la tarjeta de crédito) (1) Dirección electrónica del tarjetahabiente. (1) Dirección del tarjetahabiente. (1) Código Postal del tarjetahabiente. (1) Nombre de la ciudad del tarjetahabiente. (1) Nombre del estado del tarjetahabiente. (1) Código ISO del país del tarjetahabiente. © 2005 - 2012 ALIGNET. Todos los Derechos reservados. Este documento es de carácter confidencial. Los contenidos y conceptos que se desarrollan en el presente documento no pueden ser utilizados por personas naturales o jurídicas a las que no se encuentre dirigida de manera explícita dicha información. billingPhone shippingFirstName shippingLastName shippingEmail shippingAddress shippingZIP shippingCity shippingState shippingCountry shippingPhone HTTPSessionId additionalObservations terminalCode reserved1 . . . reserved40 ALFANUMERICO ALFANUMERICO ALFANUMERICO ALFANUMERICO ALFANUMERICO ALFANUEMRICO ALFANUMERICO ALFANUMERICO ALFANUMERICO ALFANUMERICO ALFANUMERICO ALFANUMERICO ALFANUMERICO ALFANUMERICO 15 30 50 30 50 10 50 15 2 15 30 50 12 30 Teléfono del tarjetahabiente. (1) Nombre de la persona que recibirá los bienes Apellido de la persona que recibirá los bienes Email de la persona que recibirá los bienes Dirección de entrega del pedido del tarjetahabiente Código Postal de la entrega. Nombre de la ciudad de entrega. Nombre del estado/región o departamento de entrega. Código ISO del país de entrega. Teléfono del lugar de entrega. Sesión HTTP solo en el caso que el comercio lo requiera Observaciones adicionales de la compra Código de terminal de la compra Campos para datos adicionales no revisados por el VPOS (2) (1) Campos requeridos por el VPOS (2) Lo que se envíe en estos campos será devuelto en la respuesta Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 1 Parámetros de Seguridad necesarios para el Plug-in Además de los valores o campos mostrados, se deberá ingresar al plug-in los valores o campos necesarios para el cifrado del mensaje XMLREQ así como también para la generación de la firma digital del mismo. Estos valores se describen a continuación: Campo Vector de Inicialización Campo Plug-in VectorInicializacion Llave privada de Firma LlavePrivadaFirmaRSA Llave pública de cifrado LlavePublicaCifradoRSA Observaciones Valor necesario para el cifrado del mensaje XMLREQ. Este valor debe ser generado por el comercio. Llave privada del comercio con la que se generará la firma digital del mensaje XMLREQ. Esta llave privada es generada y almacenada por el comercio. Llave pública con la que se cifrará el mensaje XMLREQ. Esta llave pública es generada por ALIGNET y debe ser almacenada por el comercio. © 2005 - 2012 ALIGNET. Todos los Derechos reservados. Este documento es de carácter confidencial. Los contenidos y conceptos que se desarrollan en el presente documento no pueden ser utilizados por personas naturales o jurídicas a las que no se encuentre dirigida de manera explícita dicha información. Respuesta de pago Parámetros de Recibo La respuesta de pago que enviará el V-POS al comercio estará compuesta por los siguientes campos: Campo IDACQUIRER IDCOMMERCE XMLRES DIGITALSIGN SESSIONKEY Descripción Es el identificador fijo del Adquirente que permite al V-POS reconocer a la entidad adquirente del comercio. Este valor es generado por ALIGNET durante la configuración del Adquirente. Es el identificador del comercio o tienda virtual que permite al V-POS reconocer al comercio que esta enviando la solicitud de pago. Este valor es generado por ALIGNET durante la configuración del comercio. Es el mensaje de respuesta de pago que contiene los datos del resultado de la autorización. Es la firma digital del mensaje XMLRES, y asegura tanto la autenticidad del emisor y receptor como la integridad de la información. Esta firma digital es generada por el V-POS. Es la llave de sesión con la cual se descifrará el mensaje XMLRES. Para recibir la respuesta de pago del V-POS es necesario que el comercio implemente una página dinámica en donde se extraigan los valores de los parámetros mostrados en la tabla anterior. Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 1 Parámetros de respuesta obtenidos del Plug-in Así mismo el XMLRES devuelve los mismos campos enviados en el XMLREQ enviados al inicio de la compra con la adición de los siguientes campos: Campo Plug-in Tipo authorizationResult NUMERICO Ancho Máximo 2 authorizationCode ALFANUMERICO 6 errorCode ALFANUMERICO 4 errorMessage ALFANUMERICO Observaciones Este campo contiene el resultado de la autorización. Tiene tres posibles valores enviados por el V-POS: 00, indica que la transacción ha sido autorizada, 01, indica que la transacción ha sido denegada en e Banco Emisor, y 05, indica que la transacción ha sido rechazada por el VPOS. NOTA IMPORTANTE: El comercio mostrará los mensajes de resultado al tarjeta habiente según estos tres códigos. Por ejemplo: “Operación Autorizada”. “Operación Denegada”. “Operación Rechazada” (1) En caso que la transacción haya sido autorizada, este campo contendrá el código de autorización de la transacción. (1) En caso que la transacción haya sido denegada o rechazada este campo contendrá el código de error respectivo que indicará el motivo del rechazo. La lista de códigos puede aumentar o disminuir según las mejoras que se realicen al V-Payment y/o nuevas especificaciones de las marcas. NOTA IMPORTANTE: Este código de respuesta no debe ser mostrado al tarjeta habiente. Este campo contendrá la descripción del código de error en caso de producirse un rechazo. NOTA IMPORTANTE: Este mensaje de error no debe ser mostrado al tarjeta habiente. El Adquirente puede acordar con el comercio para que se muestren grupos de mensajes. © 2005 - 2012 ALIGNET. Todos los Derechos reservados. Este documento es de carácter confidencial. Los contenidos y conceptos que se desarrollan en el presente documento no pueden ser utilizados por personas naturales o jurídicas a las que no se encuentre dirigida de manera explícita dicha información. Además de estos campos, la respuesta de pago o XMLRES, contendrá todos los campos enviados al V-POS que se ingresaron en el XMLREQ de la solicitud de pago y que podrán ser recuperados usando el componente de seguridad (plug-in). Asimismo se tiene los siguientes campos adicionales Campo Plug-in Tipo planCode NUMERICO Ancho Máxim o 4 planName ALFANUMERICO 30 quotaCode NUMERICO 4 quotaName ALFANUMERICO 30 cardType ALFANUMERICO 4 cardNumber NUMERICO 19 ECI NUMERICO 2 VCI ALFANUMERICO 4 Observaciones Código del plan seleccionado por el tarjetahabiente en caso haber financiado el pago Nombre del plan seleccionado por el tarjetahabiente en caso haber financiado el pago Código de la cuota seleccionada por el tarjetahabiente en caso haber financiado el pago Nombre de la cuota seleccionada por el tarjetahabiente en caso haber financiado el pago Marca de la tarjeta seleccionada por el tarjetahabiente en caso de haber sido ingresada Número de tarjeta ingresada por el tarjetahabiente en caso de haber sido ingresada. La devolución de este dato deberá ser autorizada por el adquirente Indicador de comercio electrónico. Se devolverá en caso se haya realizado el proceso de autenticación Indicador de escenario de autenticación. Se devolverá en caso se haya realizado el proceso de autenticación Parámetros necesarios para obtener los datos del XMLRES Para descifrar el mensaje XMLRES, se deberá configurar al plug-in los valores o campos criptográficos necesarios, así como también para la verificación de la firma digital del mismo. Estos valores se describen a continuación: Campo Vector de Inicialización Llave pública de Firma Llave privada de Campo Plug-in VectorInicializacion Observaciones Valor necesario para el descifrado del mensaje XMLRES. Este valor debe ser generado por el comercio. LlavePublicaVerificac Es la llave pública del V-POS con la ionFirma que se verificará la validez de la firma digital del mensaje XMLRES. Esta llave es generada por el VPOS y almacenada por el comercio. LlavePrivadaCifrado Es la llave privada con la que se © 2005 - 2012 ALIGNET. Todos los Derechos reservados. Este documento es de carácter confidencial. Los contenidos y conceptos que se desarrollan en el presente documento no pueden ser utilizados por personas naturales o jurídicas a las que no se encuentre dirigida de manera explícita dicha información. cifrado Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] descifrará el mensaje XMLRES. Esta llave es generada y almacenada por el comercio. Pág. 1 4. Integración con el Plug-in El comercio recibirá el Componente de seguridad (plug-in) que deberá ser acoplada a su solución Web, para ser activado en el momento de la solicitud final de compra (en general, al presionar el botón “Comprar”). El Componente de seguridad (plug-in) está disponible para los siguientes lenguajes de programación: • • • Plug-in .Net (C#) Plug-in .Java Plug-in .PHP Según la plataforma del comercio, se le proporcionará el plug-in respectivo. Para los detalles de integración ver Anexo correspondiente al lenguaje de programación requerido. Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 2 5. Preguntas y Respuestas Frecuentes ¿Qué lenguajes soporta el Componente de seguridad (plug-in)? En la actualidad el plug-in tiene una versión para cada uno de los siguientes lenguajes: Microsoft .Net (C#), Java y PHP. De acuerdo a la plataforma del sitio Web del comercio, se le enviará la versión correspondiente. El documento describe que los comercios deben generar llaves de encriptación y de firma digital. ¿Cómo será la generación? De forma adicional al Componente de seguridad (plug-in), se proporcionará una aplicación para la plataforma del comercio por medio de la que se generarán estas llaves. El documento describe que debemos intercambiar llaves de encriptación y de firma digital. ¿Cómo será este intercambio? El intercambio de llaves será ejecutado por un canal seguro entre el comercio y ALIGNET. Para iniciar el intercambio de llaves una de las posibilidades es solicitar la dirección de correo electrónico seguro de su proveedor. ¿Existe algún carrito de compras comercial que se integre al plug-in? No. En Internet existen varios sitios Web que ofrecen carritos de compras o sitios Web para comercios, pero para realizar la integración se necesita el soporte de un programador o desarrollador para que integre a la plataforma del comercio el código del plug-in. ¿Si el comercio soporta el idioma inglés, por qué la página de ingreso de la clave Verified by Visa/MasterCard Secure Code se muestra en castellano? La página de ingreso de la clave Verified by Visa/MasterCard SecureCode es una página que pertenece al Emisor de la tarjeta y no al Adquirente o al Comercio. El idioma de la página será la que el Emisor de tarjeta haya decido configurar para sus tarjeta habientes. Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 3 6. Datos Adicionales Las llaves especificadas en cada formulario varían de acuerdo al ambiente en el que el comercio se encuentre, de la misma manera las urls del VPOS. Se indican las urls según el ambiente en el que el comercio se encuentre: -TESTING URL VPOS: https://test2.alignetsac.com/VPOS/MM/transactionStart20.do -PRODUCCION URL VPOS: https://vpayment.verifika.com/VPOS/MM/transactionStart20.do Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 4 7. Anexo 1: Integración con el Plug-in para .Net C# Instalación del Plug-in C# Al comercio se le entregará una dll VPOS20_PLUGIN.dll que deberá ser acoplada a su solución web, a continuación se presenta los pasos para la integración del plug-in: 2.Examinar 1.Click derecho Agregar referencia 3. Escoger VPOS20_PLUGIN. dll y Abrir o o Referenciar al plug-in en la carpeta Referencias de la aplicación Web En la ventana Agregar Referencia buscar el componente VPOS20_PLUGIN.dll Nota: Utilizar el archivo .DLL que se encuentra dentro de la carpeta PLUGIN. Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 5 : Uso del Plug-in C# para enviar información al V-POS Llaves necesarias para el envío de información: Testing: ALIGNET.TESTING.NOPHP.CRYPTO.PUBLIC.txt Llave de firma privada del comercio Producción: ALIGNET.PRODUCCION.NOPHP.CRYPTO.PUBLIC.txt Llave de firma privada del comercio A continuación se mostrará un ejemplo de uso del plug-in utilizando C#: //Asemblies adicionales a usar using System.IO; using VPOS20_PLUGIN; //Instanciando e inicializando VPOSBean oVPOSBean = new VPOSBean(); string R1 = "C:/LLAVE.VPOS.CRYPTO.1024.txt"; string R2 = "C:/LlaveFirmaComercioPrivada.txt"; srVPOSLlaveCifradoPublica = new StreamReader(R1); srComercioLlaveFirmaPrivada = new StreamReader(R2); oVPOSBean.acquirerId = "2"; oVPOSBean.commerceId = "359"; oVPOSBean.purchaseCurrencyCode = "840"; oVPOSBean.purchaseAmount = "100000"; oVPOSBean.purchaseOperationNumber = "40"; // Se invoca a la clase VPPOSend que tiene como parámetros las llaves y el vector de inicialización VPOSSend oVPOSSend = new VPOSSend(srVPOSLlaveCifradoPublica, srComercioLlaveFirmaPrivada, "D412589745DF36FA"); oVPOSSend.execute(ref oVPOSBean); Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 6 //Recuperando datos cifrados, los cuales se asignan al formulario de envío al VPOS String sCipheredSessionKey = oVPOSBean.cipheredSessionKey; String sCipheredXML = oVPOSBean.cipheredXML; String sCipheredSignature = oVPOSBean.cipheredSignature; Uso del Plug-in C# para recibir información del V-POS Llaves necesarias para recibir la información: Testing: ALIGNET.TESTING.NOPHP.SIGNATURE.PUBLIC.txt Llave de cifrado privada del comercio Producción: ALIGNET.PRODUCCION.NOPHP.SIGNATURE.PUBLIC.txt Llave de cifrado privada del comercio A continuación se muestra un ejemplo de código implementado en C# para el descifrado de los datos y la verificación de la firma digital: using System.IO; using System.Collections.Specialized; using VPOS20_PLUGIN; NameValueCollection coll = new NameValueCollection(); coll = Request.Params; String sIDACQUIRER = coll.Get("IDACQUIRER"); String sIDCOMMERCE = coll.Get("IDCOMMERCE"); String sXMLRES = coll.Get("XMLRES"); String sSESSIONKEY = coll.Get("SESSIONKEY"); String sDIGITALSIGN = coll.Get("DIGITALSIGN"); VPOSBean oVPOSBean = new VPOSBean(); oVPOSBean.cipheredXML = sXMLRES; oVPOSBean.cipheredSessionKey = sSESSIONKEY; oVPOSBean.cipheredSignature = sDIGITALSIGN; Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 7 StreamReader srVPOSLlaveFirmaPublica = new StreamReader("D:/LLAVE.VPOS.FIRMA.1024.txt"); StreamReader srComercioLlaveCifradoPrivada = new StreamReader("D:/LlaveCifradoComercioPrivada.txt"); // Se invoca a la clase VPOSReceive que tiene como parámetros las llaves y el vector de inicialización VPOSReceive oVPOSReceive = new VPOSReceive(srVPOSLlaveFirmaPublica, srComercioLlaveCifradoPrivada, "D412589745DF36FA"); oVPOSReceive.execute(ref oVPOSBean); if ( oVPOSBean.validSign == true ) { //El descifrado fue correcto y la firma digital es correcta //Luego evaluar oVPOSBean.authorizationResult para saber si la //transacción fue aceptada o denegada String sAuthResult =oVPOSBean.authorizationResult; String sErrorCode =oVPOSBean.errorCode; } Generación de llaves en C# Para la generación de llaves se usa el aplicativo KeyGeneratorVerifika.exe, para ejecutarlo se requiere tener instalado el .net Framework en una PC con Windows 98, XP, 2000, etc. y colocar la librería VERIFIK_PROTOCOL.dll en la misma carpeta donde se ejecutará el archivo exe. 1. Ejecutar el archivo KeyGeneratorVerifika.exe y presionar el botón Generar Llaves Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 8 2. Una vez generado guardar las llaves privadas en un dispositivo seguro y las llaves públicas enviarlas mediante un medio seguro. Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 9 8. Anexo 2: Integración con el Plug-in y Generador de llaves en Java Instalación del Plug-in Java Al comercio le será entregado un archivo .jar que deberá ser acoplado a su solución Web. A continuación se presentan los pasos para la integración del plug-in en Java con el comercio: • • En caso de ser una aplicación stand-alone configurar en la variable classpath la librería plugin-vpos-1.2.jar En caso de una aplicación Web incluir en la carpeta de librerías WEB-INF\lib la librería plugin-vpos-1.2.jar Componentes del Plugin de Java 2.0.1 • Bean de datos del VPOS (com.alignet.bean.VPOS20Bean) El cual contendrá los datos enviados al VPOS y recibidos del VPOS Uso del Plug-in Java para enviar información al V-POS Llaves necesarias para el envío de información: Testing: ALIGNET.TESTING.NOPHP.CRYPTO.PUBLIC.txt Llave de firma privada del comercio Producción: ALIGNET.PRODUCCION.NOPHP.CRYPTO.PUBLIC.txt Llave de firma privada del comercio A continuación se muestra el código en Java para el envío de información al V-POS: // referenciar al componente import com.alignet.bean.*; import com.alignet.exception.*; import com.alignet.plugin.*; //Crear una instancia com.alignet.bean de la clase VPOSBean del paquete VPOS20Bean bean = new VPOS20Bean(); //Setear los parámetros dentro de las propiedades del objeto Plugin try { bean.setAcquirerId (“2”); bean.setCommerceId (“359”); bean.setPurchaseAmount (“15000”); Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 10 bean.setPurchaseCurrencyCode (“840”); bean.setPurchaseOperationNumber (“5646554”); // Seguir seteando los demás datos. } catch(InvalidVPOSParameterException e) { //errores en el seteo de los datos obligatorios e.printStackTrace(); } // setear campos opcionales si es el caso // setear campos Reservados si es el caso bean.setReserved1(“5646554”); // setar plugin con lo valores para encriptar try { //instanciar una clase Send , pasar como parámetro la llave //publica para encriptar , la privada para firmar y //vector de inicialización Send20 send= new Send20( new FileReader("c:\\LLAVE.VPOS.CRYPTO.1024.txt"), new FileReader("c:\\LlavePruebaFirmaComercioPriv.txt"), "0000000000000000"); //encriptar send.execute(bean); } catch(PlugInVPOSException e) { //manejar errores en la encriptacion e.printStackTrace(); } catch(FileNotFoundException e) { //manejar errores en la lectura de llaves e.printStackTrace(); } //obtener valores encriptados para colocarlos en el //formulario de envio al VPOS bean.getCipheredSessionKey (); bean.getCipheredXML (); bean.getCipheredSignature (); Para obtener los campos SESSIONKEY, XMLREQ y DIGITALSIGN que se configurarán en el formulario de la solicitud de pago, primero se debe invocar al método ejecutar del objeto plug-in, de la siguiente manera: send.execute(bean); Para la generación del campo SESSIONKEY que deberá configurarse en el formulario de la solicitud de pago, se deberá usar el plug-in de la siguiente manera: String SESSIONKEY = bean.getCipheredSessionKey(); Para obtener el mensaje XMLREQ se deberá utilizar el plug-in de la siguiente manera: Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 11 String XMLREQ = bean.getCipheredXML(); Para obtener la firma digital se deberá utilizar el plug-in de la siguiente manera: String DIGITALSIGN = bean.getCipheredSignature(); El XMLREQ, SESSIONKEY y DIGITALSIGN, deben ser capturados en el formulario cada uno respectivamente (pag. 13). Uso del Plug-in Java para recibir información del V-POS Llaves necesarias para recibir la información: Testing: ALIGNET.TESTING.NOPHP.SIGNATURE.PUBLIC.txt Llave de cifrado privada del comercio Producción: ALIGNET.PRODUCCION.NOPHP.SIGNATURE.PUBLIC.txt Llave de cifrado privada del comercio A continuación se muestra un ejemplo de código implementado en Java para el descifrado de los datos y la verificación de la firma digital: //Referenciar al componente import com.alignet.bean.*; import com.alignet.exception.*; import com.alignet.plugin.*; //Crear una instancia de la clase VPOSBean del paquete com.alignet.bean VPOSBean bean = new VPOSBean(); //Colocar los parámetros dentro de las propiedades del objeto Plug ejm: try { bean.setCipheredSessionKey (llaveSessionCifrada); bean.setCipheredXML(xmlreq); bean.setCipheredSignature(firma); } catch(InvalidVPOSParameterException e) { //manejar errores de seteo incorrecto de parametros e.printStackTrace(); } //Invocar al método ejecutar de la objeto execute, el cual desencripta el xml try { Receive receive= new Receive( new FileReader("c:\\LLAVE.VPOS.FIRMA.1024.txt"), new FileReader("c:\\LlavePruebaCifradoComercioPriv.txt"), "0000000000000000"); receive.execute(vPOSBean); } catch(PlugInVPOSException e) Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 12 { //manejar errores de la desencriptacion e.printStackTrace(); } catch(FileNotFoundException e) { //manejar errores de lectura de llaves //si la firma no es valida tambien se lanza la exepcion e.printStackTrace(); } //Verificando la firma digital, que permitirá verificar la integridad de los //datos bolean esFirmaValida = vPOSBean.isValidSign(); A continuación se muestra un ejemplo de código implementado en Java para la recuperación de los datos usando el plug-in: //Asignar los valores desencriptados a variables //En caso la transacción fue aprobada: String codigoAutorizacion = bean.getAuthorizationCode (); //En caso la transacción fue denegada: String codigoError = bean.getErrorCode(); String mensajeError = bean.getErrorMessage(); //Extrayendo otros datos de la respuesta String variable1 = bean.getAcquirerId(); String variable2 = bean.getCommerceId(); ... String varible17 = bean.getReserved1(); Generación de llaves en Java Para ejecutar el generador de llaves en Java se requiere tener instalado el JDK y llamar al siguiente comando: java –jar keygeneratorverifika.jar Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 13 Una vez generado, mediante las funciones copiar y pegar guardar las llaves privadas en un medio electrónico y asegurarlo físicamente o en un dispositivo seguro. Las llaves públicas enviarlas mediante un medio seguro para su integración con el V-POS. Cabe anotar que estas claves son críticas y en la medida que se mantengan en custodia se preservará la seguridad de todo el sistema para el procesamiento de las transacciones del comercio. Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 14 9. Anexo 3: Integración con el Plug-in para PHP 5 en Linux Requisitos necesarios Para poder utilizar el componente en PHP en Linux es necesario tener instaladas las siguientes librerías • • • PHP5 instalado con las funcionalidades --with-openssl y -with-expat-dir (a partir de la versión 4.0.5) OpenSSL 0.9.7 en adelante Libreria libmcrypt instalada Comprobación del PHP para ver si tiene las librerías instaladas y funcionando correctamente Se debe generar una página que contenga la siguiente sentencia de PHP phpinfo(); Lo cual genera una página como esta: Véase lo resaltado para notar que el PHP actual posee las características pedidas Ahora se buscará si es que el PHP posee correctamente los módulos necesarios, para eso hay que buscar si es que en la misma página de información del PHP se encuentran los apartados siguientes Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 15 • • • MCRYPT OPENSSL XML De esta forma se puede notar que el PHP ya esta habilitado para poder usar el script compilado de PHP Instalación del Plug-in en PHP5 Descargar el Zend Optimizer (revisar que este para la versión de su PHP) de acuerdo a la plataforma que posee (Windows, Linux, BSD, otros) URL de descarga del Zend Optimizer (Escoger version 3.0.2): http://www.zend.com/free_download/optimizer • • Descomprimir el archivo descargado del Zend Optimizer, suponiendo que se instala en una maquina Linux con arquitectura i386 entonces hay que utilizar el siguiente comando tar –zxvf ZendOptimizer-3.0.2-linux-glibc21-xxx.tar.gz Donde xxx corresponde a la arquitectura (i386 o x86_64) Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 16 • Este crea un directorio llamado ZendOptimizer-2.6.2-linuxglibc21-i386 por lo tanto hay que entrar al directorio recien creado cd ZendOptimizer-3.0.2-linux-glibc21-xxx • Como usuario root se debe instalar el Zend Optmizer usando el siguiente comando: ./install • Se muestra una pantalla indicando que se instalará el Zend Optimizer (en el caso de ejemplo versión 2.6.2), seguir cada uno de los pasos como se muestran en las pantallas siguientes, los valores mostrados acá son propios de la instalación del PHP Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 17 Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 18 Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 19 Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 20 • Al finalizar todo correctamente ya ha sido instalado el Zend Optimizer por lo tanto, ya puede ejecutar páginas ofuscadas. Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 21 Uso del Plug-in en PHP para enviar información al V-POS Para usar el Plug-In hay que tener en cuenta lo siguiente: 1. Se debe crear un Arreglo de entrada con todos los campos que serán enviados al Plug-In, de acuerdo a lo visto en la página. 2. El Plug-in devuelve un arreglo con los campos cifrados y codificados listos para ser enviados al VPOS a. XMLREQ b. SESSIONKEY c. DIGITALSIGN 3. La pagina a usar las funciones debe incluir el archivo vpos_plugin.php en su código usando la siguiente sentencia de PHP. 4. Llaves necesarias para el envío de información: Testing: ALIGNET.TESTING.PHP.CRYPTO.PUBLIC.txt Llave de firma privada del comercio Producción: ALIGNET.PRODUCCION.PHP.CRYPTO.PUBLIC.txt Llave de firma privada del comercio A continuación se mostrará un ejemplo de uso del plug-in utilizando PHP: Se referencia al plugin mediante un incluye: <?php include("vpos_plugin.php");?> array_send es el arreglo que contiene los parámetros para ser ingresados al Plug-In del VPOS array_get es el arreglo que contiene los parámetros devueltos por el Plug-In listos para ser enviados al VPOS Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 22 //Todos los parámetros del componente se colocan en un arreglo de //cadenas, cuyo campo llave es el nombre del parámetro $array_send['acquirerId']=$CodigoAdquirente; $array_send['commerceId']=$CodigoComercio; $array_send['purchaseAmount ']=$Monto; $array_send['purchaseCurrencyCode']=$CodigoMoneda; $array_send['purchaseOperationNumber']=$CodigoOperacion; $array_send['billingAddress']=$direccionCobranza; $array_send['billingCity']=$ciudadCobranza; $array_send['billingState']=$estadoCobranza; $array_send['billingCountry']=$paisCobranza; $array_send['billingZIP']=$codigoPostalCobranza; $array_send['billingPhone']=$telefonoCobranza; $array_send['billingEMail']=$correoElectronicoCobranza; $array_send['billingFirstName']=$primerNombreTarjetaH; $array_send['billingLastName']=$ segundoNombreTarjetaH; $array_send['language']=’SP’; //En español //Setear un arreglo de cadenas con los parámetros que serán devueltos //por el componente $array_get['XMLREQ']=""; $array_get['DIGITALSIGN']=""; $array_get['SESSIONKEY']=""; Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 23 Se define a su vez un variable con el vector de inicialización. Las llaves pueden ser ingresadas de forma escrita en el mismo código //Vector de inicialización $VI = "0000000000000000"; //Ejemplo de una llave harcodeada en el PHP //notese el \n son los agregados al final de cada linea, son saltos de linea necesarios para el formato PEM $llavePub = "-----BEGIN PUBLIC KEY-----\n". "MIGJAoGBAKkJKIAJgm8/zA10FIpGUMAF6WTuTTKd1nqFHUokyXCNYn1oZAz6 vVqy\n". "BfJjWxL0o8r8ooBKQ/jKIVm4mFtVgQ5EamzYQFxsmU1dFfuBZdm7o3eId7xh mSnD\n". "ZNiwGv7xmTybY4QH7VMqPAgaeKN9cPAnN1+F2Jzw/WVWtD7E7xXhAgMBAAE= \n". "-----END RSA PUBLIC KEY-----"; O también de un archivo de texto plano existente en el sistema operativo //Vector de inicialización $VI = "0000000000000000"; //Ejemplo de una llave leida de un archivo de texto plano $llavePriv = "file://camino_archivo_completo"; Para poder ejecutar el componente hay que invocar a la función VPOSSend con todos los campos a enviar, los parámetros de salida de la función el SESSIONKEY, el DIGITALSIGN y el XMLREQ serán devueltos en el arreglo de salida, en este caso el array_get VPOSSend($array_send,$array_get,$llaveVPOSCryptoPub,$llaveComercioFirma Priv,$VI); Leer los valores dentro del arreglo $array_get y enviarlos mediante un formulario al VPOS Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 24 <INPUT TYPE="hidden" NAME="IDACQUIRER" $CodigoAdquirente; ?>"> <INPUT TYPE="hidden" NAME="IDCOMMERCE" $CodigoComercio; ?>"> <INPUT TYPE="hidden" NAME="XMLREQ" $array_get['XMLREQ'];?>"> <INPUT TYPE="hidden" NAME="DIGITALSIGN" $array_get['DIGITALSIGN'];?>"> <INPUT TYPE="hidden" NAME="SESSIONKEY" $array_get['SESSIONKEY'];?>"> value="<?php echo value="<?php echo value="<?php value="<?php echo value="<?php echo Se indican las urls a donde se deben enviar estos valores mediante post TESTING: https://test2.alignetsac.com/VPOS/MM/transactionStart20.do PRODUCCION: https://vpayment.verifika.com/VPOS/MM/transactionStart20.do Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] echo Pág. 25 Uso del Plug-in en PHP para recibir información del V-POS Llaves necesarias para recibir la información: Testing: ALIGNET.TESTING.PHP.SIGNATURE.PUBLIC.txt Llave de cifrado privada del comercio Producción: ALIGNET.PRODUCCION.PHP.SIGNATURE.PUBLIC.txt Llave de cifrado privada del comercio A continuación se muestra un ejemplo de código implementado en PHP para el descifrado de los datos y la verificación de la firma digital: $VI = "0000000000000000"; $llavePriv = “file:///var/llaves/LlavePruebaCifradoComercioPriv.txt”; $llavePriv = "file:///var/llaves/LLAVE.VPOS.FIRMA.1024.txt"; Se preparan los datos para ser ingresados a la función VPOSResponse, la salida de la función es true o false lo cual indica si han podido descifrarse y validarse correctamente los valores enviados por el VPOS if(VPOSResponse($arrayIn,$arrayOut,$llavePublicaFirma,$llavePriv adaCifrado,$VI)){ //La salida esta en decifrados devueltos por $arrayOut con todos los parámetros el VPOS $resultadoAutorizacion = $arrayOut['authorizationResult'] $codigoAutorizacion = $arrayOut['authorizationCode'] }else{ //Puede haber un problema de mala configuración de las llaves, vector de //inicializacion o el VPOS no ha enviado valores correctos } Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 26 Generación de llaves Para generar las llaves se debe usar el OpenSSL mediante línea de comandos Antes de iniciar la generación de llaves es preferible mantener estándares de creación de llaves, el estándar es el siguiente: GENERADORA.USO.TIPO.pem Donde: GENERADORA: Es la entidad quien generó la llave por ejemplo si el comercio se llama “Panadería la Miga” entonces puede ser MIGA USO: Puede tomar dos valores (CIFRADO, FIRMA) dependiendo si estas llaves trabajaran en la firma digital o con el cifrado asimétrico de datos TIPO: Indica que tipo de llave es (PUBLICA o PRIVADA) Ahora se indicarán los pasos para generar cada llave: 1. Primero se genera la llave Privada mediante el comando openssl genrsa –out MIGA.CIFRADO.PRIVADA.pem 1024 Esto genera una llave privada de 1024 bits en el archivo MIGA.CIFRADO.PRIVADA.pem 2. Ahora de la llave privada hay que extraer la llave publica openssl rsa –in MIGA.CIFRADO.PRIVADA.pem –out MIGA.CIFRADO.PUBLICA.pem –pubout Esto coloca la llave MIGA.CIFRADO.PUBLICA.pem pública en el archivo 3. Repetir el mismo proceso para el otro par de llaves 4. Enviar a su respectivo Adquirente las llaves PUBLICAS como serian en este caso: MIGA.CIFRADO.PUBLICA.pem MIGA.FIRMA.PUBLICA.pem 5. El valor del vector de inicialización puede ser generado de forma aleatoria, siendo sus principales condiciones: a. Tener una longitud de 16 caracteres b. Solo puede contener números o letras de la A a la F Guía de integración de comercios Virtual POS (V-POS) ALIGNET Merchant Solution [Confidencial – ALIGNET] Pág. 27