首页 > 编程语言 >php篇 | API查询接口签名代码教程

php篇 | API查询接口签名代码教程

时间:2023-01-04 15:33:19浏览次数:35  
标签:info 教程 url API fd php data httpheader datas

使用Php开发语言调用接口,常见的问题基本上是数据签名错误导致的接口联调失败,大家在电商平台调用快递鸟接口时,为了提供对接效率,给大家提供一些复制直接用的方法。

php篇 | API查询接口签名代码教程_HTTP

Python语言的可查看以往文章进行学习。

此文章供各位程序员学习参考,后续我将会继续分享各语言的快递单号查询接口教程、干货,敬请期待。

下面请看内容  ↓ ↓ ↓ 

//电商ID
defined('EBusinessID') or define('EBusinessID', '请到快递鸟官网申请http://kdniao.com/reg');
//电商加密私钥,快递鸟提供,注意保管,不要泄漏
defined('AppKey') or define('AppKey', '请到快递鸟官网申请http://kdniao.com/reg');
//请求url
defined('ReqURL') or define('ReqURL', 'http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx');

//调用查询物流轨迹
//---------------------------------------------

$logisticResult=getOrderTracesByJson();
echo logisticResult;

Php封装的方法

//---------------------------------------------

/**
* Json方式 查询订单物流轨迹
*/
function getOrderTracesByJson(){
$requestData= "{'OrderCode':'','ShipperCode':'YTO','LogisticCode':'12345678'}";

$datas = array(
'EBusinessID' => EBusinessID,
'RequestType' => '1002',
'RequestData' => urlencode($requestData) ,
'DataType' => '2',
);
$datas['DataSign'] = encrypt($requestData, AppKey);
$result=sendPost(ReqURL, $datas);

//根据公司业务处理返回的信息......

return $result;
}

/**
* post提交数据
* @param string $url 请求Url
* @param array $datas 提交的数据
* @return url响应返回的html
*/
function sendPost($url, $datas) {
$temps = array();
foreach ($datas as $key => $value) {
$temps[] = sprintf('%s=%s', $key, $value);
}
$post_data = implode('&', $temps);
$url_info = parse_url($url);
if(empty($url_info['port']))
{
$url_info['port']=80;
}
$httpheader = "POST " . $url_info['path'] . " HTTP/1.0\r\n";
$httpheader.= "Host:" . $url_info['host'] . "\r\n";
$httpheader.= "Content-Type:application/x-www-form-urlencoded\r\n";
$httpheader.= "Content-Length:" . strlen($post_data) . "\r\n";
$httpheader.= "Connection:close\r\n\r\n";
$httpheader.= $post_data;
$fd = fsockopen($url_info['host'], $url_info['port']);
fwrite($fd, $httpheader);
$gets = "";
$headerFlag = true;
while (!feof($fd)) {
if (($header = @fgets($fd)) && ($header == "\r\n" || $header == "\n")) {
break;
}
}
while (!feof($fd)) {
$gets.= fread($fd, 128);
}
fclose($fd);

return $gets;
}

/**
* 电商Sign签名生成
* @param data 内容
* @param appkey Appkey
* @return DataSign签名
*/
function encrypt($data, $appkey) {
return urlencode(base64_encode(md5($data,$appkey)));
}

更多快递接口api技术干货、接口实操教程、物流行业知识,关注我们的公众号【快递鸟API】。如果你觉得以上内容对你有用,欢迎点赞、评论、转发。你的认可是我持续分享的动力!

有不清楚的问题,欢迎大家留言一起探讨。

标签:info,教程,url,API,fd,php,data,httpheader,datas
From: https://blog.51cto.com/KDapi/5988654

相关文章

  • Jekyll 教程——模块化(includes)
    我们知道,软件工程里面有一个很重要的概念,叫「高内聚低耦合(Highcohesion&Lowcoupling)」。意思是说,程序结构中各模块的内聚程度越高,模块间的耦合程度就越低,一个好的内聚模......
  • 数据同步工具DataX使用教程
    数据同步工具DataX使用教程Tanglu 系统运维 2022-09-12 446 0 一、DataX简介DataX是阿里开源的一款异构数据源离线同步工具,可以实现多种关系型和非关系型异......
  • Spire.Doc API 可以在CSDN下载啦!
    近期,我们会将E-iceblue公司发布的系列产品帮助文档API陆续提交到CSDN.今天我们提交的是Spire.DocAPI.先来看看Spire.Doc产品的API样式图:Spire.DocAPI详细罗列了Spire.......
  • USB应用实战视频教程第5期:手把手玩转USB HID免驱方式下位机和QT6.4上位机开发上篇(2022
     前两期USB实战视频教程分享了USBBULK的下位机和QT6.4下位机开发,本期视频教程,我们带来HID的免驱方式玩法,上篇依然是先分享下位机开发方式另外还有很重要的一点,早期的F1,F2......
  • 从实战开始,零基础Docker入门教程
    前提本文是基于windows环境下使用docker的学习文章其实我也有很长的一段时期在ubuntu系统下开发,很喜欢linux系统的纯净方便,但是当你身边同事都是使用windows与你交流沟通......
  • 部署云盘系统:nginx+PHP
    1.部署百度网盘项目到站点目录cd/data/pan把云盘程序下载下来#上传游戏程序(我的百度云盘,拖到目录下即可)unzipkodexplorer4.40.zipchown-Rwww.www/data/pan2.做......
  • LNMP架构环境之Mariadb数据库环境 nginx+php+mysql
    1)安装Mariadb数据库#1)安装Mariadb数据库yuminstallmariadb-servermariadb-y#2)启动Mariadb数据库,并加入开机自动复制代码systemctlstartmariadbsystemctle......
  • 网易《我的世界》的一些Api汇总
    汇总:https://g79.update.netease.com/serverlist/adr_review_forever.json?4903{"HostNum":200,"ServerHostNum":3000,"CdnUrl":"https://g79.gdl.n......
  • Ubuntu16主机设置Root用户登录教程
    很多时候拿到的Ubuntu主机分配给的用户是ubuntu用户,如果没有root用户权限做事情会变得麻烦,每次做什么都要sudo一下,下面介绍怎么设置root用户的ssh登录:1、设置root密码,可以......
  • [CTF] 攻防世界-PHP2
    题目无任何提示,进入环境后界面和HTML如下解题关键——phps什么是.phps呢?phps文件就是php的源代码文件,通常用于提供给用户(访问者)查看php代码,因为用户无法直接......