HMS Core應用內購買服務(In-App Purchases,IAP)為應用提供便捷的應用內購買體驗和簡便的接入流程。開發者的應用整合IAP SDK後,呼叫IAP SDK介面,啟動IAP收銀臺,即可實現應用內購買。通過應用內購買服務,使用者可以在應用內購買各種型別的虛擬商品,包括一次性商品(包括消耗型商品和非消耗型商品)和訂閱型商品。應用內購買服務支援客戶端和服務端兩種開發形式,具體可以參考以下官方文件:
https://developer.huawei.com/...
在日常工作中,我們會收到開發者們留言的有關IAP整合的常見問題,這裡進行一些分享和總結,希望為其他遇到類似問題的開發者提供參考——
- com.huawei.hmf.tasks.Task的使用問題。
Task<TResult>是HMS Core SDK 底層框架的一個基礎抽象類,通過實現Task類裡面的相關抽象方法。比如新增一個或者多個監聽器,當任務成功完成時該監聽器被呼叫,當新增多個監聽時,按照新增時的順序呼叫,該呼叫在主執行緒中執行。
因為它已經整合在工程gradle包當中,所以直接用就可以,不需要重新建立宣告。我們可以在Project工程中匯入的 gradle檔案中找到:
開發者也可以參考以下文件解決問題:
https://developer.huawei.com/...
- InAppPurchaseData 引數中沒有accountFlag是否正常?
InAppPurchaseData 引數中沒有accountFlag的問題,根據應用內購買服務官方文件關於InAppPurchaseData的參考API:
https://developer.huawei.com/...
InAppPurchaseData JSON型別用於儲存使用者購買資訊,包括消耗型商品、非消耗型商品以及訂閱型商品。其中的引數accountFlag 是非必選引數、可選欄位,非固定返回,滿足使用AppTouch應用才會有這個返回值。
- 文件 createPurchaseIntentWithPrice 的 onFailure 中 引數(Exception e)的判斷(e instanceof IapApiException) 不成立。
首先需要確認裝置和整合環境資訊(最好更新到最新版本):HMS Core版本號、整合的SDK的版本號、裝置是手機還是智慧屏。
然後根據官方文件60055錯誤碼的註釋,一般表示使用者沒有同意支付協議,開發者可以從請求介面中返回的IapApiException中獲取到一個Status物件,Status中包含IAP協議頁面,應用可使用Status的startResolutionForResult方法來啟動協議頁面。
導致該問題的原因可能還有以下幾個方面:
(1)網路問題,網路異常導致介面獲取失敗。
(2)是否正確引用了 IapApiException。
(3)支付時是否有彈窗,如果沒有彈窗需要開啟裝置 “後臺彈出介面”許可權,設定如下:找到 HMS Core 應用詳情頁-- 許可權管理--“後臺彈出介面”--選擇“始終允許”,重新測試。
(4)如果是程式碼問題,請詳細參考開發者聯盟官方Demo實現和測試。Demo下載地址:
https://developer.huawei.com/...
- 應用伺服器驗證,驗證購買token 失敗。
首先,出現“驗證購買token 失敗”提示,請詳細參照 “獲取應用級AT”文件的每一個步驟,檢查獲取的AT是否是應用級AT。獲取應用級別AT地址文件:
https://developer.huawei.com/...
然後再將獲取的應用級AT封裝,在請求頭header中重新構建 authorization,具體可以參考公共說明的部分文件:
https://developer.huawei.com/...
欲瞭解更多應用內購買服務詳情,請參閱:
https://developer.huawei.com/...
華為開發者聯盟官網
獲取開發指導文件
參與開發者討論請到Reddit社群
下載demo和示例程式碼請到Github
解決整合問題請到Stack Overflow
瞭解更多詳情>>
訪問華為開發者聯盟官網
獲取開發指導文件
華為移動服務開源倉庫地址:GitHub、Gitee
關注我們,第一時間瞭解 HMS Core 最新技術資訊~