حل این مشکل چندان هم پیچیده نیست! شما برای اینکه امکان پرداخت درون برنامه ای داشته باشید قطعا برنامتون دسترسی اینترنت داره پس بجای اینکه کل مراحل پرداخت رو از طریق برنامه اندرویدیتون انجام بدید، باید مراحل پرداخت رو از طریق سرور های خودتون انجام بدید. یعنی اینکه به جای اینکه برنامه شما به سرور بازار وصل بشه و پرداخت کنه، باید برنامتون به سرور خودتون وصل بشه و سرور شما با بازار ارتباط برقرار کنه و جواب رو به برنامه شما منتقل کنه و مراحل پرداخت رو انجام بدید. وقتی این اتفاق افتاد، سرور شما میدونه که کدوم کاربر واقعا پرداخت رو انجام داده. بعد از این تنها کاری که لازمه انجام بدید اینه که در بازه های زمانی مختلف یه ارتباط کوچیک از برنامه اندرویدی به سرورتون داشته باشید و با ارسال شناسه کاربری به سرور چک کنید ببینید کاربر پرداخت کرده یا نه. پس اگر کاربر برنامه رو کرک کرده باشه توی سرور شما براش پرداختی ثبت نشده و در اولین ارتباطی که با سرور برقرار میشه مشخص میشه برنامه کرک شده و میتونید ورودش به برنامه رو جلوگیری کنید.
حالا اگر نخواید پرداخت ها رو سمت سرور مدیریت کنید، باز هم میشه این مشکل رو حل کرد. کافیه از روشی که بازار توضیح داده، develpoer payload رو تولید کنید و هر زمانی که در برنامه پرداخت انجام شد مقدار payload رو به سرورتون ارسال کنید و ذخیره کنید اونجا.حالا هر موقع که برنامه اجرا میشه چک کنید ببینید که آیا کاربر ارتقا یافته هست یا نه، اگر کاربر ارتقا یافته بود یعنی یا واقعا پرداخت کرده یا اینکه کرک کرده و برنامه به اشتباه فکر میکنه که پرداخت شده. برای اطمینان از این موضوع اون developer payload ای که تولید کردید رو بفرستید به سرور، اگر توی سرور هم همون مقدار برای developer payload وجود داشته باشه برای اون کاربر، یعنی واقعا پرداخت رو انجام داده و در غیر اینصورت یعنی کرک شده و مانع ورود کاربر به برنامه میشید.
پس در نهایت شما باید سرور خودتون رو داشته باشید برای حل این مشکل و صرفا به برنامه کلاینتتون که روی گوشی نصب شده برای مدیریت پرداخت ها اکتفا نکنید.
موفق باشید