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

پرداخت درون برنامه ای

رضا  10 سال پیش  10 سال پیش
0 0

نیاز به راهنمایی دارم(آموزش دوستان رو مطالعه کردم اما مشکلم حل نشد)

دوستان عذر میخوام بابت این موضوع تاپیک جدید زدم ولی برام مهم بود

بنده با توجه به آموزشهای دوستان در انجمن برنامه تستی پرداخت دوره برنامه ای رو ایجاد کردم..اما متاسفانه زمانیکه خرید انجام میدم.. دوباره پیغام میذاره نسخه کامل رو تهیه نمایید و ایندفعه وارد بازار نمیشه و پیغام میذاره پرداخت انجام نشد.دوباره سعی نمایید.

مبلغ 1000ریال گذاشتم..

لینک فایل apk بنده http://echoghahraman.ir/Test3.apk

و کد های بنده طبق آموزش دوستان

 public class ActivityMain extends Activity {

@Override
protected void onResume() {
G.currentActivity = this;
super.onResume();
}


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button = (Button) findViewById(R.id.btp);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

if (G.premiumState) {// اگر پرداخت شد

Toast.makeText(G.context, "نسخه طلایی. ", Toast.LENGTH_LONG).show();

} else {// اگر پرداخت نشده بود

Toast.makeText(G.context, "لطفا نسخه کامل را تهیه فرمایید ", Toast.LENGTH_LONG).show();
Intent intent2 = new Intent(G.currentActivity, Payment.class);
G.currentActivity.startActivity(intent2);

}

}
});
}


کدکلاسG

public class G extends Application {

public static Context context;
public static LayoutInflater inflater;
public static Activity currentActivity;
public static final Handler HANDLER = new Handler();

//1//
////پرداخت بازار/

public static final String TAG = "TAG"; //bazaar
public static final String SKU_PREMIUM = "BT"; //bazaar
public static final int RC_REQUEST = 0; //bazaar
public static boolean mIsPremium = false; //bazaar
public static IabHelper mHelper; //bazaar
public static String base64EncodedPublicKey = "اینجا کد طولانی رو گذاشتم";
public static boolean setPremiumState;
public static boolean premiumState;
public static SharedPreferences preferences;


@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
context = getApplicationContext();
preferences = PreferenceManager.getDefaultSharedPreferences(context);
premiumState = preferences.getBoolean("IS_PREMIUM", false);
}


////////////////////////////////////////////////پرداخت بازار/////////////////
/////////////////////////////////////////////////////////////////////////////
public static boolean prepareBazaarInAppBilling(final boolean requireUpdatePrefrences,
final QueryInventoryFinishedListener mGotInventoryListener) {
try {
mHelper = new IabHelper(G.context, base64EncodedPublicKey);
Log.d(TAG, "Starting setup.");
IabHelper.OnIabSetupFinishedListener listener =
new IabHelper.OnIabSetupFinishedListener() {

public void onIabSetupFinished(IabResult result) {
Log.d(TAG, "Setup finished.");
if ( !result.isSuccess()) {
Log.d(TAG, "Problem setting up In-app Billing: " + result);
}
if (requireUpdatePrefrences && mGotInventoryListener != null) {
mHelper.queryInventoryAsync(mGotInventoryListener);
}
}
};
mHelper.startSetup(listener);
return true;
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}


///////

public static void setPremiumState(boolean state) {
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("IS_PREMIUM", state);
editor.commit();
premiumState = state;
}

}



کلاس پرداخت

public class Payment extends Activity {

@Override
protected void onResume() {
G.currentActivity = this;
super.onResume();
}


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.pa);

G.prepareBazaarInAppBilling(false, null);
Button pay = (Button) findViewById(R.id.bt2);
pay.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {
if (isPackageInstalled("com.farsitel.bazaar")) {
// Bazar is installed
try {
G.mHelper.launchPurchaseFlow(Payment.this,
G.SKU_PREMIUM, 0, mPurchaseFinishedListener);
}
catch (Exception e) {
e.printStackTrace();
Toast.makeText(G.context, "مشکلی در پرداخت کافه بازار بوجود آمد لطفا بعدا امتحان کنید ",
Toast.LENGTH_SHORT).show();
}
}
else {
/// Bazar is not installed
//open Bazzar Home Page To Download It !
Toast.makeText(G.context,
"لطفا برنامه کافه بازار را بروی دستگاه گوشی نصب کنید ",
Toast.LENGTH_SHORT).show();
}

}
});
}

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

OnIabPurchaseFinishedListener mPurchaseFinishedListener =
new OnIabPurchaseFinishedListener() {

public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
if (result.isFailure()) {
Log.d(G.TAG, "Error purchasing: " + result);
Toast.makeText(G.context, "پرداخت انجام نشد لطفا مجددا سعی کنید", Toast.LENGTH_LONG).show();
//G.setPremiumState(false);
return;
}
else if (purchase.getSku().equals(G.SKU_PREMIUM)) {
G.setPremiumState(true);
Toast.makeText(G.context, " با تشکر نسخه کامل فعال شد یکبار برنامه را بسته دوباره اجرا کنید", Toast.LENGTH_LONG).show();
finish();
}
}
};


///////////////آیا بازار نصب است ؟/////////////////////////////////////

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();
}
return isAppInstalled;
}


///////////////////این هم کدی که باید آخراکتیویتی پرداخت باشه/////////////////
///////////////////////////////////////////////////////////////////////////////
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if ( !G.mHelper.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}


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

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

}


کلاس اسپلاش

public class SplashActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.sp);

G.HANDLER.postDelayed(new Runnable() {

@Override
public void run() {
Intent intent = new Intent(SplashActivity.this, ActivityMain.class);
SplashActivity.this.startActivity(intent);
SplashActivity.this.finish();
// overridePendingTransition(R.drawable.fadein, R.drawable.fadeout);
}
}, 2000);

QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {

@Override
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
if ( !result.isFailure()) {
boolean state = inventory.hasPurchase(G.SKU_PREMIUM);
Log.i(G.TAG, "Bazaar say isPremiumUser is : " + state);
G.setPremiumState(state);
}
//goToNextActivity();
}
};
G.prepareBazaarInAppBilling(true, mGotInventoryListener);
}

}


0 0
لطفا راهنمایی! (10 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
احمد  10 سال پیش
0 0

از اموزش مهندس کاشی زاده استفاده کنید   لینک

 

0 0
استفاده کردم هم از آموزش دوستان در انجمن و هم از فیلم آموزش جناب مهندس..برنامه به درست کار میکنه فقط تنها مشکلم بعد از ارتقا می باشد که دوباره به بازار یکبار طلاییه و دوباره به بازار ارجاع میده. (10 سال پیش)
+1 0
از نمونه پروژه آقای حسینی استفاده کنید (10 سال پیش)
0 0
پروژه جناب حسینی رو استفاده کردم اوکی بود تا خرید و ارتقا برنامه اما وقتی برنامه رو حذف میکنم و دوباره نصب میکنم نیاز به پرداخت..راهنمایی؟؟ (10 سال پیش)
+1 0
الان براتون نمونه کد خودم را میزارم (10 سال پیش)
0 0
ممنون.لطف میکنین (10 سال پیش)
پاسخ به سوال 
احمد  10 سال پیش
+1 0

class HelperIAP

 public class HelperIAP {

	public static IabHelper iabHelper;

	public static final String RSA = "شناسه دریافتی از بازار برای پرداخت";

	public static final String TAG = "LOG";

	public static Boolean issetup = false;

	public static void iapinit(Context context) {

		if (iabHelper == null) {
			try {

				iabHelper = new IabHelper(context, RSA);
				iabHelper
						.startSetup(new IabHelper.OnIabSetupFinishedListener() {
							public void onIabSetupFinished(IabResult result) {
								if (!result.isSuccess()) {
									Log.d(TAG,
											"Problem setting up In-app Billing: "
													+ result);
								} else {
									issetup = true;
								}
							}
						});
			} catch (Exception e) {
			}
		}
	}

	public static void IsUserPremium(final Context context,
			final IabHelper.QueryInventoryFinishedListener onQueryInventoryFinished) {

		new Thread(new Runnable() {

			@Override
			public void run() {
				Boolean listenerCall = false;
				do {
					if (iabHelper == null) {
						iapinit(context);
					}
					if (iabHelper != null && issetup) {
						if (onQueryInventoryFinished != null) {
						Main.handler.post(new Runnable() {
							@Override
							public void run() {
								iabHelper.queryInventoryAsync(onQueryInventoryFinished);
							}
						});
						listenerCall = true;
						}
					}

					try {
						Thread.sleep(500);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					
				} while (issetup && !listenerCall);
			}
		}).start();
	}
}

 

صفحه ای که بررسی انجام میشه

 private static final String SKU_PREMIUM = "perineumzekr";

	private boolean mIsPremium = false;

	private static final int RC_REQUEST = 0;

	public static Handler handler = new Handler();

 

 

 		final IabHelper.QueryInventoryFinishedListener onQueryInventoryFinished = new IabHelper.QueryInventoryFinishedListener() {
		    public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
		        Log.d(HelperIAP.TAG, "Query inventory finished.");
		        if (result.isFailure()) {
		            Log.d(HelperIAP.TAG, "Failed to query inventory: " + result);
		            return;
		        }
		        else {
		            Log.d(HelperIAP.TAG, "Query inventory was successful.");
		            // does the user have the premium upgrade?
		            mIsPremium = inventory.hasPurchase(SKU_PREMIUM);

		            // update UI accordingly

		            Log.d(HelperIAP.TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));
		        }

		        Log.d(HelperIAP.TAG, "Initial inventory query finished; enabling main UI.");
		    }
		};
		
		HelperIAP.IsUserPremium(this, onQueryInventoryFinished);
		
		final IabHelper.OnIabPurchaseFinishedListener onIabPurchaseFinished = new OnIabPurchaseFinishedListener() {
			
			@Override
			public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
		        if (result.isFailure()) {
		            Log.d(HelperIAP.TAG, "Error purchasing: " + result);
		            return;
		        }
		        else if (purchase.getSku().equals(SKU_PREMIUM)) {
		        	Toast.makeText(Main.this, "Golden user", Toast.LENGTH_LONG).show();
		            // give user access to premium content and update the UI
		        }
			}
		};
		

		btnbuy.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				try {
					if (HelperIAP.issetup) {
						HelperIAP.iabHelper.launchPurchaseFlow(Main.this, SKU_PREMIUM, RC_REQUEST, onIabPurchaseFinished, "payload-string");
					}
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}
		});
		

 

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

 

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

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

	    if (!HelperIAP.iabHelper.handleActivityResult(requestCode, resultCode, data)) {
	        super.onActivityResult(requestCode, resultCode, data);
	    } else {
	        Log.d(HelperIAP.TAG, "onActivityResult handled by IABUtil.");
	    }
	}
0 0
تشکر...شما توی نصب مجدد برنامه مشکل ندارین؟ (10 سال پیش)
0 0
نه فقط بازار باید نصب باشه و وارد حساب شده باشید الان تست کردم (10 سال پیش)
+1 0
نه فقط بازار باید نصب باشه و وارد حساب شده باشید الان تست کردم (10 سال پیش)
0 0
بله اگه بازار نصب نباشه کراش میکنه..... (10 سال پیش)
0 0
پس این کد بهتون جواب میده (10 سال پیش)

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