首页 > 编程知识 正文

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

时间:2023-05-04 04:09:03 阅读:272036 作者:2866

随着移动支付的多元化,越来越多的人喜欢使用刷脸支付,下面就微信人脸支付的流程进行分享。
在接入微信支付时,需要做两个准备操作,第一,在项目中导入由微信提供的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_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() { @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); } } });

方法入参:

参数必填类型说明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_authinfoask_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是stringopenidsub_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() { @Override public void response(Map info) throws RemoteException { Logger.i("调用刷脸方法关闭刷脸成功,刷脸APP结束"); } });

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

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

7.释放资源 releaseWxpayface

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

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

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。