<?php
namespace Fmall_cloud\Model;
use Think\Model;
class DealJavaModel extends Model {
/**
* @title 处理向java传参
* @param $url java接口地址
* @param $data 业务参数
*/
public function dealJavaParam($url,$data){
//调java接口地址
$url=C('java_php').$url;
$token=C('token');
$apiKey=C('apiKey');
$timestamp=time();
$version=C('version');
$source=;
$data=json_encode($data);
//签名
$paramArr=array(
'token'=>$token,
'timestamp'=>$timestamp,
'source'=>$source,
'version'=>$version,
'data'=>$data
);
$sign=$this->createSign($paramArr,$apiKey);
$header = array('Content-Type: application/json; charset=utf-8',"token:$token","timestamp:$timestamp","source:$source","version:$version","sign:$sign","data:$data");
$result=$this->tocurl($url, $header,$data);
$res_info=json_decode($result,true);
return $res_info;
}
/**
* @title 签名函数
* @param $paramArr 系统参数
* @param $apiKey apikey
* @return string 返回签名
*/
private function createSign ($paramArr,$apiKey) {
ksort($paramArr);
$sign='';
foreach ($paramArr as $key => $val) {
if ($key != '' && $val != '') {
$sign .= $key."=".$val."&";
}
}
$sign=rtrim($sign,"&");
$sign .=$apiKey;
$sign=strtolower($sign);
$sign = md5($sign);
return $sign;
}
/**
* @title 远程调java接口函数
* @param $url java接口地址
* @param $header 要传的头信息
* @param $data 业务参数
*/
private function tocurl($url, $header, $data){
$ch = curl_init();
if(substr($url,,)=='https'){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
if($error=curl_error($ch)){
die($error);
}
curl_close($ch);
return $response;
}
}

最近公司有个需求,需要调java接口,然后开始再往上查找相关资料,然后根据java端提供的接口调用说明文档写了这个公共方法,

该公共方法在处理接口调用验证时比较方便和实用,只需要继承这个类就可以了,其他业务参数正常传,系统参数是放到header里传过里啊,这样比较安全。

php--php调java接口验签的更多相关文章

  1. java安全入门篇之接口验签

    文章大纲 一.加密与验签介绍二.接口验签实操三.项目源码下载   一.加密与验签介绍   大多数公共网络是不安全的,一切基于HTTP协议的请求/响应(Request or Response)都是可以被 ...

  2. java RSA验签

    这几天在跟一个php的小哥哥联调接口,遇到了一些问题记录下来, 直接上代码吧,亲测有效 import org.slf4j.Logger; import org.slf4j.LoggerFactory; ...

  3. Spring AOP实现接口验签

    因项目需要与外部对接,为保证接口的安全性需要使用aop进行方法的验签; 在调用方法的时候,校验外部传入的参数进行验证, 验证通过就执行被调用的方法,验证失败返回错误信息: 不是所有的方法都需要进行验签 ...

  4. Java 签名验签工具类

    public class SignatureUtil { private static final String CHARSET = "UTF-8"; private static ...

  5. php调java接口

    1.下载二进制的 JavaBridge.jar包.java/Java.inc库文件,下载地址:http://php-java-bridge.sourceforge.net/pjb/download.p ...

  6. Java Http接口加签、验签操作方法

    1.业务背景 最近接触了一些电商业务,发现在处理电商业务接口时,比如淘宝.支付类接口,接口双方为了确保数据参数在传输过程中未经过篡改,都需要对接口数据进行加签,然后在接口服务器端对接口参数进行验签,确 ...

  7. SoapUI接口测试-验签值处理-调用java的加密jar包

    转载自:https://www.jianshu.com/p/7c672426a165 一. 背景: 调用接口时有个请求参数是对请求入参按一定规则进行加密生成的验签值,每次不同参数的请求生成唯一的验签值 ...

  8. jmeter接口测试-调用java的jar包-csv参数化请求-BeanShellPreProcessor生成验签作为请求验证参数-中文乱码----实战

    背景及思路: 需求:要做 创建新卡 接口的测试,要求: 1. 不需要每次手动修改请求参数. 方案:文中先用excle将数据准备好,导出为csv格式,再用jmeter的csv请求进行参数化 2. 卡号需 ...

  9. java使用Cipher进行签名和验签

    public static void main(String[] args) { try { String plainText = "duwenlei"; KeyPairGener ...

随机推荐

  1. 微信小程序开发《三》:微信小程序请求不能使用session的原因及解决办法

    本人在前面的微信小程序开发<二>中提到要想在服务端保持状态需要在客户端第一次请求服务器的时候给客户端返回一个sessionid,由客户端在本地保存,下次请求的时候在header里面带上这个 ...

  2. canvas图表(4) - 散点图

    原文地址:canvas图表(4) - 散点图 今天开始完成散点图,做完这一节,我的canvas图表系列就算是完成了,毕竟平时最频繁用到的就是这几类图表了:柱状,折线,饼图,散点.经过编写canvas图 ...

  3. 一个Win32API Trace Tool的设计与实现

    用VC编程也有不短的时间了,对kernel32.advapi32.user32.gdi32等动态库里的API多数都已经很熟悉了.API是操作系统提供给应用程序的一组服务,很久以前就想要做个小工具,用来 ...

  4. 学习MySQL(上)

    具体实例 1.PHP 服务器组件 对于初学者建议使用集成的服务器组件,它已经包含了 PHP.Apache.Mysql 等服务,免去了开发人员将时间花费在繁琐的配置环境过程. Window 系统可以使用 ...

  5. c语言的字符串

    1. 字符串   1. 什么是字符串 ● 简单的字符串”itcast” ● 一个’i’是一个字符 ● 很多个字符组合在一起就是字符串了 2. 字符串的初始化 ● char a[] = “123”;   ...

  6. 网页的居中显示,使用了margin、clear:both

    很久没写过页面了,现在写起来也觉得捡起来还是挺快的. 当时遇到了这样的问题,我有一个大的div包涵了整个网站,有网页头部,中部还有底部.头部就是一个标题,中部就是几张图片跟文字排版,结果左右两边的图片 ...

  7. Java第二季

    1.封装 (1)概念 将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. (2)封装的实现步骤 2.Java中的访问修饰符 3.继承 (1)Ja ...

  8. Mybatis(四)关联映射

    一. Mybatis关联映射 1 讲数据库中关联关系,主键表与外键表 一对多,多对一,主键表表示一 与外键表表示多 学生与学校的关系,工人与工厂,人员与部门的关系,.... 多        一    ...

  9. Spring-MVC理解之一:应用上下文webApplicationContext

    一.先说ServletContext javaee标准规定了,servlet容器需要在应用项目启动时,给应用项目初始化一个ServletContext作为公共环境容器存放公共信息.ServletCon ...

  10. 简单了解enum

    enum的性质: 1.枚举类型的实例都是常量 2.要使用enum,需要创建一个该类型的引用,并将其赋值给某个实例 3.常用的方法:  *     toString():某个enum实例的名字  *   ...