JK Docs
FrontendTools# flutter# revenuecat# google-play-console# in-app-purchase# android# keystore

Integration Guide: RevenueCat & Google Play In-App Purchases (One-Time)

Last updated: 6/9/2026

راهنمای جامع اتصال RevenueCat به Google Play برای خریدهای درون‌برنامه‌ای (In-App Purchases)

پیاده‌سازی پرداخت درون‌برنامه‌ای با RevenueCat در فلاتر و اتصال آن به گوگل‌پلی، چالش‌ها و نکات پنهانی دارد که در صورت عدم رعایت، باعث بن‌بست در کنسول گوگل پلی می‌شود. در این مستند، تمام نکات کلیدی و روال صحیح ثبت شده است.


۱. باز کردن قفل بخش Products در گوگل‌پلی

به صورت پیش‌فرض، منوی In-App Products در گوگل پلی قفل است و شما نمی‌توانید محصولی (مثلاً نسخه Premium) تعریف کنید.

  • راه حل: باید حتماً یک نسخه اولیه از اپلیکیشن (فایل .aab که شامل پرمیشن BILLING در مانیفست است) را در بخش Internal Testing آپلود کنید.
  • نکته مهم: نیازی نیست تستر اضافه کنید! خطای زرد رنگ گوگل مبنی بر نداشتن تستر را نادیده بگیرید و دکمه Save and publish را بزنید. به محض انتشار در این بخش، منوی Products باز می‌شود.

۲. خطای کلید امضا (Signing Config) هنگام آپلود AAB

یکی از خطاهای رایج هنگام آپلود فایل AAB این است که گوگل پلی اعلام می‌کند بیلد با کلید اشتباهی (Debug Key) امضا شده است.

  • علت: در فایل android/app/build.gradle.kts، فلاتر گاهی به صورت پیش‌فرض در بلاک release از کلید دیباگ استفاده می‌کند تا بیلد محلی خطا ندهد.
  • راه حل: کد زیر را بررسی و اصلاح کنید:
buildTypes { release { // This line must be set to release, not debug signingConfig = signingConfigs.getByName("release") } }

۳. خطای آپلود آیکون محصول (Icon) در کنسول گوگل

هنگام ساخت یک محصول جدید (One-time product)، گوگل یک آیکون اجباری می‌خواهد. اما اغلب تصاویر (به‌خصوص تصاویر ساخته شده با هوش مصنوعی) را با خطای نامشخص رد می‌کند.

🛑 قوانین سخت‌گیرانه گوگل برای آیکون:

  • تصویر باید دقیقاً نسبت ۱:۱ داشته باشد.
  • سایز آن بین ۵۱۲ تا ۱۰۸۰ پیکسل باشد.
  • هیچ متنی روی آن نباشد.
  • مهم‌تر از همه: هیچ‌گونه کانال شفافیت (Alpha Channel) نداشته باشد.

🛠️ راه حل (برای کاربران مک):

برای حذف کامل متادیتاها و کانال‌های نامرئی، یک‌بار عکس را به فرمت BMP و سپس مجدداً به PNG با سایز دقیق ۵۱۲ تبدیل کنید. با اجرای دستورات زیر در ترمینال مک، عکسی ۱۰۰٪ تضمینی ساخته می‌شود:

sips -s format bmp input_image.png --out temp.bmp sips -z 512 512 -s format png temp.bmp --out final_icon.png

۴. پیکربندی صحیح RevenueCat برای اندروید

برای اینکه کلید API پلتفرم گوگل پلی را از رونیوکت (RevenueCat) دریافت کنید، لزوماً در همان لحظه اول نیاز به آپلود Service Account JSON ندارید (اگرچه برای نهایی‌شدن خریدها در آینده الزامی است). ترتیب صحیح ساختاربندی در RevenueCat به این شکل است:

  1. Apps: اضافه کردن اپلیکیشن Android و وارد کردن دقیق Package Name.
  2. Products: ساخت محصول جدید متصل به اپلیکیشن.
    • نکته مهم: نوع محصول برای خریدهای دائمی باید حتماً Non-consumable باشد.
    • فیلد Identifier: باید دقیقاً با Product ID ساخته شده در گوگل‌پلی یکسان باشد (مثلاً premium).
  3. Entitlements: باز کردن Entitlement اصلی (مثلاً premium) و اتصال (Attach) محصول مرحله قبل به آن.
  4. Offerings: ساخت یک Offering جدید با شناسه default.
  5. Packages: ساخت یک پکیج در داخل Offering با شناسه lifetime (حتماً از دراپ‌داون نوع Lifetime انتخاب شود). در نهایت محصول را به این پکیج متصل کنید.
  6. API Key: رفتن به منوی API keys و کپی کردن کلید goog_XXXXXX جهت استفاده در کدهای فلاتر.

💡 نکته کلیدی (TIP)

همیشه قبل از بیلد نهایی: متغیر _isDebugPremium یا هر شبیه‌ساز پرداخت آفلاینی که برای محیط توسعه (Development) ساخته‌اید را false کنید تا اپلیکیشن در حالت Production، فاکتورها را از RevenueCat استعلام بگیرد.

JK Docs
New Guide

Categories

DevOpsBackendFrontendDatabaseToolsSecurityDesignSystem Admin
Admin Panel