谈谈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危险函数(disable_functions)
Feb 23 PHP
php生成略缩图代码
Jul 16 PHP
php比较多维数组中值的大小排序实现代码
Sep 08 PHP
php导入导出excel实例
Oct 25 PHP
php批量删除超链接的实现方法
Oct 19 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
Feb 23 PHP
如何判断php mysqli扩展类是否开启
Dec 24 PHP
PHP中error_reporting函数用法详细介绍
Jun 11 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
php实现的AES加密类定义与用法示例
Jan 29 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
Apr 09 PHP
PHP时间相关常用函数用法示例
Jun 03 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
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
php实现记事本案例
2020/10/20 PHP
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
Javascript中神奇的this
2016/01/20 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
vue 实现全选全不选的示例代码
2018/03/29 Javascript
关于微信小程序bug记录与解决方法
2018/08/15 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
浅谈pytorch池化maxpool2D注意事项
2020/02/18 Python
Python同时处理多个异常的方法
2020/07/28 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
Tretorn美国官网:瑞典外套和鞋类品牌,抵御风雨
2018/07/19 全球购物
新西兰航空中国官网:Air New Zealand China
2018/07/24 全球购物
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
.net软件工程师面试题
2015/03/31 面试题
如何做好员工培训计划?
2019/07/09 职场文书
导游词之天津盘山
2019/11/01 职场文书