開發(fā)者載荷向來(lái)被用于各種不同用途,包括防欺詐以及將購(gòu)買交易歸因于正確的用戶。在Google Play結(jié)算庫(kù)2.2及更高版本中,以前依賴于開發(fā)者載荷的預(yù)期用例現(xiàn)在也在該庫(kù)的其他部分獲得完全支持。
因?yàn)橛辛诉@樣的支持,從Google Play結(jié)算庫(kù)2.2版開始,我們已棄用開發(fā)者載荷。與開發(fā)者載荷關(guān)聯(lián)的方法在2.2版中已棄用,且在3.0版中已移除。請(qǐng)注意,對(duì)于使用先前版本的庫(kù)或AIDL完成的購(gòu)買交易,應(yīng)用可繼續(xù)檢索開發(fā)者載荷。
如需查看詳細(xì)的變更清單,請(qǐng)參閱Google Play結(jié)算庫(kù)2.2版本說(shuō)明和Google Play結(jié)算庫(kù)3.0版本說(shuō)明。
注意:如果下文內(nèi)容不包括您的用例,請(qǐng)?zhí)峤诲e(cuò)誤。
購(gòu)買交易驗(yàn)證
為確保購(gòu)買交易的真實(shí)性并防止偽造或重播,Google建議您將購(gòu)買令牌(通過(guò)Purchase對(duì)象中的getPurchaseToken()方法獲?。┡cGoogle Play Developer API配合使用,驗(yàn)證購(gòu)買交易的真實(shí)性。如需了解詳情,請(qǐng)參閱打擊欺詐和濫用行為。
購(gòu)買交易歸因
許多應(yīng)用(特別是游戲)需要確保將購(gòu)買交易正確歸因于發(fā)起購(gòu)買交易的游戲內(nèi)角色/頭像或應(yīng)用內(nèi)用戶個(gè)人資料。從Google Play結(jié)算庫(kù)2.2開始,應(yīng)用在啟動(dòng)購(gòu)買對(duì)話框時(shí)可將經(jīng)過(guò)混淆處理的帳號(hào)和個(gè)人資料標(biāo)識(shí)符傳遞給Google,而在應(yīng)用檢索購(gòu)買交易時(shí)也會(huì)返回相應(yīng)信息。
在BillingFlowParams中使用setObfuscatedAccountId()和setObfuscatedProfileId()參數(shù),并使用Purchase對(duì)象中的getAccountIdentifiers()方法檢索這些參數(shù)。
注意:使用先前版本的庫(kù)完成的購(gòu)買交易使用的是setAccountId()(已重命名為setObfuscatedAccountId()),getAccountIdentifiers()不會(huì)返回這些購(gòu)買交易。
將元數(shù)據(jù)與購(gòu)買交易相關(guān)聯(lián)
Google建議您將有關(guān)購(gòu)買交易的元數(shù)據(jù)存儲(chǔ)在您維護(hù)的安全后端服務(wù)器上。此購(gòu)買交易元數(shù)據(jù)應(yīng)與通過(guò)Purchase對(duì)象中的getPurchaseToken方法獲取的購(gòu)買令牌相關(guān)聯(lián)。在成功完成購(gòu)買交易后調(diào)用PurchasesUpdatedListener時(shí)將購(gòu)買令牌和元數(shù)據(jù)傳遞到您的后端,就可以保留這些數(shù)據(jù)。
為確保在購(gòu)買流程中斷的情況下關(guān)聯(lián)元數(shù)據(jù),Google建議在啟動(dòng)購(gòu)買對(duì)話框之前將元數(shù)據(jù)存儲(chǔ)在后端服務(wù)器上,并將其與用戶的帳號(hào)ID、正在購(gòu)買的SKU和當(dāng)前時(shí)間戳相關(guān)聯(lián)。
如果購(gòu)買流程在調(diào)用PurchasesUpdatedListener之前中斷,當(dāng)應(yīng)用恢復(fù)并調(diào)用BillingClient.queryPurchases()后,應(yīng)用會(huì)立即發(fā)現(xiàn)購(gòu)買交易。然后,您可以將從Purchase對(duì)象的getPurchaseTime()、getSku()和getPurchaseToken()方法檢索到的值發(fā)送到后端服務(wù)器,以查詢?cè)獢?shù)據(jù),將元數(shù)據(jù)與購(gòu)買令牌關(guān)聯(lián),并繼續(xù)處理購(gòu)買交易。