<?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. Android OOM异常解决方案

    一,什么是OOM异常: OOM(out of Memory)即内存溢出异常,也就是说内存占有量超过了VM所分配的最大,导致应用程序异常终止: 二,为什么会产生OOM异常呢? OOM异常是Android ...

  2. 常用FastJSON的SerializerFeature特性及日期转换格式

    SerializerFeature.PrettyFormat:格式化输出 SerializerFeature.WriteMapNullValue:是否输出值为null的字段,默认为false Seri ...

  3. put()

    put()  作用: 将集合的所有键名和值,存放在一个集合对象中. public Map selectSingleData(String sql,Object...obj) throws SQLExc ...

  4. UEditor1.4.3.3实现图片上传、删除功能

    1.下载ueditor1.4.3.3 UTF-8的版本 2.新建一个项目,在项目中添加UEditor,把下载好的插件都放在ueditor这个文件夹中,在进行一些基本的配置 3.在根目录下新建一个为in ...

  5. java 之 建造者模式(大话设计模式)

    建造者模式,在笔者看来比较试用于,定制一个业务流程,而流程的细节又不尽相同,每个细节又必不可少,这时应考虑使用建造者模式. 大话设计模式-类图 先看下笔者写的一个简单的例子. /** * 所有建造过程 ...

  6. ios判断手机号是否可用

    + (BOOL)valiMobile:(NSString *)mobileNum { if (mobileNum.length != 11) { return NO; } /** * 手机号码: // ...

  7. C++反汇编第二讲,不同作用域下的构造和析构的识别

    C++反汇编第二讲,不同作用域下的构造和析构的识别 目录大纲: 1.全局(静态)对象的识别,(全局静态全局一样的,都是编译期间检查,所以当做全局对象看即可.) 1.1 探究本质,理解构造和析构的生成, ...

  8. Django学习(2)数据宝库

    数据库是一所大宝库,藏着各种宝贝.一个没有数据库的网站,功能有限.在Django中,支持的数据库有以下四种: SQLite3 MySQL PostgreSQL Oracle 其中SQLite3为Dja ...

  9. NYOJ 417 死神来了 鸽巢原理

    死神来了 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 有一天,王小子在遨游世界时,遇到了一场自然灾害.一个人孤独的在一个岛上,没有吃的没有喝的.在他饥寒交迫将要死亡时 ...

  10. eclipse和myeclipse中将项目发布到tomcat的root目录

    1.在eclipse中,将项目直接部署在tomcat的root目录中,这样便可以直接ip:port访问项目: 项目右键->属性->web project settings 添加之后直接启动 ...