关闭
公众号二维码

# 五、扫码功能文档

# 扫码功能场景说明

对于使用微信人脸sdk的支付设备,我们提供对外接口,可以在启动摄像头进行扫码,当微信人脸sdk扫码成功后,会通知扫码结果给商户APP,扫码成功间隔3000ms。

# 接入过程

# 扫码功能时序图

sequenceDiagram participant A as 商户APP participant B as 微信人脸sdk Note over A, B: Step 1:程序启动时初始化 A ->> B: 1. 程序启动时初始化 initWxpayface B ->> A: 返回初始化结果 Note over A, B: Step 2:启动扫码,完成扫码 A ->> B: 2. 启动扫码 startCodeScanner activate B B ->> B: 打开摄像头 B ->> B: 进入扫码模式,进行扫码检测 B ->> B: 扫码成功 B ->> A: 返回返回扫码结果(code_msg) B ->> B: 3000ms后继续进入扫码模式,进行扫码检测 Note over A, B: 执行商户侧的逻辑 A ->> B: 3. 停止扫码识别 stopCodeScanner deactivate B A ->> A: 程序退出(...) A ->> B: 4. 释放资源 releaseWxpayface

# 公共响应参数

参数 必填 类型 说明
return_code string 错误码。公共定义见公共错误码
return_msg string(128) 对错误码的描述
err_code Integer 可为空,二级错误码,公共定义见 二级错误码

# 公共错误码

参数 错误码 类型 说明
return_code SUCCESS string 接口成功
return_code ERROR string 接口失败
return_code PARAM_ERROR string 参数错误
return_code SYSTEMERROR string 接口返回错误

# 二级错误码

参数 错误码 类型 说明
err_code 271378620 Interger 刷脸服务未初始化,请调用初始化
err_code 271378621 Interger 刷脸服务初始化中,等待500ms左右重新调用init

# 接口调用流程

# 1、程序启动时初始化

# 程序启动时初始化initWxpayface

接口作用:对人脸SDK进行初始化

# 请求参数

除公共参数外,下方参数的代理设置可用于配置刷脸走商户内部代理。若不需要,则不用填写。

参数 必填 类型 说明
ip string HTTP代理IP或域名
port string HTTP代理端口, 须为数字
user string HTTP代理的用户名
passwd string HTTP代理的密码
proxy_type int 0:none;
1:HttpTunnel;
2:Socks5;
3:Http
v2.12及以上
tcp_port string TCP的代理端口,如果TCP代理与IP代理同一端口,则无需设置v2.12及以上
perform_mode string NORMAL_PRFORM : 正常性能表现;
LOW_PERFORM : 低性能表现
默认为正常性能表现 v2.13及以上
# 返回参数
参数 必填 类型 说明
return_code string 错误码。公共定义见 公共错误码
return_msg string(128) 对错误码的描述
# 请求示例
		/**
		*	初始化
		*
		*/ 	

		Map<String, String> m1 = new HashMap<>();
//      m1.put("ip", "192.168.1.1"); //若没有代理,则不需要此行
//      m1.put("port", "8888");//若没有代理,则不需要此行
//      m1.put("user", mEtnUser.getText().toString());//若没有代理,则不需要此行
//      m1.put("passwd", mEtnPassword.getText().toString());//若没有代理,则不需要此行
//      m1.put("proxy_type", 1 ); //若没有代理,则不需要此行  
//      m1.put("perform_mode", "LOW_PERFORM");//低性能表现,默认关闭美颜等

		
        WxPayFace.getInstance().initWxpayface(this, m1, new IWxPayfaceCallback() {
             @Override
             public void response(Map info) throws RemoteException {
                 
                  if (info == null) {
                      
            		  showToast("调用返回为空, 请查看日志");
            		  new RuntimeException("调用返回为空").printStackTrace();
            		  return false;
                      
                  }
                  String code = (String) info.get("return_code");
        		  String msg = (String) info.get("return_msg");
                 
                  showToast("初始化完成");
                      
        	}
             
                
        });

建议:1、您可以自定义一个Application,然后在自定义Application的onCreate()中调用initPayFace()完成人脸识别模块的初始化 2、您可以只在被调用人脸识别模块的activity的onCreate()中完成initPayFace()的调用

注意:目前我们没有在initPayFace()中做app保活的自启措施,所以当您的应用在启动过程中遇到重启/更新的问题,您必须重新调用initPayFace(),相信我们会在下一个最新的版本中对initPayFace()做进一步的完善。

# 2、启动扫码

# 启动扫码startCodeScanner

接口作用:微信人脸sdk启动摄像头进入扫码模式,扫描二维码

# 请求参数

除公共参数外,下方参数的代理设置可用于配置刷脸走商户内部代理。若不需要,则不用填写。

参数 必填 类型 说明
cb IWxPayFaceCallbackAIDL 扫码结果回调,该回掉为异步调用
# 返回参数
参数 必填 类型 说明
return_code string 错误码。公共定义见 公共错误码
err_code Integer 可为空,二级错误码,公共定义见 二级错误码
return_msg string 对错误码的描述
code_msg string 当扫码成功时返回扫码内容
# 请求示例
/**
*启动扫码
*
*/

	WxPayFace.getInstance().startCodeScanner(new IWxPayfaceCallback() {
    @Override
    public void response(Map info) throws RemoteException {
        if (info != null){
            String return_code = (String) info.get("return_code");
             Integer errcode = (Integer) info.get("err_code");
            String return_msg = (String) info.get("return_msg");
            String code_msg = (String) info.get("code_msg");
            final String resultString = "startCodeScanner, return_code : " + return_code + " return_msg : " + return_msg + " code_msg: " + code_msg;
            /**
            这里添加业务自定义的工作即可 注意该回调在异步线程
            **/
        }
    }
});

注意:

  1. 该方法可以多次调用,但是扫码结果只会回调最后一次注册的回调.
  2. 该方法注册的回调接口在stopCodeScanner之前,扫码成功都会回调。
  3. 扫码模式和刷脸互斥,一旦开始刷脸则SDK会退出扫码模式,扫码回调失效,如果需要扫码功能,需要刷脸结束后再次调用该方法启动扫码。
  4. 请在调用初始化initWxpayface成功后调用启动扫码startCodeScanner

# 3、停止扫码识别

# 停止扫码识别stopCodeScanner

接口作用:微信人脸sdk停止摄像头扫码,退出扫码模式

# 请求示例
/**
*关闭扫码
*
*/
WxPayFace.getInstance().stopCodeScanner();

注意:请在调用启动扫码startCodeScanner成功后调用停止扫码识别stopCodeScanner

# 4、释放资源

# 释放资源releaseWxpayface

接口作用:释放人脸服务,断开连接。

# 请求示例
 /**
  *释放资源
  *
  */
 WxPayFace.getInstance().releaseWxpayface(context);
上次更新: 12/9/2022, 11:08:13 AM