/ 網站開發

2023年02月24日 172

3+2郵遞區號API串接實作


常常做地址輸入功能時,客戶都會希望能輸入地址後,可以帶入郵遞區號
雖然有3碼的Javascript套件 TWzipcode.js ,但都要下拉選擇『縣市』與『鄉鎮市區』
選擇完成後再自己手動key上後面的地址,但User有時都很懶的去操作
導致欄位重複輸入了縣市或鄉鎮市區,字串組合結果非常尷尬
仍希望能直接輸入完地址,即可查詢3+2碼郵遞區號的結果
果然有大神做出來了:台灣 3+2 / 3+3郵遞區號 查詢:https://zip5.5432.tw/
但每次要使用時,都要連到這個網址輸入地址,產生結果後再把郵遞區號貼回欄位
不是很直覺,後來發現有API可以串耶,記錄一下打API的方法
方法蠻簡單的,API連結帶入地址參數即可
API_URL:https://zip5.5432.tw/zip5json.py
後面帶入參數 ?adrs=正確地址 (以台中市政府為例)
組合後長這樣:https://zip5.5432.tw/zip5json.py?adrs=臺中市西屯區臺灣大道三段99號
產出Json結果如下:

{
zipcode6: "",
dataver6: "11104(beta)",
adrs: "臺中市西屯區臺灣大道三段99號",
new_adrs6_2: "臺中市西屯區臺灣大道三段99號",
new_adrs6: "臺中市西屯區臺灣大道三段99號",
new_adrs2: "40701臺中市西屯區臺灣大道三段99號",
new_adrs: "40701臺中市西屯區臺灣大道3段99號",
dataver: "11106",
zipcode: "40701"
}

回傳的JSON資料就抓得到 zipcode: "40701"
PHP接JSON資料,可以用 cURL 或 file_get_contents 方法去把結果抓回來即可應用

<?php
# 取郵遞區號
	function getZipcode($address) {
		$apiUrl = 'https://zip5.5432.tw/zip5json.py?adrs='.$address;

		$ch = curl_init();
		$options = array(CURLOPT_URL => $apiUrl,
		                 CURLOPT_HEADER => false,
		                 CURLOPT_RETURNTRANSFER => true,
		                 CURLOPT_USERAGENT => "Google Bot",
		                 CURLOPT_FOLLOWLOCATION => true
		                );
		curl_setopt_array($ch, $options);
		$output = curl_exec($ch);
		curl_close($ch);

		$data = json_decode($output, true);
		return $data['zipcode'];
	}

感謝大神無私提供功能啊!

標籤: #PHP , #API