随着移动支付的多元化,越来越多的人喜欢使用刷脸支付,下面就微信人脸支付的流程进行分享。
在接入微信支付时,需要做两个准备操作,第一,在项目中导入由微信提供的aar文件,第二,在运行你自己的app环境中安装微信人脸支付app
微信人脸支付调用流程如下:
1.程序启动时初始化 initWxpayface

 //服务调用WxPayFace.getInstance().initWxpayface(MyApplication.getContext(), new IWxPayfaceCallback() {@Overridepublic void response(Map info) throws RemoteException {//inti结果}});

建议在app启动时调用这个方法,启动以后不再调用,并且context值传入Application的context

2.获取数据 getWxpayfaceRawdata

 WxPayFace.getInstance().getWxpayfaceRawdata(new IWxPayfaceCallback() {@Overridepublic void response(Map info) throws RemoteException {Logger.i("获取 rawdata成功:response | getWxpayfaceRawdata " + info.get("rawdata"));//此处获取成功rawdata成功以后需要保存作为下一步请求的入参String rawdata = info.get("rawdata").toString();}});

返回参数:

参数 必填 类型 说明
return_code string 错误码。公共定义见 公共错误码
return_msg string(128) 对错误码的描述
rawdata string(2048) 初始化数据。用于接口调用

3.获取人脸SDK调用凭证
这一步需要请求后台,由后台去请求微信支付后台调用get_wxpayface_authinfo 去获取authinfo,获取成功保存进行下一步。

4.进行人脸识别 getWxpayfaceCode(authinfo,callback)

Logger.i("开始调用微信刷脸 app ");
WxPayFace.getInstance().getWxpayfaceCode(params, new IWxPayfaceCallback() {@Overridepublic void response(Map info) throws RemoteException {Logger.i("微信刷脸 app 调用返回数据解析成功");String faceCode = info.get("face_code").toString();String openId = info.get("openid").toString();} else if (TextUtils.equals(code, WxfacePayCommonCode.VAL_RSP_PARAMS_USER_CANCEL)) {Logger.i("用户取消");} else if (TextUtils.equals(code, WxfacePayCommonCode.VAL_RSP_PARAMS_SCAN_PAYMENT)) {Logger.i("扫码支付");} else {Logger.i("其他未知类型code,code=" + code);}}});

方法入参:

参数 必填 类型 说明
appid string 公众号
mch_id string 商户号
sub_appid string(32) 子商户公众账号ID(非服务商模式不填)
sub_mch_id string(32) 子商户号(非服务商模式不填)
store_id string 门店编号
telephone string 用户手机号。用于传递会员手机,此手机将作为默认值, 填写到手机输入栏。
out_trade_no string 商户订单号。FACEPAY时必填
total_fee string 订单金额(数字), 单位分. FACEPAY时必填
face_authtype string 可选值:FACEPAY: 人脸凭证,常用于人脸支付
authinfo string 调用凭证。获取方式参见: get_wxpayface_authinfo
ask_face_permit string 支付成功页是否需要展示人脸识别授权项。展示:1。不展示:0。人脸识别授权项:用户授权后用于1:N识别,可返回用户信息openid,建议商户有自己会员系统时,填1。
ask_ret_page string 是否展示微信支付成功页,可选值:“0”,不展示;“1”,展示

返回参数:

参数 必填 类型 说明
return_code string 错误码。公共定义见 公共错误码
return_msg string(128) 对错误码的描述
face_code string 人脸凭证, 用于刷脸支付。
openid string openid
sub_openid string 子商户号下的openid(服务商模式)
telephone_used int 获取的face_code,是否使用了请求参数中的telephone。可取值:0:表示没有使用telephone;1: 表示使用了telephone;
underage_state int 用户年年龄信息,使⽤用需要联系微信⽀支付开通权限 可取值: 0:状态不明确,或权限未开通; 1: 成年年人; 2: 未成年人

调用完这个方法以后会调用起微信人脸支付app,进行刷脸,如果刷脸成功,则正确返回信息,刷脸支付app调用用起来以后界面入下图:

5.发起支付
在拿到faceCode 和openId以后发向后台发起支付,由后台请求微信支付后台APIfacepay(face_code, orderinfo)接口发起支付。

6.更新支付结果updateWxpayfacePayResult(callback)

WxPayFace.getInstance().updateWxpayfacePayResult(bean, new IWxPayfaceCallback() {@Overridepublic void response(Map info) throws RemoteException {Logger.i("调用刷脸方法关闭刷脸成功,刷脸APP结束");}});

调用完这个方法会退出微信人脸支付app,返回自己的app;
方法入参:

参数 必填 类型 说明
appid string 公众号
mch_id string 商户号
store_id string 门店编号
authinfo string 调用凭证。获取方式参见: get_wxpayface_authinfo
payresult string 支付结果。可取值:SUCCESS: 支付成功ERROR: 支付失败

7.释放资源 releaseWxpayface

 WxPayFace.getInstance().releaseWxpayface(MyApplication.getContext());

释放资源 releaseWxpayface,只需要在程序退出时调用;

总结:整个支付流程中,在调用人脸app识别之前,需要先获取到authinfo,然后调用人脸支付完成人脸识别,拿到openid和facecode,然后用openid和facecode向后台发起微信支付请求,支付成功以后再回调微信人脸app支付结果,关闭微信人脸app,从而完成整个支付流程。

Android app接入微信人脸支付详解相关推荐

  1. Android App优化之ANR详解

    引言 背景:Android App优化, 要怎么做? Android App优化之性能分析工具 Android App优化之提升你的App启动速度之理论基础 Android App优化之提升你的App ...

  2. Android APP:Preference使用详解和实例(附源码)

    Android APP:Preference使用详解和实例 一.Preference 是Android app中重要的控件之一,Settings 模块大部分都是通过Preference 实现的,这里将 ...

  3. Android App 优化之 ANR 详解

    为了便于阅读, 应邀将Android App性能优化系列, 转移到掘金原创上来. 掘金的新出的"收藏集"功能可以用来做系列文集了. 今天先来聊聊ANR. 1, 你碰到ANR了吗 在 ...

  4. Android中字体使用的单位是,Android移动APP设计字体规范详解

    之前25学堂专门分享和讨论了ios上面的移动APP设计字体规范和设计字体运用. 如: 等等优秀的移动APP字体博文.看完之后,大家肯定有所收获!而今天25学堂阅读了设计达人上面的一篇关于Android ...

  5. app提现到微信开通流程图_微信支付商户平台app支付开通方法详解

    一.创建移动应用 1.创建移动应用之前,必须得有微信开放平台的认证账号,如无可查阅"网创商盟"历史消息进行申请认证操作. 2.登录微信开放平台创建移动应用,按照页面填写一下信息,包 ...

  6. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

    . 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

  7. android+发邮件,Android发送邮件的方法实例详解

    Android发送邮件的方法实例详解 时间:2021-05-20 本文实例讲述了Android发送邮件的方法.分享给大家供大家参考,具体如下: 在android手机中实现发送邮件的功能也是不可缺少的. ...

  8. Android Loader 异步加载详解二:探寻Loader内部机制

    Android Loader 异步加载详解二:探寻Loader内部机制 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/7025991 ...

  9. 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高...

    第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...

  10. Android之AsyncTask异步任务详解总结

    Android 多线程----AsyncTask异步任务详解 [正文] 本文将讲解一下Android的多线程的知识,以及如何通过AsyncTask机制来实现线程之间的通信. 一.Android当中的多 ...

最新文章

  1. 用 Python 画自画像?看完我笑了
  2. mysql 绕过空格_SQL注入篇-绕过方法
  3. android或java timer声明
  4. 我的选车经历--学习比经验更重要
  5. (转)!注意:PreTranslateMessage弹出框出错
  6. 这五个超强PPT技巧,从小白到大神的距离只差这一点!
  7. Windows IP测试小脚本
  8. MS Server中varchar与nvarchar的区别
  9. 支持向量机(SVM)非线性数据切割
  10. 对比赛评分进行现场管理及展示的专业系统_评委计分系统-双屏标准版_主要操作部分图片演示
  11. 组合数学专项练习笔记
  12. sumifs两个求和列如何计算_SUMIFS多条件求和,基本使用方法讲解
  13. springboot 图片大小压缩
  14. java 获取明天12点日期
  15. 织梦DedeCMS使用教程:留言簿模块
  16. 网络准入控制学习——Chap1
  17. 基于IE内核的一个WEB打印实现方案
  18. 于博士信号完整性揭秘知识点总结
  19. 禁止“无法验证发行者,确定要运行此软件吗”提示
  20. Html5 学习笔记 【PC固定布局】 实战7 机票预订页面

热门文章

  1. unity点击按钮跳转页面
  2. 通过cmd进行文件格式的转换
  3. 【软件工程】详细设计说明书
  4. 怎样png转jpg还可以保持原有大小?
  5. 微信换头像小程序实现原理及源码
  6. 黑马程序员—-C语言入门十重奏之十renascence
  7. 北大开源ECCV2018深度去雨算法:RESCAN
  8. 从10万到百亿营收的背后 | 同程旅游CTO V课堂实录
  9. Math.round(-1.5) 等于多少
  10. 用最火的python实现最常用、最靓、最实用图表~~