El link de pago H2H se expone en internet y se basa en el consumo de dos métodos expuestos por veci en un web service tipo rest y otro desarrollado por el H2H que funcione como un IPN1
Servicio expuesto por veci con el cual el H2H podrá generar un token que será enviado en el header del servicio de autorización.
(Este servicio es con el cual se hace la solicitud de pago a través de la pasarela de pagos veci)
Request: Método http: POST Url pruebas: https://api.soyveci.com/login Body: { "authentication": { "dnitype": "0", "dni": 9999999999, "password": "n5E9yfKhUcNB7y7Eat", "type": "Supplier" } } Donde: "dnitype": "0", # siempre enviar cero "dni": 9999999999, # NIT del H2H "password": "n5E9yfKhUcNB7y7Eat", # Ejemplo contraseña entregada por veci “type”: Siempre enviar Supplier Response: Code: 200 OK Body: 1 IPN (Instant Payment Notification) es una notificación que se envía desde veci a un servidor o servicio expuesto por el cliente H2H para notificar el estado e información adicional de una transacción de pago solicitada con anterioridad. { "data": { "token": "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MiwidHlwZSI6IlN1cHBsaWVyIiwiaXNzdWV kIjoxNTk2MDY0NjYyfQ.kA3OS5J3Mu- 5743wj9hWXjzYOKunNeHNIXuVEhnzHVQ", "id": 2, "type": "Supplier" } }
Este token recibido debe ser enviado en el siguiente servicio dentro del header de la petición.
Servicio mediante el cual el H2H hace la solicitud de un pago a través de la pasarela de veci. Funcionalmente el usuario final (comprador) recibirá un mensaje en su WhatsApp en el cual se indica una url para que ingrese y realice el pago con tarjeta de crédito o PSE; al finalizar la transacción recibirá un mensaje nuevamente (tanto comercio como usuario final) en el cual se indica el resultado de la transacción (Exitosa o fallida).
Request Metodo http: POST Url pruebas: https://api.soyveci.com/supplier/generate-smartlink Header: Authorization: Bearer + token entregado Content-type: application/json Body: { "celularVendedor": 3101234567, "celularPagador": 3101234567, "valor": 520000, "tipoTransaccion": 100 , "transactionId": "asdasdad123" } Tipo de transacción se puede enviar en null "tipoTransaccion": “”, Response: Code: 200 OK Body: Ninguno
Servicio desarrollado por el H2H, el cual será consumido por la plataforma de veci cuando se tenga respuesta del banco sobre la operación realizada. Request enviado por veci al recibir respuesta de banco.
Header Se envía el parámetro de inicialización (Initialization) la cual es una cadena en base 64 Ejemplo del body enviado: Body { data: “cHVudG9yZWRwdW50b3JlZHB1bnRvcmVkcHVudG9yZWRwdW50b3JlZHB1bnRvcmVkc HVudG9yZWRwdW50b3JlZA==” }
El H2H deberá Decodificar el header y el data (Que están en base 64)
Con el resultado de los dos deberá descifrar el data, utilizando AES256, el cual le pide una key y un vector de inicialización.
Vector inicialización = campo Initialization del header enviado, el cual debe ser decodificado en base 64
Key = supplier_code **Entregado por Veci
La transacción será enviada cifrada utilizando AES256, en modo CBC, con parámetro de inicialización IV, el
cual será enviado en el header de la petición con el key de Initialization, y codificada en Base64. La llave de
AES serán los primeros 32 caracteres del supplier_code.
Body descifrado:
{ "transaction": { "id": 10, # Id tx veci "description" => "CodigoTXveci", # Description Smartlink tx "code" => "CodigoTXveci", # Code tx veci "amount" => 200000, # Amount "status" => "approved", # Status "type" => 7, # Type transacción "signature" => signature # Digital Signature } }
Signature: La firma generada para la validación de la veracidad de la tx es igual a la concatenación de los
siguientes valores y aplicar SHA-256:
"#{description}-#{code}-#{amount}-#{supplier_code}" Donde supplier_code en ambiente de pruebas es: e2d55f46da8f3dbe4c932763c7cf6ad0256df13fb29340a9fb4a97964a5b3a43
Para producción este supplier_code es entregado por veci.
Ejemplo de generación Firma: Código tx veci: 12345678 Código tx veci: abcdefgh Valor: 500000 La firma sería: "12345678-abcdefgh-500000-e2d55f46da8f3dbe4c932763c7cf6ad0256df13fb29340a9fb4a97964a5b3a43" Y aplicar SHA-256 a esa cadena.
El cliente H2H puede elegir dos modalidades de administración del dinero.
Cualquiera de estas dos modalidades debe ser informadas antes de la puesta en producción para que sea parametrizado en el sistema. Esta modalidad no puede ser mixta, se debe elegir una de las dos opciones.