谈谈php对接芝麻信用踩的坑

由于项目需要,接入芝麻信用对用户进行认证,打开芝麻信用官方网站( https://b.zmxy.com.cn/index.htm)查看官方demo,在文档中看到如图

瞬间觉得这个官方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;
  }
}
?> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • PHP 芝麻信用接入的注意事项

    芝麻官方下载的SDK,跑不起来,百度搜索一番也没有发现太多的文章 ,只有一个CSDN博客写的一篇文章,比较有参考价值 详细查阅文档+几天测试整理以下几点注意事项: 接入芝麻API接口,应该分2步: 第一步,获得授权,这个,官方的SDK,只要吧参数配置正确,就能操作. 注意下面这些参数,和 芝麻文档对比, 另外最重要的一点,,,芝麻公钥生成,以及修改,生成的公钥按照官方的操作复制进芝麻后台,保存之后,芝麻会生成新的公钥,点击复制,在保存到我们的公钥文件,然后上传到空间给PHP调用. $reques

  • 谈谈php对接芝麻信用踩的坑

    由于项目需要,接入芝麻信用对用户进行认证,打开芝麻信用官方网站( https://b.zmxy.com.cn/index.htm)查看官方demo,在文档中看到如图 瞬间觉得这个官方demo的垃圾了. 在其中有需要注意如下: 1.本地生成密钥,可以按照提示进行生成 2.在"商家管理"中创建应用,通过第一步生成的密钥得到芝麻信用给的公钥,这就得到了加密用的密钥 注意:芝麻信用给的公钥只能复制,但是复制出来的格式是不对的,需要咱们手工处理每行64,和咱们生成的密钥格式一致,不然加密和解密将

  • Android仿支付宝上芝麻信用分雷达图

    一.首先看下支付宝上芝麻信用分的效果图: 二.思路 1.确定雷达图中心点坐标 2.绘制多边形及连接线 3.根据维度值绘制覆盖区域 4.绘制分数 5.绘制每个维度的标题文字和图标 三.实现 获取布局的中心坐标 在onSizeChanged(int w, int h, int oldw, int oldh)方法里面,根据View的长宽,计算出雷达图的半径(这里取布局宽高最小值的四分之一,可以自定义),获取整个布局的中心坐标. public class CreditScoreView extends

  • js canvas仿支付宝芝麻信用分仪表盘

    这是一个仿支付宝芝麻信用分的一个canvas,其实就是一个动画仪表盘. 首先, 上原图: 这个是在下支付宝上的截图,分低各位见笑了.然后看下我用canvas实现的效果图: <canvas id="canvas" width="400" height="700" data-score='724'></canvas> <!-- 设置data-score,分数区间[400, 900] --> 唉,总感觉不像.这个是G

  • Android自定义view之仿支付宝芝麻信用仪表盘示例

    自定义view练习 仿支付宝芝麻信用的仪表盘 对比图: 首先是自定义一些属性,可自己再添加,挺基础的,上代码 <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="RoundIndicatorView"> <!--最大数值--> <attr name="maxNum" form

  • Android自定义View仿支付宝芝麻信用分仪表盘

    先看下iOS的芝麻信用分截图 这是我做的效果,还是有点差距的 支付宝9.9版本芝麻信用分的实现 首先初始化各种画笔,默认的size,padding,小圆点. (因为实在找不到原版芝麻信用的带点模糊效果的小圆点,所以只好用这个代替) //View的默认大小 defaultSize = dp2px(250); //默认Padding大小 arcDistance = dp2px(14); //外层圆环画笔 mMiddleArcPaint = new Paint(Paint.ANTI_ALIAS_FLA

  • 浅谈Django2.0 加xadmin踩的坑

    如果是django2.0 必须下载xadmin2.0 不然很多地方不兼容 xadmin2.0下载地址 https://github.com/sshwsfc/xadmin/tree/django2 然后下载到本地 通过pip install xadmin本地地址 比如 xadmin包在 C:\Users\ASUS\Desktop\xadmin-django2.zip 就 pip install C:\Users\ASUS\Desktop\xadmin-django2.zip 楼主直接把包里的xad

  • Java调用用户芝麻信用分

    本文实例为大家分享了Java调用用户芝麻信用分的具体代码,供大家参考,具体内容如下 1.导入芝麻信用API:zmxy-sdk-java-20180824112425.jar 和 fastjson-1.2.48.jar 2.代码如下: package com.zhima; import java.net.URLDecoder; import java.util.HashMap; import java.util.Map; import java.util.UUID; import com.alib

  • 浅谈在django中使用filter()(即对QuerySet操作)时踩的坑

    代码伺候: 先看如下代码: 例1: message = Message.objects.filter(pk=message_id2) message[0].id = message_id2 message[0].content = content2 message[0].message_type = message_type2 print(message[0].id) print(message[0].content) message[0].save() 可正常从QuerySet中读取数据,并打

  • 解决Vue大括号字符换行踩的坑

    最近遇到这样一个问题,在页面上要显示一段自定义的文本,文本如果较长的话需要换行显示. 在HTML中可以通过<br/>标签换行,也可以通过\n转义字符换行 在Vue中用大括号显示的变量,加<br/>会直接被当成字符串显示出来,加\n显示一个空格,加\r\n显示两个空格,因为{{}}}是文本插值,内部都会按照普通字符串进行处理,可以用v-html进行显示 如下显示name变量 data() { return{ name: '前一部分<br/>后一部分' } } 在元素上显示

随机推荐