易信 / 微信 公众平台 查快递
使用方法,编辑以下内容发送至公众平台即可:
如(查询易客满单号为APELAX1040039963的快递
ecms APELAX1040039963 或者 易客(易客满) APELAX1040039963 【快递公司名和快递编号间要有个空格】
注:本项目使用到kuaidi100的API;
另外那个美国亚马逊用的易客满快递是自己写的采集,
1. [文件] class.base.php
<?php /** * 公众平台基础类 For Fshare * @author: Skiychan * @created: 2013.11.19 * @modified: 2015.01.03 */ class BaseClass { /* public $token = ''; public function __construct($token){ $this->token = $token; } //判断是否来自微信服务器 public function valid(){ $echoStr = $_GET["echostr"]; if($this->checkSignature()){ echo $echoStr; exit; } } */ private $toUsername; private $fromUsername; private $createTime; private $msgId; private $msgType; private $time; private $content; private $postStr; public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; $this->postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $this->toUsername = $this->postObj->ToUserName; $this->fromUsername = $this->postObj->FromUserName; $this->createTime = $this->postObj->CreateTime; $this->msgId = $this->postObj->MsgId; $this->msgType = $this->postObj->MsgType; $this->time = time(); $resultStr = "error"; if (!empty($postStr)) { $resultStr = $this->get_text(); } echo $resultStr; } //接收到文本 public function get_text() { $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; if ($this->msgType != "text") { $content = "快递信息输入错误。"; } else { $this->content = $this->postObj->Content; $this->content = preg_replace("/(\s{2,})/", " ", $this->content); $content_list = explode(" ", $this->content); if (count($content_list) == 2) { include_once "get_companies.php"; $company = new company(); $company_infos = $company::get_companies_info($content_list[0]); //如果快递100不支持此快递则diy if(count($company_infos) == 0) { $is_diy = true; $company::$companies = include_once 'fetch/add_companies.php'; $company_infos = $company::get_companies_info($content_list[0]); } $num = $content_list[1]; $code = $company_infos[0]['code']; //获取英文代码 $com = $company_infos[0]['company']; //获取公司名称 $numinfo = "快递:" . $com . "\n" . "单号:" . $num . "\n"; if(!$is_diy) { $kd_url = "http://m.kuaidi100.com/query?type=" . $code . "&postid=" . $num; } else { $kd_url = dirname('http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]).'/fetch/index.php?code='.$code."&postid=" . $num; } $json_getdata = file_get_contents($kd_url); //$get_kdinfo = json_decode($json_getdata); //object $get_kdinfo = json_decode($json_getdata, true); //array $last_t = "查询时间:\n" . $get_kdinfo['updatetime'] . "\n\n"; //查询时间 $kd_shipinfo = $get_kdinfo['data']; //快递数据数组 $kd_total = count($kd_shipinfo) - 1; $ship = ''; $detail = "\n<a href='http://api.oupag.com/developer/kuaidi/getdata.php?code=" . $code . "&num=" . $num . "'>点击查看详情</a>"; //物流倒序详情 for ($i = $kd_total; $i >= 0; $i--) { $shipinfo = $kd_shipinfo[$i]['time'] . "\n" . $kd_shipinfo[$i]['context'] . "\n"; $ship = $shipinfo . $ship; } //顺序物流详情 /*foreach ($kd_shipinfo as $v){ $shipinfo = $v['time']."\n".$v['context']."\n"; $ship = $shipinfo.$ship; } */ $get_kdinfo = $numinfo . $last_t . "【物流详情】\n" . $ship; if ($ship) { $contentStr = $get_kdinfo; } else { $contentStr = $numinfo . ">没有物流数据!".$kd_url; } $contentStr .= $detail; } else { $contentStr = "格式错误,正确格式如下:\n快递公司名称 快递单号"; } } $resultStr = sprintf($textTpl, $this->fromUsername, $this->toUsername, $this->time, "text", $contentStr); return $resultStr; } //判断签名,返回bool private function checkSignature() { $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) { return true; } else { return false; } } }
2. [文件] get_companies.php
<?php /** * 快递公司的class * @author: Skiychan. * @created: 1/3/15 * @modified: */ class company { public static $file_name = "company_lists.php"; public static $companies; public function __construct() { self::$companies = $this->get_companies(); } /* * return array companies infos */ public static function get_companies() { return include_once self::$file_name; } /* * 通过编码取得公司名 * @param string $code 编码 * return string 公司名 */ public static function get_company_name($code) { foreach (self::$companies as $keys => $values) { if ($values['code'] == $code) { return $values['company']; } } return; } /* * 通过公司名取得编码 * $param string $name 公司名 * return string 编码 */ public static function get_company_code($name) { foreach (self::$companies as $keys => $values) { if ($values['name'] == $name) { return $values['code']; } } return; } /* * 通过快递公司名或者编码取得完整编码 模糊查找全部 * $param string $input 公司名 * return array 编码和公司名 */ public static function get_companies_info($input) { $lists = array(); foreach (self::$companies as $keys => $values) { if (mb_stristr($values['company'], $input)) { unset($values['id']); $lists[] = $values; } } //如果通过名称取不到值则通过键名 if (count($lists) == 0) { foreach (self::$companies as $keys => $values) { if (mb_stristr($values['code'], $input)) { unset($values['id']); $lists[] = $values; } } } return $lists; } /* * 不需要类型直接取得编码和公司名 * @param string 编码或者公司名 * return array 编码和公司名 */ public static function get_company_info($input) { foreach (self::$companies as $keys => $values) { if (in_array($input, $values)) { unset($values["id"]); return $values; } } return; } }
3. [文件] ecms.php
<?php /** * ecms.php * 易客满(美国亚马逊发中国专用快递) * @author: Skiychan<developer@zzzzy.com> * @created: 1/6/15 21:15 * @modified: */ //lang={cn / en} //http://www.php.cn/ // $lang = "cn"; $postid = isset($_GET['postid']) ? $_GET['postid'] : 0; $kd_url = "https://www.ecmsglobal.com/oms/showtracking?trackingno={$postid}&lang={$lang}"; $page_info = file_get_contents($kd_url); //$page_info = file_get_contents("a.html"); $page_dom = "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>".$page_info; $xmldoc = new DOMDocument(); @$xmldoc->loadHTML($page_dom); $xmldoc->normalizeDocument(); $page_xml= new Domxpath($xmldoc); $event_date = $page_xml->query('//p[@class="order"]//ul//p[@class="column event_date"]'); $event_where = $page_xml->query('//p[@class="order"]//ul//p[@class="column event_where"]'); $event_desc = $page_xml->query('//p[@class="order"]//ul//p[@class="column event_desc"]'); $thisinfo = array(); $add_infos = array(); foreach ($event_date as $keys => $values) { $location = $event_where->item($keys)->textContent; $context = $event_desc->item($keys)->textContent; $thisinfo[] = array( 'time' => $values->textContent, 'location' => $location, 'context' => $location.",\n".$context, ); } if (count($thisinfo) > 0) { $add_infos = array( 'message' => "ok", 'nu' => $postid, 'companytype' => "ecms", 'ischeck' => "1", 'com' => "ecms", 'updatetime' => $event_date->item(0)->textContent, 'status' => "200", 'codenumber' => $postid, 'data' => $thisinfo ); } return $add_infos;
4. [图片] sc1.png
5. [图片] sc2.png
6. [图片] sc3.png

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는
