Qual soma de verificação, se houver, é usada para os números de rastreamento da TNT.com?
-
09-06-2019 - |
Pergunta
Estou escrevendo um software para identificar números de rastreamento (da mesma forma que o Google identifica números FedEx ou UPS quando você os procura).A maioria dos transportadores usa um sistema, como um "sistema de modificação de média ponderada", que pode ser usado para identificar se um número é um número de rastreamento válido.Alguém sabe se os números de remessa da TNT usam esse sistema e, em caso afirmativo, o que é?Perguntei ao suporte da TNT e o representante me disse que não...mas eu gostaria de verificar novamente.
Solução
OK, já se passaram três meses desde que você perguntou, mas me deparei com isso enquanto estava escrevendo um software semelhante.Tanto quanto sabemos, a TNT utiliza o S10 sistema de número de rastreamento.O que significa que seus números serão do tipo AA#########AA.Com as duas últimas letras correspondendo a um código de país ISO/IATA.Dito isto, a TNT usa WW, que acreditamos que deve representar em todo o mundo.Esta não é exatamente uma resposta, pelo menos não se trata de somas de verificação ou algoritmos, mas pode ser útil?espero que ajude
Salgueiro
Outras dicas
Pelo que eu posso dizer, não há nenhum.Desculpe.
Presumo que você esteja tentando validar o número de rastreamento inserido para ter certeza de que foi inserido corretamente.
-Kevin Fairchild
Acredito que exista um dígito de verificação / soma de verificação, possivelmente um derivado do MOD10, mas não tenho ideia de qual algoritmo é, referido como o 9º dígito pela TNT.Seria bom saber???
Tudo o que sei é que 12345678 dígito de verificação é 5 e 22345678 dígito de verificação é 8.
Na verdade, é o MOD 11 VB.net que escrevi é o seguinte:
Dim number As String = TextBox1.Text
Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim check_digit As Integer
A = (CInt(Mid(number, 1, 1)) * 8) + (CInt(Mid(number, 2, 1)) * 6) + (CInt(Mid(number, 3, 1)) * 4) + (CInt(Mid(number, 4, 1)) * 2) + (CInt(Mid(number, 5, 1)) * 3) + (CInt(Mid(number, 6, 1)) * 5) + (CInt(Mid(number, 7, 1)) * 9) + (CInt(Mid(number, 8, 1)) * 7)
B = ((A \ 11) * 11)
C = A - B
If C = 0 Then
check_digit = 5
End If
If C = 1 Then
check_digit = 0
End If
If C <> 0 And C <> 1 Then
check_digit = 11 - C
End If
MsgBox(number & check_digit)