Sobre a Amostra ISO8583

A Organização de Normas Internacionais (ISO, International Standards Organization) define e publica normas de dados que são usadas por muitas empresas nos setores público e privado. Uma norma ISO usada com frequência para o setor de serviços bancários e financeiros é a ISO8583, que especifica um formato de mensagem descrevendo dados de cartão de crédito e de cartão de débito que são trocados entre dispositivos e emissores de cartões. A norma é usada geralmente por dispositivos de ponto de venda e caixas eletrônicos. As mensagens em si geralmente contêm informações sobre o valor de uma transação, onde foi originada, o número da conta do cartão e o código de classificação do banco. Os aplicativos para os quais os dados são enviados podem ter diversas finalidades, como transferir fundos entre contas bancárias, contas de pagamento ou compra de crédito para telefone celular. O WebSphere Message Broker pode ajudá-lo nesses tipos de cenários de middleware, permitindo a transformação de dados entre a norma ISO8583 e formatos mais convenientes, como XML, e por meio de outros protocolos, como WebSphere MQ, FTP ou HTTP.

O diagrama an seguir mostra o layout de uma mensagem ISO8583:

1. Cabeçalho(s) customizado(s); 2. MTI; 3. Bitmap primário; 4. Bitmap secundário (opcional); 5. Campos de dados da mensagem (opcionais - aqueles presentes dependem dos bitmaps anteriores).

As mensagens ISO8583 podem ser precedidas por um cabeçalho customizado (geralmente proprietário), mas o layout principal sempre contém as seguintes seções:

Esta amostra fornece uma biblioteca do Message Broker, ISO8583Library, que define os campos que constituem cada uma das seções acima. Para investigar os detalhes deste modelo de mensagem, importe a amostra para sua área de trabalho. Uma captura de tela mostrando parte do modelo é fornecida abaixo, seguida por um resumo da sua implementação de campos e tipos de dados:

Modelo DFDL ISO8583

Campos de Indicador de Tipo de Mensagem

A combinação dos quatro campos MTI especifica o tipo de mensagem de troca que está sendo transmitido. Geralmente, os aplicativos usarão o MTI para determinar se a mensagem requer uma resposta e o formato que tal resposta deve assumir (ou seja, quais valores devem ser transportados no MTI e quais campos de Dados de Mensagem devem estar presentes). Essa decisão geralmente é tomada pelo aplicativo para o qual o Message Broker envia os dados ISO8583, portanto essa amostra transmite os campos sem aplicar nenhuma validação ou transformação adicional de seu conteúdo.

Bitmap Primário e Bitmap Secundário

O Bitmap Primário e o Bitmap Secundário são definidos no modelo DFDL usando um Grupo integrado que contém um elemento complexo que representa cada bitmap. O elemento complexo que representa o Bitmap Primário contém 64 campos (chamados Bit001 a Bit064), sendo que cada um é definido como um unsignedInt, ocorrem exatamente uma vez e possuem um bit de comprimento. O elemento complexo que representa o Bitmap Secundário contém 64 campos (chamados Bit065 a Bit128), sendo que cada um é definido como um unsignedInt, ocorrem exatamente uma vez e possuem um bit de comprimento. Cada Campo de Dados da Mensagem (que ocorrem após os bitmaps no modelo) é opcional (minOccurs=0 e maxOccurs=1) e possui uma expressão que define o atributo dfdl:occursCount como igual ao Bit correspondente do Bitmap Primário ou Bitmap Secundário. Por exemplo, o Campo de Dados de Mensagem denominado PrimaryAccountNumber_002 has dfdl:occursCount="{/ISO8583_1987/PrimaryBitmap/Bit002}"

O Bitmap Secundário em si é um campo opcional. O Bit001 no Bitmap Primário define se existe ou não um Bitmap Secundário na mensagem.

Campos de Dados da Mensagem

Cada campo da mensagem no padrão ISO8583 define seu conteúdo permitido usando um dos seguintes tipos de dados:

Tipos de Dados Numéricos

Elementos de dados numéricos são justificados à direita, e, quando definidos para ter um comprimento fixo, contêm zeros à esquerda. A norma ISO8583 refere-se aos elementos de dados numéricos usando o atributo "n". Essa convenção é refletida nos nomes de Tipo Simples usados no modelo DFDL. Elementos de dados definidos como numéricos podem ser usados para diversos propósitos comerciais; por exemplo, podem ser usados para transportar quantias decimais, valores de data/hora ou dados numéricos de sequência, como um número da conta bancária. Para refletir esse uso, o modelo DFDL define Tipos Simples de esquema XML distintos que herdam de diferentes tipos de dados primitivos do esquema XML. Esses Tipos Simples são chamados:

Tipo de Dados Alfabéticos

Elementos de dados alfabéticos são justificados à esquerda e, quando definidos para ter um comprimento fixo, contêm caracteres de espaço à direita. A norma ISO8583 refere-se aos elementos de dados alfabéticos usando o atributo "a". Essa convenção é refletida no nome de Tipo Simples usado no modelo DFDL para tipos de dados alfabéticos:

Tipo de Dados Alfanuméricos

Elementos de dados alfanuméricos são justificados à esquerda e, quando definidos para ter um comprimento fixo, contêm caracteres de espaço à direita. A norma ISO8583 refere-se aos elementos de dados alfanuméricos usando o atributo "an". Essa convenção é refletida no nome de Tipo Simples usado no modelo DFDL para tipos de dados alfanuméricos:

Tipo de Dados Especiais Alfanuméricos

Elementos de dados especiais alfanuméricos são justificados à esquerda e, quando definidos para ter um comprimento fixo, contêm caracteres de espaço à direita. A norma ISO8583 refere-se aos elementos de dados especiais alfanuméricos usando o atributo "ans". Essa convenção é refletida no nome de Tipo Simples usado no modelo DFDL para tipos de dados especiais alfanuméricos:

Tipo de Dados Binários

Elementos de dados binários possuem comprimentos que têm um número integral de bytes de comprimento. Nenhum elemento de dados binários tem um comprimento com menos de oito bits (um byte). A norma ISO8583 refere-se aos elementos de dados binários usando o atributo "b". Essa convenção é refletida no nome de Tipo Simples usado no modelo DFDL para tipos de dados binários:

Tipo de Dados de Rastreio

A norma ISO8583 define determinados elementos de dados como tipo "track-2" ou "track-3". A sintaxe detalhada desses elementos está sujeita a padrões ISO adicionais. A norma ISO8583 refere-se ao tipo de dados de rastreio usando o atributo "z". Essa convenção é refletida nos nomes de Tipo Simples usados no modelo DFDL:

Tipos de Dados com um Prefixo de Comprimento

Alguns elementos de dados são definidos pela norma ISO8583 como de comprimento variável e contêm um prefixo de comprimento que especifica o comprimento dessa ocorrência do campo. O comprimento é especificado usando dois ou três dígitos numéricos. A norma ISO8583 refere-se ao prefixo de comprimento usando a convenção "LL" para representar comprimentos no intervalo de 01 a 99 e "LLL" para representar comprimentos no intervalo de 001 a 999. Elementos de dados que são definidos dessa forma também podem ter restrições adicionais (por exemplo, o elemento PrimaryAccountNumber tem um prefixo LL, mas também tem um comprimento máximo de 19 bytes). Essas restrições são refletidas no modelo DFDL usando aspectos. O modelo DFDL define os seguintes Tipos Simples que usam um prefixo de comprimento:

Voltar para o Início da Amostra