谈谈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 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
非常不错的MySQL优化的8条经验
Mar 24 PHP
不要轻信 PHP_SELF的安全问题
Sep 05 PHP
PHP的PSR规范中文版
Sep 28 PHP
PHP中鲜为人知的10个函数
Feb 28 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
PHP使用pdo实现事务处理操作示例
Sep 05 PHP
php反射学习之依赖注入示例
Jun 14 PHP
php抽象方法和普通方法的区别点总结
Oct 13 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 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下网站防IP攻击代码,超级实用
2010/10/24 PHP
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
2016/12/29 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
常见python正则用法的简单实例
2016/06/21 Python
python实现数据库跨服务器迁移
2018/04/12 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
python异步Web框架sanic的实现
2020/04/27 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
大学校庆邀请函
2014/01/11 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
就业协议书怎么填
2014/09/15 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
修改并编译golang源码的操作步骤
2021/07/25 Golang