Android app接入微信人脸支付详解

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

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

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

2.获取数据 getWxpayfaceRawdata

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

返回参数:

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

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

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

Logger.i("开始调用微信刷脸 app ");
WxPayFace.getInstance().getWxpayfaceCode(params, new IWxPayfaceCallback() {
          @Override
          public 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);
           	}
           }
         });

方法入参:

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

返回参数:

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

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

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

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

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

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

参数必填类型说明
appidstring公众号
mch_idstring商户号
store_idstring门店编号
authinfostring调用凭证。获取方式参见: get_wxpayface_authinfo
payresultstring支付结果。可取值:SUCCESS: 支付成功ERROR: 支付失败

7.释放资源 releaseWxpayface

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

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

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

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 95
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 95
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值