forked from Tadrisino/MathApp_frontend
- Checkout sheet always shows both methods as two tiles; Bazaar tile disabled with the reason
(not in Bazaar / Android app only / update the app) instead of hidden; default is Bazaar inside an app that can buy.
- Bridge v2: TadrisinoAndroid.bazaarBuy(sku, orderId, productType, dynamicPriceToken); inAndroidApp() split
from canBuyFromBazaar() so the pay.html workaround still applies to the installed APK.
- Bazaar flow: order -> optional discount code -> POST /payment/bazaar/orders/{id}/start -> Poolakey -> verify;
consume only packs.
- Android: RSA key, subscribeProduct/getSubscribedProducts for subscriptions, dynamicPriceToken, versionCode 2.
compileDebugKotlin green; no purchase tested on a phone.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
113 lines
4.3 KiB
Kotlin
113 lines
4.3 KiB
Kotlin
// plugins {
|
||
// id("com.android.application")
|
||
// id("org.jetbrains.kotlin.android")
|
||
// }
|
||
|
||
// android {
|
||
// // ⚠️ اسمِ پکیج باید همانی باشد که در پیشخانِ بازار ثبت است. com.tadrisino.app را بازار
|
||
// // برای حسابِ شرکت «Product is not found» جواب داد (یعنی هست)، ولی سنیور تأیید نکرده
|
||
// // که همان اپِ ریاضی است (CLAUDE.mdِ بکاند، ۲۰۲۶-۰۹-۳۰).
|
||
// namespace = "com.tadrisino.app"
|
||
// compileSdk = 34
|
||
|
||
// defaultConfig {
|
||
// applicationId = "com.tadrisino.math.app"
|
||
// minSdk = 23
|
||
// targetSdk = 34
|
||
// versionCode = 1
|
||
// versionName = "1.0.0"
|
||
|
||
// // آدرسِ همان فرانتِ وب. دامنه عوض شود، فقط همین خط.
|
||
// buildConfigField("String", "WEB_URL", "\"https://math.tadrisino2.ir/\"")
|
||
// // کلیدِ RSAِ عمومیِ اپ از پیشخانِ بازار (بخشِ «پرداخت درونبرنامهای»). کلیدِ عمومی
|
||
// // است و در اپ مینشیند؛ رمز نیست. تا پر نشود، اپ خرید را شروع نمیکند.
|
||
// buildConfigField("String", "BAZAAR_RSA_KEY", "\"\"")
|
||
// }
|
||
|
||
// buildFeatures {
|
||
// buildConfig = true
|
||
// }
|
||
|
||
// buildTypes {
|
||
// release {
|
||
// isMinifyEnabled = false
|
||
// }
|
||
// }
|
||
|
||
// compileOptions {
|
||
// sourceCompatibility = JavaVersion.VERSION_17
|
||
// targetCompatibility = JavaVersion.VERSION_17
|
||
// }
|
||
// kotlinOptions {
|
||
// jvmTarget = "17"
|
||
// }
|
||
// }
|
||
|
||
// dependencies {
|
||
// implementation("androidx.appcompat:appcompat:1.7.0")
|
||
// implementation("androidx.activity:activity-ktx:1.9.2")
|
||
// implementation("com.github.cafebazaar.Poolakey:poolakey:2.2.0")
|
||
// }
|
||
|
||
plugins {
|
||
id("com.android.application")
|
||
id("org.jetbrains.kotlin.android")
|
||
}
|
||
|
||
android {
|
||
// Package name must match the one registered on Cafe Bazaar.
|
||
// Confirm the final applicationId before publishing.
|
||
namespace = "com.tadrisino.app"
|
||
compileSdk = 34
|
||
|
||
defaultConfig {
|
||
applicationId = "com.tadrisino.math.app"
|
||
minSdk = 23
|
||
targetSdk = 34
|
||
// بازار نسخهی تازه را فقط با versionCodeِ بزرگتر میپذیرد؛ هر build که منتشر میشود یکی بالا.
|
||
versionCode = 2
|
||
versionName = "1.1.0"
|
||
|
||
// URL of the web frontend.
|
||
buildConfigField("String", "WEB_URL", "\"https://math.tadrisino2.ir/\"")
|
||
// کلیدِ RSAِ عمومیِ اپ از پیشخانِ بازار (پرداخت درونبرنامهای)؛ سینیور، ۲۰۲۶-۱۰-۱۲. عمومی است و در APK
|
||
// میرود؛ Poolakey با آن امضای خرید را روی گوشی میسنجد. سنجشِ اصلی سمتِ سرور است.
|
||
buildConfigField("String", "BAZAAR_RSA_KEY", "\"MIHNMA0GCSqGSIb3DQEBAQUAA4G7ADCBtwKBrwC9EBw0RW6jeTdHkrJwfB/mX+klpjpVXVb2stpGDcixeqHiLE+/Iow+PiMbZEQfxZDuED6ELvZlzQX+ALOlGRPxaa1ctl6/Uy6wGaPXhGPDpZL6jPrXV88mjJzMcEoB4sf3yNb+6YNKrvKhRyXXR0JdMUmPMqMe8igmQZTv/UF+QEMNqv7lg7qw9Yl+fG802nqjasft7qUPQK+YHJYPS4PJ5Pj/YpTkGDdDmVi7AIMCAwEAAQ==\"")
|
||
}
|
||
|
||
buildFeatures {
|
||
buildConfig = true
|
||
}
|
||
|
||
signingConfigs {
|
||
create("release") {
|
||
storeFile = file("my-release-key.keystore")
|
||
storePassword = providers.gradleProperty("MYAPP_STORE_PASSWORD").orNull
|
||
keyAlias = "my-key-alias"
|
||
keyPassword = providers.gradleProperty("MYAPP_KEY_PASSWORD").orNull
|
||
}
|
||
}
|
||
|
||
buildTypes {
|
||
release {
|
||
isMinifyEnabled = false
|
||
signingConfig = signingConfigs.getByName("release")
|
||
}
|
||
}
|
||
|
||
compileOptions {
|
||
sourceCompatibility = JavaVersion.VERSION_17
|
||
targetCompatibility = JavaVersion.VERSION_17
|
||
}
|
||
kotlinOptions {
|
||
jvmTarget = "17"
|
||
}
|
||
}
|
||
|
||
dependencies {
|
||
implementation("androidx.appcompat:appcompat:1.7.0")
|
||
implementation("androidx.activity:activity-ktx:1.9.2")
|
||
// اسپلشِ سیستم تا آمادهشدنِ اولین صفحهی وب میماند (MainActivity.keepSplash).
|
||
implementation("androidx.core:core-splashscreen:1.0.1")
|
||
implementation("com.github.cafebazaar.Poolakey:poolakey:2.2.0")
|
||
} |