首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
Web开发
> 详细
PHP 蚂蚁芝麻信用分接口
时间:
2018-03-21 11:48:51
阅读:
809
评论:
0
收藏:
0
[点我收藏+]
标签:
PHP
芝麻信用分
thinkphp
zhima
<?php //私钥和公钥在芝麻信用后台设置,官网有详细说明 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 '<script>alert("认证成功");window.location.href ="/Member/rz"</script>'; } ///dump($member); // dump($result); }else{ //echo '<script>alert("验签失败");window.location.href ="/Member/rz"</script>'; $this->redirect('Member/rz');exit; } } }
PHP 蚂蚁芝麻信用分接口
标签:
PHP
芝麻信用分
thinkphp
zhima
原文地址:http://blog.51cto.com/9300893/2089282
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
36.VUE — 认识 Webpack 和 安装
2021-07-28
【PHP】上传图片翻转问题
2021-07-28
php对数字进行万。亿的转化
2021-07-28
五个 .NET 性能小贴士
2021-07-28
Three.js中显示坐标轴、平面、球体、四方体
2021-07-28
.net 5+ 知新:【1】 .Net 5 基本概念和开发环境搭建
2021-07-27
1.html,css
2021-07-27
基于Docker搭建 Php-fpm + Nginx 环境
2021-07-27
nginx + http + svn
2021-07-27
kubernets kube-proxy的代理 iptables和ipvs
2021-07-26
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!