中宣部实名认证
先吐槽
这个文档,绝对不是人看的,稀烂
然后给代码吧,复制下面代码就可以跑接口了
注意:
- 下面为正式环境代码,测试环境下需要在请求链接后面拼接测试码
- 测试环境下,只支持原文档中提供的「预置数据」“某一一”等进行测试,不要用真实身份证和姓名测试
- 测试环境可以没有content-Type,正式环境需要有
- 注意行为上报里面的参数,要匹配对应的测试接口
- 需要每个接口都测试到,才能跑正式环境
check接口
const urllib = require('urllib'); var crypto = require("crypto"); const request = require("request"); let SHA256 = require("crypto-js/sha256"); const fcmconfig = require("./config");ai = "xd_user_" + Date.now();console.log("请保留参数 ai: " + ai);//Requestvar contentType = 'application/json; charset=utf-8';var headers = {//'Content-Type': contentType,'appId': config.appid,'bizId': bid,'timestamps': Date.now()}var body = {idNum: idNum,name: name,ai: ai}var encbody = aesGcmEncrypt(JSON.stringify(body), config.key);var encbodystr = '{"data":"' + encbody + '"}';headers['sign'] = create_sign(headers, '', encbodystr, config.key);var reqData = {method: "POST",headers: headers,data: encbodystr}urllib.request("https://api.wlc.nppa.gov.cn/idcard/authentication/check", reqData,(err, data, response) => {console.log("返回数据:" + data.toString());});function aesGcmEncrypt(message, key) {console.log("请求参数:" + message);// AES 128 GCM Modelet iv = crypto.randomBytes(12);const cipher = crypto.createCipheriv('aes-128-gcm', Buffer.from(key, "hex"), iv);cipher.setAutoPadding(true);// encrypt the given textconst encrypted = Buffer.concat([cipher.update(message, 'utf8'), cipher.final()]);// extract the auth tagconst tag = cipher.getAuthTag();// generate outputreturn Buffer.concat([iv, encrypted, tag]).toString('base64'); }function sortObjectToString(data) {let sdic = Object.keys(data).sort();let str = '';for (let ki in sdic) {let k = sdic[ki];str += k + data[k];}return str; }function create_sign(headers, query, body, key) {let data = Object.assign(headers, query);return SHA256(key + sortObjectToString(data, true) + body).toString(); }需要其他接口的话,留言邮箱啊,我回复邮件,私聊无法发代码文件
总结
- 上一篇: ESXI 6.7全面系统教程~esxi安
- 下一篇: 2023中国西部(西安)第六届城乡环卫新