谈谈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 的post方法实例(带循环)
Jul 04 PHP
PHP随机字符串生成代码(包括大小写字母)
Jun 24 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
Mar 17 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
Zend Framework入门教程之Zend_View组件用法示例
Dec 09 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
php 二维数组快速排序算法的实现代码
Oct 17 PHP
PHP生成(支持多模板)二维码海报代码
Apr 30 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 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 addslashes和mysql_real_escape_string
2010/01/24 PHP
php tp验证表单与自动填充函数代码
2012/02/22 PHP
PHP 7.1新特性的汇总介绍
2016/12/16 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
2017/07/10 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python中的随机函数小结
2018/01/27 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
pandas和spark dataframe互相转换实例详解
2020/02/18 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
计算机大学生的自我评价
2013/10/15 职场文书
父亲八十大寿答谢词
2014/01/23 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
揭牌仪式策划方案
2014/05/28 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
出生公证书
2015/01/23 职场文书
个人培训总结
2015/03/05 职场文书
检讨书范文
2019/04/16 职场文书
深入理解go slice结构
2021/09/15 Golang