微信公眾平臺(tái)開發(fā)嘗試,微信公眾平臺(tái)
最近看了一篇博文是說微信公眾平臺(tái)搭建,于是心血來潮自己也嘗試了一下。
1.不用多講了,申請(qǐng)微信公眾號(hào),對(duì)于個(gè)人來說,只能申請(qǐng)訂閱號(hào)。
可以看這個(gè)鏈接的文章,http://jingyan.baidu.com/article/414eccf6011ff06b431f0aec.html
2.采用的是Sina App Engine來脫管服務(wù),就要申請(qǐng)sae開發(fā)者權(quán)限。
再看這個(gè)鏈接http://jingyan.baidu.com/article/4f7d57129a60531a20192796.html
3.在sae上新建一個(gè)應(yīng)用
我選擇的PHP,PHP幾乎免費(fèi)。Java應(yīng)用的話,有點(diǎn)小貴了。
雖然沒有學(xué)過PHP,摸著石頭過河吧。
將php代碼上傳后,就有一個(gè)可調(diào)試的url了,PHP代碼后面上。
4.再在微信公眾平臺(tái)中的開發(fā)者中心(這個(gè)要經(jīng)過一段時(shí)間的審核),填入一下內(nèi)容即可
5.然后就是對(duì)接數(shù)據(jù)了,為了測(cè)試,我對(duì)接的是圖靈機(jī)器人的數(shù)據(jù)、12306和百度地圖API
12306是為了查余票和車次,百度地圖API是為了查天氣預(yù)報(bào)、圖靈機(jī)器人見鏈接:http://www.tuling123.com/openapi/
php代碼如下,本人不是搞PHP的,因此只能在網(wǎng)上拷貝了,如有復(fù)制,純屬巧合。
php
define("TOKEN", "weixin"
);
Session_start();
Session_Register("kw"
);
$wechatObj =
new wechatCallbackapiTest();
require_once("train.php"
);
$tqTpl = "
%s 5 -
-
-
-
-
-
"
;
if (!
isset(
$_GET['echostr'
])) {
$wechatObj->
responseMsg();
}else{
$wechatObj->
valid();
}
class wechatCallbackapiTest
{
//驗(yàn)證簽名
public function valid()
{
$echoStr =
$_GET["echostr"
];
$signature =
$_GET["signature"
];
$timestamp =
$_GET["timestamp"
];
$nonce =
$_GET["nonce"
];
$token =
TOKEN;
$tmpArr =
array(
$token,
$timestamp,
$nonce);
sort(
$tmpArr);
$tmpStr =
implode(
$tmpArr);
$tmpStr =
sha1(
$tmpStr);
if(
$tmpStr ==
$signature){
echo $echoStr;
exit;
}
}
//響應(yīng)消息
public function responseMsg()
{
$postStr =
$GLOBALS["HTTP_RAW_POST_DATA"
];
if (!
empty(
$postStr)){
$this->logger("R ".
$postStr);
$postObj =
simplexml_load_string(
$postStr, 'SimpleXMLElement',
LIBXML_NOCDATA);
$RX_TYPE =
trim(
$postObj->
MsgType);
//消息類型分離
switch (
$RX_TYPE)
{
case "event":
$result =
$this->receiveEvent(
$postObj);
break;
case "text":
$result =
$this->receiveTulingText(
$postObj);
break;
case "image":
$result =
$this->receiveImage(
$postObj);
break;
case "location":
$result =
$this->receiveLocation(
$postObj);
break;
case "voice":
$result =
$this->receiveVoice(
$postObj);
break;
case "video":
$result =
$this->receiveVideo(
$postObj);
break;
case "link":
$result =
$this->receiveLink(
$postObj);
break;
default:
$result = "unknown msg type: ".
$RX_TYPE;
break;
}
$this->logger("T ".
$result);
echo $result;
}else {
echo ""
;
exit;
}
}
//接收事件消息
private function receiveEvent(
$object)
{
$content = ""
;
switch (
$object->
Event)
{
case "subscribe":
$content = "歡迎關(guān)注TomSnail "
;
$content .= (!
empty(
$object->EventKey))?("\n來自二維碼場景 ".
str_replace("qrscene_","",
$object->EventKey)):""
;
break;
case "unsubscribe":
$content = "取消關(guān)注"
;
break;
case "SCAN":
$content = "掃描場景 ".
$object->
EventKey;
break;
case "CLICK":
switch (
$object->
EventKey)
{
case "COMPANY":
$content =
array();
$content[] =
array("Title"=>"多圖文1標(biāo)題", "Description"=>"", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958"
);
break;
default:
$content = "點(diǎn)擊菜單:".
$object->
EventKey;
break;
}
break;
case "LOCATION":
$content = "上傳位置:緯度 ".
$object->Latitude.";經(jīng)度 ".
$object->
Longitude;
break;
case "VIEW":
$content = "跳轉(zhuǎn)鏈接 ".
$object->
EventKey;
break;
case "MASSSENDJOBFINISH":
$content = "消息ID:".
$object->MsgID.",結(jié)果:".
$object->Status.",粉絲數(shù):".
$object->TotalCount.",過濾:".
$object->FilterCount.",發(fā)送成功:".
$object->SentCount.",發(fā)送失?。?.
$object->
ErrorCount;
break;
default:
$content = "receive a new event: ".
$object->
Event;
break;
}
if(
is_array(
$content)){
if (
isset(
$content[0
])){
$result =
$this->transmitNews(
$object,
$content);
}else if (
isset(
$content['MusicUrl'
])){
$result =
$this->transmitMusic(
$object,
$content);
}
}else{
$result =
$this->transmitText(
$object,
$content);
}
return $result;
}
private function receiveTulingText(
$object){
try{
$keyword =
trim(
$object->
Content);
$userid =
trim(
$object->
FromUserName);
$apiKey = "*******************************"
;
$apiURL = "http://www.tuling123.com/openapi/api?key=".
$apiKey."&info=".
$keyword."&userid=".
userid;
if((
substr_count(
$keyword,'天氣')!=0)||
$_SESSION["kw"]=="天氣"){
//百度地圖API
if(
$keyword=="天氣"
){
$_SESSION["kw"]="天氣"
;
$content = "請(qǐng)輸入城市".
$_SESSION["kw"
];
}else{
$geshu =
substr_count(
$keyword,'天氣'
);
if(
$geshu==0
){
$city =
$keyword;
}else{
$t =
explode("天氣",
$keyword);
for(
$i=0;
$i$geshu;
$i++
)
{
if(
$t[
$i]!=''
)
{
$city =
$t[
$i];
break;
}
}
}
$mykey ="*********************"
;
$url = "http://api.map.baidu.com/telematics/v3/weather?location=".
$city."&output=json&ak=".
$mykey;
$output =
file_get_contents(
$url);
$contentStr = json_decode(
$output,
true);
if(
$contentStr['status']=='success'
)
{
$T[0]['Title']=
$contentStr['date']." ".
$contentStr['results'][0]['currentCity']."天氣"
;
$T[0]['PicUrl']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"
;
$T[0]['Url']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"
;
if(
is_array(
$contentStr['results'][0]['index'
]))
{
$T[2]['Title']="【pm2.5】".
$contentStr['results'][0]['pm25']."\n"."【".
$contentStr['results'][0]['index'][0]['title']."】"."(".
$contentStr['results'][0]['index'][0]['zs'].") ".
$contentStr['results'][0]['index'][0]['des'
];
//下一行是洗車指數(shù),感覺不對(duì)主題還是不要的好。。 //$T[2]['Title']=$T[2]['Title']."\n"."【".$contentStr['results'][0]['index'][1]['title']."】(".$contentStr['results'][0]['index'][1]['zs'].")".$contentStr['results'][0]['index'][1]['des'];
$T[2]['Title']=
$T[2]['Title']."\n"."【".
$contentStr['results'][0]['index'][2]['title']."】(".
$contentStr['results'][0]['index'][2]['zs'].")".
$contentStr['results'][0]['index'][2]['des'
];
}
else
$guowai=1
;
for(
$i=1,
$aaa=0;
$i$i++
)
{
if(
$i==2 &&
$guowai!=1
)
continue;
if(
$guowai==1 &&
$i==5
)
continue;
$T[
$i]['Title']=
$contentStr['results'][0]['weather_data'][
$aaa]['date']."".
$contentStr['results'][0]['weather_data'][
$aaa]['temperature']."".
$contentStr['results'][0]['weather_data'][
$aaa]['weather']." ".
$contentStr['results'][0]['weather_data'][
$aaa]['wind'
];
$T[
$i]['PicUrl']=
$contentStr['results'][0]['weather_data'][
$aaa]['dayPictureUrl'
];
$T[
$i]['Url']=
$contentStr['results'][0]['weather_data'][
$aaa]['dayPictureUrl'
];
$aaa++
;
}
$content =
$T;
}
}
}else if(
substr_count(
$keyword,'火車')!=0 &&
$keyword!='火車'){
//12306
$geshu =
substr_count(
$keyword,'火車:'
);
$k =
str_replace('火車 ', "",
$keyword);
$t =
explode(" ",
$k);
$startstaion =
$t[0
];
$endstation =
$t[1
];
$date =
$t[2
];
if(
$date==
null){
$date =
date("Y-m-d",
time());
}
if(
substr_count(
$date,'-')==0
){
$date =
date("Y-m",
time())."-".
$date;
}
$time =
$t[3
];
if(
$time==
null){
$time = "00:00"
;
}
if(
substr_count(
$time,':')==0
){
$time =
$time.":00"
;
}
$data = gettrain(
$startstaion,
$endstation,
$date,
$time);
$str=""
;
$T[0]['Title']=
$startstaion."到".
$endstation." ".
$date." ".
$time."以后10列火車信息"
;
$T[0]['PicUrl']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"
;
$T[0]['Url']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"
;
$count = 1
;
foreach(
$data as $key =>
$value){
$str=
$count." "
;
$str.="火車列次:{
$data[
$key]['station_train_code']}\n"
;
$str.="始發(fā)站:{
$data[
$key]['start_station_name']},終點(diǎn)站:{
$data[
$key]['end_station_name']}\n"
;
$str.="出發(fā)時(shí)間:{
$data[
$key]['start_time']},到站時(shí)間:{
$data[
$key]['arrive_time']},歷時(shí):{
$data[
$key]['lishi']}\n"
;
$str.="一等座:{
$data[
$key]['zy_num']}\n二等座:{
$data[
$key]['ze_num']}\n硬座:{
$data[
$key]['yz_num']}\n硬臥:{
$data[
$key]['yw_num']}\n"
;
$str.="軟臥:{
$data[
$key]['rw_num']}\n軟座:{
$data[
$key]['rz_num']}\n特等座:{
$data[
$key]['tz_num']}\n無座:{
$data[
$key]['wz_num']}"
;
$count =
$count+1
;
$T[
$count]['Title'] =
$str;
// $T[$count]['Url']="http://kyfw.12306.cn/otn/leftTicket/queryTicketPrice?train_no=".$data[$key]["train_no"]."&from_station_no=".$data[$key]["from_station_no"]."&to_station_no=".$data[$key]["to_station_no"]."&seat_types=".$data[$key]["seat_types"]."&train_date=$date";
$T[
$count]['Url'] = "https://kyfw.12306.cn/otn/login/init"
;
if(
$count==10
){
break;}
}
$content =
$T;
}else{
//圖靈機(jī)器人
$file_contents =
file_get_contents(
$apiURL);
$file_contents = json_decode(
$file_contents,
true);
$code =
$file_contents["code"
];
if(
$code==100000
){
$content =
$file_contents["text"
];
}else if(
$code==200000
){
$T[0]['Title']=
$file_contents["text"
];
//$T[0]['PicUrl']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg";
$T[0]['Url']=
$file_contents["url"
];
$content =
$T;
}else if(
$code==302000
){
$T[0]['Title']=
$file_contents["text"
];
$T[0]['PicUrl']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"
;
$T[0]['Url']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"
;
$data =
$file_contents["list"
];
$count = 1
;
foreach(
$data as $key =>
$value){
$T[
$count]['Title']=
$data[
$key]["article"
];
$T[
$count]['PicUrl']=
$data[
$key]["icon"
];
$T[
$count]['Url']=
$data[
$key]["detailurl"
];
$count++
;
}
$content =
$T;
}else if(
$code==305000
){
$T[0]['Title']=
$file_contents["text"
];
$T[0]['PicUrl']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"
;
$T[0]['Url']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"
;
$data =
$file_contents["list"
];
$count = 1
;
foreach(
$data as $key =>
$value){
$T[
$count]['Title']="車次".
$data[
$key]["trainnum"]."\n起始站:".
$data[
$key]["start"]."\n到達(dá)站:".
$data[
$key]["terminal"]."\n開車時(shí)間:".
$data[
$key]["starttime"]."\n到達(dá)時(shí)間:".
$data[
$key]["endtime"
];
$T[
$count]['PicUrl']=
$data[
$key]["icon"
];
$T[
$count]['Url']=
$data[
$key]["detailurl"
];
$count++
;
if(
$count==10
){
break;
}
}
$content =
$T;
}else if(
$code==306000
){
$T[0]['Title']=
$file_contents["text"
];
$T[0]['PicUrl']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"
;
$T[0]['Url']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"
;
$data =
$file_contents["list"
];
$count = 1
;
foreach(
$data as $key =>
$value){
$T[
$count]['Title']="航班號(hào)".
$data[
$key]["flight"]."航班路線".
$data[
$key]["route"]."\n起飛時(shí)間:".
$data[
$key]["starttime"]."\n到達(dá)時(shí)間:".
$data[
$key]["endtime"]."\n狀態(tài):".
$data[
$key]["state"
];
$T[
$count]['PicUrl']=
$data[
$key]["icon"
];
$T[
$count]['Url']=
$data[
$key]["detailurl"
];
$count++
;
}
$content =
$T;
}else if(
$code==308000
){
$T[0]['Title']=
$file_contents["text"
];
$T[0]['PicUrl']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"
;
$T[0]['Url']="http://zhengwairen-try2.stor.sinaapp.com/xytq.jpg"
;
$data =
$file_contents["list"
];
$count = 1
;
foreach(
$data as $key =>
$value){
$T[
$count]['Title']="名稱".
$data[
$key]["name"]."詳情".
$data[
$key]["info"
];
$T[
$count]['PicUrl']=
$data[
$key]["icon"
];
$T[
$count]['Url']=
$data[
$key]["detailurl"
];
$count++
;
}
$content =
$T;
}else{
$content =
$file_contents["text"
];
}
}
if(
is_array(
$content)){
if (
isset(
$content[0]['PicUrl'
])){
$result =
$this->transmitNews(
$object,
$content);
}else if (
isset(
$content['MusicUrl'
])){
$result =
$this->transmitMusic(
$object,
$content);
}
}else{
$result =
$this->transmitText(
$object,
$content);
}
}catch(
Exception $e){
$content=
$e->
getMessage();
$result =
$this->transmitText(
$object,
$content);
}
return $result;
}
//接收?qǐng)D片消息
private function receiveImage(
$object)
{
$content =
array("MediaId"=>
$object->
MediaId);
$result =
$this->transmitImage(
$object,
$content);
return $result;
}
//接收位置消息
private function receiveLocation(
$object)
{
$content = "你發(fā)送的是位置,緯度為:".
$object->Location_X.";經(jīng)度為:".
$object->Location_Y.";縮放級(jí)別為:".
$object->Scale.";位置為:".
$object->
Label;
$result =
$this->transmitText(
$object,
$content);
return $result;
}
//接收語音消息
private function receiveVoice(
$object)
{
if (
isset(
$object->Recognition) && !
empty(
$object->
Recognition)){
$content = "你剛才說的是:".
$object->
Recognition;
$result =
$this->transmitText(
$object,
$content);
}else{
$content =
array("MediaId"=>
$object->
MediaId);
$result =
$this->transmitVoice(
$object,
$content);
}
return $result;
}
//接收視頻消息
private function receiveVideo(
$object)
{
$content =
array("MediaId"=>
$object->MediaId, "ThumbMediaId"=>
$object->ThumbMediaId, "Title"=>"", "Description"=>""
);
$result =
$this->transmitVideo(
$object,
$content);
return $result;
}
//接收鏈接消息
private function receiveLink(
$object)
{
$content = "你發(fā)送的是鏈接,標(biāo)題為:".
$object->Title.";內(nèi)容為:".
$object->Description.";鏈接地址為:".
$object->
Url;
$result =
$this->transmitText(
$object,
$content);
return $result;
}
//回復(fù)文本消息
private function transmitText(
$object,
$content)
{
$xmlTpl = "
%s
"
;
$result =
sprintf(
$xmlTpl,
$object->FromUserName,
$object->ToUserName,
time(),
$content);
return $result;
}
//回復(fù)圖片消息
private function transmitImage(
$object,
$imageArray)
{
$itemTpl = "
"
;
$item_str =
sprintf(
$itemTpl,
$imageArray['MediaId'
]);
$xmlTpl = "
%s
$item_str
"
;
$result =
sprintf(
$xmlTpl,
$object->FromUserName,
$object->ToUserName,
time());
return $result;
}
//回復(fù)語音消息
private function transmitVoice(
$object,
$voiceArray)
{
$itemTpl = "
"
;
$item_str =
sprintf(
$itemTpl,
$voiceArray['MediaId'
]);
$xmlTpl = "
%s
$item_str
"
;
$result =
sprintf(
$xmlTpl,
$object->FromUserName,
$object->ToUserName,
time());
return $result;
}
//回復(fù)視頻消息
private function transmitVideo(
$object,
$videoArray)
{
$itemTpl = "
"
;
$item_str =
sprintf(
$itemTpl,
$videoArray['MediaId'],
$videoArray['ThumbMediaId'],
$videoArray['Title'],
$videoArray['Description'
]);
$xmlTpl = "
%s
$item_str
"
;
$result =
sprintf(
$xmlTpl,
$object->FromUserName,
$object->ToUserName,
time());
return $result;
}
//回復(fù)圖文消息
private function transmitNews(
$object,
$newsArray)
{
if(!
is_array(
$newsArray)){
return;
}
$itemTpl = "
-
"
;
$item_str = ""
;
foreach (
$newsArray as $item){
$item_str .=
sprintf(
$itemTpl,
$item['Title'],
$item['Description'],
$item['PicUrl'],
$item['Url'
]);
}
$xmlTpl = "
%s
%s
$item_str
"
;
$result =
sprintf(
$xmlTpl,
$object->FromUserName,
$object->ToUserName,
time(),
count(
$newsArray));
return $result;
}
//回復(fù)音樂消息
private function transmitMusic(
$object,
$musicArray)
{
$itemTpl = "
"
;
$item_str =
sprintf(
$itemTpl,
$musicArray['Title'],
$musicArray['Description'],
$musicArray['MusicUrl'],
$musicArray['HQMusicUrl'
]);
$xmlTpl = "
%s
$item_str
"
;
$result =
sprintf(
$xmlTpl,
$object->FromUserName,
$object->ToUserName,
time());
return $result;
}
//回復(fù)多客服消息
private function transmitService(
$object)
{
$xmlTpl = "
%s
"
;
$result =
sprintf(
$xmlTpl,
$object->FromUserName,
$object->ToUserName,
time());
return $result;
}
//日志記錄
private function logger(
$log_content)
{
if(
isset(
$_SERVER['HTTP_APPNAME'])){
//SAE
sae_set_display_errors(
false);
sae_debug($log_content);
sae_set_display_errors(true);
}else if(
$_SERVER['REMOTE_ADDR'] != "127.0.0.1"){
//LOCAL
$max_size = 10000
;
$log_filename = "log.xml"
;
if(
file_exists(
$log_filename) and (
abs(
filesize(
$log_filename)) >
$max_size)){
unlink(
$log_filename);}
file_put_contents(
$log_filename,
date('H:i:s')." ".
$log_content."\r\n",
FILE_APPEND);
}
}
}
?>
View Code
php
return array(
"北京北" => "VAP",
"北京東" => "BOP",
"北京" => "BJP",
"北京南" => "VNP",
"北京西" => "BXP",
"重慶北" => "CUW",
"重慶" => "CQW",
"重慶南" => "CRW",
"長春" => "CCT",
"長春南" => "CET",
"長春西" => "CRT",
"成都東" => "ICW",
"成都南" => "CNW",
"成都" => "CDW",
"長沙" => "CSQ",
"長沙南" => "CWQ",
"阿爾山" => "ART",
"安康" => "AKY",
"阿克蘇" => "ASR",
"阿里河" => "AHX",
"阿拉山口" => "AKR",
"安平" => "APT",
"安慶" => "AQH",
"安順" => "ASW",
"鞍山" => "AST",
"安陽" => "AYF",
"北安" => "BAB",
"蚌埠" => "BBH",
"白城" => "BCT",
"北海" => "BHZ",
"白河" => "BEL",
"白澗" => "BAP",
"寶雞" => "BJY",
"濱江" => "BJB",
"博克圖" => "BKX",
"百色" => "BIZ",
"白山市" => "HJL",
"北臺(tái)" => "BTT",
"包頭東" => "BDC",
"包頭" => "BTC",
"北屯市" => "BXR",
"本溪" => "BXT",
"白云鄂博" => "BEC",
"白銀西" => "BXJ",
"亳州" => "BZH",
"赤壁" => "CBN",
"常德" => "VGQ",
"承德" => "CDP",
"長甸" => "CDT",
"赤峰" => "CFD",
"茶陵" => "CDG",
"蒼南" => "CEH",
"昌平" => "CPP",
"崇仁" => "CRG",
"昌圖" => "CTT",
"長汀鎮(zhèn)" => "CDB",
"崇信" => "CIJ",
"曹縣" => "CXK",
"楚雄" => "COM",
"陳相屯" => "CXT",
"長治北" => "CBF",
"長征" => "CZJ",
"池州" => "IYH",
"常州" => "CZH",
"郴州" => "CZQ",
"長治" => "CZF",
"滄州" => "COP",
"崇左" => "CZZ",
"大安北" => "RNT",
"大成" => "DCT",
"丹東" => "DUT",
"東方紅" => "DFB",
"東莞東" => "DMQ",
"大虎山" => "DHD",
"敦煌" => "DHJ",
"敦化" => "DHL",
"德惠" => "DHT",
"東京城" => "DJB",
"大澗" => "DFP",
"都江堰" => "DDW",
"大連北" => "DFT",
"大理" => "DKM",
"大連" => "DLT",
"定南" => "DNG",
"大慶" => "DZX",
"東勝" => "DOC",
"大石橋" => "DQT",
"大同" => "DTV",
"東營" => "DPK",
"大楊樹" => "DUX",
"都勻" => "RYW",
"鄧州" => "DOF",
"達(dá)州" => "RXW",
"德州" => "DZP",
"額濟(jì)納" => "EJC",
"二連" => "RLC",
"恩施" => "ESN",
"昂昂溪" => "AAX",
"阿城" => "ACB",
"安達(dá)" => "ADX",
"安定" => "ADP",
"安廣" => "AGT",
"艾河" => "AHP",
"安化" => "PKQ",
"艾家村" => "AJJ",
"鰲江" => "ARH",
"安家" => "AJB",
"阿金" => "AJD",
"阿克陶" => "AER",
"安口窯" => "AYY",
"敖力布告" => "ALD",
"安龍" => "AUZ",
"阿龍山" => "ASX",
"安陸" => "ALN",
"阿木爾" => "JTX",
"阿南莊" => "AZM",
"安慶西" => "APH",
"鞍山西" => "AXT",
"安塘" => "ATV",
"安亭北" => "ASH",
"阿圖什" => "ATR",
"安圖" => "ATL",
"安溪" => "AXS",
"博鰲" => "BWQ",
"白壁關(guān)" => "BGV",
"蚌埠南" => "BMH",
"巴楚" => "BCR",
"板城" => "BUP",
"北戴河" => "BEP",
"保定" => "BDP",
"寶坻" => "BPP",
"八達(dá)嶺" => "ILP",
"巴東" => "BNN",
"柏果" => "BGM",
"布海" => "BUT",
"白河?xùn)|" => "BIY",
"賁紅" => "BVC",
"寶華山" => "BWH",
"白河縣" => "BEY",
"白芨溝" => "BJJ",
"碧雞關(guān)" => "BJM",
"北滘" => "IBQ",
"碧江" => "BLQ",
"白雞坡" => "BBM",
"筆架山" => "BSB",
"八角臺(tái)" => "BTD",
"??? => "BKD",
"白奎堡" => "BKB",
"白狼" => "BAT",
"百浪" => "BRZ",
"博樂" => "BOR",
"寶拉格" => "BQC",
"巴林" => "BLX",
"寶林" => "BNB",
"北流" => "BOZ",
"勃利" => "BLB",
"布列開" => "BLR",
"寶龍山" => "BND",
"八面城" => "BMD",
"班貓?bào)? => "BNM",
"八面通" => "BMB",
"北馬圈子" => "BRP",
"北票南" => "RPD",
"白旗" => "BQP",
"寶泉嶺" => "BQB",
"白泉" => "BQL",
"白沙" => "BSW",
"巴山" => "BAY",
"白水江" => "BSY",
"白沙坡" => "BPM",
"白石山" => "BAL",
"白水鎮(zhèn)" => "BUM",
"坂田" => "BTQ",
"泊頭" => "BZP",
"北屯" => "BYP",
"本溪湖" => "BHT",
"博興" => "BXK",
"八仙筒" => "VXD",
"白音察干" => "BYC",
"背蔭河" => "BYB",
"北營" => "BIV",
"巴彥高勒" => "BAC",
"白音他拉" => "BID",
"鲅魚圈" => "BYT",
"白銀市" => "BNJ",
"白音胡碩" => "BCD",
"巴中" => "IEW",
"霸州" => "RMP",
"北宅" => "BVP",
"赤壁北" => "CIN",
"查布嘎" => "CBC",
"長城" => "CEJ",
"長沖" => "CCM",
"承德東" => "CCP",
"赤峰西" => "CID",
"嵯崗" => "CAX",
"柴崗" => "CGT",
"長葛" => "CEF",
"柴溝堡" => "CGV",
"城固" => "CGY",
"陳官營" => "CAJ",
"成高子" => "CZB",
"草海" => "WBW",
"柴河" => "CHB",
"冊(cè)亨" => "CHZ",
"草河口" => "CKT",
"崔黃口" => "CHP",
"巢湖" => "CIH",
"蔡家溝" => "CJT",
"成吉思汗" => "CJX",
"岔江" => "CAM",
"蔡家坡" => "CJY",
"滄口" => "CKK",
"昌樂" => "CLK",
"超梁溝" => "CYP",
"慈利" => "CUQ",
"昌黎" => "CLP",
"長嶺子" => "CLT",
"晨明" => "CMB",
"長農(nóng)" => "CNJ",
"昌平北" => "VBP",
"長坡嶺" => "CPM",
"辰清" => "CQB",
"楚山" => "CSB",
"長壽" => "EFW",
"磁山" => "CSP",
"蒼石" => "CST",
"草市" => "CSL",
"察素齊" => "CSC",
"長山屯" => "CVT",
"長汀" => "CES",
"昌圖西" => "CPT",
"春灣" => "CQQ",
"磁縣" => "CIP",
"岑溪" => "CNZ",
"辰溪" => "CXQ",
"磁西" => "CRP",
"長興南" => "CFH",
"磁窯" => "CYK",
"朝陽" => "CYD",
"春陽" => "CAL",
"城陽" => "CEK",
"創(chuàng)業(yè)村" => "CEX",
"朝陽川" => "CYL",
"朝陽地" => "CDD",
"長垣" => "CYF",
"朝陽鎮(zhèn)" => "CZL",
"滁州北" => "CUH",
"常州北" => "ESH",
"滁州" => "CXH",
"潮州" => "CKQ",
"常莊" => "CVK",
"曹子里" => "CFP",
"車轉(zhuǎn)灣" => "CWM",
"郴州西" => "ICQ",
"滄州西" => "CBP",
"德安" => "DAG",
"大安" => "RAT",
"東安" => "DAZ",
"大壩" => "DBJ",
"大板" => "DBC",
"大巴" => "DBD",
"到保" => "RBT",
"定邊" => "DYJ",
"東邊井" => "DBB",
"德伯斯" => "RDT",
"打柴溝" => "DGJ",
"德昌" => "DVW",
"滴道" => "DDB",
"大德" => "DEM",
"大磴溝" => "DKJ",
"刀爾登" => "DRD",
"得耳布爾" => "DRX",
"東方" => "UFQ",
"丹鳳" => "DGY",
"東豐" => "DIL",
"都格" => "DMM",
"大官屯" => "DTT",
"大關(guān)" => "RGW",
"東光" => "DGP",
"東莞" => "DAQ",
"東海" => "DHB",
"大灰廠" => "DHP",
"大紅旗" => "DQD",
"東??h" => "DQH",
"德惠西" => "DXT",
"達(dá)家溝" => "DJT",
"東津" => "DKB",
"杜家" => "DJL",
"大舊莊" => "DJM",
"大口屯" => "DKP",
"東來" => "RVD",
"德令哈" => "DHO",
"大陸號(hào)" => "DLC",
"帶嶺" => "DLB",
"大林" => "DLD",
"達(dá)拉特旗" => "DIC",
"獨(dú)立屯" => "DTX",
"豆羅" => "DLV",
"達(dá)拉特西" => "DNC",
"東明村" => "DMD",
"洞廟河" => "DEP",
"東明縣" => "DNF",
"大擬" => "DNZ",
"大平房" => "DPD",
"大盤石" => "RPP",
"大埔" => "DPI",
"大堡" => "DVT",
"大其拉哈" => "DQX",
"道清" => "DML",
"對(duì)青山" => "DQB",
"德清西" => "MOH",
"東升" => "DRQ",
"獨(dú)山" => "RWW",
"碭山" => "DKH",
"登沙河" => "DWT",
"讀書鋪" => "DPM",
"大石頭" => "DSL",
"大石寨" => "RZT",
"東臺(tái)" => "DBH",
"定陶" => "DQK",
"燈塔" => "DGT",
"大田邊" => "DBM",
"東通化" => "DTL",
"丹徒" => "RUH",
"大屯" => "DNT",
"東灣" => "DRJ",
"大武口" => "DFJ",
"低窩鋪" => "DWJ",
"大王灘" => "DZZ",
"大灣子" => "DFM",
"大興溝" => "DXL",
"大興" => "DXX",
"定西" => "DSJ",
"甸心" => "DXM",
"東鄉(xiāng)" => "DXG",
"代縣" => "DKV",
"定襄" => "DXV",
"東戌" => "RXP",
"東辛莊" => "DXD",
"丹陽" => "DYH",
"大雁" => "DYX",
"德陽" => "DYW",
"當(dāng)陽" => "DYN",
"丹陽北" => "EXH",
"大英東" => "IAW",
"東淤地" => "DBV",
"大營" => "DYV",
"定遠(yuǎn)" => "EWH",
"岱岳" => "RYV",
"大元" => "DYZ",
"大營鎮(zhèn)" => "DJP",
"大營子" => "DZD",
"大戰(zhàn)場" => "DTJ",
"德州東" => "DIP",
"低莊" => "DVQ",
"東鎮(zhèn)" => "DNV",
"道州" => "DFZ",
"東至" => "DCH",
"東莊" => "DZV",
"兌鎮(zhèn)" => "DWV",
"豆莊" => "ROP",
"定州" => "DXP",
"大竹園" => "DZY",
"大杖子" => "DAP",
"豆張莊" => "RZP",
"峨邊" => "EBW",
"二道溝門" => "RDP",
"二道灣" => "RDX",
"二龍" => "RLD",
"二龍山屯" => "ELA",
"峨眉" => "EMW",
"二密河" => "RML",
"二營" => "RYJ",
"鄂州" => "ECN",
"安陽東" => "ADF",
"保定東" => "BMP",
"長陽" => "CYN",
"東二道河" => "DRB",
"大苴" => "DIM",
"大青溝" => "DSD",
"定州東" => "DOP",
"福州" => "FZS",
"福州南" => "FYS",
"貴陽" => "GIW",
"廣州北" => "GBQ",
"廣州東" => "GGQ",
"廣州" => "GZQ",
"廣州南" => "IZQ",
"哈爾濱" => "HBB",
"哈爾濱東" => "VBB",
"哈爾濱西" => "VAB",
"合肥" => "HFH",
"合肥西" => "HTH",
"呼和浩特東" => "NDC",
"呼和浩特" => "HHC",
"海口東" => "HMQ",
"??? => "VUQ",
"杭州" => "HZH",
"杭州南" => "XHH",
"濟(jì)南" => "JNK",
"濟(jì)南東" => "JAK",
"濟(jì)南西" => "JGK",
"防城港" => "FEZ",
"福鼎" => "FES",
"風(fēng)陵渡" => "FLV",
"涪陵" => "FLW",
"富拉爾基" => "FRX",
"撫順北" => "FET",
"佛山" => "FSQ",
"阜新" => "FXD",
"阜陽" => "FYH",
"格爾木" => "GRO",
"廣漢" => "GHW",
"古交" => "GJV",
"桂林北" => "GBZ",
"古蓮" => "GRX",
"桂林" => "GLZ",
"固始" => "GXN",
"廣水" => "GSN",
"干塘" => "GNJ",
"廣元" => "GYW",
"贛州" => "GZG",
"公主嶺" => "GLT",
"公主嶺南" => "GBT",
"淮安" => "AUH",
"鶴北" => "HMB",
"淮北" => "HRH",
"淮濱" => "HVN",
"河邊" => "HBV",
"潢川" => "KCN",
"韓城" => "HCY",
"邯鄲" => "HDP",
"橫道河子" => "HDB",
"鶴崗" => "HGB",
"皇姑屯" => "HTT",
"紅果" => "HEM",
"黑河" => "HJB",
"懷化" => "HHQ",
"漢口" => "HKN",
"葫蘆島" => "HLD",
"海拉爾" => "HRX",
"霍林郭勒" => "HWD",
"海倫" => "HLB",
"侯馬" => "HMV",
"哈密" => "HMR",
"淮南" => "HAH",
"樺南" => "HNB",
"海寧西" => "EUH",
"鶴慶" => "HQM",
"懷柔北" => "HBP",
"懷柔" => "HRP",
"黃石東" => "OSN",
"華山" => "HSY",
"黃石" => "HSN",
"黃山" => "HKH",
"衡水" => "HSP",
"衡陽" => "HYQ",
"菏澤" => "HIK",
"賀州" => "HXZ",
"漢中" => "HOY",
"惠州" => "HCQ",
"吉安" => "VAG",
"集安" => "JAL",
"江邊村" => "JBG",
"晉城" => "JCF",
"金城江" => "JJZ",
"景德鎮(zhèn)" => "JCG",
"嘉峰" => "JFF",
"加格達(dá)奇" => "JGX",
"井岡山" => "JGG",
"蛟河" => "JHL",
"金華南" => "RNH",
"金華西" => "JBH",
"九江" => "JJG",
"吉林" => "JLL",
"荊門" => "JMN",
"佳木斯" => "JMB",
"濟(jì)寧" => "JIK",
"集寧南" => "JAC",
"酒泉" => "JQJ",
"江山" => "JUH",
"吉首" => "JIQ",
"九臺(tái)" => "JTL",
"鏡鐵山" => "JVJ",
"雞西" => "JXB",
"薊縣" => "JKP",
"績溪縣" => "JRH",
"嘉峪關(guān)" => "JGJ",
"江油" => "JFW",
"錦州" => "JZD",
"金州" => "JZT",
"福安" => "FAS",
"防城" => "FAZ",
"豐城" => "FCG",
"豐城南" => "FNG",
"肥東" => "FIH",
"發(fā)耳" => "FEM",
"富海" => "FHX",
"福海" => "FHR",
"鳳凰城" => "FHT",
"奉化" => "FHH",
"富錦" => "FIB",
"范家屯" => "FTT",
"福利屯" => "FTB",
"豐樂鎮(zhèn)" => "FZB",
"阜南" => "FNH",
"阜寧" => "AKH",
"撫寧" => "FNP",
"福清" => "FQS",
"福泉" => "VMW",
"豐水村" => "FSJ",
"豐順" => "FUQ",
"繁峙" => "FSV",
"撫順" => "FST",
"福山口" => "FKP",
"扶綏" => "FSZ",
"馮屯" => "FTX",
"浮圖峪" => "FYP",
"富縣東" => "FDY",
"鳳縣" => "FXY",
"富縣" => "FEY",
"費(fèi)縣" => "FXK",
"鳳陽" => "FUH",
"汾陽" => "FAV",
"扶余北" => "FBT",
"分宜" => "FYG",
"富源" => "FYM",
"扶余" => "FYT",
"富裕" => "FYX",
"撫州北" => "FBG",
"鳳州" => "FZY",
"豐鎮(zhèn)" => "FZC",
"范鎮(zhèn)" => "VZK",
"固安" => "GFP",
"廣安" => "VJW",
"高碑店" => "GBP",
"溝幫子" => "GBD",
"甘草店" => "GDJ",
"谷城" => "GCN",
"藁城" => "GEP",
"高村" => "GCV",
"古城鎮(zhèn)" => "GZB",
"廣德" => "GRH",
"貴定" => "GTW",
"貴定南" => "IDW",
"古東" => "GDV",
"貴港" => "GGZ",
"官高" => "GVP",
"葛根廟" => "GGT",
"干溝" => "GGL",
"甘谷" => "GGJ",
"高各莊" => "GGP",
"甘河" => "GAX",
"根河" => "GEX",
"郭家店" => "GDT",
"孤家子" => "GKT",
"高老" => "GOB",
"古浪" => "GLJ",
"皋蘭" => "GEJ",
"高樓房" => "GFM",
"歸流河" => "GHT",
"關(guān)林" => "GLF",
"甘洛" => "VOW",
"郭磊莊" => "GLP",
"高密" => "GMK",
"公廟子" => "GMC",
"工農(nóng)湖" => "GRT",
"廣寧寺" => "GNT",
"廣南衛(wèi)" => "GNM",
"高平" => "GPF",
"甘泉北" => "GEY",
"共青城" => "GAG",
"甘旗卡" => "GQD",
"甘泉" => "GQY",
"高橋鎮(zhèn)" => "GZD",
"趕水" => "GSW",
"灌水" => "GST",
"孤山口" => "GSP",
"果松" => "GSL",
"高山子" => "GSD",
"嘎什甸子" => "GXD",
"高臺(tái)" => "GTJ",
"高灘" => "GAY",
"古田" => "GTS",
"官廳" => "GTP",
"廣通" => "GOM",
"官廳西" => "KEP",
"貴溪" => "GXG",
"渦陽" => "GYH",
"鞏義" => "GXF",
"高邑" => "GIP",
"鞏義南" => "GYF",
"固原" => "GUJ",
"菇園" => "GYL",
"公營子" => "GYD",
"光澤" => "GZS",
"古鎮(zhèn)" => "GNQ",
"瓜州" => "GZJ",
"高州" => "GSQ",
"固鎮(zhèn)" => "GEH",
"蓋州" => "GXT",
"官字井" => "GOT",
"革鎮(zhèn)堡" => "GZT",
"冠豸山" => "GSS",
"蓋州西" => "GAT",
"紅安" => "HWN",
"淮安南" => "AMH",
"紅安西" => "VXN",
"海安縣" => "HIH",
"黃柏" => "HBL",
"海北" => "HEB",
"鶴壁" => "HAF",
"華城" => "VCQ",
"合川" => "WKW",
"河唇" => "HCZ",
"漢川" => "HCN",
"海城" => "HCT",
"黑沖灘" => "HCJ",
"黃村" => "HCP",
"海城西" => "HXT",
"化德" => "HGC",
"洪洞" => "HDV",
"橫峰" => "HFG",
"韓府灣" => "HXJ",
"漢沽" => "HGP",
"黃瓜園" => "HYM",
"紅光鎮(zhèn)" => "IGW",
"渾河" => "HHT",
"紅花溝" => "VHD",
"黃花筒" => "HUD",
"賀家店" => "HJJ",
"和靜" => "HJR",
"紅江" => "HFM",
"黑井" => "HIM",
"獲嘉" => "HJF",
"河津" => "HJV",
"涵江" => "HJS",
"華家" => "HJT",
"河間西" => "HXP",
"花家莊" => "HJM",
"河口南" => "HKJ",
"黃口" => "KOH",
"湖口" => "HKG",
"呼蘭" => "HUB",
"葫蘆島北" => "HPD",
"浩良河" => "HHB",
"哈拉海" => "HIT",
"鶴立" => "HOB",
"樺林" => "HIB",
"黃陵" => "ULY",
"海林" => "HRB",
"虎林" => "VLB",
"寒嶺" => "HAT",
"和龍" => "HLL",
"海龍" => "HIL",
"哈拉蘇" => "HAX",
"呼魯斯太" => "VTJ",
"火連寨" => "HLT",
"黃梅" => "VEH",
"蛤蟆塘" => "HMT",
"韓麻營" => "HYP",
"黃泥河" => "HHL",
"海寧" => "HNH",
"惠農(nóng)" => "HMJ",
"和平" => "VAQ",
"花棚子" => "HZM",
"花橋" => "VQH",
"宏慶" => "HEY",
"懷仁" => "HRV",
"華容" => "HRN",
"華山北" => "HDY",
"黃松甸" => "HDL",
"和什托洛蓋" => "VSR",
"紅山" => "VSB",
"漢壽" => "VSQ"