magento 跟踪查询物流快递信息

magento 根据快递号 跟踪查询物流快递信息,纯php或者插件形式

Thank you for reading this post, don't forget to subscribe!

一:index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>快递单号获取接口API - More</title>
<script language="javascript" src="jquery-1.4.4.min.js"></script>
<script language="javascript">
$(document).ready(function()
{
$("#btnSnap").click(function()
{
$("#retData").html('loading...');
var expressid = $("#expressid").val();
var expressno = $("#expressno").val();
$.get("get.php",{com:expressid,nu:expressno},
function(data)
{
$("#retData").html(data);
}
);

return false;
});
});
</script>
<style>
#retForm{width:640px;line-height:22px;padding-bottom:10px;border-bottom:1px dotted #ccc;}
#retData{
background:#efefef;
padding:10px;
line-height:18px;
width: 96%;
border: 0;
}
.txtPartner{width:960px;margin:20px 10px;padding:10px 0 0 0;border-top:1px solid #dfdfdf;}
.txtPartner h1{font-size:14px;color:#FF5632;}
.txtPartner a{float:left;margin:0 10px 10px 0;}
.logo {
font-size: 18px;
font-weight: bold;
text-align: center;
padding: 10px;
font-family: "微软雅黑";
}
.txtURL {
font-size: 12px;
padding: 10px;
}
</style>
</head>

<body>
<div class="result">

<div class="seatchForm">
<div class="txtURL">
<p>快递公司:
<input name="expressid" type="text" id="expressid" value="tnt"/>
快递单号:<input name="expressno" type="text" id="expressno" value="382351534"/>
</p>
<p>说明:查询时需要发送两个参数:公司名(拼音或英文);快递单号</p>
</div>
<div class="txtButton"><input type="submit" value="查询" id="btnSnap" class="btnSnap"/></div>
</div>
</div>
</body>

</html>

二:

<?php
$typeCom = $_GET["com"];//快递公司
$typeNu = $_GET["nu"]; //快递单号

//echo $typeCom.'<br/>' ;
//echo $typeNu ;

$AppKey='XXXXXX';//请将XXXXXX替换成您申请到的KEY
$url ='http://api.kuaidi100.com/api?id='.$AppKey.'&com='.$typeCom.'&nu='.$typeNu.'&show=2&muti=1&order=asc';

//请勿删除变量$powered 的信息,否者本站将不再为你提供快递接口服务。
$powered = '查询数据由:<a href="http://kuaidi100.com" target="_blank">KuaiDi100.Com (快递100)</a> 网站提供 ';
//优先使用curl模式发送数据
if (function_exists('curl_init') == 1){
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, $url);
curl_setopt ($curl, CURLOPT_HEADER,0);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
curl_setopt ($curl, CURLOPT_TIMEOUT,5);
$get_content = curl_exec($curl);
curl_close ($curl);
}else{
include("snoopy.php");
$snoopy = new snoopy();
$snoopy->referer = 'http://www.google.com/';//伪装来源
$snoopy->fetch($url);
$get_content = $snoopy->results;
}
print_r($get_content . '<br/>' . $powered);
exit();
?>

三:snoopy.php下载

四:magento插件形式:后台订单详情页面

代码如下:

一:配置config.xml

[xml]

<?xml version=”1.0″?>
<config>
<modules>
<More_Track>
<version>0.2.0.1</version>
</More_Track>
</modules>
<global>
<models>
<sales>
<rewrite>
<order_shipment_track>More_Track_Model_Order_Shipment_Track</order_shipment_track>
</rewrite>
</sales>
<track>
<class>More_Track_Model</class>
<resourceModel>track_resource</resourceModel>
</track>
<track_resource>
<class>More_Track_Model_Resource</class>
<deprecatedNode>track_mysql4</deprecatedNode>
<entities>
<kuaidi>
<table>kuaidi</table>
</kuaidi>
</entities>
</track_resource>
</models>
<blocks>
<track>
<class>More_Track_Block</class>
</track>
<adminhtml>
<rewrite>
<sales_order_shipment_view_tracking>More_Track_Block_Adminhtml_Sales_Order_Shipment_View_Tracking</sales_order_shipment_view_tracking>
<sales_order_shipment_create_tracking>More_Track_Block_Adminhtml_Sales_Order_Shipment_Create_Tracking</sales_order_shipment_create_tracking>
</rewrite>
</adminhtml>
</blocks>
<helpers>
<track>
<rewrite>
<data>More_Track_Helper_Data</data>
</rewrite>
</track>
</helpers>
<resources>
<track_setup>
<setup>
<module>More_Track</module>
</setup>
</track_setup>
</resources>
<rewrite>
<shipping_tracking_pop>
<from><![CDATA[#^/shipping/tracking#]]></from>
<to>/track/index</to>
</shipping_tracking_pop>
</rewrite>
</global>
<crontab>
<jobs>
<more_track_kuaidi>
<schedule><cron_expr>*/1 * * * *</cron_expr></schedule>
<run><model>track/observer::syncTrackActive</model></run>
</more_track_kuaidi>
</jobs>
</crontab>
<frontend>
<routers>
<track>
<use>standard</use>
<args>
<module>More_Track</module>
<frontName>track</frontName>
</args>
</track>
</routers>
<layout>
<updates>
<more_track>
<file>moretrack.xml</file>
</more_track>
</updates>
</layout>
<translate>
<modules>
<More_Track>
<files>
<default>More_Track.csv</default>
</files>
</More_Track>
</modules>
</translate>
</frontend>
<default>
<shipping>
<more_track>
<track_multi>0</track_multi>
</more_track>
</shipping>
</default>
</config>

[/xml]

 

二:点击sales_order_shipment/view/页面的 tracking/popup 按钮触发track controller

[php]

<?php
require(‘app/code/core/Mage/Shipping/controllers/TrackingController.php’);
class More_Track_IndexController extends Mage_Shipping_TrackingController{
public function callbackAction(){
if(array_key_exists(‘param’, $_REQUEST) || Mage::getStoreConfig(‘shipping/more_track/track_test_data’)){
if(Mage::getStoreConfig(‘shipping/more_track/track_test_data’)){

//测试数据
$param = ‘{“status”:”polling”,”billstatus”:”got”,”message”:””,”lastResult”:{“message”:”ok”,”state”:”0″,”status”:”200″,”condition”:”F00″,”ischeck”:”0″,”com”:”yuantong”,”nu”:”13020111000006″,”data”:[{“context”:”上海分拨中心/装件入车扫描 “,”time”:”2012-08-28 16:33:19″,”ftime”:”2012-08-28 16:33:19″,”status”:”在途”,”areaCode”:”310000000000″,”areaName”:”上海市”,},{“context”:”上海分拨中心/下车扫描 “,”time”:”2012-08-27 23:22:42″,”ftime”:”2012-08-27 23:22:42″,”status”:”在途”,”areaCode”:”310000000000″,”areaName”:”上海市”,}]}}’;
}else{
$param = $_REQUEST[‘param’];
}
$formatedPushData = Zend_Json_Decoder::decode($param);
if($formatedPushData[‘lastResult’][‘nu’]){
$_kuaidiData = Mage::getModel(‘track/kuaidi’)
->getCollection()
->addFieldToFilter(‘carrier_number’, array(‘eq’=>$formatedPushData[‘lastResult’][‘nu’]))
->getFirstItem()->getData();
$_kuaidiData[‘body’] = $param;
$_kuaidiData[‘updated_at’] = time();
try{
Mage::getModel(‘track/kuaidi’)->setData($_kuaidiData)->save();
$returnMessage = array(
‘result’ => ‘true’,
‘returnCode’ => ‘200’,
‘message’ => ‘success’,
);
}catch(Exception $e){
$returnMessage = array(
‘result’ => ‘false’,
‘returnCode’ => ‘500’,
‘message’ => $e->getMessage(),
);
}
$this->getResponse()->setBody(Mage::helper(‘core’)->jsonEncode($returnMessage));
}
}
}

/**
* Popup action
* Shows tracking info if it’s present, otherwise redirects to 404
*/
public function popupAction()
{
/* @var $shippingInfoModel Mage_Shipping_Model_Info */

$shippingInfoModel = Mage::getModel(‘shipping/info’)->loadByHash($this->getRequest()->getParam(‘hash’));
$AppKey = Mage::getStoreConfig(‘shipping/more_track/track_app’);
$_order = Mage::getModel(‘sales/order’)->load($shippingInfoModel->getOrderId());
//foreach($_orderList as $_order){
//track
$_tracks = Mage::getModel(‘sales/order_shipment_track’)
->getCollection()
->addFieldToFilter(‘order_id’, $_order->getId());
//iterate tarcks and check each of them, if not exists, append a new row of data and send a request to kuaidi100 api. opposite, do nothing.
foreach($_tracks as $track){
$_track = $track->getData();
$_kuaidi = Mage::getModel(‘track/kuaidi’)
->getCollection()
->addFieldToFilter(‘carrier_number’, $_track[‘track_number’]);
if(count($_kuaidi) === 0){
echo $_track[‘track_number’].’______’;
//push a data to kuaidi100.
$post_data = array();
$post_data[“schema”] = ‘json’ ;

$post_data[“param”] = ‘{“company”:”‘.strtolower($_track[‘title’]).'”, “number”:”‘.$_track[‘track_number’].'”,”from”:””, “to”:”‘.sprintf(“%s%s%s”, Mage::helper(‘track’)->__($_order->getShippingAddress()->getRegion()), Mage::helper(‘track’)->__($_order->getShippingAddress()->getCity()), Mage::helper(‘track’)->__($_order->getShippingAddress()->getDistrict())).'”, “key”:”‘.$AppKey.'”, “parameters”:{“callbackurl”:”‘.Mage::getUrl(‘track/index/callback/’).'”,”resultv2″:”1″}}’;

$url=’http://www.kuaidi100.com/poll’;

$o=””;
foreach ($post_data as $k=>$v)
{
$o.= “$k=”.urlencode($v).”&”; //
}

$post_data=substr($o,0,-1);

$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);//
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec($ch); //
if($result){
$formatedResult = Zend_Json::decode($result);
if($result[‘result’]){
$custom[‘trackdetail’] = ”;
$kuaidi = Mage::getModel(‘track/kuaidi’);//->save();
$kuaidi->setData(‘carrier_number’, $_track[‘track_number’]);
$kuaidi->setCreatedAt(time());
$kuaidi->setUpdatedAt(time());
$kuaidi->save();
}
}
curl_close($ch);
}
}
//}
parent::popupAction();
}
}

[/php]

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注