中宣部实名认证

先吐槽
这个文档,绝对不是人看的,稀烂

然后给代码吧,复制下面代码就可以跑接口了

注意:

  • 下面为正式环境代码,测试环境下需要在请求链接后面拼接测试码
  • 测试环境下,只支持原文档中提供的「预置数据」“某一一”等进行测试,不要用真实身份证和姓名测试
  • 测试环境可以没有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);
  //Request
  var 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 Mode
  let iv = crypto.randomBytes(12);
  const cipher = crypto.createCipheriv('aes-128-gcm', Buffer.from(key, "hex"), iv);
  cipher.setAutoPadding(true);
  // encrypt the given text

  const encrypted = Buffer.concat([cipher.update(message, 'utf8'), cipher.final()]);

  // extract the auth tag
  const tag = cipher.getAuthTag();
  // generate output
  return 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();
}

需要其他接口的话,留言邮箱啊,我回复邮件,私聊无法发代码文件

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 55
    评论
评论 55
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值