{"id":21021031,"url":"https://github.com/linck/iso8583-validator","last_synced_at":"2025-08-14T18:34:48.328Z","repository":{"id":37216819,"uuid":"252890595","full_name":"linck/iso8583-validator","owner":"linck","description":"Ferramenta para auxiliar nos testes de validação da mensageria ISO8583","archived":false,"fork":false,"pushed_at":"2022-06-16T23:59:26.000Z","size":115,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-15T08:35:52.053Z","etag":null,"topics":["financial-transactions","iso8583","java","software-quality","software-testing","test-automation"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linck.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-04T02:32:39.000Z","updated_at":"2024-05-10T20:31:46.000Z","dependencies_parsed_at":"2022-06-22T12:16:20.874Z","dependency_job_id":null,"html_url":"https://github.com/linck/iso8583-validator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/linck/iso8583-validator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linck%2Fiso8583-validator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linck%2Fiso8583-validator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linck%2Fiso8583-validator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linck%2Fiso8583-validator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linck","download_url":"https://codeload.github.com/linck/iso8583-validator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linck%2Fiso8583-validator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270465465,"owners_count":24588653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-14T02:00:10.309Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["financial-transactions","iso8583","java","software-quality","software-testing","test-automation"],"created_at":"2024-11-19T10:44:24.185Z","updated_at":"2025-08-14T18:34:48.252Z","avatar_url":"https://github.com/linck.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003e\u003cstrong\u003eISO8583 Validator\u003c/strong\u003e\u003c/h1\u003e\n  \u003ca href=\"https://github.com/linck/iso8583-validato\"\u003e\n    \u003cimg src=\"https://github.com/linck/iso8583-validator/blob/master/icon_256.png\"\u003e\n  \u003c/a\u003e\n  \u003cbr\u003e\n\u003ch2\u003e\u003cstrong\u003eFerramenta para auxiliar na validação da mensageria ISO8583\n\u003c/strong\u003e\u003c/h2\u003e\n\u003c/div\u003e\n\n\n--------\n## Pre-requisitos\n\n### Mensagens para validação\n\nNa pasta do da aplicação tem dois arquivos xml.\n\n- **logiso.xml** : Colocar o conteudo do log xml transação que quer validar\n- **logiso_original_req.xml** : **Opcional.** Para casos de transações que precisam de transação original para ser validada. Como por exemplo: **Pré-autorização Substitutiva, Confirmação de Pré-autorização, Estornos ...** precisam da transação original pra validar o bit 90, bit 120 e outros\n- **logiso_original_resp.xml** : **Opcional.** A mesma utilidade do **logiso_original_req.xml** só que para o log de resposta da transação original.\n\n### Criação dos Validators\n\nÉ nécessário configurar os validators através do arquivo **validators.json**. Ver sessão **Validators** para mais informações sobre como fazer isso.\n\n--------\n\n## Como Usar\n\n### Executar a transção\n\nExecute a transação desejada para o ambiente montado de sua preferência\n\n### Coletar logs\n\n- Colete o os logs xml da transação feita e da transação original, se for necessário. \n- O  conteúdo log do da transação a ser validada coloque no arquivo **logiso.xml** \n- O conteúdo do log da transação original, se for necessário, coloque no arquivo **logiso_original.xml**\n\n### Executar a aplicaçao\n\n```bash\niso8583-validator [nome_do_validador]\n```\n\npode-se passar um segundo argumento (opcional), informando o caminho do arquivo que contém os validadores. Por default será usado o **validators.json** da raiz da apalicação\n\n```bash\niso8583-validator [nome_do_validador] [caminho_do_arquivo_validator]\n```\n\n# Validators\n\nOs validators são as regras que o **Iso8583-validator** irá seguir para fazer a validação da mensagem informada nos arquivos .xml.\nEstes deverão ser definidos no arquivo **validators.json** que está na raiz da aplicação.\n\n## Campos\n\nUm validador sempre tem como o atributo inicial o **nome validador**, este será usando como uma chave que o identifica. Deve ser único. Este será usado como argumento da linha de comando da aplicação:\n\nExemplo:\n\n```json\n{\n  \"nome_do_validador\": { \n\t\"mandatoryFields\": [\n\t\t3,\n\t\t4\n\t],\n\t\"fields\": [\n\t\t{\n\t\t\"id\": \"22\",\n\t\t\"mandatory\": true,\n\t\t\"regex\": \"051\"\n\t\t}\n\t}\n}\n```\n\nComando na hora de chamar na aplicação:\n```bash\niso8583-validator nome_do_validador\n```\n\n# Exemplo com todos campos possíveis:\n\n\n```json\n{\n  \"cenario_1_id_1-Crédito\": {\n    \"extendsOf\": \"cenario_5_id_1-Débito\",\n    \"extendsOfRemoveFields\": [55],\n    \"notExistsFields\": [35],\n    \"mandatoryFields\": [ 3, 4, 7, 11, 12, 13],\n    \"fields\": [\n      {\n        \"id\": \"48\",\n        \"description\": \"Dados adicionais da transação\",\n        \"mandatory\": true,\n        \"regex\": \"[A-Z][a-z][0-9]\",\n        \"mandatoryIfExistsField\": \"11\",\n        \"mandatoryIfNotExistsField\": \"55\",\n        \"containsOriginalFields\":[11,7],\n        \"contains\": \"alguma string no bit para validar\",\n        \"subfields\": [  (Todos os campos dos \"fields\" vale para os \"subfields\")\n          {\n            \"id\": \"001\",\n            \"description\": \"Subcampo 1\",\n            \"mandatory\": true,\n            \"regex\": \"[A-Z][a-z][0-9]\",\n            \"mandatoryIfExistsField\": \"11\",\n            \"mandatoryIfNotExistsField\": \"55\",\n            \"containsOriginalFields\":[11,7],\n            \"containsOriginalRespFields\": [12],\n            \"contains\": \"alguma string no bit para validar\",\n          },\n          {\n              Subcampo 2....\n          },\n          {\n              Subcampo 3....\n          }\n        ]\n      },\n\t  {\n\t   \"id\":\"35\",\n\t   \"description\":\"Track two\",\n\t   \"mandatory\":false,\n\t   \"fieldsDependency\":[\n\t\t  {\n\t\t\t \"id\":\"22\",\n\t\t\t \"content\":[\n\t\t\t\t\"000\",\n\t\t\t\t\"001\",\n\t\t\t\t\"002\"\n\t\t\t ],\n\t\t\t \"checkMethod\":\"match\"\n\t\t  }\n\t   ]\n\t  },\n      {\n          Campo 3....\n      },\n       {\n          Campo 4....\n      }\n  }\n\n```\n\n\n# Descrição dos campos\n\n## Validator\n\n| Campo                 | Tipo           | Descrição                                                                                                                                                                                                                       |\n|-----------------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| mandatoryFields       | Array Integer  | Informa os campos que devem ser tratados como obrigatórios na mensageria para esse validador                                                                                                                                    |\n| extendsOf             | String         | Informa o nome de outro validator que você deseja ter como base. Todos os campos desse validador \"pai\" serão importados para o novo. Os campos definidos no novo validador terão prioridade em relação aos que serão importados |\n| extendsOfRemoveFields | Array String   | Informa os campos que não queremos que seja importado do validador que foi informado em \"extendsOf\"                                                                                                                             |\n| notExistsFields       | Array String   | Valida se o campo não existe na mensageria. Útil para validar campos que não deveriam vir.                                                                                                                                      |\n| fields                | FieldValidator | Estrutura com regras para validação específica para cada campo.                                                                                                                                                                 |\n| fieldsDependency | FieldDependency | Campos do qual o campo depende para existir                                             |\n\n## FieldValidator\n\n| Campo                     | Tipo           | Obrigatório | Descrição                                                                                                                                                                                                                                                                                                                                                                                 |\n|---------------------------|----------------|-------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| id                        | String         | Sim         | Id do campo. Corresponte ao bit do ISO8583. **Ex: \"2\", \"11\", \"55\", \"127\"**                                                                                                                                                                                                                                                                                                                |\n| description               | String         | Não         | Descrição do campo                                                                                                                                                                                                                                                                                                                                                                        |\n| mandatory                 | Boolean        | Sim         | Informa se é obrigatório ou não                                                                                                                                                                                                                                                                                                                                                           |\n| regex                     | String         | Não         | Valida o conteúdo da mensagem através de uma Expressão Regular.   Pode ser usar também para validação de um texto literal.  **Por exemplo, para validar se todo bit 11 é igual a \"12456\": \"regex\": \"123456\"**                                                                                                                                                                                 |\n| mandatoryIfExistsField    | String         | Não         | Valida o campo como obrigatório se o bit informado existir                                                                                                                                                                                                                                                                                                                                |\n| mandatoryIfNotExistsField | String         | Não         | Valida o campo como obrigatório se o bit informado **não** existir                                                                                                                                                                                                                                                                                                                        |\n| containsOriginalFields    | Array Integer  | Não         | Valida se no conteúdo do bit contém o valor do bit informado na requisição da transação original.  Esse campo serve para validar bits que possuem informações da transação original, como por exemplo o bit 90 e bit 120. É preciso informar o conteúdo da transação original no arquivo **logiso_original_req.xml** que está na raiz da aplicação.   \n| containsOriginalRespFields    | Array Integer  | Não         | Valida se no conteúdo do bit contém o valor do bit informado na resposta transação original.  Esse campo serve para validar bits que possuem informações da transação original, como por exemplo o bit 90 e bit 120. É preciso informar o conteúdo da transação original no arquivo **logiso_original_resp.xml** que está na raiz da aplicação.                                                        |\n| contains                  | String         | Não         | Valida se dentro do conteúdo do bit contém o valor informada.                                                                                                                                                                                                                                                                                                                             |\n| subfields                 | FieldValidator | Não         | Valida os subcampos que são em **formato TLV**. Essa estrutura suporta todos campos dos \"fields\" já descritos acima.   **Obs:**  Os ids dos subcampos TLV possuem 3 posições. Por exemplo o subcampo 1 deverá ser informado da seguinte forma:   **\"id\": \"003\"** |\n| contentType               | String \t\t | Não         | Tipo do conteudo: \u003cul\u003e\u003cli\u003etext\u003c/li\u003e\u003cli\u003ebinary\u003c/li\u003e\u003c/ul\u003e |\n\n## FieldDependency\n\n| Campo       | Tipo         | Obrigatório | Descrição                                                                               |\n|-------------|--------------|-------------|-----------------------------------------------------------------------------------------|\n| id          | String       | Sim         | Id do campo independente. Corresponte ao bit do ISO8583. **Ex: \"2\", \"11\", \"55\", \"127\"** |\n| content     | Array String | Sim         | Conteúdos que o campo independente pode conter para o que campo dependente exista       |\n| checkMethod | String       | Sim         | Tipo de checagem do conteudo: \u003cul\u003e\u003cli\u003ematch\u003c/li\u003e\u003c/ul\u003e                                   |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinck%2Fiso8583-validator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinck%2Fiso8583-validator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinck%2Fiso8583-validator/lists"}