Exemplo 3 - Pedágio com tarifas por faixa de horário

Nesse exemplo, vamos considerar como a Toll for Maps API retorna os valores de praças de pedágio com valores diferente para dias de semana, horários ou temporada.

Algumas praças de pedágio, principalmente na Argentina e no Chile, possuem valores condicionantes que variam conforme o dia, horário ou época do ano em que a rota está sendo realizada.

Por exemplo, na Argentina as concessionárias possuem tarifas especiais para horários de pico, finais de semana e feriados, ou épocas específicas do ano como baixa temporada e alta temporada.

Abaixo segue a tabela de tarifas da concessionária AUSA da Argentina, onde são disponibilizadas dois tipos de tarifas, uma para horário comum e outra para horário de pico.

803e1240-921e-45d1-acae-11a61c0af1f6

No Brasil, esse tipo de tarifa é mais raro, mas algumas concessionárias já cobram valores diferentes em finais de semana e feriados.

Nesse exemplo temos um rota com um caminhão de 4 eixos que passará pelo pórtico de Sarmiento, na Argentina. Conforme a tabela acima, esse pórtico possui valores condicionantes para os horários de pico. Abaixo a request realizada para a Directions API:

https://maps.googleapis.com/maps/api/directions/json?origin=-23.465395,-46.375007&waypoints=-23.465957,-46.371015&destination=-23.467154,-46.365598&mode=driving&key={CHAVE_API}

Requisição

Abaixo temos a requisição para a Toll for Maps API, onde a resposta da Directions será enviada no corpo da requisição para o endpoint: https://api.maplink.global/toll/v1/directions, exemplo:

curl -X POST "https://api.maplink.global/toll/v1/directions?vehicleType=TRUCK_WITH_FOUR_DOUBLE_AXLES" -H "Authorization: Bearer 3O0d0YjOL72Roqp5CrnGwh5yvgKH" -H "Content-Type: application/json" -d @C:\temp\Directions_Response.json

Onde:

  • vehicleType - Tipo de veículo a calcular o pedágio;

  • Directions_Response.json - Resposta da Directions API contendo a rota.

Resposta

Assim como nos exemplos anteriores, em results serão obtidos os valores de pedágio de cada rota. Caso a Directions API for processada com rotas alternativas, será retornado 3 results, sendo 1 resultado para cada rota.

Dentro de cada objeto em results será retornado um objeto legs que corresponde a rota em si. O objeto irá conter o valor total da rota em totalCost e um objeto tolls com os valores e informações de cada pedágio presentes na rota.

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 na moeda local, cobrado em horários sem ser pico ou alguma condicionante;

  • conditions - Array com todos os valores condicionais do pedágio. Informa haver variações de preços devido alguma condição de dia da semana, horário e se é realizado com pagamento automático ou manual. No caso desse exemplo, temos as seguintes informações:

    • daysOfWeek - Array com os diaa da semana a qual se aplica a tarifa. Valores possíveis são: [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]

    • subConditions - Indica subcondições para o dia da semana a qual se aplica a tarifa;

      • periods - Array com os períodos em que se aplica a tarifa no dia da semana. Neste exemplo, há o período “NORMAL” e o período “HOLIDAY”. Os valores possíveis são: [NORMAL, HOLIDAY, LOW_SEASON, HIGH_SEASON].

      • timesWindow - Array com os intervalos de horário no formato ["HH:mm:ss = HH:mm:ss"].

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

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

A resposta completa pode ser conferida abaixo:

{
"results": [
{
"legs": [
{
"tolls": [
{
"id": "869",
"name": "Peaje - Ruta 202",
"address": "RUTA 9, KM 25.27",
"city": " ",
"state": {
"name": "Ciudad Autonoma de Buenos Aires",
"code": "CABA"
},
"country": "Argentina",
"concession": "Alto Pistas Del Sol",
"direction": "WEST",
"coordinates": {
"latitude": -34.4863,
"longitude": -58.605575
},
"serviceTypes": [],
"price": 150.00,
"conditions": [
{
"daysOfWeek": [
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"MONDAY",
"FRIDAY"
],
"subConditions": [
{
"periods": [
"NORMAL"
],
"subConditions": [
{
"timesWindow": [
"07:00:00 - 10:59:59",
"16:00:00 - 19:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 142.50
},
{
"billingsType": [
"NORMAL"
],
"value": 180.00
}
]
},
{
"timesWindow": [
"00:00:00 - 06:59:59",
"11:00:00 - 15:59:59",
"20:00:00 - 23:59:59"
],
"subConditions": [
{
"billingsType": [
"NORMAL"
],
"value": 150.00
},
{
"billingsType": [
"TAG"
],
"value": 82.50
}
]
}
]
},
{
"periods": [
"HOLIDAY"
],
"subConditions": [
{
"timesWindow": [
"11:00:00 - 16:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 142.50
},
{
"billingsType": [
"NORMAL"
],
"value": 180.00
}
]
},
{
"timesWindow": [
"00:00:00 - 10:59:59",
"17:00:00 - 23:59:59"
],
"subConditions": [
{
"billingsType": [
"NORMAL"
],
"value": 150.00
},
{
"billingsType": [
"TAG"
],
"value": 82.50
}
]
}
]
}
]
},
{
"daysOfWeek": [
"SATURDAY",
"SUNDAY"
],
"subConditions": [
{
"periods": [
"HOLIDAY",
"NORMAL"
],
"subConditions": [
{
"timesWindow": [
"11:00:00 - 16:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 142.50
},
{
"billingsType": [
"NORMAL"
],
"value": 180.00
}
]
},
{
"timesWindow": [
"00:00:00 - 10:59:59",
"17:00:00 - 23:59:59"
],
"subConditions": [
{
"billingsType": [
"NORMAL"
],
"value": 150.00
},
{
"billingsType": [
"TAG"
],
"value": 82.50
}
]
}
]
}
]
}
]
},
{
"id": "879",
"name": "Peaje - Pilar",
"address": "RUTA 8, KM 34.84",
"city": " ",
"state": {
"name": "Ciudad Autonoma de Buenos Aires",
"code": "CABA"
},
"country": "Argentina",
"concession": "Alto Pistas Del Sol",
"direction": "WEST",
"coordinates": {
"latitude": -34.461502,
"longitude": -58.707112
},
"serviceTypes": [],
"price": 180.00,
"conditions": [
{
"daysOfWeek": [
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"MONDAY",
"FRIDAY"
],
"subConditions": [
{
"periods": [
"HOLIDAY"
],
"subConditions": [
{
"timesWindow": [
"11:00:00 - 16:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 171.00
},
{
"billingsType": [
"NORMAL"
],
"value": 200.00
}
]
},
{
"timesWindow": [
"00:00:00 - 10:59:59",
"17:00:00 - 23:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 99.00
},
{
"billingsType": [
"NORMAL"
],
"value": 180.00
}
]
}
]
},
{
"periods": [
"NORMAL"
],
"subConditions": [
{
"timesWindow": [
"07:00:00 - 10:59:59",
"16:00:00 - 19:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 171.00
},
{
"billingsType": [
"NORMAL"
],
"value": 200.00
}
]
},
{
"timesWindow": [
"00:00:00 - 06:59:59",
"11:00:00 - 15:59:59",
"20:00:00 - 23:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 99.00
},
{
"billingsType": [
"NORMAL"
],
"value": 180.00
}
]
}
]
}
]
},
{
"daysOfWeek": [
"SATURDAY",
"SUNDAY"
],
"subConditions": [
{
"periods": [
"HOLIDAY",
"NORMAL"
],
"subConditions": [
{
"timesWindow": [
"11:00:00 - 16:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 171.00
},
{
"billingsType": [
"NORMAL"
],
"value": 200.00
}
]
},
{
"timesWindow": [
"00:00:00 - 10:59:59",
"17:00:00 - 23:59:59"
],
"subConditions": [
{
"billingsType": [
"TAG"
],
"value": 99.00
},
{
"billingsType": [
"NORMAL"
],
"value": 180.00
}
]
}
]
}
]
}
]
},
{
"id": "972",
"name": "Peaje - Larena",
"address": "Ruta 8, KM 66.2",
"city": " ",
"state": {
"name": "Ciudad Autonoma de Buenos Aires",
"code": "CABA"
},
"country": "Argentina",
"concession": "Corredores Viales",
"direction": "WEST",
"coordinates": {
"latitude": -34.403416,
"longitude": -59.012973
},
"serviceTypes": [],
"price": 200.00
},
{
"id": "970",
"name": "Peaje - Solís",
"address": "Ruta 8, KM 102",
"concession": "Corredores Viales",
"direction": "WEST",
"coordinates": {
"latitude": -34.284922,
"longitude": -59.362342
},
"serviceTypes": [],
"price": 40.00
}
],
"legTotalCost": 570.00
}
],
"totalCost": 570.00
}
]
}