php 芝麻信用api接口,PHP 蚂蚁芝麻信用分接口
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 蚂蚁芝麻信用分接口相关推荐
- 淘宝商品详情页API接口|tb获取商品主图接口
用到淘宝商品详情页API接口的用户,大部分是做电商软件,电商平台,商家等,使用到的比较常用的淘宝详情页API接口包括商品价格,商品主图,商品标题,SKU,店铺名称等等,还有以下几种: 淘宝商品详情页A ...
- 淘宝京东拼多多抖音1688苏宁淘特等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)
淘宝京东拼多多抖音1688苏宁淘特等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 类 ...
- 淘宝拼多多抖音1688苏宁淘特京东等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)
淘宝拼多多抖音1688苏宁淘特京东等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 类 ...
- 淘宝拼多多抖音1688苏宁淘特京东等平台关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)
淘宝拼多多抖音1688苏宁淘特京东等平台关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口,分类ID搜索商品列表接口,关键词搜索商品销量接口)代码对接如下: 1.公共参数 名称 ...
- 阿里巴巴关键字搜索商品API接口(item_search-按关键字搜索商品接口),阿里巴巴搜索API接口
阿里巴巴关键字搜索商品API接口(item_search-按关键字搜索商品接口),阿里巴巴搜索API接口可以获取到整个页面上看的到的数据,包括:商品ID,商品标题,商品图片,优惠价,价格,价格范围,销 ...
- C# API中的模型和它们的接口设计
\ 关键要点 \\ 可变模型应该具备自我验证的能力,并实现验证接口.\\t 在共享对象时(特别是在跨线程共享时),考虑使用不可变模型.\\t 考虑支持MVVM风格UI的单层和多层撤消.\\t 在实现属 ...
- python api开发用什么框架_python+requests接口自动化框架
为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...
- CV之API:利用Face++的人体识别接口,实现摄像头实时手势识别
CV之API:利用Face++的人体识别接口,实现摄像头实时手势识别 目录 测试图片 实现代码(部分) 测试图片 实现代码(部分) #利用Face++的人体识别接口,实现摄像头实时手势识别 impor ...
- ABI 与 API 的区别(应用程序二进制接口、应用程序编程接口)
文章目录 1.ABI 简介 2.API 简介 3.ABI 与 API 的区别 1.ABI 简介 C++ 可执行文件是由编译器将源代码编译成目标文件后链接生成的,那么如果目标文件由不同的编译器编译生成, ...
最新文章
- ACM输入输出--多组测试用例--C、C++、Java
- Eclipse自动注册Servlet:web.xml注册和@Servlet注解 实现注册
- mysql数据库操作指令汇总
- jQuery插件 -- Cookie插件jquery.cookie.js(转)
- oracle instr查询字符串
- java 设计方法_java 中如何处理设计一个方法
- 高效的半同步/半异步模式的实现
- 【AI视野·今日CV 计算机视觉论文速览 第202期】Thu, 20 May 2021
- selenium WebDriverWait类等待机制的实现
- Eclipse设置断点进行调试
- java subset_Java TreeSet subSet()方法
- 内窥镜去反光的论文整理
- Lesson 07 for Plotting in R for Biologists
- 从草图到人脸:这篇SIGGRAPH2020论文帮你轻松画出心中的「林妹妹」,开源「计图」实现代码...
- oracle国家字符集
- 手把手学习Vue3.0:开发工具WebStorm和Vue模板文件介绍
- ipv4和计算机地址是什么意思,ipv6是什么意思?我们怎么查看电脑iPv6地址
- erraddsave.php,DedeCms教程:挑错管理
- 网络电话VOIP技术解析
- Google Jib 容器化构建工具