feat(iap): native Myket in-app billing plugin (AIDL) + wire purchase/consume
Implements real Myket IAB for the Capacitor app (Myket has no purchase deep-link like Bazaar — it uses the classic Google Play IAB v3 AIDL bound to the Myket app): - AIDL: com.android.vending.billing.IInAppBillingService (Myket-compatible). - MyketBillingPlugin (Capacitor): binds ir.mservices.market via "ir.mservices.market.InAppBillingService.BIND", runs getBuyIntent → startIntentSenderForResult, verifies INAPP_DATA_SIGNATURE with the RSA key (Security.java, SHA1withRSA), returns the purchaseToken; consume() too. - MainActivity registers the plugin + forwards the purchase activity result. - Manifest: ir.mservices.market.BILLING permission + <queries> for Android 11+ package visibility. - build.gradle: enable buildFeatures.aidl (AGP 8 disables it by default). - storeBilling: Myket goes through the plugin (RSA key embedded); after server verify, BuyCoins consumes the purchase so coins can be re-bought. Bazaar (deep-link) and web (ZarinPal) paths unchanged. Needs on-device testing with the Myket app installed + published products. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -12,6 +12,10 @@ if (keystorePropsFile.exists()) {
|
||||
android {
|
||||
namespace = "com.bargevasat.app"
|
||||
compileSdk = rootProject.ext.compileSdkVersion
|
||||
// AGP 8 disables AIDL by default; the Myket billing service needs it.
|
||||
buildFeatures {
|
||||
aidl true
|
||||
}
|
||||
defaultConfig {
|
||||
applicationId "com.bargevasat.app"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
|
||||
Reference in New Issue
Block a user