支付宝蜻蜓刷脸支付——Android

支付宝蜻蜓刷脸支付——Android

使用设备:商米 D2

需要用到 支付宝刷脸支付 SDK

  1. 将下载的 支付宝刷脸支付 SDK放入工程 libs 下,并添加该依赖

  2. 商米设备获取设备 SN 编号

     public String getDeviceSN(){
            String MachineSN = null;
            try {
                Class c = Class.forName("android.os.SystemProperties");
                Method get = c.getMethod("get", String.class);
                //获取SN码
                MachineSN = (String) get.invoke(c, "ro.serialno");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return MachineSN;
        }
    
  3. 调用自己后台接口,获取初始化 facepay 需要的 Ali_isv_pid ,需要把第二步中获取到的设备编号传给后台

  4. 第三步从后台获取数据成功后,调用 SDK 的 zolozGetMetaInfo(Map, ZolozCallback) 获取后台需要的 metaInfo

    Map<String, String> map = new HashMap<>();
    map.put("merchantId", 第三步中获取到的 Ali_isv_pid );
    Zoloz.getInstance(context)
                    .zolozGetMetaInfo(map, new ZolozCallback() {
                        @Override
                        public void response(Map smileToPayResponse) {
                            if (smileToPayResponse == null) {
                                ToastUtil.otherThreadToast(Constants.TXT_OTHER);
                                return;
                            }
                            Log.d("zolozGetMetaInfo:  " + smileToPayResponse.toString());
                            String code = (String) smileToPayResponse.get("code");
                            String metaInfo = (String) smileToPayResponse.get("metainfo");
    
                            if (!CODE_SUCCESS.equalsIgnoreCase(code) || metaInfo == null) {
                                //获取 metainfo 失败
                                return;
                            }
                            //获取metainfo成功
                    });
    
  5. 第四步获取到的 metainfo (json 字符串)传给后台,通过后台返回 ZimId 、ZimInitClientData 调起人脸识别

     Map<String, String> protocalMap = new HashMap<>();
            protocalMap.put("zim.init.resp", initFacePayRsp.getZimInitClientData());
            protocalMap.put("smile_mode", "1");//smile_mode 可选,用于指定选择刷脸模式,值为int类型,0: 主屏幕显示(默认值);1:双面屏机具,副屏幕显示
            Zoloz.getInstance(context).zolozVerify(initFacePayRsp.getZimId(), protocalMap, new ZolozCallback() {
                @Override
                public void response(Map smileToPayResponse) {
                    EventBus.getDefault().post(EnumFacePayEvent.FACE_PAY_CLOSE);
                    if (smileToPayResponse == null) {
                        ToastUtil.otherThreadToast(Constants.TXT_OTHER);
                        return;
                    }
                    String code = (String) smileToPayResponse.get("code");
                    String fToken = (String) smileToPayResponse.get("ftoken");
                    String subCode = (String) smileToPayResponse.get("subCode");
                    String msg = (String) smileToPayResponse.get("message");
    
                    Log.d("刷脸认证结果: " + smileToPayResponse.toString());
                    //刷脸认证成功后根据后台相关接口处理支付逻辑
                }
            });
    

    注意: SDK 回调中不是 UI 线程,切勿操作 UI 相关逻辑

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容