支付宝蜻蜓刷脸支付——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 相关逻辑

以下是一个简单的示例代码,演示了如何在安卓应用中使用支付宝支付功能: 1. 集成支付宝SDK: 在您的安卓应用中,您需要集成支付宝SDK。在项目的build.gradle文件中添加如下代码,引入支付宝SDK: ``` dependencies { // 支付宝SDK implementation 'com.alipay.sdk:alipay-sdk-java:4.9.0.ALL' } ``` 2. 获取用户授权: 您需要在安卓应用中调用支付宝的授权接口,获取用户授权,允许您的应用使用支付宝支付功能。示例代码如下: ``` // 创建授权请求参数对象 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", appId, privateKey, "json", "UTF-8", alipayPublicKey, "RSA2"); AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); request.setGrantType("authorization_code"); request.setCode(authCode); // 调用授权接口,获取授权令牌 AlipaySystemOauthTokenResponse response = alipayClient.execute(request); String accessToken = response.getAccessToken(); ``` 3. 调用支付接口: 在用户授权后,您需要调用支付宝支付接口。示例代码如下: ``` // 创建支付请求参数对象 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", appId, privateKey, "json", "UTF-8", alipayPublicKey, "RSA2"); AlipayTradePayRequest request = new AlipayTradePayRequest(); request.setNotifyUrl(notifyUrl); // 设置支付参数 JSONObject bizContent = new JSONObject(); bizContent.put("out_trade_no", outTradeNo); bizContent.put("scene", "security_code"); bizContent.put("auth_code", authCode); bizContent.put("subject", subject); bizContent.put("total_amount", totalAmount); request.setBizContent(bizContent.toJSONString()); // 调用支付接口 AlipayTradePayResponse response = alipayClient.execute(request, accessToken); if (response.isSuccess()) { // 支付成功,处理支付结果 } else { // 支付失败,处理支付结果 } ``` 需要注意的是,上述代码仅为示例代码,实际使用时您需要根据您的业务需求和支付宝提供的接口文档进行相应的修改。同时,为了保障用户的隐私安全,您需要遵守支付宝的相关规定,合法合规地使用支付宝支付功能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值