当前位置:首页 » 《资源分享》 » 正文

微信人脸SDK集成踩坑_文科程序猿

8 人参与  2021年10月01日 17:43  分类 : 《资源分享》  评论

点击全文阅读


       前一段跟收银系统打了一波交道,因为用到了微信人脸支付,在对接的过程中也踩了一波小

坑,现在项目搞完运行了,特地写个博客记录一下。

       先说开发文档链接的事情,微信这个文档链接容易让人混淆,先贴出目前正确的文档地址 

SDK模式 | 微信刷脸支付,建议直接看这个跑demo,然后跟后台统一,我这对接的时候跟后台看的

地址就不一样,略坑.

       接下来就是对接了,新的文档简单明了,看设备是走SDK模式,还是青蛙定制的设备,一般来

说都是SDK模式,开放程度高。下面来说一下我们的SDK模式。

       微信的文档写的很是清晰,按照步骤一步一步来就OK了,我们来看一下步骤

      1.程序启动时初始化这个建议在application中做,在activity中搞的话我测试过,有

点拉胯

private void initWeChatFace() {

        WxPayFace.getInstance().initWxpayface(instance, new IWxPayfaceCallback() {
            @Override
            public void response(Map info) throws RemoteException {

                if (!isSuccessInfo(info)) {
                    return;
                }
                Logger.d("微信人脸服务","初始化完成");
            }

        });
    }

   2.获取数据getWxpayfaceRawdata

      这个是获取本地数据,目的是为了后面进行调用接口,加密等使用,前提是本地正确按照微信

的apk哈,因为这种模式,就是调用微信自己apk完成人脸支付操作的,安装包就在首页下载。

WxPayFace.getInstance().getWxpayfaceRawdata(new IWxPayfaceCallback() {
            @Override
            public void response(final Map info) throws RemoteException {
                if (!isSuccessInfo(info)) {
                    return;
                }

                final String rawdata = info.get("rawdata") + "";

                Logger.d("rawdata", rawdata);

                String returnCode = (String) info.get(RETURN_CODE);
                String returnMsg = (String) info.get(RETURN_MSG);

                Logger.d("人脸数据", returnCode + "-----" + returnMsg);

                try {
//                    HashMap<String, Object> map = new HashMap<>();
//
//                    map.put("rawdata", rawdata);
//                            map.put("mch_id", "1900007251");
//                            map.put("mch_id", "1900007231");

                    getAuthInfo(rawdata);

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

 3.获取调用凭证

       这一步比较重要,需要后台配合,安装微信文档上的参数配置,一个都不能少,因为这个是涉

及到企业信息,这个关键点在后台,请提醒后台认证看文档配置参数毕竟都是机密信息

 4.进行人脸识别

       第三步调用凭证如果正常通过的话,客户端就会拿到文档上一些机密的参数,通过这些参数,

去拉起人脸识别,请注意,到这一步是识别,也就是说到这一步可以调起摄像头了,

WxPayFace.getInstance().getWxpayfaceCode(params, new IWxPayfaceCallback() {
            @Override
            public void response(final 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");
                String facecode = (String) info.get("face_code");
                String openid = (String) info.get("openid");
                String subOpenid = (String) info.get("sub_openid");
                  ....

            }
         }, new IWxPayfaceCallback() {
            @Override
            public void response(Map info) throws RemoteException {
                if (info == null) {
                    new RuntimeException("调用返回为空").printStackTrace();
                    return;
                }
                String code = (String) info.get("return_code"); // 错误码
                String msg = (String) info.get("return_msg"); // 错误码描述
                if (code == null || !code.equals("SUCCESS")) {
                    new RuntimeException("调用返回非成功信息,return_msg:" + msg + "   ").printStackTrace();
                    return ;
                }
                /*
                在这里处理您自己的业务逻辑:
                执行到这里说明用户已经确认支付结果且成功了,此时刷脸支付界面关闭,您可以在这里选择跳转到其它界面
                 */
            }
        });

     如果 成功的话,就会拉起微信人脸,点亮摄像头。这一步容易出现的问题就是

     1.传参一定要注意,要注意,要注意(大部分都是因为这个)


     2.摄像头白屏或者调用失败,可以用出厂工具去测试摄像头,也有可能是设备本身的问题

       (设备没有经过微信认证,大概率会出现白屏)

5.发起订单支付

       这个也是后台接口,客户端将上一步识别成功的人脸信息facecode和其它一些后台所需要的信

息,通过接口交给后台,后台向微信下单,发起扣款,然后跟咱们就没得关系了,是不是有点小舒

服,哈哈,因为微信的apk页面逻辑帮我们搞完了,咱们只要传给后台就OK了,

我们只传了face_code和订单号,做个参照哈哈,我们后台还是非常给力的。

 6.支付结果处理

      微信新版的文档取消了接口回调的,所以又给我们省了一步操作,我们只要跟后台异步拿结

果 就OK了,然后跟根据自己的项目逻辑去做下面的逻辑处理,另外新版的SDK版本里面,还增加

了语音和打断支付的环节,但是没有更新,不知道为啥日志写的那么新,堪称迷之操作。如果哪位

小伙伴对接了,能用最新的就用最新的,因为旧版的安装包实在是太大了。

7.总结

      总的来说,对接流程还是比较清晰明了,只是记得要认真看文档,因为参数比较多,客户端或

者后台任意一个地方出错,就会导致流程出错,因为一些涉密信息所以不太方便贴的太多,有对接

的小伙伴可以加Q940917911交流一下,目前为止我们的设备运行还比较流畅。


点击全文阅读


本文链接:http://zhangshiyu.com/post/29169.html

后台  调用  文档  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1