Android微信刷臉識別的坑

項目里集成微信aar包虫啥,將微信刷臉的app安裝到有微信專門攝像頭的設(shè)備上拾枣。

微信人臉識別

1随橘,初始化操作:(先在application類中初始化)

private void initWxFacePay() {

WxPayFace.getInstance().initWxpayface(this, new IWxPayfaceCallback() {

@Override

? ? ? ? public void response(Map info)throws RemoteException {

if (!WxCallBack.successInfo(getApplicationContext(), info)) {

ToastUtil.show(getApplicationContext(), "微信支付初始化失敗");

? ? ? ? ? ? }

}

});

}


2.獲取rawData數(shù)據(jù)跷究。

private void getWxPayRawData() {

WxPayFace.getInstance().getWxpayfaceRawdata(new IWxPayfaceCallback() {

@Override

? ? ? ? public void response(Map info)throws RemoteException {

if (!WxCallBack.successInfo(mContext, info)) {

toast("getWxPayRawData()調(diào)用失敗");

return;

? ? ? ? ? ? }

String rawData = (String) info.get(RETURN_RAWDATA);

? ? ? ? ? ? if (rawData ==null) {

toast("rawData為空");

return;

? ? ? ? ? ? }

mPresenter.getAuthInfo(devoceId, rawData, storeId, storeName);

? ? ? ? }

});

}


3.拿到rawData數(shù)據(jù)與公司后端進行交互 拿到authorInfo數(shù)據(jù)洛退,(authorInfo很關(guān)鍵)

后端寫個接口,安卓這邊把相應(yīng)的數(shù)據(jù)傳給他夹抗。

4.人臉識別?

private void doFaceRecognize(String type) {

HashMap params2 =new HashMap();

? ? params2.put(FACE_AUTHTYPE, type);

? ? params2.put(APPID, appId);

? ? params2.put(MCH_ID, machId);

? ? params2.put(STORE_ID, storeId);

? ? params2.put(AUTHINFO, mAuthInfo);

? ? WxPayFace.getInstance().getWxpayfaceUserInfo(params2, new IWxPayfaceCallback() {

@Override

? ? ? ? public void response(final Map info)throws RemoteException {

if (!WxCallBack.successInfo(mContext, info)) {

toast("getWxpayfaceUserInfo()調(diào)用失敗");

return;

? ? ? ? ? ? }

final String openid = (String) info.get(OPENID);

? ? ? ? ? ? final String nickname = (String) info.get(NICKNAME);

? ? ? ? ? ? final String faceCode = (String) info.get(FACE_CODE);

? ? ? ? ? ? if (!TextUtils.isEmpty(openid)) {

runOnUiThread(new Runnable() {

@Override

? ? ? ? ? ? ? ? ? ? public void run() {

Intent intent =new Intent(mContext, X5WebActivity.class);

? ? ? ? ? ? ? ? ? ? ? ? intent.putExtra("openid", openid);

? ? ? ? ? ? ? ? ? ? ? ? intent.putExtra("authInfo", mAuthInfo);

? ? ? ? ? ? ? ? ? ? ? ? startActivity(intent);

? ? ? ? ? ? ? ? ? ? ? ? stopWxpayface();

? ? ? ? ? ? ? ? ? ? }

});

? ? ? ? ? ? }

}

});

}

調(diào)用微信的getWxpayfaceUserInfo方法會自動打開微信app的攝像頭绳慎,有兩種模式FACEID-ONCE和FACEID-LOOP。ONCE模式是立馬調(diào)起攝像頭漠烧,LOOP模式是微信攝像頭在后臺進行活體檢測杏愤,當(dāng)有人在攝像頭前,他檢測到以后才會調(diào)起攝像頭已脓。

識別成功后可以拿到faceCode和openId

刷臉支付

1.前面幾步與人臉識別前面相同 先初始化珊楼,再獲取rawData,再拿authInfo度液,

2.進行支付操作

private void doPay() {

HashMap params =new HashMap();

? ? params.put(APPID, appId);

? ? params.put(MCH_ID, machId);

? ? params.put(STORE_ID, storeId);

? ? params.put(OUT_TRADE_NO, payNum ="zrlcs" + (System.currentTimeMillis() /100000));

? ? params.put(TOTAL_FEE, fee);

? ? params.put(FACE_AUTHTYPE, facePay);

? ? params.put(ASK_FACE_PERMIT, facePermit);

? ? params.put(AUTHINFO, mAuthInfo);

? ? params.put(ASK_RET_PAGE, retPage);

? ? params.put(FACTORY, true);

? ? WxPayFace.getInstance().getWxpayfaceCode(params, new IWxPayfaceCallback() {

@Override

? ? ? ? public void response(Map info)throws RemoteException {

if (!WxCallBack.successInfo(mContext, info)) {

toastError(getResources().getString(R.string.pay_error));

return;

? ? ? ? ? ? }

mFaceCode = (String) info.get(FACE_CODE);

? ? ? ? ? ? mPresenter.getBackendData(mOpenId, mFaceCode, payNum);

? ? ? ? }

});

}

調(diào)用微信的getWxpayfaceCode方法會自動跳到微信的刷臉支付頁面厕宗,刷臉成功后會返回faceCode

此時需要拿著這個faceCode和openId與公司后端進行交互,后端返回一個成功或失敗的狀態(tài)

3堕担,支付成功返回你自己的app

private void backApp() {

final Map params =new HashMap<>();

? ? params.put(APPID, appId);

? ? params.put(MCH_ID, machId);

? ? params.put(STORE_ID, storeId);

? ? params.put(AUTHINFO, mAuthInfo);

? ? params.put(PAY_RESULT, "SUCCESS");

? ? WxPayFace.getInstance().updateWxpayfacePayResult(params, new IWxPayfaceCallback() {

@Override

? ? ? ? public void response(Map info)throws RemoteException {

if (!WxCallBack.successInfo(mContext, info)) {

toastError(getResources().getString(R.string.pay_error) +",updateWxpayfacePayResult()調(diào)用失敗");

? ? ? ? ? ? }

isPaySuccess =true;

? ? ? ? }

});

}

拿到后端狀態(tài)后(這里直接填入了SUCCESS)已慢,調(diào)用微信的updateWxpayfacePayResult就可以更新結(jié)果并返回自己的頁面了。

貼幾個用到的工具類

public static boolean successInfo(Context context, Map info) {

if (info ==null) {

//? ? ? ? ? ? ToastUtil.show(context, "接口返回的info為空");

? ? ? ? ? ? return false;

? ? ? ? }

String code = (String) info.get(RETURN_CODE);

? ? ? ? String msg = (String) info.get(RETURN_MSG);

? ? ? ? if (code ==null || !code.equals(WxfacePayCommonCode.VAL_RSP_PARAMS_SUCCESS)) {

//? ? ? ? ? ? ToastUtil.show(context, "調(diào)用返回非成功信息" + msg);

? ? ? ? ? ? return false;

? ? ? ? }

return true;

? ? }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末照宝,一起剝皮案震驚了整個濱河市蛇受,隨后出現(xiàn)的幾起案子句葵,更是在濱河造成了極大的恐慌厕鹃,老刑警劉巖兢仰,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異剂碴,居然都是意外死亡把将,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門忆矛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來察蹲,“玉大人,你說我怎么就攤上這事催训∏⒁椋” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵漫拭,是天一觀的道長亚兄。 經(jīng)常有香客問我,道長采驻,這世上最難降的妖魔是什么审胚? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮礼旅,結(jié)果婚禮上膳叨,老公的妹妹穿的比我還像新娘。我一直安慰自己痘系,他們只是感情好菲嘴,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汰翠,像睡著了一般临谱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奴璃,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天悉默,我揣著相機與錄音,去河邊找鬼苟穆。 笑死抄课,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的雳旅。 我是一名探鬼主播跟磨,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼攒盈!你這毒婦竟也來了抵拘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤型豁,失蹤者是張志新(化名)和其女友劉穎僵蛛,沒想到半個月后尚蝌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡充尉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年飘言,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驼侠。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡姿鸿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出倒源,到底是詐尸還是另有隱情苛预,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布笋熬,位于F島的核電站碟渺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏突诬。R本人自食惡果不足惜苫拍,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旺隙。 院中可真熱鬧绒极,春花似錦、人聲如沸蔬捷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽周拐。三九已至铡俐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妥粟,已是汗流浹背审丘。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勾给,地道東北人滩报。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像播急,于是被迫代替她去往敵國和親脓钾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355