@@ -146,6 +146,13 @@ class IAPCore(
146146
147147 val skuPackageName = params.buyFlowParams.skuParams[" skuPackageName" ] ? : clientInfo.pkgName
148148 val extendedPackageInfo = ExtendedPackageInfo (context, skuPackageName as String )
149+ val derivedApkId = runCatching {
150+ context.packageManager
151+ .getApplicationInfo(skuPackageName, PackageManager .GET_META_DATA )
152+ .metaData
153+ ?.getInt(" com.android.vending.derived.apk.id" , 0 )
154+ ?.takeIf { it != 0 }
155+ }.getOrNull()
149156 val docId = if (params.buyFlowParams.skuSerializedDockIdList?.isNotEmpty() == true ) {
150157 val sDocIdBytes = Base64 .decode(params.buyFlowParams.skuSerializedDockIdList[0 ], Base64 .URL_SAFE + Base64 .NO_WRAP )
151158 DocId .ADAPTER .decode(sDocIdBytes)
@@ -193,16 +200,13 @@ class IAPCore(
193200 this .oldSkuPurchaseToken = null
194201 this .oldSkuPurchaseId = params.buyFlowParams.oldSkuPurchaseId
195202 }
196- unKnownMessage21 = UnKnownMessage21 .Builder ().apply {
197- val pkg = skuPackageName as ? String ? : return @apply
198- this .unknown1 = runCatching {
199- context.packageManager
200- .getApplicationInfo(pkg, PackageManager .GET_META_DATA )
201- .metaData
202- ?.getInt(" com.android.vending.derived.apk.id" , 0 )
203- ?.takeIf { it != 0 }
204- }.getOrNull()
205- }.build()
203+ if (derivedApkId != null ) {
204+ this .derivedApkId = DerivedApkId .Builder ().apply {
205+ this .derivedId = derivedApkId
206+ }.build()
207+ } else {
208+ this .derivedApkIdAbsent = DerivedApkIdAbsent .Builder ().build()
209+ }
206210 this .skuPackageSignatureSha256 = extendedPackageInfo.firstCertificateSha256?.toBase64(11 )
207211 this .secondaryAccount = AccountNameMessage .Builder ().apply {
208212 this .accountName = params.buyFlowParams.accountName
@@ -395,4 +399,4 @@ class IAPCore(
395399 throw RuntimeException (" Network request failed. message=${e.message} " )
396400 }
397401 }
398- }
402+ }
0 commit comments