谈谈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下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
php curl的深入解析
Jun 02 PHP
PHP数据过滤的方法
Oct 30 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
Jul 08 PHP
php中使用PHPExcel读写excel(xls)文件的方法
Sep 15 PHP
php判断访问IP的方法
Jun 19 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
Sep 11 PHP
php 7新特性之类型申明详解
Jun 06 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 PHP
在Laravel 中实现是否关注的示例
Oct 22 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语法速查表
2006/12/06 PHP
Ajax PHP简单入门教程代码
2008/04/25 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
Python自动连接ssh的方法
2015/03/07 Python
python生成excel的实例代码
2017/11/08 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
python numpy 按行归一化的实例
2019/01/21 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
Python银行系统实战源码
2019/10/25 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
jupyter实现重新加载模块
2020/04/16 Python
Python新手学习标准库模块命名
2020/05/29 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
俞敏洪北大演讲稿
2014/05/22 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
2015年护士节活动总结
2015/02/10 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
Python机器学习之决策树和随机森林
2021/07/15 Javascript