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表中,可通过快递单号获取动态用于项目中的展示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/25210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日5题Day19 - LeetCode 91 - 95

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;91. 解码方法 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int numDecodings(String s) {int n s.length();//注意我们dp的范围是n1int[] d…

平衡二叉树-力扣

看到题目想到的解法是对根节点的左右子树进行最大深度求解&#xff0c;然后比较最大深度的绝对值是否小于等于1&#xff0c;如果是&#xff0c;那么是平衡二叉树&#xff0c;如果不是&#xff0c;那么不是平衡二叉树。代码如下&#xff1a; class Solution { public:int maxDp…

c++:回顾(一)

一、引用 1.从编译器的角度来讲&#xff1a; 引用就是一种升级版的指针。 2.从语法形式来讲&#xff1a; 引用是引用一块已经存在的合法空间 引用变量即是引用空间的变量的别名 指针可以是野指针&#xff0c;他可以指向任何的地方&#xff0c;如果在c中单纯使用指针&#xf…

面试官:前端实现图片懒加载怎么做?这不是撞我怀里了嘛!

前端懒加载&#xff08;也称为延迟加载或按需加载&#xff09;是一种网页性能优化的技术&#xff0c;主要用于在网页中延迟加载某些资源&#xff0c;如图片、视频或其他媒体文件&#xff0c;直到它们实际需要被用户查看或交互时才进行加载。这种技术特别适用于长页面或包含大量…

【JavaEE】Spring IoCDI详解

一.基本概念 1.Ioc基本概念 Ioc: Inversion of Control (控制反转), 也就是说 Spring 是⼀个"控制反转"的容器. 什么是控制反转呢? 也就是控制权反转. 什么的控制权发发了反转? 获得依赖对象的过程被反转了也就是说, 当需要某个对象时, 传统开发模式中需要自己通…

前端面试题日常练-day60 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 1. 在PHP中&#xff0c;以下哪个函数用于获取数组的长度&#xff1f; a) count() b) length() c) size() d) sizeof() 2. PHP中的预定义变量$_SESSION用于存储什么类型的数据&#xff1f; a) 用户…

美银美林:看好铜价涨到12000美元,这类铜矿企业弹性更大

美银美林指出&#xff0c;考虑到能源转型以及AI投资热潮对铜的需求巨大&#xff0c;到2026年铜供需缺口有望扩大一倍。给予紫金矿业、江西铜业等多家巨头买入评级&#xff0c;并认为一旦铜价上行&#xff0c;KGHM等规模较小、成本较高的企业的利润增长可能更为显著。 高盛、花…

小小万年历改头换面了

小小万年历改头换面了 ​ 前阶段编写了一个[万年历小程序][https://jl-zhenlaixiaowei.blog.csdn.net/article/details/139180401?spm=1001.2014.3001.5502],因为界面不太友好,所以这两天有空闲时间,我又对小工具进行了功能增加并改成了窗口界面,可以用鼠标点击和键盘输入…

python中while循环实现九九乘法表

i 1while i < 9: # 控制行的循环j 1while j < i: # 控制每行的输出print(f"{j}*{i}{j * i}\t", end"")j 1print()i 1运行截图&#xff1a;

餐饮淡季营销方案

餐饮淡季营销方案 时间: 2024-6-9 分类: 营销流量 作者: admin 0 次浏览 餐 饮 营 销 方 案 第一部分&#xff1a;餐饮淡季营销方案 第二部分&#xff1a;餐饮上半年营销方案 第一部分&#xff1a;餐饮淡季营销方案 春节过后&#xff0c;餐厅也将迎来一年中最漫长的经营淡季&a…

Cweek4+5

C语言学习 十.指针详解 6.有关函数指针的代码 代码1&#xff1a;(*(void (*)())0)(); void(*)()是函数指针类型&#xff0c;0是一个函数的地址 (void(*)())是强制转换 总的是调用0地址处的函数&#xff0c;传入参数为空 代码2&#xff1a;void (*signal(int, void(*)(int))…

ENSP校园网设计实验

前言 哈喽&#xff0c;我是ICT大龙。本次更新了使用ENSP仿真软件设计校园网实验。时间比较着急&#xff0c;可能会有错误&#xff0c;欢迎大家指出。 获取本次工程文件方式在文章结束部分。 拓扑设计 拓扑介绍---A校区 如图&#xff0c;XYZ大学校园网设计分为3部分&#xff0…

JDK下载安装Java SDK

Android中国开发者官网 Android官网 (VPN翻墙) 方案1&#xff1a;通过brew命令 下载OracleJDK(推荐) brew --version //是否已存在homebrew环境 brew install --cask oracle-jdk //通过brew命令直接下载并安装OracleJDK(VPN、登录密码) java -version //验证JDK是否下载并安装…

裸机程序设计模式

裸机程序的设计模式可以分为&#xff1a;轮询、前后台、定时器驱动、基于状态机。前面三种方法都无法解决一个问题&#xff1a;假设有A、B两个都很耗时的函数&#xff0c;无法降低他们互相之间的影响。第4中方法可以解决这个问题&#xff0c;但是实践起来有难度。 1、轮询模式…

UI学习的案例——照片墙

照片墙案例 在实现照片墙案例之前先讲一下userInteractionEnable这个属性。 首先这个属性属于UIView&#xff0c;这个属性是bool类型&#xff0c;如果为YES的话&#xff0c;这个UIView会接受有关touch和keyboard的相关操作&#xff0c;然后UIView就可以通过相应的一些方法来处…

启动xv6遇坑记录

我是在VMware上的Ubuntu22.04.4搭建的&#xff0c;启动xv6遇到超多bug&#xff0c;搞了好几天&#xff0c;所以记录一下。 目录 git push的时候报错 make qemu缺少包 运行make qemu时卡住 可能有影响的主机设置 git push的时候报错 remote: Support for password authent…

TMS320F280049学习3:烧录

TMS320F280049学习3&#xff1a;烧录 文章目录 TMS320F280049学习3&#xff1a;烧录前言一、烧录RAM二、烧录FLASH总结 前言 DSP的烧录分为两种&#xff0c;一种是将程序烧录到RAM中&#xff0c;一种是烧录到FLASH中&#xff0c;烧录ARM中的程序&#xff0c;只要未掉电&#x…

SpringBoot中@Scheduled注解默认单线程,改为多线程线程池

Spring Boot提供的Scheduled注解默认是以单线程方式执行。 1.配置类 Configuration public class ScheduleConfig implements SchedulingConfigurer {/** 定时任务线程池个数改为多线程。默认为单线程 */Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegi…

黑马集成电路应用开发入门课程

"黑马集成电路应用开发入门课程"旨在引导学员了解集成电路应用开发的基础知识和技能。课程内容涵盖集成电路原理、设计流程、应用开发工具等&#xff0c;通过实践项目和案例分析&#xff0c;帮助学员掌握集成电路应用开发的核心概念和方法&#xff0c;为未来在该领域…

轻松上手MYSQL:SQL优化之Explain详解

​​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 文章目录 一、Explain1.1 explain作用1.2 explain列说明idselect_typetableparti…