深圳通余额查询的API,可以通过深圳通号码查询到余额及卡有效期等信息。
这个是我今天闲来无事瞎搞的,因为前几天深圳通没钱了没记得充值,当时又没有零钱,搞得我挺郁闷的。。。废话少说,直接上代码。
用到Domxpath和Curl两方面的知识。
源码已托管到github,另外要加载个类:myclass
项目地址:https://github.com/skiy/dev
<?php
/**
* shenzhentong.php
* 深圳通的API
* @autuor: Skiychan
* @contact: developer@zzzzy.com & QQ:1005043848
* @website: www.zzzzy.com & http://weibo.com/ckiy
* @date: 2014-10-19
* @readme https://github.com/skiy/dev/blob/master/docs/shenzhentong.md
*/
/**
链接:http://query.shenzhentong.com:8080/sztnet/qrycard.jsp
接口信息
URL:http://query.shenzhentong.com:8080/sztnet/qryCard.do
POST方法:cardno:328375558
### 返回字段 json格式
返回值字段 | 字段类型 | 字段说明
----|------|----
card_number | int | 卡号
card_balance | string | 卡内余额
balance_time | string | 余额截止时间
card_validity | string | 卡有效期
current_time | string | 查询时间
*/
require_once "../libs/myclass.php";
date_default_timezone_set("Asia/Shanghai");
$cardno = isset($_GET["cardno"]) ? $_GET["cardno"] : 0;
$post_cardno = "cardno={$cardno}";
$data = new Myclass();
$page = $data->curls("http://query.shenzhentong.com:8080/sztnet/qryCard.do", false, $post_cardno);
$page = $data->pageToDom($page, "GBK");
$tr = $page->query("//table[@class=‘tableact‘]/tr/td");
function getTextContent($m_query, $m_id) {
$myTXT = str_replace(":", "", $m_query->item($m_id)->textContent);
return $myTXT;
}
//截止时间内余额
preg_match("/截止到([^\)]*)/", getTextContent($tr, 2), $expires);
$results = array(
"card_number" => (int) getTextContent($tr, 1),
"card_balance" => getTextContent($tr, 3),
"balance_time" => $expires[1],
"card_validity" => getTextContent($tr, 5),
"current_time" => date("Y-m-d H:i:s", time()));
echo json_encode($results);
?>原文:http://my.oschina.net/skiycn/blog/335185