跳到正文
开灵科技 - 北京开灵科技有限公司API百宝箱

乐企数字开放平台 · 接入指引

本沙箱与税务总局「乐企数字开放平台」生产环境同构:界面、668 篇接口规范、报文字段、国密 SM4 加解密均一致。 你的系统把乐企接口地址指向本沙箱,即可完成联调,无需申请真实乐企测试资质。

三步接入(给对接开发者)

  1. 1改地址 · 把你系统里原来指向税务局的乐企接口地址,改成沙箱基址 https://openapi.kailingteck.com/sandbox/v2/invoke/{能力编码}/{接口编码}/,其余代码不用改。
  2. 2加密报文 · 用下方「安全密钥」对请求 body 做国密 SM4 加密(详见「报文加解密」)。不会写?调试台自带加解密工具 + 现成代码。
  3. 3发起调用并联调 · POST 加密后的报文,按票种/能力返回与乐企结构一致的响应;对照「接口目录」里每个接口的字段表核对即可。

接口地址

沙箱统一入口(生产同构):

POST https://openapi.kailingteck.com/sandbox/v2/invoke/{能力编码}/{接口编码}/

能力编码见「接口目录」(如 乐企监管公共能力 = 100011);接口编码见各接口文档。门户与文档中心:https://openapi.kailingteck.com/nlglweb/doc/jkgf

安全密钥(国密 SM4)

真乐企由「准入管理 → 安全密钥模块」下发;本沙箱固定一把,供联调:

0900a1b2c3d4e5f60718293a4b5c5d21

16 进制、16 字节。用于对请求报文加密、对返回的 Data 解密。

报文加解密(与乐企《报文加解密开发指引》一致)

  • 算法:国密 SM4-ECB / PKCS5Padding,密文按 base64 编码。
  • 请求:对 HTTP body 报文整体加密,header 不加密。
  • 返回:失败/异常返回原始报文;正常返回只对 Data 加密,客户端解密 Data 即可。

OpenSSL 快速验证:

# 加密
echo -n '{"nsrsh":"91..."}' | openssl enc -e -sm4-ecb -K 0900a1b2c3d4e5f60718293a4b5c5d21 --base64
# 解密
echo '<base64密文>' | openssl enc -d -sm4-ecb -K 0900a1b2c3d4e5f60718293a4b5c5d21 --base64

调试台「🔐 SM4 加解密小工具」可在线自测你的加密是否正确。

代码示例(地址/密钥已填好)

Python(gmssl)

# pip install gmssl requests
from gmssl.sm4 import CryptSM4, SM4_ENCRYPT, SM4_DECRYPT
import base64, json, requests
key = bytes.fromhex("0900a1b2c3d4e5f60718293a4b5c5d21")
c = CryptSM4(); c.set_key(key, SM4_ENCRYPT)
body = json.dumps({"nsrsh": "91XXXXXXXXXXXXXXXX"})
cipher = base64.b64encode(c.crypt_ecb(body.encode())).decode()
r = requests.post("https://openapi.kailingteck.com/sandbox/v2/invoke/100011/kpjk01/", data=cipher)
print(r.json())

Java(BouncyCastle:org.bouncycastle:bcprov-jdk15to18:1.71)

String key = "0900a1b2c3d4e5f60718293a4b5c5d21";
String cipher = Sm4Util.encryptEcbBase64(key, bodyJson); // SM4-ECB + base64
String data   = HttpClient.post("https://openapi.kailingteck.com/sandbox/v2/invoke/100011/kpjk01/", cipher);
String plain  = Sm4Util.decryptEcbBase64(key, extractData(data)); // 解密 Data

错误处理

返回沿用乐企报文壳,异常时 Response.Error 携带错误码:

{ "Response": { "RequestId": "...", "Error": { "Code": "LQ000200000003", "Message": "参数错误" } } }

常见:LQ000200000003 参数错误、LQ000200000001 操作类错误、JsonFormatErr 报文格式错误。