欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > ThinkPHP(FastAdmin)快递100订阅快递信息

ThinkPHP(FastAdmin)快递100订阅快递信息

2025/10/13 4:30:17 来源:https://blog.csdn.net/qq_40088333/article/details/139458661  浏览:    关键词:ThinkPHP(FastAdmin)快递100订阅快递信息

快递信息订阅后快递100的服务器会请求callback地址来传递快递信息示例代码如下:

<?phpnamespace app\api\controller;use app\common\controller\Api;
use app\common\model\KuaidiLog;class Kuaidi extends Api
{protected $noNeedLogin = '*';protected $noNeedRight = '*';/*** 测试绑定快递* @return void**/public function poll(){$res = KuaidiLog::poll('yuantong','YT********818','156*******');$this->success('获取成功',$res);}/*** 快递100的通知推送* @return \think\response\Json|void* @throws \think\db\exception\DataNotFoundException* @throws \think\db\exception\ModelNotFoundException* @throws \think\exception\DbException*/public function callback(){$res = KuaidiLog::callBack($_POST);if($res){//给快递100返回处理成功结果return new \think\response\Json(['result'=>true,'returnCode'=>200,'message'=>'成功']);}exit();}
}
<?phpnamespace app\common\model;use think\Model;
use fast\Http;
class KuaidiLog extends Model
{/*** 订阅接口逻辑* @param $company* @param $number* @param $phone* @return mixed*/public static function poll($company,$number,$phone){$param['company'] = $company;$param['number'] = $number;$param['key'] = 'MA*******207';//快递100授权码,请申请企业版获取//快递100推送地址$param['parameters']['callbackurl'] = request()->domain()."/api/kuaidi/callback";$param['parameters']['phone'] = $phone;$param['parameters']['resultv2'] = '4';// 请求参数$post_data = array();$post_data['schema'] = 'json';$post_data['param'] = json_encode($param, JSON_UNESCAPED_UNICODE);$url = 'https://poll.kuaidi100.com/poll';    // 订阅请求地址// 发送post请求$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);$result = curl_exec($ch);$data = json_decode($result, true);return $data;}/*** 通知推送逻辑* @param $post* @return bool* @throws \think\db\exception\DataNotFoundException* @throws \think\db\exception\ModelNotFoundException* @throws \think\exception\DbException*/public static function callBack($post){$post = json_decode($post['param'],true);$kuaidigongsi = $post['lastResult']['com'];$kuaididanhao = $post['lastResult']['nu'];$lastResult = json_encode($post);$log = self::where('kuaididanhao',$kuaididanhao)->where('kuaidigongsi',$kuaidigongsi)->find();if(empty($log)){self::create(['kuaidigongsi'=>$kuaidigongsi,'kuaididanhao'=>$kuaididanhao,'lastResult'=>$lastResult,'createtime'=>time(),'updatetime'=>time(),]);}else{$log->lastResult = $lastResult;$log->updatetime = time();$log->save();}return true;}
}

KuaidiLog对应的数据表

CREATE TABLE `fa_kuaidi_log` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '11',`kuaidigongsi` varchar(255) DEFAULT NULL COMMENT '快递公司:yuantong=圆通,shentong=申通,jtexpress=极兔速递,zhongtong=中通快递,yunda=韵达快递,youzhengguonei=邮政快递包裹,shunfeng=顺丰速运,jd=京东物流',`kuaididanhao` varchar(255) DEFAULT NULL COMMENT '快递单号',`lastResult` text COMMENT '最新查询结果',`createtime` bigint(11) DEFAULT NULL,`updatetime` bigint(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COMMENT='快递推送记录';

 这样快递就完成了订阅,快递动态就被保存在了fa_kuaidi_log表中,可通过快递单号获取动态用于项目中的展示。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com