谈谈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 相关文章推荐
默默简单的写了一个模板引擎
Jan 02 PHP
自动生成文章摘要的代码[PHP 版本]
Mar 20 PHP
PHP5中Cookie与 Session使用详解
Apr 30 PHP
php 常用算法和时间复杂度
Jul 01 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
PHP多线程类及用法实例
Dec 03 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
php JWT在web端中的使用方法教程
Sep 06 PHP
mongodb和php的用法详解
Mar 25 PHP
php链式操作的实现方式分析
Aug 12 PHP
Laravel的加密解密与哈希实例讲解
Mar 24 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
PHP 和 MySQL 基础教程(四)
2006/10/09 PHP
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
AngularJS 入门教程之HTML DOM实例详解
2016/07/28 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
python和php哪个容易学
2020/06/19 Python
python音频处理的示例详解
2020/12/23 Python
致裁判员加油稿
2014/02/08 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
财务工作失职检讨书
2014/11/21 职场文书
历史博物馆观后感
2015/06/05 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python