法狗狗开放平台
    法狗狗开放平台
    • OpenAPI接口调用说明
    • 接口签名处理说明
    • 智能比对
      • 智能比对调用说明
      • 创建比对任务(一对一)
        POST
      • 创建比对任务(一对多)
        POST
      • 查询比对结果
        GET
      • 生成比对结果链接
        POST
      • 通知比对任务结果
        POST
      • 比对任务列表
        GET
    • 智能审查
      • 智能审查调用说明
      • 发起审查
        POST
      • 获取审查结果
        GET
      • 下载报告
        GET
    • 智能抽取
      • 智能抽取调用说明
      • 抽取
        POST
      • 下载结果
        GET
    • 智能查重
      • 智能查重调用说明
      • 发起查重任务
        POST
      • 获取查重结果
        GET
      • 查看某文件的重复块和块中文字
        GET
      • 获取查重结果页链接
        GET
      • 导出报告
        GET
    • 文档通用能力
      • 本地文件上传
        POST
      • OFD转图片(返回图片集合的压缩包)
        POST
      • OFD转PDF
        POST
      • 各种文档格式转PDF
        POST
      • 除去PDF的所有图片
        POST
      • PDF合并
        POST
      • PDF转为文档
        POST
      • 去PDF批注
        POST
      • PDF转图片
        POST
      • PDF转DOCX
        POST
      • 图片合成PDF
        POST
    • 图像通用能力
      • 图像去红色印章
      • 图像去水印
      • 提取OCR文本
      • 倾斜校正
      • 去图像二维码
      • 翻转图像校正
      • 图像增强锐化
    • 基础接口
      • 余额查询
      • 创建用户V2
      • 获取用户列表
    • 智能审查(规则版)
      • 1.7.0
        • 合同审查
        • 获取审查模版
        • 获取审查模版下的规则
        • 审核结果文件下载
        • 获取审查结果数据
        • 重新审查

    接口签名处理说明

    1. 概述#

    本文档是法狗狗开放平台API对接文档,旨在给第三方平台(开发者)提供相关接口。
    开发者如需使用本接口文档,需要先获取法狗狗服务 appid,appkey,用于摘要认证签名处理。

    开发者配置信息#

    第三方平台接入法狗狗open api服务后,法狗狗将提供如下信息:
    appid:用于唯一标识第三方平台
    appkey:摘要认证的salt(注意:构造请求数据并签名必须在开发者服务端完成,appkey不要保存在开发者客户端/前端中,也不能从开发者服务端下发)
    secret:基本认证的调用凭证(开发者如需使用法狗狗结果页,在会话过期后可通过此凭证获取新token更新会话)
    接口请求host:
    测试服:https://app-test.fagougou.com
    正式服:https://app.fagougou.com
    通知回调接口:(由第三方开发者配置或提供)

    2. 摘要认证(签名校验)#

    摘要认证采用MD5、SHA等不可逆哈希算法对参数摘要
    1.客户端通过指定的加密算法将随机数、时间戳、密钥等信息生成摘要;
    2.调用请求时,将摘要放在请求头中发送给服务器;
    3.服务器拿到摘要后,使用同样的算法和密钥进行摘要并对比,匹配则身份验证通过。

    交互方式如下图所示:#

    flowchart.png

    签名生成的通用步骤#

    1.
    设所有发送的请求参数数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
    特别注意以下重要规则:
    参数名ASCII码从小到大排序(字典序);
    参数名区分大小写;
    部分请求字段非必填或条件选填,在值为空的情况下不需要参与签名;
    传送的sign参数不参与签名,将生成的签名与该sign值作校验;
    如果POST请求且Content-Type: application/json,需要对请求体body的json字符串进行MD5,得到 jsonDataStr 后参与签名。
    如果POST请求且Content-Type: form/data,包含文件上传,传送的file文件不参与签名,需对file做MD5得到file_md5后参与签名。
    2.
    在stringA末尾拼接上appkey得到stringSignTemp字符串。
    3.
    生成签名:对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为小写,得到签名sign。

    3. 接口调用示例#

    公共参数#

    请求头参数header#

    传入参数是否必填示例字段说明
    appid是xxxxxxxxxxx开发者appid
    timestamp是1712130669当前时间(10位数字时间戳)
    nonce是ibuaiVcKdpRxfgtr16位随机字符串
    sign是********签名(小32位。生成方式见下方示例)

    发送请求示例:#

    DEMO(java):#

    <!-- 当前demo所依赖客户端请求框架。也可以选择其它的httpclient框架 -->
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpmime</artifactId>
        <version>4.5.12</version>
    </dependency>

    1.GET请求示例:#

    步骤:
    第一步:对参数按照 key=value 的格式,并按照参数名ASCII字典序排序如下
    第二步:拼接API密钥key
    第三步:生成签名
    第四步:将sign参数加入header后即可发送API接口请求。

    2.POST请求示例:(且Content-Type: application/json)#

    步骤:
    第一步:POST请求且Content-Type: application/json,如果body内容不为空,对body的json内容进行
    md5(body),得到参数 jsonDataStr
    第二步:按照 key=value 的格式,并按照参数名ASCII字典序排序如下
    第三步:拼接API密钥key
    第四步:生成签名
    第五步:将sign参数加入header后即可发送API接口请求。
    注意:body的json字符串为去除回车换行之后再进行md5。

    3.POST请求示例:(Content-Type: form/data)#

    步骤:
    第一步:如果参数包含file文件类型,需对文件进行md5加入到签名参数中,得到参数 file_md5(命名规则为xxx_md5, xxx为文件类型的参数名称)
    第二步:按照 key=value 的格式,并按照参数名ASCII字典序排序如下
    第三步:拼接API密钥key
    第四步:生成签名
    第五步:将sign参数加入header后即可发送API接口请求。

    4. 回调接口说明#

    开发者如果需要接受消息通知,需要提供一个“通知回调接口”,法狗狗方将在开发者执行相关操作时调用此“通知回调接口”回传内容通知开发者,开发者对header和body的内容进行处理。

    回调交互图#

    flowchart.png

    回调发出POST请求,携带参数信息说明#

    公共header参数:(这里是平台调用开发者系统的时候请求头中携带的内容 )#

    字段名位置字段说明取值范例
    Content-TypeHeader固定值:application/jsonapplication/json
    fgg-logidHeader统一日志id,当出现问题时可以提供此id给法狗狗研发人员协助定位问题780d9ac6-573d-4293-b8e2-b68ad14069e2

    以下参数参与签名,请参考-签名算法#

    字段名位置字段说明取值范例
    appidHeader开发者appidxxxxxxxxxxx
    timestampHeader当前时间(10位数字时间戳)1712130669
    nonceHeader16位随机字符串ibuaiVcKdpRxfgtr
    signHeader签名,请参考下方签名算法******

    请求body体参数示例:#

    {
        "status": "complete",
        "message": "任务执行成功",
        "taskId": "c89cbee0-b3e4-4734-9060-54eccbaa401e",
        "type": "compare",
        "similarity": 0,
        "diffItemsCount": 0,
        "addedCount": 0,
        "changedCount": 0,
        "removedCount": 0
    }
    第一步:将body请求体Json字符串转为MD5值
    第二步:对参数按照 key=value 的格式,并按照参数名ASCII字典序排序如下
    第三步:拼接API密钥key
    第四步:生成签名
    第五步:校验数据完整性
    回调接口响应数据要求:
    收到通知之后,响应"success" 即可。
    如未收到"success" 或请求请求超时,将按如下频率再次调用:1分钟,5分钟,1小时,三次调用后不再尝试。
    由于网络波动等原因,可能会产生重复的通知消息,接入方需要做好幂等,正确处理。​

    5. 错误码集合#

    类型codemsg
    用户2002用户不存在
    用户2003用户已存在
    鉴权6032无效的appid
    鉴权6033无效的签名
    鉴权6034无效的nonce
    鉴权6035签名已过期
    鉴权6036验签失败
    上一页
    OpenAPI接口调用说明
    下一页
    智能比对
    Built with