# SDK小程序
更新記錄
版本 | 簡要說明 | 修改日期 |
---|---|---|
1.0 | 新增SDK模式IoT小程序開發(fā)指引內(nèi)容 | 2022/2/22 |
# 背景
微信小程序硬件框架( Wechat Mini-Program Framework,以下全部簡稱 [WMPF] )是由微信官方提供、除微信客戶端之外的小程序運(yùn)行環(huán)境。為方便理解,可以將“小程序框架”與“小程序應(yīng)用”,類比為“瀏覽器”與“瀏覽器插件”的關(guān)系。[WMPF] 可廣泛應(yīng)用于多種智能硬件,本身不限于刷臉支付設(shè)備使用。
[WMPF]由于適用多種硬件環(huán)境,通過與WMPF團(tuán)隊(duì)溝通與協(xié)調(diào),且刷臉設(shè)備相對(duì)于其他設(shè)備會(huì)有所不同(包括接入流程、部分接口設(shè)計(jì))。因此,刷臉設(shè)備SDK模式IOT小程序開發(fā)有特殊的流程。
# 1.前提條件
● 請(qǐng)以「SDK 模式」接入刷臉支付的Android設(shè)備;
● 若設(shè)備已完成軟硬件接入流程,但服務(wù)商不知何時(shí)算完成軟硬件接入流程,可點(diǎn)擊進(jìn)入微信刷臉支付開放平臺(tái)進(jìn)行詳細(xì)了解;
● 若已綁定鋪設(shè)服務(wù)商,但服務(wù)商不知如何綁定,可點(diǎn)擊進(jìn)入設(shè)備關(guān)系綁定進(jìn)行詳細(xì)了解;
● 在刷臉設(shè)備上按照系統(tǒng)設(shè)計(jì)要求預(yù)置刷臉APP和iotservice(如刷臉APP版本低于2.20,則不符合最低版本要求,請(qǐng)通過微信刷臉支付開放平臺(tái)SDK模式下載最新版本),安裝 WMPF(v1.0.3版本或以上)。
# 2.接入流程
# 2.1 注冊(cè)微信終端合作平臺(tái)賬號(hào)
以鋪設(shè)服務(wù)商帳號(hào)身份,登陸微信支付商戶平臺(tái) 管理刷臉支付設(shè)備,并進(jìn)入「刷臉SDK接入小程序框架」功能。
# 2.2 設(shè)備類型注冊(cè)
激活微信終端合作平臺(tái)帳號(hào),自動(dòng)完成設(shè)備類型注冊(cè),獲取product_id和model_name。
# 2.3 獲取相關(guān)參數(shù)
使用設(shè)備的主應(yīng)用(即商戶app)在微信開放平臺(tái)創(chuàng)建移動(dòng)應(yīng)用,獲取該移動(dòng)應(yīng)用的 AppID 即hostAppId,及AppSecret、 access_token 。
備注 :
1、開放平臺(tái)帳號(hào),需完成企業(yè)主體認(rèn)證;
2、創(chuàng)建移動(dòng)應(yīng)用一般需7天審核,請(qǐng)盡早申請(qǐng)。同一應(yīng)用的apk只可以創(chuàng)建一個(gè)移動(dòng)應(yīng)用 AppID;
3、Android應(yīng)用簽名生成工具。
# 2.4 綁定運(yùn)行的小程序
綁定設(shè)備上的主應(yīng)用(即商戶app)所需運(yùn)行的小程序 AppID。
特別說明:
1、此處輸入的appid為步驟3生成的移動(dòng)應(yīng)用appid(hostappid);
2、按要求添加完以后,點(diǎn)擊管理,添加小程序appid。
# 2.5 注冊(cè)設(shè)備
設(shè)備注冊(cè)為后臺(tái)接口,確保設(shè)備用于調(diào)起小程序權(quán)限,詳情請(qǐng)點(diǎn)擊進(jìn)入調(diào)用方法進(jìn)行了解。
2.5.1 可在終端合作平臺(tái)的「查詢?cè)O(shè)備狀態(tài)」功能上,檢查設(shè)備是否成功注冊(cè);
2.5.2 如需批量導(dǎo)出設(shè)備列表可參考:微信支付IoT設(shè)備API。
特別說明:
1、device_id即設(shè)備序列號(hào)(SN);
2、model_name即設(shè)備型號(hào)。
# 3.開發(fā)流程
# 3.1 小程序的兩種登錄、啟動(dòng)模式
3.1.1 先登錄再啟動(dòng)小程序
getWxpayfaceRawdata
get_wxpayface_authinfo A ->> C: Step2 激活 note over A,C : IPCInvokerTask_ActivateDeviceByIoT A ->> C: Step3 預(yù)置刷臉調(diào)用參數(shù) note over A,C : IPCInvokerTask_InitWxFacePayInfo傳入getWxpayfaceCode的調(diào)用參數(shù) A ->> C: Step4 請(qǐng)求用戶刷臉登錄 note over A,C : IPCInvokerTask_AuthorizeByWxFacePay C ->> B: Step5 (自動(dòng)) B ->> B: Step6 用戶刷臉登錄 C -->> A: Step7 登錄憑據(jù)+用戶信息 A ->> C: Stp8 啟動(dòng)小程序 note over A,C : IPCInvokerTask_LaunchWxaApp C ->> D: Step9 啟動(dòng)小程序(帶登錄狀態(tài)) A ->> C: 注銷登錄 note over A,C : IPCInvokerTask_Deauthorize
3.1.2 先啟動(dòng)小程序再登錄
getWxpayfaceRawdata
get_wxpayface_authinfo A ->> C: Step2 激活 note over A,C : IPCInvokerTask_ActivateDeviceByIoT A ->> C: Step3 預(yù)置刷臉調(diào)用參數(shù) note over A,C : IPCInvokerTask_InitWxFacePayInfo傳入getWxpayfaceCode的調(diào)用參數(shù) A ->> C: Step4 啟動(dòng)小程序 note over A,C : IPCInvokerTask_LaunchWxaApp C ->> D: Step5 啟動(dòng)小程序(無登錄狀態(tài)) D ->> D: Step6 微信登錄 note over D,D : wx.login D ->> C: Step7 (自動(dòng)) C ->> B: Step8 (自動(dòng)) B ->> B: Step9 用戶刷臉登錄 D ->> D: Step10 已登錄 A ->> C: Step11 注銷登錄 note over A,C : IPCInvokerTask_Deauthorize
# 3.2 相關(guān)接口
3.2.1 激活設(shè)備
激活設(shè)備:IPCInvokerTask_ActivateDeviceByIoT
3.2.2 預(yù)置刷臉調(diào)用參數(shù)
1、[WMPF]及小程序調(diào)用刷臉功能前置條件:IPCInvokerTask_InitWxFacePayInfo;
2、參考刷臉SDK「刷臉支付」getWxpayfaceCode的調(diào)用參數(shù);注意參數(shù)的有效期,如authinfo的expires_in。
3.2.3 請(qǐng)求用戶授權(quán)登錄,使[WMPF]獲得用戶的微信登錄狀態(tài)
1、刷臉登錄接口:IPCInvokerTask_AuthorizeByWxFacePay;
● 用戶刷臉成功后,主應(yīng)用可獲得用戶信息,參考刷臉 SDK「人臉識(shí)別」getWxpayfaceUserInfo的返回參數(shù)。
2、二維碼登錄接口:IPCInvokerTask_Authorize;
3、注銷登錄接口:IPCInvokerTask_Deauthorize。
注意:調(diào)用后將完全退出小程序。
3.2.4 啟動(dòng)、關(guān)閉小程序
1、啟動(dòng)特定小程序:IPCInvokerTask_LaunchWxaApp;
2、掃碼拉起小程序:IPCInvokerTask_LaunchWxaAppByQrCode;
3、關(guān)閉小程序:IPCInvokerTask_CloseWxaApp。
注意:
正式版小程序可以無登錄狀態(tài)啟動(dòng);
體驗(yàn)版、開發(fā)版,由于平臺(tái)需校驗(yàn)用戶權(quán)限,必須前置登錄才可以啟動(dòng);
調(diào)用后小程序?qū)⑼酥梁笈_(tái)。
3.2.5 預(yù)加載(增加小程序的打開速度,根據(jù)提示方式不同,分為以下兩個(gè)接口)
1、預(yù)加載小程序運(yùn)行環(huán)境:IPCInvokerTask_PreloadRuntime提升啟動(dòng)速度;
2、預(yù)熱特定小程序:IPCInvokerTask_LaunchWxaApp需傳入?yún)?shù)isForPreWarmLaunch=true。
注意:
預(yù)加載是預(yù)加載小程序啟動(dòng)所需要的環(huán)境,預(yù)熱是預(yù)加載指定的小程序達(dá)到快速啟動(dòng)指定小程序的效果。
3.2.6 主應(yīng)用與小程序的交互
1、WMPF調(diào)用通道 (Invoke Channel),主應(yīng)用與小程序之間可作本地雙向通訊,通訊內(nèi)容及格式可自定義。
3.2.7 小程序的能力
刷臉支付硬件上的專有能力:
1、小程序運(yùn)行中發(fā)起刷臉登錄,僅當(dāng) [WMPF] 無登錄狀態(tài)時(shí)適用。
第一,由wx.login接口觸發(fā);
第二,觸發(fā)邏輯如下:
● 由于 [WMPF] 無登錄狀態(tài),調(diào)用wx.login時(shí)無法正常返回用戶信息,所以 [WMPF] 將自動(dòng)請(qǐng)求用戶登錄,再執(zhí)行常規(guī)的wx.login;
● 若已前置執(zhí)行IPCInvokerTask_InitWxFacePayInfo預(yù)置刷臉調(diào)用參數(shù),優(yōu)先調(diào)用刷臉登錄;若刷臉失敗或無法預(yù)置刷臉調(diào)用參數(shù),降級(jí)為調(diào)用二維碼登錄。
第三,截至[WMPF]v1.0.3,在小程序生命周期內(nèi)只可執(zhí)行一次,無論是否登錄成功。
2、小程序運(yùn)行中發(fā)起刷臉支付。
第一,需前置執(zhí)行IPCInvokerTask_InitWxFacePayInfo預(yù)置刷臉調(diào)用參數(shù);
第二,小程序調(diào)用wmpf.wxFacePay.facePay調(diào)起刷臉支付,獲取付款碼。
3.2.8 其他接口
其他接口可根據(jù)自身需求,根據(jù)Service與Client的IPC交互協(xié)議進(jìn)行調(diào)用。
# 3.3 相關(guān)文檔(可做了解)
文檔名稱 | 文檔內(nèi)容說明 |
Home | WMPF通用步驟,和刷臉設(shè)備無關(guān),做了解即可 |
硬件注冊(cè)步驟 | WMPF通用步驟,和刷臉設(shè)備無關(guān),做了解即可 |
硬件注冊(cè)For JVM (experimental) | WMPF通用步驟,和刷臉設(shè)備無關(guān),做了解即可 |
人臉識(shí)別及支付相關(guān)文檔 | 刷臉支付設(shè)備專用 |
Service與Client的IPC交互協(xié)議 | 通用,主應(yīng)用與[WMPF]的交互能力(Service 即[WMPF],Client 即主應(yīng)用) |
WMPF調(diào)用通道(Invoke Channel) | 通用,主應(yīng)用與小程序的交互能力 |
WMPF專有接口(JSAPI) | 通用,小程序在[WMPF]上的擴(kuò)展能力 |
WMPF Push能力 | 通用,觸發(fā)主應(yīng)用的消息推送能力 |
以「SDK模式」接入刷臉支付的設(shè)備運(yùn)行小程序的產(chǎn)品文檔 | 以「SDK模式」接入刷臉支付的設(shè)備運(yùn)行小程序的產(chǎn)品文檔 |
常見錯(cuò)誤碼 | 通用,errCode返回的錯(cuò)誤信息可通過此文檔查詢 |
Q&A | 通用,常見問答,建議閱讀 |