关闭
公众号二维码

# 软件类

# 网络环境

1. 使用刷脸支付需要什么网络环境?

请查看网络环境要求

# 接口问题

1.接口返回:"签名错误"

请按照以下几点进行排查:
1、使用签名检查工具(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1 )校验签名算法是否有误
2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)
3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)
4、确认参数的大小写,参数名与接口文档一致
5、签名原串的参数值使用原始值,不需要encode
6、接口需要使用UTF-8编码,不支持UTF8非3字节编码的字符,如+
7、openid是否对应当前调起授权的微信号
8、H5授权跳转URL排查URL格式是否正确,如是否多了空格、车牌参数是否没有进行URL编码转义(注:车牌参数跳转url中需要转义,参与sign生成的时不需要)

2.调用startCodeScanner无响应

更新至2.12版本。该版本也只有一个错误提示:摄像头打开失败。如觉得信息不够完整,请反馈给技术支持

3.face_code_type=1返回的还不是刷卡付款码:18位数字的问题

安卓:确认SDK是否更新至1.30版本以上。
win:确认SDK是否更新至1.16版本以上。

4.face_code_type=1和face_code_type=0的区别是什么?

调用getWxpayfaceCode时,face_code_type = 0,face_code 使用旧版刷脸支付接口(facepay)完成支付
调用getWxpayfaceCode时,face_code_type = 1,face_code 使用付款码支付/被扫支付接口(micropay)完成支付

5.v3接口怎么获取用户的unionId

如何查询unionid:查询unionid

6.win版本的SDK怎么旋转摄像头

Windows 1.18版本以上 摄像头旋转特性具体用法:
在调用initWxpayface的时候传入camera_rotation字段:1为+90度,2为180度,3为-90度
实际中设备商需要注意的是,可能需要把摄像头旋转的同时做一点倾斜,要把人脸正对到摄像头画面中间

7.设备出厂检测扫码授权提示“IOT服务异常,请检查IOT版本是否正确”

请确认:
1、请集成官方最新IOT版本;
2、设备是否已是出厂状态。

8.提示“未能识别出你的身份,请面向摄像头重新识别”错误码:271382020

authinfo过期导致,建议每一个小时调用一次接口获取。

# 体验优化

# 商户刷脸支付耗时优化指引

针对商户反馈调起刷脸较慢的问题,微信刷脸支付团队进行了排查,并提供以下的优化建议。

1.请先检查是否存在以下问题:

1、是否存在每次刷脸就获取authinfo?
2、商户点击支付按钮到调用sdk之间是否夹杂商户业务逻辑?

2.耗时建议优化点:

1、缓存authInfo,避免频繁获取authInfo:
(1)排查发现,外部设备存在“每次刷脸都获取authInfo,导致刷脸支付体验缓慢”的情况;
(2)authInfo具有时效性(55分钟),在有效期内,商户不需要重复请求;
(3)建议商户对authInfo进行缓存,每55分钟进行更新。
2、启动耗时优化:商户点击支付按钮,需尽快调用sdk拉起刷脸页面,避免夹杂商户业务逻辑。
3、避免每次刷脸都调用releaseWxpayface、initWxpayface,导致人脸服务每次都要初始化,引起额外耗时。

3.authInfo缓存优化指引

1、设计authInfo缓存以及更新策略,具体指引如下:

// authInfo缓存
public AuthInfoModel mCurAuthInfo = null;

// 调用API时触发更新
// 触发时机建议:间隔mCurAuthInfo.getExpiresIn()秒以内
public void updateAuthInfo(HashMap param, IAuthCallback callback){
    if(mCurAuthInfo== null || mCurAuthInfo过期){
        // 重新获取authInfo进行更新。
        requestAuthInfo(param, callback);
    }else{
        // 未过期并且有效,直接返回当前authInfo
        callback.oGetAuthInfo(mCurAuthInfo)
    }
}

// 发请求获取authInfo
public void requestAuthInfo(HashMap param, IAuthCallback callback){...}

2、详细示例代码可参考Demo中的AuthInfoManager实现,具体使用方式如下:

authInfo缓存管理类,商户可参考思路,结合自身业务实现。
AuthInfoModel - authInfo数据封装类,仅供参考,商户可自行扩展。
IAuthFetcher - authInfo获取器接口,需要商户实现authInfo获取。
IAuthCallback - authInfo回调接口,仅供参考,商户可自行扩展。

// 1. 商户实现authInfo请求实现类
AuthInfoManager.getInstance().setAuthFetcher( IAuthFetcherImpl )
// 2. 定时调用updateAuthInfo进行更新,有效期内复用缓存,无网络耗时
AuthInfoManager.getInstance().updateAuthInfo(map, new IAuthCallback(){...})

4.点击支付按钮-->调用getWxpayfaceCode之间耗时优化指引

1、使用上述缓存Authinfo优化后,从点击支付按钮调用getWxpayfaceCode接口耗时在50ms以内比较合理,如下图所示。

2、检查或整改建议:点击支付按钮-->调用getWxpayfaceCode之间主线程不做耗时业务操作,如需执行业务逻辑建议在启动刷脸之后或异步执行

5.releaseWxpayface接口使用规范

1、聚合支付情况下:每次启动刷脸都需要initWxpayface,刷脸结束后需要调用releaseWxpayface(释放摄像头供其他刷脸支付平台调用);
2、非聚合支付情况下:首次刷脸需要initWxpayface,刷脸结束后不需要调用releaseWxpayface,否则下次刷脸需要重新initWxpayface,影响启动耗时;初始化之后第二次刷脸可以直接调用getWxpayfaceCode启动刷脸(在保证authinfo有效的情况下)。

上次更新: 11/14/2022, 3:01:17 PM