# 五、掃碼功能文檔
# 掃碼功能場(chǎng)景說(shuō)明
對(duì)于使用微信人臉sdk的支付設(shè)備,我們提供對(duì)外接口,可以在啟動(dòng)攝像頭進(jìn)行掃碼,當(dāng)微信人臉sdk掃碼成功后,會(huì)通知掃碼結(jié)果給商戶APP,掃碼成功間隔3000ms。
# 接入過程
# 掃碼功能時(shí)序圖
# 公共響應(yīng)參數(shù)
參數(shù) | 必填 | 類型 | 說(shuō)明 |
---|---|---|---|
return_code | 是 | string | 錯(cuò)誤碼。公共定義見公共錯(cuò)誤碼 |
return_msg | 是 | string(128) | 對(duì)錯(cuò)誤碼的描述 |
err_code | 否 | Integer | 可為空,二級(jí)錯(cuò)誤碼,公共定義見 二級(jí)錯(cuò)誤碼 |
# 公共錯(cuò)誤碼
參數(shù) | 錯(cuò)誤碼 | 類型 | 說(shuō)明 |
---|---|---|---|
return_code | SUCCESS | string | 接口成功 |
return_code | ERROR | string | 接口失敗 |
return_code | PARAM_ERROR | string | 參數(shù)錯(cuò)誤 |
return_code | SYSTEMERROR | string | 接口返回錯(cuò)誤 |
# 二級(jí)錯(cuò)誤碼
參數(shù) | 錯(cuò)誤碼 | 類型 | 說(shuō)明 |
---|---|---|---|
err_code | 271378620 | Interger | 刷臉服務(wù)未初始化,請(qǐng)調(diào)用初始化 |
err_code | 271378621 | Interger | 刷臉服務(wù)初始化中,等待500ms左右重新調(diào)用init |
# 接口調(diào)用流程
# 1、程序啟動(dòng)時(shí)初始化
# 程序啟動(dòng)時(shí)初始化initWxpayface
接口作用:對(duì)人臉SDK進(jìn)行初始化
# 請(qǐng)求參數(shù)
除公共參數(shù)外,下方參數(shù)的代理設(shè)置可用于配置刷臉走商戶內(nèi)部代理。若不需要,則不用填寫。
參數(shù) | 必填 | 類型 | 說(shuō)明 |
---|---|---|---|
ip | 否 | string | HTTP代理IP或域名 |
port | 否 | string | HTTP代理端口, 須為數(shù)字 |
user | 否 | string | HTTP代理的用戶名 |
passwd | 否 | string | HTTP代理的密碼 |
proxy_type | 否 | int | 0:none; 1:HttpTunnel; 2:Socks5; 3:Http v2.12及以上 |
tcp_port | 否 | string | TCP的代理端口,如果TCP代理與IP代理同一端口,則無(wú)需設(shè)置v2.12及以上 |
perform_mode | 否 | string | NORMAL_PRFORM : 正常性能表現(xiàn); LOW_PERFORM : 低性能表現(xiàn) 默認(rèn)為正常性能表現(xiàn) v2.13及以上 |
# 返回參數(shù)
參數(shù) | 必填 | 類型 | 說(shuō)明 |
---|---|---|---|
return_code | 是 | string | 錯(cuò)誤碼。公共定義見 公共錯(cuò)誤碼 |
return_msg | 是 | string(128) | 對(duì)錯(cuò)誤碼的描述 |
# 請(qǐng)求示例
/**
* 初始化
*
*/
Map<String, String> m1 = new HashMap<>();
// m1.put("ip", "192.168.1.1"); //若沒有代理,則不需要此行
// m1.put("port", "8888");//若沒有代理,則不需要此行
// m1.put("user", mEtnUser.getText().toString());//若沒有代理,則不需要此行
// m1.put("passwd", mEtnPassword.getText().toString());//若沒有代理,則不需要此行
// m1.put("proxy_type", 1 ); //若沒有代理,則不需要此行
// m1.put("perform_mode", "LOW_PERFORM");//低性能表現(xiàn),默認(rèn)關(guān)閉美顏等
WxPayFace.getInstance().initWxpayface(this, m1, new IWxPayfaceCallback() {
@Override
public void response(Map info) throws RemoteException {
if (info == null) {
showToast("調(diào)用返回為空, 請(qǐng)查看日志");
new RuntimeException("調(diào)用返回為空").printStackTrace();
return false;
}
String code = (String) info.get("return_code");
String msg = (String) info.get("return_msg");
showToast("初始化完成");
}
});
建議:1、您可以自定義一個(gè)Application,然后在自定義Application的onCreate()中調(diào)用initPayFace()完成人臉識(shí)別模塊的初始化 2、您可以只在被調(diào)用人臉識(shí)別模塊的activity的onCreate()中完成initPayFace()的調(diào)用
注意:目前我們沒有在initPayFace()中做app保活的自啟措施,所以當(dāng)您的應(yīng)用在啟動(dòng)過程中遇到重啟/更新的問題,您必須重新調(diào)用initPayFace(),相信我們會(huì)在下一個(gè)最新的版本中對(duì)initPayFace()做進(jìn)一步的完善。
# 2、啟動(dòng)掃碼
# 啟動(dòng)掃碼startCodeScanner
接口作用:微信人臉sdk啟動(dòng)攝像頭進(jìn)入掃碼模式,掃描二維碼
# 請(qǐng)求參數(shù)
除公共參數(shù)外,下方參數(shù)的代理設(shè)置可用于配置刷臉走商戶內(nèi)部代理。若不需要,則不用填寫。
參數(shù) | 必填 | 類型 | 說(shuō)明 |
---|---|---|---|
cb | 是 | IWxPayFaceCallbackAIDL | 掃碼結(jié)果回調(diào),該回掉為異步調(diào)用 |
# 返回參數(shù)
參數(shù) | 必填 | 類型 | 說(shuō)明 |
---|---|---|---|
return_code | 是 | string | 錯(cuò)誤碼。公共定義見 公共錯(cuò)誤碼 |
err_code | 否 | Integer | 可為空,二級(jí)錯(cuò)誤碼,公共定義見 二級(jí)錯(cuò)誤碼 |
return_msg | 是 | string | 對(duì)錯(cuò)誤碼的描述 |
code_msg | 是 | string | 當(dāng)掃碼成功時(shí)返回掃碼內(nèi)容 |
# 請(qǐng)求示例
/**
*啟動(dòng)掃碼
*
*/
WxPayFace.getInstance().startCodeScanner(new IWxPayfaceCallback() {
@Override
public void response(Map info) throws RemoteException {
if (info != null){
String return_code = (String) info.get("return_code");
Integer errcode = (Integer) info.get("err_code");
String return_msg = (String) info.get("return_msg");
String code_msg = (String) info.get("code_msg");
final String resultString = "startCodeScanner, return_code : " + return_code + " return_msg : " + return_msg + " code_msg: " + code_msg;
/**
這里添加業(yè)務(wù)自定義的工作即可 注意該回調(diào)在異步線程
**/
}
}
});
注意:
- 該方法可以多次調(diào)用,但是掃碼結(jié)果只會(huì)回調(diào)最后一次注冊(cè)的回調(diào).
- 該方法注冊(cè)的回調(diào)接口在stopCodeScanner之前,掃碼成功都會(huì)回調(diào)。
- 掃碼模式和刷臉互斥,一旦開始刷臉則SDK會(huì)退出掃碼模式,掃碼回調(diào)失效,如果需要掃碼功能,需要刷臉結(jié)束后再次調(diào)用該方法啟動(dòng)掃碼。
- 請(qǐng)?jiān)谡{(diào)用初始化initWxpayface成功后調(diào)用啟動(dòng)掃碼startCodeScanner
# 3、停止掃碼識(shí)別
# 停止掃碼識(shí)別stopCodeScanner
接口作用:微信人臉sdk停止攝像頭掃碼,退出掃碼模式
# 請(qǐng)求示例
/**
*關(guān)閉掃碼
*
*/
WxPayFace.getInstance().stopCodeScanner();
注意:請(qǐng)?jiān)谡{(diào)用啟動(dòng)掃碼startCodeScanner成功后調(diào)用停止掃碼識(shí)別stopCodeScanner
# 4、釋放資源
# 釋放資源releaseWxpayface
接口作用:釋放人臉服務(wù),斷開連接。
# 請(qǐng)求示例
/**
*釋放資源
*
*/
WxPayFace.getInstance().releaseWxpayface(context);