深圳通余额查询的API

最新修改的源码不再同步至oschina,请移步:www.skiy.net

深圳通余额查询的API,可以通过深圳通号码查询到余额及卡有效期等信息。
这个是我今天闲来无事瞎搞的,因为前几天深圳通没钱了没记得充值,当时又没有零钱,搞得我挺郁闷的。。。废话少说,直接上代码。
用到Domxpath和Curl两方面的知识。

源码已托管到github,另外要加载个类:myclass

项目地址:https://github.com/skiy/dev

<?php
/**
 * shenzhentong.php
 * 深圳通的API
 * @autuor: Skiychan
 * @contact: [email protected] & 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);

?>

你可能感兴趣的:(PHP)