آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

سوال در مورد پرداخت درون برنامه ایی(حل نشده)

Mohammad Vp  10 سال پیش  10 سال پیش
+1 0

سلام

دوستان حقیقتش من اولین باره که میخوام واسه برنامم پرداخت درون برنامه بزارم:)

دوستان لطف کردن کدهاشو مختصرو مفید بهم دادند و صفحه پرداخت امادست فقط یه مشکلی هست

اونم اینکه من نمیدونم دقیقا چجوری باید کاربرو بفرستم به صفحه پرداخت

یعنی مثلا من میخوام در برنامم قسمت سرچ رو غیرفعال کنم و کاربر وقتی روش کلیک میکنه بگه برنامه شما کامل نیست و برای استفاده از این قسمت باید به نسخه کامل ارتقا بدیدش و بعدش بره به صفحه پرداخت:)

خوب گیریم طرف پرداخت کرد بعد میخوام از دفعات دیگه این پیغام نمایش داده نشه و خود برنامه تشخیص بده نسخه فول هست و تمامی امکانات رو باز کنه واسش

ببخشید اگه سوالم یکم غیرحرفه اییه ولی کارنکردم با پرداخت درون برنامه و چیزی نمیدونم

اگه بتونید در قالب یک سورس با پرداخت, این موضوع رو به من اموزش بدید خیلی عالی میشه

کدهاشم اینجا بزاریدم کفایت میکنه

اگر این سوال برای بعضی از دوستان مفید واقع شد اون بالا دکمه لایک و ستاره رو بزنید که موضوع مهمی شناخته بشه

تشکر دوستان

0 0
خب شما میتونی از shared preferences استفاده کنی اینجوری که تو قسمت پرداختت میگی اگه موفق بود به عنوان مثال 0 به 1 تبدیل بشه , بعدش هر جا که خواستی میای اون مقدار sharepreferences رو میگیری چک میکنی بعدش با if وelse میگی مثلا اگر مقدار فلان بود توی if میزنی فلان دیالوگ باز بشه یا هر چیز دیگه اگر نبود که یک اکتیویتی یا پیغام دیگه باز بشه , از دفعه بعد هم اول مقدار sharedPreferences چک میشه اگر پرداخت شده باشه دیگه پیغام نشون نمیده , البته راه های بهتر دیگه ای هم شاید باشه ولی این ساده تر هست پیاده کردنش (10 سال پیش)
0 0
اهان تشکر (10 سال پیش)
0 0
اقا منظورتو فهمیدم خیلیم جستجو کردم ولی نتونستم پیاده سازیش کنم سورسی چیزی داری که روی یه گزینه این کارو کرده باشه که ببینم الگو بگیرم؟ (10 سال پیش)
0 0
برادران و اساتید عزیز همتون یا اکثرتون بلدید این قضیه رو ! یک مشارکت کنید به علم ماهم افزوده بشه:) (10 سال پیش)
0 0
این مدل پرداختی که توضیح دادمو جناب انجمنی توی یکی از آموزشاش کامل توضیح داده و مفهومو جا انداخته , ی نگاه بش بندازی کامل دستت میاد چه کار کنی , میتونی از سورس کدش استفاده کنی ولی بنظرم اگر قشنگ موضو رو بگیریو خودت کد بزنی بهتره چون میتونی بعدا هر جور خواستی تغییرات بدی ... لینک (10 سال پیش)
+1 0
آموزش پرداخت درون برنامه بازار : لینک (10 سال پیش)
0 0
معین جان اموزش استاد انجمنی رو کامل دیدم میگم تو ساخت صفحه پرداخت مشکلی ندارم فقط تو shareperference مشکل دارم که نمیتونم کاری کنم در برنامم ذخیره بشه این کاربر عادیه یا ویژه و وقتی ویژه شد تو برنامه سیو بشه و تمامی امکانات برنامه ازجمله سرچ فعال بشه! در اموزش جناب انجمنی فقط ساخت صفحه پرداخت با کدهای باگ دار و قابل هکه بازارو یاد داده که اموزش اقای کاشی زاده بسیار جامع و مفیدتر از ایشون و صد البته رایگان هم هستش! در ضمن جناب اقای کاشی زاده زحمت کشیدن کامل ساخت صفحه رو اموزش دادن ولی بازم توضیحی مبنی بر اینکه چطوری یک پروژه ایی که قسمت های گوناگون داره و مثلا قفل کردن یک قسمت با پرداخت درون برنامه و ازاد شدن اون پس از پرداخت و سیو شدن این تغییرات در shareperference رو ندادند اگه یه جوری با یه مثالی محمد جان مارو شیر فهم کنی ممنون میشیم:) تشکر (10 سال پیش)
0 0
راهی هست یکی کمک کنه:) (10 سال پیش)
0 0
داداش شما تونستی برا مشکل راه حل پیدا کنی من هم الان وضعیت شما رو دارم تو این مسئله گیر کردم میتونم ازتون کمک بگیرم؟؟؟ (10 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Mohammad Vp  10 سال پیش
0 0

دوستان من از صبح دارم با این shareperference ور میرم حقیقتا:)

برنامم امادست پرداختشم امادست فقط نمیتونم کاری کنم که وقتی روی یک گزینه مثلا روی قسمت سرچ کلیک میشه بگه باید بری فول ورژن رو بخری!

این کارو با perferense میخوام انجام بدم که خودش سیو کنه از دفه دیگه بفهمه کاربرمون ویژه است یا عادی

لطفا یه سورس کدی پروژه ایی چیزی بزارید میدونم باید چیکار کنم ولی در مرحله پیاده سازی نمیتونم با کد پیادش کنم

فقط یه سورسی باشه بتونم ازش الگو بگیرم بسه

تشکر

 

کد قسمت پرداخت درون برنامم:



import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.example.android.trivialdrivesample.util.IabHelper;
import com.example.android.trivialdrivesample.util.IabHelper.OnIabPurchaseFinishedListener;
import com.example.android.trivialdrivesample.util.IabResult;
import com.example.android.trivialdrivesample.util.Inventory;
import com.example.android.trivialdrivesample.util.Purchase;


public class ActivityMain extends Activity {

public static final String RSA = ""; //کلید آر اس ای که از مارکت بازار برای برنامه مان میگیریم

private static final String TAG = "LOG";
private static final String SKU_PREMIUM = ""; // شناسه ی محصول

private boolean mIsPremium = false; // آیا کابر برنامه رو فعاسازی کرده یا نه؟


private IabHelper mHelper;

private String payload; // رشته ی منحصر به فردی که ما اون رو تولید میکنیم و به هنگام خرید به بازار ارسال میکنیم

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main4pay);
///////////////
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
payload = telephonyManager.getDeviceId();
//////////////
Button btnshow = (Button) findViewById(R.id.btnshow);
final TextView txtshow = (TextView) findViewById(R.id.txtshow);
/////////////
btnshow.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
SharedPreferences preferences_sava_status = getSharedPreferences("sava_status", 0);
if (preferences_sava_status.getBoolean("IS_PREMIUM", false))
txtshow.setText("کاربر ویژه");
else
txtshow.setText("کاربر عادی");

}
});
///////////////
final SharedPreferences preferences_sava_status = getSharedPreferences("sava_status", 0);
IS_PREMIUM = preferences_sava_status.getBoolean("IS_PREMIUM", false);
///////////////
mHelper = new IabHelper(this, RSA);

final IabHelper.QueryInventoryFinishedListener onQueryInventoryFinished = new IabHelper.QueryInventoryFinishedListener() {

public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
Log.d(TAG, "Query inventory finished.");
if (result.isFailure()) {
Log.d(TAG, "Failed to query inventory: " + result);
return;
}
else {
Log.d(TAG, "Query inventory was successful.");
mIsPremium = inventory.hasPurchase(SKU_PREMIUM);
if (mIsPremium)
{
Toast.makeText(ActivityMain.this, "شما کاربر ویژه هستید", 3000).show();
SharedPreferences preferences_sava_status = getSharedPreferences("sava_status", 0);
SharedPreferences.Editor editor_sava_status = preferences_sava_status.edit();
editor_sava_status.putBoolean("IS_PREMIUM", true);
editor_sava_status.commit();
Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));
}
else
Toast.makeText(ActivityMain.this, "شما کاربر عادی هستید", 3000).show();
}

Log.d(TAG, "Initial inventory query finished; enabling main UI.");
}
};

//////////////////////////////////
final OnIabPurchaseFinishedListener onIabPurchaseFinished = new OnIabPurchaseFinishedListener() {

public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
if ( !result.isFailure()) {
if (purchase.getOrderId().equals(purchase.getToken())) {
if (purchase.getSku().equals(SKU_PREMIUM)
&& purchase.getDeveloperPayload().equals(payload)) {
//Purchase successfull.
Toast.makeText(ActivityMain.this, "عملیات پرداخت با موفقیت به اتمام رسید", 3000).show();
SharedPreferences preferences_sava_status = getSharedPreferences("sava_status", 0);
SharedPreferences.Editor editor_sava_status = preferences_sava_status.edit();
editor_sava_status.putBoolean("IS_PREMIUM", true);
editor_sava_status.commit();
}
} else {
//Purchase is not valid!
Toast.makeText(ActivityMain.this, "عملیات پرداخت ناموفق بود!!!", 3000).show();
}
}
else {
Toast.makeText(ActivityMain.this, "عملیات پرداخت کنسل شد!!!", 3000).show();
}
if (mHelper != null)
mHelper.flagEndAsync();
}
};

////////////////////////////

Log.d(TAG, "Starting setup.");
try{
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {

public void onIabSetupFinished(IabResult result) {
Log.d(TAG, "Setup finished.");

if ( !result.isSuccess()) {
// Oh noes, there was a problem.
Log.d(TAG, "Problem setting up In-app Billing: " + result);
}
// Hooray, IAB is fully set up!
mHelper.queryInventoryAsync(onQueryInventoryFinished);
}
});
}
catch (Exception e) {
e.printStackTrace();
}
////////////////////
Button btnkharid = (Button) findViewById(R.id.btnkharid);
btnkharid.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
if ( !(preferences_sava_status.getBoolean("IS_PREMIUM", false))) {
if (isPackageInstalled("com.farsitel.bazaar")) {
final boolean internetCheck = isOnline();
if (internetCheck) {
Toast.makeText(ActivityMain.this, " در حال ارسال اطلاعات... ", 2000).show();
try {
// mHelper.launchPurchaseFlow(ActivityMain.this, SKU_PREMIUM, 0, onIabPurchaseFinished);
mHelper.launchPurchaseFlow(
ActivityMain.this,
SKU_PREMIUM,
0,
onIabPurchaseFinished,
payload
);
}
catch (Exception e) {
e.printStackTrace();
Toast.makeText(ActivityMain.this, "اتصال به مارکت بازار صورت نگرفت لطفا دوباره سعی نمایید", 3000).show();
}
}
else
Toast.makeText(ActivityMain.this, "لطفا اتصال به اینترنت را چک نمایید!", 3000).show();
}
else {
Toast.makeText(ActivityMain.this, "لطفا برنامه کافه بازار را بر روی دستگاه خود نصب نمایید!", 3000).show();
}
}
else {
Toast.makeText(ActivityMain.this, "شما هم اکنون کاربر ویژه هستید", 3000).show();
}

}
});
}

///////////////////////////
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);

// Pass on the activity result to the helper for handling
if ( !mHelper.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
} else {
Log.d(TAG, "onActivityResult handled by IABUtil.");
}
}
/////////////////////////////////

public boolean isPackageInstalled(String PackageName) {
PackageManager manager = getPackageManager();
boolean isAppInstalled = false;
try {
manager.getPackageInfo(PackageName, PackageManager.GET_ACTIVITIES);
isAppInstalled = true;
}
catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Log.i("LOG", "بازار نصب نیست");
}
return isAppInstalled;
}

//////////////////////////////
@Override
public void onDestroy() {
super.onDestroy();
if (mHelper != null)
mHelper.dispose();
mHelper = null;
}

/////////////////////////////////////
protected boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected()) {
return true;
} else {
return false;
}
}
}

 

0 0
? (10 سال پیش)
0 0
(10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .