Exemplo 4 - Pedágios com desconto por meio de pagamento automático

Nesse exemplo, vamos considerar como a API retorna os valores de praças de pedágio que possuem desconto para meios de pagamento automático.

Algumas praças de pedágio oferecem uma porcentagem de desconto para usuários que utilizam meios de pagamento automático, conhecidos como TAG ou TelePeaje

No Brasil essa porcentagem é de 5% de desconto e está disponível para apenas algumas concessionárias que oferecem o serviço. Essa porcentagem pode variar em outros países. Na Argentina, por exemplo, a concessionária Caminos del Río Uruguay oferece 15% de desconto para usuários que utilizam a tag, ou TelePeaje

No exemplo a seguir, temos uma rota usando um caminhão de dois eixos simples que passa pelo pedágio de Parapuã, no Brasil, que oferece um desconto de 5%.

{
    "calculationMode": "THE_FASTEST",
    "points": [
        {
            "siteId": "p1-before829",
            "latitude": -21.839539778137308,
            "longitude": -50.72464998254153
        },
        {
            "siteId": "p2-afterid829",
            "latitude": -21.845671861785434,
            "longitude": -50.717879778340304
        }
    ],
    "toll": {
        "vehicleType": "TRUCK_WITH_TWO_DOUBLE_AXLES"
    }    
}

Abaixo teremos a resposta completa.

Assim como nos exemplos anteriores, em tollCosts temos o valor total dos pedágios em toda a rota. Em cada objeto retornado em legs, será retornado um objeto tollCalculation contendo um objeto tolls com os valores e informações de cada pedágio no trecho correspondente, e a legTotalCost que mostra o valor total de pedágios naquele trecho.

Dentro de cada objeto em tolls teremos as informações de cada pedágio. Com as seguintes diferenças:

  • price - Valor normal do pedágio, sem o desconto por TAG;

  • conditions - Array com todos os valores condicionais do pedágio. No caso desse exemplo, temos as seguintes informações:

    • billingsType - Tipo de cobrança de pedágio. Valores possíveis: [NORMAL, TAG ];

    • value - Valor do condicionante do pedágio na moeda local.

No caso desse exemplo, o valor que deve ser considerado para obter o desconto por TAG será o valor de value nas conditions, e não o retornado em price.

Segue a resposta completa do exemplo. As coordenadas estão codificadas como object:

{
    "id": "6155b09e5043bd3c33d37c17",
    "clientId": "maplink",
    "totalDistance": 989,
    "totalNominalDuration": 44,
    "averageSpeed": 80.92,
    "tollCosts": 17.1,
    "legs": [
        {
            "distance": 989,
            "nominalDuration": 44,
            "averageSpeed": 80.92,
            "points": [
                {
                    "latitude": -21.83946857557238,
                    "longitude": -50.72459869338152
                },
                {
                    "latitude": -21.842353,
                    "longitude": -50.720612
                },
                {
                    "latitude": -21.843146,
                    "longitude": -50.719712
                },
                {
                    "latitude": -21.843518,
                    "longitude": -50.719361
                },
                {
                    "latitude": -21.844158,
                    "longitude": -50.718823
                },
                {
                    "latitude": -21.845632305353906,
                    "longitude": -50.71782372932495
                }
            ],
            "tollCalculation": {
                "tolls": [
                    {
                        "id": "829",
                        "name": "Pedágio - Parapuã",
                        "address": "SP294, KM551+500",
                        "city": "Parapuã",
                        "state": {
                                "name": "São Paulo",
                               "code": "SP"
                        },
                        "country": "Brasil",
                        "concession": "Eixo-SP",
                        "direction": "EAST",
                        "coordinates": {
                            "latitude": -21.841946,
                            "longitude": -50.721171
                        },
                        "serviceTypes": [
                            {
                                "serviceId": "792",
                                "name": "Via Facil"
                            },
                            {
                                "serviceId": "35352945515000103",
                                "name": "ANTTCODE"
                            }
                        ],
                        "price": 17.1,
                        "conditions": [
                            {
                                "billingsType": [
                                    "TAG"
                                ],
                                "value": 16.25
                            }
                        ]
                    }
                ],
                "legTotalCost": 17.1
            }
        }
    ],
    "source": "MAPLINK",
    "createdAt": 1633005731809
}