TPShop使用快递100查询订单物流信息

解决TPShop中物流信息显示不稳定的问题,通过注册快递100企业版并使用API查询京东淘宝物流,调整CURL设置确保数据正确返回。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TPShop的物流信息显示有点问题,每刷新一次则出现不同的物流信息,怀疑是被快递100进行IP限制或者其他原因,于是便注册了快递100个人版,但是还是不行,每次测试都提示不支持该物流,最后找到快递100的客服电话询问过后才知道快递100个人版不支持现在京东淘宝的相关物流信息查询,言外之意就是必须注册企业版的快递100才能享受快递物流信息的查询,于是,话不多说,我又注册了个企业版的,根据文档提示代码进行开发,代码如下所示:

显示订单物流信息方法:

//显示订单物流信息方法:
public function express()
    {
        $order_id = I('get.order_id');
        $result = $order_goods = $delivery = array();
        $order_goods = M('order_goods')->where("order_id=$order_id")->select();
        $delivery = M('delivery_doc')->where("order_id=$order_id")->limit(1)->find();
        if ($delivery['shipping_code'] && $delivery['invoice_no']) {

            $result = queryExpress($delivery['shipping_code'], $delivery['invoice_no']);

            $this->assign('result', $result);
            $this->assign('order_goods', $order_goods);
            $this->assign('delivery', $delivery);
        }
        $this->display();
    }

查询订单信息方法:

function queryExpress($postcom,$getNu){
    $post_data = array();
    $post_data["customer"] = 'XXXXXX';
    $key= 'XXXXXX' ;
    $post_data["param"] = '{"com":"'.$postcom.'","num":"'.$getNu.'"}';

    $url='http://poll.kuaidi100.com/poll/query.do';
    $post_data["sign"] = md5($post_data["param"].$key.$post_data["customer"]);
    $post_data["sign"] = strtoupper($post_data["sign"]);
    $o="";
    foreach ($post_data as $k=>$v)
    {
        $o.= "$k=".urlencode($v)."&";		//默认UTF-8编码格式
    }
    $post_data=substr($o,0,-1);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    $result = curl_exec($ch);
    $data = str_replace("\"",'"',$result );
    $data = json_decode($result,true);

    $data = $data['data'];
    if (!isset($data)) {
        return array('status' => 0, 'message' => '查询失败,参数有误');
    }else{

        foreach ($data as $key =>$value){
            $datas[$key]['time'] = $value['time'];
            $datas[$key]['context'] = $value['context'];
        }

        return array('status' => 1, 'message' => 'ok', 'data' => $datas);
    }

    return $data;
}

按说参照快递100API文档写是不会出现错误的,但是出现一个奇怪的现象,就是每次请求出的值直接显示到页面中,而我打印的值却接收不到或者接收到打印出显示1,这就令我很尴尬了,于是,查遍百度,最后使用一行代码解决问题,代码如下:

 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

当时我也感觉不可思议,一段代码真的可以拯救这个快递100的查询物流信息的问题?我十分不解,便重新百度了这行代码的意思,参考链接如下:

https://www.cnblogs.com/you-jia/p/4118659.html

具体解释引用参考链接如下:

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,0); 
或着不使用这个选项: 如果成功只返回TRUE,自动输出返回的内容 再简单点说如果设置成1 如果curl_exec() 的结果是一个return赋值 你可以要它赋值给一个变量 比如 response=curlexec();response=curlexec();
response就是一个你curl执行后的string结果(相当于服务端那边的echo XXX的值;不会直接输出到页面) 反之如果是0, 你的 curl_exec(); 就相当于你设置true的时候 echo $response;

 

### 小皮面板部署 TPShop 使用教程 #### 准备工作 确保已经获取了TPshop的源码文件。可以从官方渠道下载最新版本的TPshop源代码[^1]。 #### 安装环境准备 使用小皮面板作为PHP运行环境来搭建服务器。访问小皮面板官方网站了解具体安装指南并完成面板安装过程[^2]。 #### 解压与上传项目文件 前往存放有TPshop压缩包的地方,在此案例中为`D:\download\app\phpstudy_pro\WWW\`路径下,将该压缩包解压至指定目录内[^3]。这一步骤至关重要,因为后续操作均基于已正确放置于Web根目录下的应用文件展开。 #### 数据库设置 进入小皮面板数据库管理界面创建一个新的MySQL数据库用于存储TPshop的数据表结构及相关业务数据。记录新建好的数据库名称、用户名以及密码以便稍后配置连接参数时调用。 #### 应用初始化配置 打开浏览器输入类似如下URL地址:`http://localhost/install/index.php`(假设本地测试),按照页面提示逐步填写站点基本信息(如管理员账号信息)、选择刚才建立好的数据库链接详情等内容直至顺利完成整个安装流程。 对于远程Linux环境下通过IP加端口号的形式访问则参照实例中的形式调整成自己机器的实际网络情况,例如`http://192.168.101.22:8000/install/index.php`[^4]。 #### 后台登录验证 当一切顺利的话就可以尝试首次登陆后台管理系统了,默认情况下可以通过追加`/admin.php`到域名后面的方式进入到管理入口处进行身份认证环节。 ```bash # 假设是在本机环境中,则可以这样访问 http://localhost/admin.php # 如果是外部访问,则替换成本地服务器的真实 IP 地址和开放的服务端口 http://<your_server_ip>:<port>/admin.php ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值