谈谈php对接芝麻信用踩的坑


Posted in PHP onDecember 01, 2016

由于项目需要,接入芝麻信用对用户进行认证,打开芝麻信用官方网站( https://b.zmxy.com.cn/index.htm)查看官方demo,在文档中看到如图

谈谈php对接芝麻信用踩的坑

瞬间觉得这个官方demo的垃圾了。

在其中有需要注意如下:

1.本地生成密钥,可以按照提示进行生成

2.在“商家管理”中创建应用,通过第一步生成的密钥得到芝麻信用给的公钥,这就得到了加密用的密钥

注意:芝麻信用给的公钥只能复制,但是复制出来的格式是不对的,需要咱们手工处理每行64,和咱们生成的密钥格式一致,不然加密和解密将不能进行;

3.需要传递的参数根据文档可以得出,上图只是生成了一个参数,需要处理生成对应文档的数据返回;

直接上代码:

<?php 
  include('/ZmopClientphp'); 
  include('/ZhimaAuthInfoAuthorizeRequestphp'); 
  class TestAuthFreeze { 
    //芝麻信用网关地址 
    public $gatewayUrl = "https://zmopenapizmxycomcn/openapido"; 
    //商户公钥文件 
    //芝麻公钥文件 
    public $privateKeyFile = "path/rsa_private_keypem"; 
    public $zmPublicKeyFile = "path/zima_public_keypem"; 
 
    //数据编码格式 
    public $charset = "UTF-8"; 
    //芝麻分配给商户的appId 
    public $appId = "1000003"; 
 
 
  //生成移动端SDK 集成需要的sign 参数 ,并进行urlEncode 
  public function generateSign($certNo,$name,$certType='IDENTITY_CARD'){ 
    $client = new ZmopClient($this->gatewayUrl, $this->appId, $this->charset, $this->privateKeyFile,$this->zmPublicKeyFile); 
    $request = new ZhimaAuthInfoAuthorizeRequest(); 
    $request->setScene("test"); 
    // 授权来源渠道设置为appsdk 
    $request->setChannel("appsdk"); 
    // 授权类型设置为2标识为证件号授权见“章节4中的业务入参说明identity_type” 
    $request->setIdentityType("2"); 
    // 构造授权业务入参证件号,姓名,证件类型;“章节4中的业务入参说明identity_param” 
    $request->setIdentityParam("{\"certNo\":\"$certNo\",\"certType\":\"IDENTITY_CARD\", \"name\":\"$name\"}"); 
    // 构造业务入参扩展参数“章节4中的业务入参说明biz_params” 
    $request->setBizParams("{\"auth_code\":\"M_APPSDK\"}"); 
     
    $params = $client->generateEncryptedParamWithUrlEncode($request); 
    $sign = $client->generateSignWithUrlEncode($request); 
 
    $data['gatewayUrl'] = $this->gatewayUrl; 
    $data['appId'] = $this->appId; 
    $data['charset'] = $this->charset; 
    $data['params']=$params; 
    $data['sign'] = $sign; 
    return $data; 
  } 

  // 解密 
  public function zhimacallback($params){ 
    $this->privateKeyFile= "path/rsa_private_keypem"; 
    $client = new ZmopClient($this->gatewayUrl, $this->appId, $this->charset, $this->privateKeyFile,$this->zmPublicKeyFile); 
    $result=$client->generateSignCallBack($params,$this->privateKeyFile); 
    return $result; 
  } 
}  
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
推荐一篇入门级的Class文章
Mar 19 PHP
ajax php 实现写入数据库
Sep 02 PHP
请离开include_once和require_once
Jul 18 PHP
php 下载保存文件保存到本地的两种实现方法
Aug 12 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
php+Mysqli利用事务处理转账问题实例
Feb 11 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
windows下安装php的memcache模块的方法
Apr 07 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
PHP 记录访客的浏览信息方法
Jan 29 PHP
详解PHP 7.4 中数组延展操作符语法知识点
Jul 19 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
PHP自定义函数获取汉字首字母的方法
Dec 01 #PHP
phpmailer绑定邮箱的实现方法
Dec 01 #PHP
thinkPHP实现多字段模糊匹配查询的方法
Dec 01 #PHP
thinkPHP商城公告功能开发问题分析
Dec 01 #PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 #PHP
PHP 芝麻信用接入的注意事项
Dec 01 #PHP
PHP中静态变量的使用方法实例分析
Dec 01 #PHP
You might like
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
Python字符串和文件操作常用函数分析
2015/04/08 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
基于python实现聊天室程序
2018/07/27 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
Python 实现敏感目录扫描的示例代码
2020/05/21 Python
python开根号实例讲解
2020/08/30 Python
python 模拟登陆github的示例
2020/12/04 Python
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
大学生村官工作感言
2014/01/10 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python
Java使用HttpClient实现文件下载
2022/08/14 Java/Android