支付宝蜻蜓刷脸支付——Android
使用设备:商米 D2
需要用到 支付宝刷脸支付 SDK
-
将下载的 支付宝刷脸支付 SDK放入工程 libs 下,并添加该依赖
-
商米设备获取设备 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; }
-
调用自己后台接口,获取初始化 facepay 需要的 Ali_isv_pid ,需要把第二步中获取到的设备编号传给后台
-
第三步从后台获取数据成功后,调用 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成功 });
-
第四步获取到的 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 相关逻辑
来源:CSDN
作者:无人区哎
链接:https://blog.csdn.net/qq_40713642/article/details/103490920