{"id":17001253,"url":"https://github.com/zemuldo/iso_8583_elixir","last_synced_at":"2025-04-12T06:31:48.513Z","repository":{"id":56693035,"uuid":"181086012","full_name":"zemuldo/iso_8583_elixir","owner":"zemuldo","description":"ISO 8583 messaging library in Elixir","archived":false,"fork":false,"pushed_at":"2020-10-24T20:11:24.000Z","size":2948,"stargazers_count":10,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T02:01:40.216Z","etag":null,"topics":["elixir","elixir-lang","elixir-language","elixir-library","elixir-phoenix","elixir-programming-language","iso8583"],"latest_commit_sha":null,"homepage":"https://hexdocs.pm/iso_8583","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zemuldo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-12T21:31:07.000Z","updated_at":"2025-03-09T18:49:41.000Z","dependencies_parsed_at":"2022-08-15T23:30:44.400Z","dependency_job_id":null,"html_url":"https://github.com/zemuldo/iso_8583_elixir","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zemuldo%2Fiso_8583_elixir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zemuldo%2Fiso_8583_elixir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zemuldo%2Fiso_8583_elixir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zemuldo%2Fiso_8583_elixir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zemuldo","download_url":"https://codeload.github.com/zemuldo/iso_8583_elixir/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248529717,"owners_count":21119567,"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","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":["elixir","elixir-lang","elixir-language","elixir-library","elixir-phoenix","elixir-programming-language","iso8583"],"created_at":"2024-10-14T04:24:18.288Z","updated_at":"2025-04-12T06:31:46.405Z","avatar_url":"https://github.com/zemuldo.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ISO8583\n\nAn ISO 8583 messaging library for Elixir. Supports message validation, encoding and decoding. [See the docs](https://hexdocs.pm/iso_8583)\n\nThis project is still in early stages. If you have feature suggestions you can do two things.\n\n- Push a PR and I will be happy to review.\n- Suggest using new issue and I will be happy to implement.\n\n```elixir\niex\u003e message\n%{\n  \"0\": \"0800\",\n  \"11\": \"646465\",\n  \"12\": \"160244\",\n  \"13\": \"0818\",\n  \"7\": \"0818160244\",\n  \"70\": \"001\"\n}\niex\u003e {:ok, encoded} = ISO8583.encode(message)\n{:ok,\n \u003c\u003c0, 49, 48, 56, 48, 48, 130, 56, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 48,\n   56, 49, 56, 49, 54, 48, 50, 52, 52, 54, 52, 54, 52, 54, 53, 49, 54, 48, 50,\n   52, 52, 48, 56, 49, 56, ...\u003e\u003e}\niex\u003e {:ok, decoded} = ISO8583.decode(encoded)\n{:ok,\n %{\n   \"0\": \"0800\",\n   \"11\": \"646465\",\n   \"12\": \"160244\",\n   \"13\": \"0818\",\n   \"7\": \"0818160244\",\n   \"70\": \"001\"\n }}\niex\u003e\n```\n\n## Installation\n\n```elixir\ndef deps do\n  [\n    {:iso_8583, \"~\u003e 0.1.2\"}\n  ]\nend\n```\n\n## Customization and configuration\n\n  All exposed API functions take options with the following configurable options.\n  \n  ### TCP Length Indicator\n  This is used to specify whether or not to include the 2 byte hexadecimal encoded byte length of the whole message\n  whe encoding or to consider it when decoding.\n  This value is set to true by default.\n  Example:\n  ```elixir\n  ISO8583.encode(message, tcp_len_header: false)\n  ```\n\n  ### Bitmap encoding\n  Primary and SecondaryBitmap encoding bitmap for fields 0-127 is configurable like below.\n\n  Examples:\n\n  ```elixir\n  ISO8583.encode(bitmap_encoding: :ascii) # will result in 32 byte length bitmap\n  ```\n\n  ```elixir\n  ISO8583.encode() # will default to :hex result in 16 byte length bitmap\n  ```\n\n  ### Custom formats\n\n  Custom formats for data type, data length and length type for all fields including special bitmaps like \n  for 127.1 and 127.25.1 are configurable through custom formats. The default formats will be replaced by the custom one.\n\n  To see the default formats [check here](https://github.com/zemuldo/iso_8583_elixir/blob/master/lib/iso_8583/formats/formats.ex#L104)\n\n  Example:\n\n  Here we override field 2 to have maximum of 30 characters.\n\n  ```elixir\n  custome_format = %{\n        \"2\": %{\n          content_type: \"n\",\n          label: \"Primary account number (PAN)\",\n          len_type: \"llvar\",\n          max_len: 30,\n          min_len: 1\n        }\n      }\n\n      {:ok, message} =\n        fixture_message(:\"0100\")\n        |\u003e Map.put(:\"2\", \"444466668888888888888888\")\n        |\u003e ISO8583.encode(formats: custome_format)\n\n      refute message |\u003e ISO8583.valid?()\n    end\n  ```\n  \n  ## Roadmap\n  - Optimizations\n  - More customizations\n  - Message composition\n  - Support for compsable validators.\n  - More tests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzemuldo%2Fiso_8583_elixir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzemuldo%2Fiso_8583_elixir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzemuldo%2Fiso_8583_elixir/lists"}