开发者中心

前置条件

1、添加服务器域名白名单
小程序前端接口请求有域名白名单限制,未添加白名单的域名只能在调试模式下运行。您需要在小程序上线 前需要将以下域名添加至服务器域名白名单:

// request 合法域名
sdk.253.com
eid.faceid.qq.com

2、添加业务域名白名单
在小程序配置业务域名中,将下载后的校验文件发给我们的对接人员,待对接人员完相应的操作后,将以下域名添加至业务域名白名单:

eid.faceid.qq.com 

下载地址

点击下载

安装 SDK

将小程序 SDK 文件夹放在小程序根目录下。

卸载 SDK

删除mp_ecard_sdk文件夹。

SDK调用步骤

1、初始化SDK
在 app.js 文件中引入初始化SDK的方法 initEid;
在 App.js 的 onLaunch() 中加入相应代码,在 App.json 文件里添加E证通SDK⻚面;
在 onLaunch 方法中调用 initEid;

在app.js配置如下内容

// request 合法域名 eid.faceid.qq.com
import { initEid } from './mp_ecard_sdk/main'; 
App({     
  onLaunch() {
    initEid();
  },
});

在app.json配置如下内容

{
  "pages":[
    "mp_ecard_sdk/index/index",
    "mp_ecard_sdk/protocol/service/index", 
    "mp_ecard_sdk/protocol/privacy/index", 
    "mp_ecard_sdk/protocol/userAccredit/index", 
    "mp_ecard_sdk/protocol/eid/index"
  ] 
}
  1. 调用SDK

在需要进行核身的地方引入调用SDK的方法 startEid;
在业务需要的时机触发 startEid;
接入方服务端调用获取认证Token 【getToken】 接口,传入服务所需信息获取到 token。

import { startEid } from './mp_ecard_sdk/main';
// 示例⽅法
goSDK(token) {
  startEid({
    data: {
      token,
    },
    verifyDoneCallback(res) {
      const { token, verifyDone } = res;
      console.log('收到核身完成的res:', res);
      console.log('核身的token是:', token);
      console.log('是否完成核身:', verifyDone);
    },
  });
},

startEid参数说明:

名称 类型 是否必填 描述
token String 接入方小程序从接入方服务端获取eid_token
verifyDoneCallback Function 核身完成的回调。
res 包含验证成功的 token,是否完成的布尔值标志 verifyDone。请根据res返回的结果进行业务处理判断。

获取E证通核验结果信息

用户完成人脸核身后,会以回调形式返回 eid_token 以及其他信息,接入方小程序将 eid_token 传给接入方的服务端,接入方服务端即可凭借 eid_token 参数调用获取小程序核身结果信息 【check】 接口去获取本次核身的详细信息,最后将核身结果返回给接入方小程序。

调式 SDK

请在微信开发者工具中使用手机“预览”模式进行调试,请勿使用“真机调试”。

注意事项

  1. 从eID数字身份小程序返回接入方小程序
    当接入方小程序在初始化E证通SDK的时候,E证通SDK会通过 wx.onAppShow 注册一个监听从eID数字身份 小程序跳转回接入方小程序的事件,从而根据情况触发接入方传入的核身完成的回调函数。

由于微信的机制,用户在eID数字身份小程序跳转回接入方小程序的时候,同时也会触发接入方小程序 app.js 中的 onShow 方法。为了避免冲突,如果接入方小程序在 onShow 中有执行逻辑的话,需要排除掉从eID数 字身份小程序跳转回接入方小程序这个场景。

可通过以下方法实现:

// app.js
onShow(options) {
  const { referrerInfo, scene } = options;
  /* 判断是否从eID数字身份⼩程序返回 */
  const { appId } = referrerInfo;
  if (scene === 1038 && appId === 'wx0e2cb0b052a91c92') {
    return;
  } else {
    // 执⾏接⼊⽅⼩程序原本的逻辑
  }
}