PHP 蚂蚁芝麻信用分接口

发布时间:2020-05-25 08:06:07

来源:51CTO

阅读:136895

作者:pansw113

//私钥和公钥在芝麻信用后台设置,官网有详细说明

class ZhimaAction extends CommonAction {

//芝麻信用网关地址

public $gatewayUrl = "https://zmopenapi.zmxy.com.cn/openapi.do";

//商户私钥文件

public $privateKeyFile = "商户私钥文件(绝对路径)";

//芝麻公钥文件

public $zmPublicKeyFile = "芝麻公钥文件(绝对路径)";

//数据编码格式

public $charset = "UTF-8";

//应用id

public $app_id = "*******";

//要调用的接口名

public $method = "zhima.credit.score.get";

//来源平台,默认为zmop

public $platform = "zmop";

//接口版本,目前只支持1.0

public $version = "1.0";

//加密后信息  RSA加密后的业务参数

public $params = "";

//加密后信息  对params参数加密前的签名,算法为SHA1WithRSA

public $sign = "1.0";

/* 加签过程

1、在加密过程的第一步,我们得到了拼接在一起的业务参数,同样以芝麻信用评分为例,拼接的参数如下:

transaction_id=URLEncode(1234567)&product_code=URLEncode(w1010100100000000001)&open_id=URLEncode(268810000007909449496)

2、使用 SHA1WithRSA 算法以及商户自己的私钥进行签名,得到 byte 数组

SHA1WithRSA(transaction_id=URLEncode(1234567)&product_code=URLEncode(w1010100100000000001)&open_id=URLEncode(268810000007909449496))

3、将 byte 数组进行 Base64 编码,得到一个签名的字符串

Base64(SHA1WithRSA(transaction_id=URLEncode(1234567)&product_code=URLEncode(w1010100100000000001)&open_id=URLEncode(268810000007909449496)))

经过了上述三步,我们便得到了业务参数的签名,最后我们将这个签名的值放入系统参数 sign 中:

sign=Base64(SHA1WithRSA(transaction_id=URLEncode(1234567)&product_code=URLEncode(w1010100100000000001)&open_id=URLEncode(268810000007909449496)))

解密和验签

*/

public function __construct() {

parent::__construct();

//在官网下载

Vendor('zhima.zmop.ZmopClient');

Vendor('zhima.zmop.RSAUtil');

Vendor('zhima.zmop.ZhimaCreditIvsDetailGetRequest');

Vendor('zhima.ZmopSdk');

}

public function grant(){

if(IS_POST){

$name = I('name');//姓名

$IDnumber = I('IDnumber');  //×××号码

$client = new ZmopClient($this->gatewayUrl,$this->app_id,$this->charset,$this->privateKeyFile,$this->zmPublicKeyFile);

$RSAUtil = new RSAUtil();

$identity_type ='2';

$identity_param =json_encode(array('certNo'=>$IDnumber,'name'=>$name,'certType'=>"IDENTITY_CARD"));

$request['app_id'] = $this->app_id;

$request['charset'] = $this->charset;

$request['method'] = 'zhima.auth.info.authorize';

$request['version'] = $this->version;

$request['platform'] = $this->platform;

$request['params'] = $RSAUtil->rsaEncrypt($str,$this->zmPublicKeyFile);

$request['sign'] = $RSAUtil->sign($str,$this->privateKeyFile);

$request['identity_type'] = $identity_type;

$request['identity_param'] = $identity_param;

$str ='identity_type='.urlencode($identity_type).'&identity_param='.urlencode($identity_param).'';

$request = new ZhimaAuthInfoAuthorizeRequest ();

$request->setIdentityType ("2");

//$request->setParams ("2");

$request->setIdentityParam ($identity_param);

//$request->setBizParams ( "{\"auth_code\":\"M_APPPC_CERT\",\"state\":\"透传参数\"}" ); //

$url = $client->generatePageRedirectInvokeUrl ( $request );

//dump($url);

if($url){

$json['msg'] =1;

$json['url'] =$url;

}else{

$json['msg'] =0;

$json['info'] ='参数错误';

}

echo json_encode($json);exit;

}else{

$json['msg'] =0;

$json['info'] ='参数错误';

echo json_encode($json);exit;

}

}

//返回

public function returndata(){

$params=$_GET['params'];

$sign=$_GET['sign'];

if(!$sign){

$this->redirect('Member/rz');exit;

}

// 判断串中是否有%,有则需要decode

//dump($sign);

$params = strstr ( $params, '%' ) ? urldecode ( $params ) : $params;

$sign = strstr ( $sign, '%' ) ? urldecode ( $sign ) : $sign;

$client = new ZmopClient ( $this->gatewayUrl, $this->app_id, $this->charset, $this->privateKeyFile, $this->zmPublicKeyFile );

$result = $client->decryptAndVerifySign ( $params, $sign );

//转数组

$parts = explode('&',$result);

$array=array();

foreach($parts as $k=>$v){

$parts[$k] = explode('=',$v);

$array[$parts[$k]['0']] = $parts[$k]['1'];

}

//dump($array['success']='false');

if($array['success']!='false'){

//dump($array);exit;

$res =$this->ToRz($array);

if($res->success){

//返回数据 更新会员信息

$is_zhima =  M('member')->where(array('id'=>cookie('id')))->find();

if($is_zhima['zhima']!=$res->zm_score){

$save['open_id'] = $array['open_id'];

$save['zhima'] = $res->zm_score;

$save['state'] = '1';

$save['optime'] = time();

$save['rztime'] = time();

$member = M('member')->where(array('id'=>cookie('id')))->save($save);

}

echo '';

}

///dump($member);

//dump($result);

}else{

//echo '';

$this->redirect('Member/rz');exit;

}

}

}

php 芝麻信用api接口,PHP 蚂蚁芝麻信用分接口相关推荐

  1. 淘宝商品详情页API接口|tb获取商品主图接口

    用到淘宝商品详情页API接口的用户,大部分是做电商软件,电商平台,商家等,使用到的比较常用的淘宝详情页API接口包括商品价格,商品主图,商品标题,SKU,店铺名称等等,还有以下几种: 淘宝商品详情页A ...

  2. 淘宝京东拼多多抖音1688苏宁淘特等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)

    淘宝京东拼多多抖音1688苏宁淘特等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 类 ...

  3. 淘宝拼多多抖音1688苏宁淘特京东等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)

    淘宝拼多多抖音1688苏宁淘特京东等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 类 ...

  4. 淘宝拼多多抖音1688苏宁淘特京东等平台关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)

    淘宝拼多多抖音1688苏宁淘特京东等平台关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 ...

  5. 阿里巴巴关键字搜索商品API接口(item_search-按关键字搜索商品接口),阿里巴巴搜索API接口

    阿里巴巴关键字搜索商品API接口(item_search-按关键字搜索商品接口),阿里巴巴搜索API接口可以获取到整个页面上看的到的数据,包括:商品ID,商品标题,商品图片,优惠价,价格,价格范围,销 ...

  6. C# API中的模型和它们的接口设计

    \ 关键要点 \\ 可变模型应该具备自我验证的能力,并实现验证接口.\\t 在共享对象时(特别是在跨线程共享时),考虑使用不可变模型.\\t 考虑支持MVVM风格UI的单层和多层撤消.\\t 在实现属 ...

  7. python api开发用什么框架_python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  8. CV之API:利用Face++的人体识别接口,实现摄像头实时手势识别

    CV之API:利用Face++的人体识别接口,实现摄像头实时手势识别 目录 测试图片 实现代码(部分) 测试图片 实现代码(部分) #利用Face++的人体识别接口,实现摄像头实时手势识别 impor ...

  9. ABI 与 API 的区别(应用程序二进制接口、应用程序编程接口)

    文章目录 1.ABI 简介 2.API 简介 3.ABI 与 API 的区别 1.ABI 简介 C++ 可执行文件是由编译器将源代码编译成目标文件后链接生成的,那么如果目标文件由不同的编译器编译生成, ...

最新文章

  1. ACM输入输出--多组测试用例--C、C++、Java
  2. Eclipse自动注册Servlet:web.xml注册和@Servlet注解 实现注册
  3. mysql数据库操作指令汇总
  4. jQuery插件 -- Cookie插件jquery.cookie.js(转)
  5. oracle instr查询字符串
  6. java 设计方法_java 中如何处理设计一个方法
  7. 高效的半同步/半异步模式的实现
  8. 【AI视野·今日CV 计算机视觉论文速览 第202期】Thu, 20 May 2021
  9. selenium WebDriverWait类等待机制的实现
  10. Eclipse设置断点进行调试
  11. java subset_Java TreeSet subSet()方法
  12. 内窥镜去反光的论文整理
  13. Lesson 07 for Plotting in R for Biologists
  14. 从草图到人脸:这篇SIGGRAPH2020论文帮你轻松画出心中的「林妹妹」,开源「计图」实现代码...
  15. oracle国家字符集
  16. 手把手学习Vue3.0:开发工具WebStorm和Vue模板文件介绍
  17. ipv4和计算机地址是什么意思,ipv6是什么意思?我们怎么查看电脑iPv6地址
  18. erraddsave.php,DedeCms教程:挑错管理
  19. 网络电话VOIP技术解析
  20. Google Jib 容器化构建工具

热门文章

  1. 前端htm cssl总结
  2. ChromeFK插件推荐系列七:书签插件推荐
  3. 小程序开发过程中遇到过的那些坑
  4. 2.1 Linux系统服务器管理工具使用教程(Xshell 6篇)
  5. java/android 设计模式学习笔记(8)---桥接模式
  6. Java基础4IO技术
  7. 在Linux上配置SMB文件共享
  8. 1924年和1936年浙江各县市民国人口数
  9. python九九乘法表菜鸟教程_Python
  10. 用Jsoup抓取长颈鹿但丁图片