谈谈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 相关文章推荐
PHP无限分类的类
Jan 02 PHP
php后台程序与Javascript的两种交互方式
Oct 25 PHP
PHP计数器的实现代码
Jun 08 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 PHP
php操作redis缓存方法分享
Jun 03 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
Jun 19 PHP
PHP实现的oracle分页函数实例
Jan 25 PHP
php通过两层过滤获取留言内容的方法
Jul 11 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
php+Ajax处理xml与json格式数据的方法示例
Mar 04 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基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
php之可变函数的实例详解
2017/09/13 PHP
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
基于JavaScript实现生成名片、链接等二维码
2015/09/20 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
Vuejs 单文件组件实例详解
2018/02/09 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
Python实现配置文件备份的方法
2015/07/30 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
pyspark给dataframe增加新的一列的实现示例
2020/04/24 Python
python 自动识别并连接串口的实现
2021/01/19 Python
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
不用游标的SQL语句有哪些
2012/09/07 面试题
档案接收函范文
2014/01/10 职场文书
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang