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

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

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

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

地址就不一样,略坑.

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

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

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

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

点拉胯

private void initWeChatFace() {WxPayFace.getInstance().initWxpayface(instance, new IWxPayfaceCallback() {@Overridepublic void response(Map info) throws RemoteException {if (!isSuccessInfo(info)) {return;}Logger.d("微信人脸服务","初始化完成");}});}

2.获取数据getWxpayfaceRawdata

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

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

WxPayFace.getInstance().getWxpayfaceRawdata(new IWxPayfaceCallback() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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交流一下,目前为止我们的设备运行还比较流畅。

微信人脸SDK集成踩坑相关推荐

  1. OPPO系统推送SDK集成踩坑思路

    目前OPPO的推送SDK回调里是没法监听通知栏点击事件的,只能通过预设intent action之类的进行页面跳转.由于页面比较多,如果全部放在后台进行预设会比较麻烦. 我们的思路是通过一个空的路由a ...

  2. 微信vue路由跳转兼容_Vue微信公众号开发踩坑记录

    需求 微信授权登录(基于公众号的登录方案) 接入JS-SDK实现图片上传,分享等功能 现状及难点 采用的Vue框架,前后端分离模式(vue工程仅作为客户端),用户通过域名访问的是客户端,但是微信授权中 ...

  3. vue在微信里面的兼容问题_详解Vue微信公众号开发踩坑全记录

    本文介绍了Vue微信公众号开发踩坑全记录,分享给大家,也给自己留个笔记. 需求 微信授权登录(基于公众号的登录方案) 接入JS-SDK实现图片上传,分享等功能 现状及难点 采用的Vue框架,前后端分 ...

  4. 微信H5支付实战踩坑

    准备 需求 需求就是最简单的对接微信H5支付接口 方案心路历程 之前直接用http对接过,不过这次想用官方提供的SDK 一方面SDK提供的接口比较完整,二方面感觉应该使用别人辛苦写下来的封装 百度了一 ...

  5. 微信小程序开发踩坑日记

    2017.12.29  踩坑记录 引用图片名称不要使用中文,尽量使用中文命名,IDE中图片显示无异样,手机上图片可能出现不显示的情况. 2018.1.5  踩坑记录 微信小程序设置元素满屏,横向直接w ...

  6. 微信公众号服务器配置但没有回调,微信公众号 “服务器配置” 踩坑记

    前言 今天工作的时候,碰到一个极其无语的关于微信公众号的坑,为此,我语言攻击了腾讯的机器人客服.然而并没有卵用...万万没想到,我还是解决了这个问题,并记录下踩坑经历,希望能帮到一些朋友吧. 背景 今 ...

  7. 微信小程序入门踩坑记(妥妥的干货,新手快快看过来)

    初次上手微信小程序,各种踩坑各种百度,草草扫过官网的文字,呃....表示记不住不想看,然后看了一本入门基础, 诺,就这本啦(链接:https://pan.baidu.com/s/15hKlDNpowU ...

  8. 微信退款 java工具类,微信支付中退款踩坑记录

    首先附上微信支付的开发者文档 其实这里所说的踩坑记录,无非就是微信在开发者文档上的写不太明确,也没有比较官方的demo,在此列出一个可行的demo,供大家下载使用. 主要问题就是在这几步解密上 微信的 ...

  9. 微信小程序开发踩坑合集

    微信搜索:凯小白学编程   回复 小程序   领取1000套小程序源码 本文分享一下开发小程序是遇到的一些问题.展示了曾经开发过的两个小程序中遇到的坑 下一篇文章预告:<Maven入门> ...

  10. 微信Mars-xlog日志加密踩坑指南

    基础 - Xlog 加密使用指引 - <Mars 开发文档> - 书栈网 · BookStack 一.准备环境--Python2 准备Python2的环境,下面的一切操作都要在该环境下进行 ...

最新文章

  1. 闲话高并发的那些神话,看京东架构师如何把它拉下神坛
  2. Kubernetes构建过程分析
  3. Unity3D如何有效地组织代码?(转)
  4. Jar包转成Dll的方式(带嵌套的jar也能做) (转)
  5. 使用IHttpHandler做权限控制[ASP.NET | IHttpHandler | AjaxPro | UserHostName]
  6. mysql++编程规范_建议收藏 - 专业的MySQL开发规范
  7. python 学习之路开始了
  8. 利用PHP的VLD查询OPCODE
  9. [C] 跨平台使用Intrinsic函数范例2——使用SSE2、AVX指令集 处理 双精度浮点数组求和...
  10. STM32软件IIC速度
  11. 什么是驻点和拐点_临界点、驻点、拐点的定义是什么?
  12. Python练习实战股票网页数据
  13. 2020移动apn接入点哪个快_为什么别人的4g网总比你快? 手机这个设置没开启, 难怪网络...
  14. 深度学习02-神经网络(MLP多层感知器)
  15. Nodejs卸载、安装及环境配置
  16. python中plotly subplot的用法_matplotlib 中的subplot的用法
  17. 一张小名片引发的地球大危机
  18. 写不好 SQL? 送你一个大招
  19. 2022 水花走向哪里?中概 / 恒生 / 投顾 / 中证 500 / 传媒?
  20. UUID全局唯一标识符

热门文章

  1. tf 设置多显卡_海美迪H7四代解码4k hdr局域网教程,用TF卡双启动libreELEC成功
  2. C++ MFC控件重影-编辑框重影
  3. 未来教育计算机二级答案,未来教育计算机二级操作题答案.docx
  4. Matlab2017b安装教程及破解失败方法
  5. numpy返回上下三角矩阵
  6. Hi3519AV100 MPP部署
  7. 如何更电计算机共享名称,电脑网络共享设置
  8. 解决IE浏览器无法显示VUE项目的方法
  9. mysql表设计ppt_PPT表格太丑?这3个设计细节,你一定要收藏!
  10. 学习嵌入式单片机需要学习哪些内容?