许多网友都是在想如何能够实现快递单号自动识别,甚至有的朋友打算一个一个去试,穷举嘛,不能说错,但效率比较低。
我的想法有两种:
一是统计大量快递的编码规则,如EMS快递是13位数,其中前后两位是字母,中间9位为数字,如IC123456789KD,国内的快递后两位通常为CN,香港的为HK,日本邮政为JP等等,后两位代表了国家。
二是调用现有接口。网上看了下,爱查快递提供的快递查询接口/api/支持快递单号的自动识及查询,如/?com=auto&nu=001477689393&id=123456&secret=yousecrethere。他们也提供单独的自动识别接口,如/auto.php?mailNo=001477689393,后面就是你的单号了。返回结果也很简单,上面的URL返回的是{"status":1,"coms":[{"com":"jingdong","num":22660}]},status就是状态,1:成功,0:失败。coms为数组,如果有多个匹配,会返回多条结果。按可能性排序的。后面的num不知道是什么意思。
我目前使用的是第二种方式,也推荐大家用第二种方式。
对了,他们的快递查询接口申请地址是/api/
附:使用示列
<?php$str=file_get_contents("/auto.php?mialNO=".$_GET['no'];$arr=json_decode($str,true);if($arr['status']==1){//some code hereecho $arr['coms'][0]['com'];}else{exit('error');}?>