lin07ux/net-court
Composer 安装命令:
composer require lin07ux/net-court
包简介
NetCourt is a SDK for HangZhou NetCourt notary: original confirmation and obtain evidence.
关键字:
README 文档
README
Definitions
Transaction
存证事务,可理解为逻辑上相关的一组证据,每个事务由一个事务 ID 相关联。一次事务由一个或多个存证阶段(phase)组成,每个阶段即一次实际存证请求。存证阶段可自定义,含义为自己理解和使用。
存证事务由一个全局唯一的 Token 作为凭证,该凭证由存证初始化接口完成资格核验后返回,供固定的存证人/公司多次使用,暂不不考虑失效条件。
Entity
进行存证业务的实体。该平台作为存证行为的发起者,需要经过互联网法院的认证,并得到分配的accountId和签名私钥。在进行存证时,需要使用该accountId作为标识,并用私钥对数据进行签名,方能通过认证,完成存证行为。
在进行存证时,可以选择将Entity信息也提交,也可以不提交,并不会影响存证结果。Entity信息类型为Identity,具体可以参见Types - Identity中的介绍。
Customer
存证客户,也即是存证的所有者。每次存证都必定是一个实名个人或有工商登记的公司企业主体。进行存证时,需要提交存证客户的基本信息,信息类型为Identity,具体可以参见Types - Identity中的介绍。
Notary
目前存证服务器的域名为https://check.netcourt.gov.cn。API 接口有如下几个:
/api/blockChain/notaryToken获取存证事务 ID/api/blockChain/notaryCert存证并获取证书
Sign
请求每个 API 的时候,都要对关键数据进行签名,以便存证服务器进行验证数据的可信性。
签名过程如下:将签名需要用到的数据拼接成一个字符串,然后使用密钥通过 Sha256WithRSA 算法进行加密,将得到的结果进行 Hex encode 成十六进制字符串后即为签名数据。计算签名的明文数据以 UTF-8 方式编码。
notaryToken
每次进行存证时,必须提供一个事务 ID,以便可以将不同步骤的存证数据串联起来。事务 ID 可以使用之前已经获取过的,也可以通过notaryToken接口进行获取。该接口的描述如下:
RestFul URL: /api/blockChain/notaryToken
HTTP Method: POST
Request Content Type: application/json
Response Content Type: application/json
可通过如下方式使用:
use NetCourt\Business; use NetCourt\NotaryClient; use NetCourt\Identity\Person; try { $customer = new Person(['certName' => 'Lin07ux', 'certNo' => '123456789012345678']); $business = new Business(Business::COPYRIGHT, Business::COPYRIGHT_TEXT); $notaryClient = new NotaryClient('accountId', 'privateKeyValue'); $response = $notaryClient->createNotaryToken($customer, $business); $token = $response->getResponseData(); } catch (\Exception $e) { echo $e->getMessage(); }
请求该接口时,需要提交如下的数据:
| name | type | required | comment |
|---|---|---|---|
| accountId | string | yes | 账号标识 |
| entity | Identity | no | 存证实体信息 |
| bizId | integer | yes | 业务类型标识,枚举字段,见Types - bizId & subBizId |
| subBizId | string | no | 子类型标识,字符串串,见Types - bizId & subBizId |
| customer | Identity | yes | 客户身份标识,见Types - Identity |
| timestamp | string | yes | 验签时间戳(毫秒值),当前时刻,误差五分钟以内 |
| signedData | string | yes | 验签数据(accountId + bizId + timestamp) |
| properties | string | no | 扩展字段 |
该接口的验签数据明文为
accountId、bizId、timestamp三个字段拼接后的字符串。
该接口的响应数据如下:
| name | type | required | comment |
|---|---|---|---|
| success | string | yes | 成功标志 |
| code | string | yes | 状态码,见Types - Code |
| errMessage | string | yes | 错误信息 |
| responseData | string | no | 事务 ID,全局唯⼀ |
notaryCert
该接口用于存证,返回存证后的区块 hash 和存证证书。该接口的描述如下:
RestFul URL: /api/blockChain/notaryCert
HTTP Method: POST
Request Content Type: application/json
Response Content Type: application/multipart/form-data
可通过如下方式使用:
use NetCourt\Business; use NetCourt\NotaryClient; use NetCourt\Identity\Person; try { $customer = new Person(['certName' => 'Lin07ux', 'certNo' => '123456789012345678']); $business = new Business(Business::COPYRIGHT, Business::COPYRIGHT_TEXT); $notaryClient = new NotaryClient('accountId', 'privateKeyValue'); // Get the notary response $response = $notaryClient->createNotaryCert('token', 'right notary', 'something to notary'); // Get notary hash $hash = $response->getResponseData(); // Save the cert file $response->downloadCert('path/to/store/cert/file', $hash.'.pdf'); } catch (\Exception $e) { echo $e->getMessage(); }
请求该接口时,需要提交如下的数据:
| name | type | required | comment |
|---|---|---|---|
| meta | NotaryMeta | yes | 存证元数据 |
| notaryContent | string | no | 存证内容,一般为文件 SHA256 hash,或文本内容 |
| timestamp | string | yes | 验签时间戳(毫秒值),当前时刻,误差五分钟以内 |
| signedData | string | yes | 验签数据(meta.accountId + meta.phase + timestamp) |
该接口的验签数据明文为
meta.accountId、meta.phase、timestamp三个字段拼接后的字符串。
该接口的响应数据分为两部分:
- 响应结果数据放在 Body 中,以 JSON 字符串的形式返回。
- 请求响应成功时,会将存证证书的下载链接放在
CerturlHeader 中,使用这个 URL 就可以下载证书。证书是有有效期的,一般情况在半小时内下载最好。
解析 Body 可以得到如下的数据:
| name | type | required | comment |
|---|---|---|---|
| success | string | yes | 成功标志 |
| code | string | yes | 状态码,见Types - Code |
| errMessage | string | no | 错误信息 |
| responseData | string | no | 存证上链后的区块 hash,通过此 hash 查询存证 |
Types
Identity
Identity 数据应为个人的实名信息或企业工商登记信息,主要包含如下的内容:
| name | type | required | comment |
|---|---|---|---|
| userType | string | yes | 用户类别,可选值有:PERSON(个人)、ENTERPRISE(企业) |
| certName | string | yes | 用户名称 |
| certType | string | yes | 证件类型,userType 为 PERSON 时,值只能为IDENTITY_CARD,userType 为 ENTERPRISE,值可以为 UNIFIED_SOCIAL_CREDIT_CODE(统一社会信用代码) 和 ENTERPRISE_REGISTERED_NUMBER(企业工商注册号) |
| certNo | string | yes | 证件号 |
| mobileNo | string | no | 手机号码 |
| legalPerson | string | no | 法人姓名,userType 为 ENTERPRISE 时必须提供 |
| legalPersonId | string | no | 法人身份证,userType 为 ENTERPRISE 时必须提供 |
| agent | string | no | 经办人姓名,userType 为 ENTERPRISE 时必须提供 |
| agentId | string | no | 经办人身份证,userType 为 ENTERPRISE 时必须提供 |
| properties | string | no | 扩展属性字段 |
NotaryMeta
NotaryMeta 表示存证元数据,是进行确权时必须提供的信息,包含token、存证人/商家、存证时间、地点、存证阶段等。
| name | type | required | comment |
|---|---|---|---|
| accountId | string | yes | 账号标识 |
| token | string | yes | 事务 ID |
| phase | string | yes | 描述本条存证在存证事务中的阶段,用户可自行维护 |
| entity | Identity | no | 存证实体信息 |
| location | Location | no | 存证时设备和网络的基本信息 |
| properties | string | no | 扩展属性字段 |
Location
Location 表示进行存证时,操作设备(用户端)的网络、设备信息。
| name | type | required | comment |
|---|---|---|---|
| ip | string | yes | IP地址 |
| wifiMac | string | no | Wi-Fi 物理理地址 |
| imei | string | no | 操作 IMEI |
| imsi | string | no | 操作 IMSI |
| latitude | string | no | 纬度 |
| longitude | string | no | 经度 |
| properties | string | no | 扩展属性字段 |
Code
Code 表示 API 响应返回的状态码
| Code | HTTP Status | comment |
|---|---|---|
| OK | 200 | 请求成功 |
| ACCEPTED | 202 | 存证或信息被接受 |
| BAD_REQUEST | 400 | 请求信息不不符合要求 |
| FORBIDDEN | 403 | 无权限访问或授权失败 |
| NOT_FOUND | 404 | 资源未找到 |
| REQUEST_TIMEOUT | 408 | 请求超时 |
| CONFLICT | 409 | 核验信息与链上信息不不符 |
| INTERNAL_SERVER_ERROR | 500 | 服务器内部错误 |
bizId & subBizId
bizId 表示业务号,subBizId 表示子业务分类。
| main type | bizId | sub type | subBizId |
|---|---|---|---|
| COPYRIGHT(版权) | 1 | 视频 | VIDEO |
- | - | 音频 | AUDIO
- | - | 图像 | IMAGE
- | - | 文本 | TEXT
CONTRACT(合同) | 2 | HR 合同 | HR - | - | 租房合同 | HOUSERENTING - | - | 租赁合同 | LEASING - | - | 供应链合同 | SUPPLY_CHAIN - | - | 旅游合同 | TRAVEL - | - | 教育合同 | EDUCATION - | - | 保险合同 | INSURANCE
lin07ux/net-court 适用场景与选型建议
lin07ux/net-court 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 68 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 12 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「sdk」 「net court」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 lin07ux/net-court 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 lin07ux/net-court 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 lin07ux/net-court 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
The library provides us with a frame to build a workflow or a business process such as BPMN. Could execute tasks in parallel or delayed tasks
Multishipping support for the Mollie Payment Module for Magento 2
Mollie API client library for PHP. Mollie is a European Payment Service provider and offers international payment methods such as Mastercard, VISA, American Express and PayPal, and local payment methods such as iDEAL, Bancontact, SOFORT Banking, SEPA direct debit, Belfius Direct Net, KBC Payment But
MQTT protocol implementation
Asynchronous MQTT client built on React
The library provides us with a frame to build a workflow or a business process such as BPMN. Could execute tasks in parallel or delayed tasks
统计信息
- 总下载量: 68
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 14
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-12-14