# Paylods do cardprocessor
Aqui está um esboço do que eu planejo para o modelo de dados do cardprocessor.
Levando em consideração os seguintes pontos:
- Cada ISO terá um merchant_id no adquirente.
- Cada ISO terá um terminal_id por modelo (d195, a920) no adquirente.
- A partir dos ids hash de merchant/terminal, obtemos o ISO, e a partir desse ISO temos as credenciais do adquirente que serão enviadas nas mensagens ISO8583.
- A partir dos ids hash de merchant/terminal, obtemos o ISO, e a partir desse ISO temos as tabelas e chaves que devem descer para o terminal.
## Acquirer
Guarda informações do adquirente.
```json=
{
"id": "pagseguro",
"name": "Pagseguro",
"created_at":"2019-12-02T19:50:08.698666202Z",
"updated_at":"2019-12-02T19:50:08.698666258Z"
}
```
## ISO
Guarda informações do ISO.
O campo acquirer_credentials contém as credenciais desse ISO no acquirer.
O campo active informa se esse ISO está ativo, se o ISO não estiver ativo nenhuma transação abaixo dele vai passar (seria o equivalente a desligar todos os merchants desse ISO).
```json=
{
"id": "leomadeiras",
"name": "Leo Madeiras",
"soft_descriptor": "Soft descriptor da Leo Madeiras",
"acquirer_credentials": [
{
"acquirer_id": "pagseguro",
"terminal_model": "d195",
"merchant_id": "T4593125858941A",
"terminal_id": "15112PP3",
"table_version": "table_version",
"table_data": "table_data",
"keys_version": "keys_version",
"keys_data": "keys_data"
},
{
"acquirer_id": "pagseguro",
"terminal_model": "a920",
"merchant_id": "T4593125858941A",
"terminal_id": "15112PP4",
"table_version": "table_version",
"table_data": "table_data",
"keys_version": "keys_version",
"keys_data": "keys_data"
},
],
"active": true,
"created_at":"2019-12-02T19:50:08.698666202Z",
"updated_at":"2019-12-02T19:50:08.698666258Z"
}
```
## Merchant
Guarda informações do merchant.
Os campos name, document_number, city e state são necessários para o recibo que é enviado via sms.
O campo mcc é necessário para envio na mensagem ISO8583 para o adquirente.
O campo active informa se esse merchant está ativo, se o merchant não estiver ativo nenhuma transação abaixo dele vai passar (seria o equivalente a desligar todos os terminais desse merchant).
```json=
{
"id": "HS1234567890123",
"iso_id": "leomadeiras",
"name": "João Marceneiro",
"document_number": "27.188.579/0001-14",
"city": "São Paulo",
"state": "SP",
"mcc": "1234",
"active": true,
"created_at":"2019-12-02T19:50:08.698666202Z",
"updated_at":"2019-12-02T19:50:08.698666258Z"
}
```
## Terminal
Guarda informações do terminal.
O campo model é necessário para obter as informações de credenciais/tabelas/chaves do ISO.
O campo active informa se esse terminal está ativo, se o terminal não estiver ativo nenhuma transação desse terminal vai passar.
```json=
{
"id": "HS123456",
"merchant_id": "HS1234567890123",
"model": "d195",
"serial_number": "1470000489",
"active": true,
"created_at":"2019-12-02T19:50:08.698666202Z",
"updated_at":"2019-12-02T19:50:08.698666258Z"
}
```
## Transaction
Guarda informações da transação.
```json=
{
"id": "01DZS7DQTX1B3P4G5CKHPD6VVH",
"acquirer_id": "pagseguro",
"iso_id": "leomadeiras",
"merchant_id": "HS1234567890123",
"terminal_id": "HS123456",
"transaction_id": null,
"operation": "purchase",
"payment_method": "credit",
"amount": 200,
"transmission_date": "0129203616",
"nsu": "000813",
"capture_method": "emv",
"installments": 1,
"cardholder_name": "JOAO SILVA",
"card_first_digits": "123456",
"card_last_digits": "1234",
"card_brand": "MASTERCARD",
"card_app_name": "Credito Nubank",
"card_aid": "A0000000041010",
"card_pin_mode": "offline",
"fingerprint": "e4c32692487b5350a1156f1dc8aa0ec2cfd67dd0",
"app_id": "zScAKNY5t1wDn0hDZGix1kE2jk",
"library_version": "1.08a",
"app_version": "13",
"serial_number": "1470000489",
"manufacturer": "PAX",
"model": "d195",
"emv_data": "9F2608D083A64B8F2559189F2701809F10120014A74003020000000000000000000000FF9F3704EF682A679F36020118950500000080009A032001299C01009F02060000000001005F2A020986820239009F1A0200769F03060000000000009F34034403028F01069F3303E0F0C89F1C04313233349F3501229F1E0830303030303132338407A00000000410109F090200029F4104000000089F6E0700760000303000500A4D6173746572636172649F1101019F120E4372656469746F204E7562616E6B4F07A0000000041010",
"second_emv_data": "9F2608D083A64B8F2559189F2701809F10120014A74003020000000000000000000000FF9F3704EF682A679F36020118950500000080009A032001299C01009F02060000000001005F2A020986820239009F1A0200769F03060000000000009F34034403028F01069F3303E0F0C89F1C04313233349F3501229F1E0830303030303132338407A00000000410109F090200029F4104000000089F6E0700760000303000500A4D6173746572636172649F1101019F120E4372656469746F204E7562616E6B4F07A0000000041010",
"status": "confirmed",
"metadata": {},
"issuer_transmission_date": "0129203525",
"issuer_authorizer_nsu": "000420002559",
"issuer_authorization_code": "000732",
"issuer_emv_data": "8A023030",
"created_at":"2019-12-02T19:50:08.698666202Z",
"updated_at":"2019-12-02T19:50:08.698666258Z"
}
```