谈谈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 相关文章推荐
ajax缓存问题解决途径
Dec 06 PHP
PHP中的cookie不用刷新就生效的方法
Feb 04 PHP
深入Apache与Nginx的优缺点比较详解
Jun 17 PHP
PHP 读取大文件的X行到Y行内容的实现代码
Jun 24 PHP
php url路由入门实例
Apr 23 PHP
在Yii框架中使用PHP模板引擎Twig的例子
Jun 13 PHP
php生成zip文件类实例
Apr 07 PHP
smarty模板判断数组为空的方法
Jun 10 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
Jul 01 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
Jun 13 PHP
Yii安装与使用Excel扩展的方法
Jul 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
PHP4实际应用经验篇(2)
2006/10/09 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
2011/07/26 Javascript
js常用代码段收集
2011/10/28 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
几行js代码实现自适应
2017/02/24 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
学习和使用python的13个理由
2019/07/30 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
质量月活动策划方案
2014/03/10 职场文书
职工小家建设活动方案
2014/08/25 职场文书
党员批评与自我批评材料
2014/10/14 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers