/*数据为josn格式 */

/* 调用接口 */
function master_api($uri,$data)
{

$request = 'post';  //接口请求方式 (get/post)

$data['accessId'] = "bf0027585f0226822a21123a1683676f"; //提供的接口accessId

$key = "iHpDr1411182200";                                                               //提供的接口ACCESS_KEY

$data['sign'] = $this->createMasterApiSign($uri,$data,$key);   //生成动态签名sign

$url = 'http://shop.com/index.php'.$uri.'?items='.$data['items'].'&accessId='.$data['accessId'].'&sign='.$data['sign'].'';  //调用接口 $uri接口名
                 $curl = new Curl(); 
                $result = $curl->$request($url,$data);  print_r($result); 
}

/**生成签名结果

* $uri  调用接口方法的url

*$data 接口接收到的数组

*$accesskey 提供的接口ACCESS_KEY

*/

function createMasterApiSign($uri,$data,$accesskey)
{
/* 数组排序 */
ksort ( $data );
reset ( $data );
$arg = $this->createQueryString($data);
$sign = md5($uri.'&'.$arg.$accesskey);
return $sign;
}

function createQueryString($data)
{
$arg = "";
while(list($key,$val)=each($data))
{
$arg.=$key . "=" . $val . "&";

$arg = substr($arg, 0, count($arg) - 2);       //去掉最后一个&字符
return $arg;
}

//php curl类

class Curl {
public function get( $url,$data = '', $cookie='' )
{
            $th = new Index();
if($data) 
$url = $url.'?'.  $th->createQueryString($data);

$curl = curl_init($url);
// 不显示header信息
curl_setopt($curl, CURLOPT_HEADER, 0);
// 将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 使用自动跳转
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
if(!empty($cookie)) {
// 包含cookie数据的文件名,cookie文件的格式可以是Netscape格式,或者只是纯HTTP头部信息存入文件。
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
}
// 自动设置Referer
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
$tmp = curl_exec($curl);
curl_close($curl);
return $tmp;
}

public function post( $url, $params, $cookie='' )
{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, 0);
// 对认证证书来源的检查,0表示阻止对证书的合法性的检查。
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
// 从证书中检查SSL加密算法是否存在
//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
//模拟用户使用的浏览器,在HTTP请求中包含一个”user-agent”头的字符串。
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
//发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
curl_setopt($curl, CURLOPT_POST, 1);
// 将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 使用自动跳转
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
// 自动设置Referer
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
// Cookie地址
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
// 全部数据使用HTTP协议中的"POST"操作来发送。要发送文件,
// 在文件名前面加上@前缀并使用完整路径。这个参数可以通过urlencoded后的字符串
// 类似'para1=val1¶2=val2&...'或使用一个以字段名为键值,字段数据为值的数组
// 如果value是一个数组,Content-Type头将会被设置成multipart/form-data。
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
$result = curl_exec($curl);
curl_close($curl);
return $result;
}

public function reutersload($remote, $local, $cookie= '') {
$cp = curl_init($remote);
$fp = fopen($local,"w");
curl_setopt($cp, CURLOPT_FILE, $fp);
curl_setopt($cp, CURLOPT_HEADER, 0);
if($cookie != '') {
curl_setopt($cp, CURLOPT_COOKIEFILE, $cookie);
}
curl_exec($cp);
curl_close($cp);
fclose($fp);
}

}

php开发接口,生成动态签名校验相关推荐

  1. SQL Server开发接口生成方法

    为提高开发效率,生成固定格式的接口是必须的,以下以提供新增/修改/删除/读取接口为例: 以常见的表结构为例,特殊表结构可自己尝试去调整方法 主要通过系视图 sys.columns生成方法:为包含列的对 ...

  2. PostMan Pre-request Script 生成api签名

    2019独角兽企业重金招聘Python工程师标准>>> PostMan Pre-request Script 生成api签名 api接口都会有签名校验,这个校验在我们api测试的时候 ...

  3. NDK开发前奏 - x团参数加密和签名校验

    这次给大家分享一个关于<x团参数加密和签名校验>解决方案,主要涉及的内容是 MD5 加密算法和 JNI 基础.如果我们只是做 Android 应用开发,应当还是先把 Android 的基础 ...

  4. 生成sign(签名),以及校验工具类

    生成sign(签名),以及校验工具类 package cn.weixiuhui.support.comm.utils; import java.io.IOException; import java. ...

  5. iTOP-4418开发板支持动态调频,AXP228电源管理,预留锂电池接口,内置充放电电路及电量计...

    iTOP-4418开发板 支持动态调频,AXP228电源管理,预留锂电池接口,内置充放电电路及电量计 核心板320PIN全引出,16G存储高配版本,核心板4418/6818全兼容,并跨行业大量应用 系 ...

  6. 尚医通项目——上传医院接口(签名校验及图片编码)

    签名校验 问题描述:在上传医院接口时,需要将医院的签名(sign_key)与医院设置的签名进行比对,如果相同,则进行医院信息的添加. 1.获取医院系统传的签名 在医院设置接口中的ApiControll ...

  7. python生成图片链接_python 实现图片上传接口开发 并生成可以访问的图片url

    版本:python3.7 功能,开发一个用户访问的页面,支持图片上传,并将其保存在服务器. 项目结构: app.py文件内容如下: from flask import Flask, Response, ...

  8. 数据接口的登录态校验以及JWT

    混合开发的时候是怎么做的 前后端混合开发的时候,用户登录状态的管理一般都是通过session来实现的,原理很简单:用户登录后,服务端将登录用户信息存储到服务器上的特定位置,并生成对应的session ...

  9. iOS签名校验那些事儿

    导读:iOS签名校验机制是苹果生态安全的基础,日常工作中无论是开发阶段还是测试阶段常常会遇到很多需要通过签名机制解决的问题,了解iOS签名机制的原理有助于提高我们解决相关问题的成本和效率.本文首先介绍 ...

最新文章

  1. 9.Matlab中的repmat,clock,rand以及seed,state,twister参数
  2. 聚类的评价方法 轮廓系数
  3. 神经网络到底是如何做出决策的?
  4. 字符串转换为整数的源码atoi()
  5. Prometheus-使用Prometheus监控Kubernetes集群
  6. MYSQL Too many connections错误的解决办法
  7. flask-sqlalchemy mysql_flask-sqlalchemy总结
  8. android手机测试用例,Android手机测试用例-从事手机测试必备
  9. 94. autoload
  10. html table 显示最后一条,漂亮CSS表格(Table),最后一行是汇总行【实例】
  11. Android中的英文翻译
  12. [CTF]CTFSHOW文件包含练习笔记
  13. iTween_itween可视化编辑器(1)
  14. Go 语言的设计反思
  15. PHP图片打包压缩下载
  16. Word控件Spire.Doc 转换教程(十二):如何将 Word 转换为 EPub、XPS、Emf
  17. 计算机四级 信息安全工程师 题库 前言
  18. 算法系列之十八:用天文方法计算二十四节气(上) .
  19. Prison Break中的经典台词
  20. 《Android NFC开发实战详解》——6.4节Android NFC P2P开发进阶

热门文章

  1. coturn mysql_Coturn / turnserver:错误437:不匹配的分配:错误的事务ID(WebRTC)
  2. 保险行业防范网络犯罪新思路
  3. 美团、飞猪基础架构组实习经历分享
  4. oracle 11g失败,求助,oracle 11g 启动失败,求大神帮忙看看,谢谢
  5. Excel实现线性回归分析——高尔顿数据集、四重奏数据集
  6. 【Python】Python-OpenCV实时处理视频
  7. BDWK免费下载白嫖指南【1s搞定】
  8. 苹果开放降级通道_今天下午 iOS 降级通道打开?骗子!
  9. 杂记-Macbook Pro M1芯片能玩深度学习吗?
  10. Oracle PLSQL单行数据的处理