• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php--php调java接口验签

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
<?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=4;
         $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,0,5)==\'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里传过里啊,这样比较安全。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
java如何调用php接口,并获取值发布时间:2022-07-10
下一篇:
PHP和Java强强联合 PHP与Java集成开发详解发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap