بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
کد لازم برای پرداخت درون برنامه مصرفی مثل خرید سکه تماما در یک Activity بدون نیاز به کلاس G
سلام دوستان. بالاخره تونستم با کش و قوس های فراوان!! البته برای منی که ادعای برنامه نویس بودن ندارم و مبتدی هستم! از جمع بندی صحبت های این تاپیک "صفر تا صد درون برنامه" به مجموعه کدهایی برسم که بدون نیاز به کلاس G و ساخت دیتابیس جداگونه و فقط در یک اکتیویتی، پرداخت درون برنامه مصرفی داشته باشم.
چون دغدغه 1 ماهه من بوده!! حیفم اومد در اختیار بقیه قرار ندم!!
شاید از نظر استانداردهای برنامه نویسی ایراداتی بش وارد باشه ولی برای 4 کلید مختلف طراحی کردم با شناسه محصول متفاوت. بدون ارور جواب داد. خدمت شما عزیزان ...
اگر بتونم به سوال دوستان در حد علم اندکی که دارم کمک کنم، دریغ نمی کنم ...
public class BuyNCoinsActivity extends Activity {
public OnIabPurchaseFinishedListener mPurchaseFinishedListenerN;
public IabHelper.OnConsumeFinishedListener mConsumeFinishedListenerN;
public static IabHelper mHelperN;
public static boolean setPremiumState = false;
public static boolean premiumState;
public static SharedPreferences preferences;
public static Context context;
static final String TAG = "";
public static String SKU_PREMIUMN = "NCoins"; //شناسه محصول مد نظر مثل خرید 500 سکه که در بازار تعریف کرده اید را اینجا وارد کنید.
public static final String rsa_key = ""; //کد rsa برنامه خود که از بازار دریافت کرده اید را در این قسمت وارد کنید.
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.preparebazaar_board);
context = getApplicationContext();
preferences = PreferenceManager.getDefaultSharedPreferences(context);
premiumState = preferences.getBoolean("IS_PREMIUM", false);
QueryInventoryFinishedListener mGotInventoryListenerN;
mGotInventoryListenerN = new IabHelper.QueryInventoryFinishedListener() {
@Override
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
if ( !result.isFailure()) {
boolean state = inventory.hasPurchase(SKU_PREMIUMN);
Log.i(TAG, "Bazaar say isPremiumUser is : " + state);
setPremiumState(state);
}
}
};
prepareBazaarInAppBillingN(true, mGotInventoryListenerN);
mConsumeFinishedListenerN = new IabHelper.OnConsumeFinishedListener() {
@Override
public void onConsumeFinished(Purchase purchase, IabResult result) {
// TODO Auto-generated method stub
if (result.isSuccess()) {
Toast.makeText(BuyNCoinsActivity.this,
"سکه ها با موفقیت مصرف شد", Toast.LENGTH_LONG).show();
} else {
// handle error
}
}
};
mPurchaseFinishedListenerN = new OnIabPurchaseFinishedListener() {
@Override
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
// نتیجه یک فییلور / خطا بوده ؟
if (result.isFailure()) {
Log.d(TAG, "Error purchasing: " + result);
Toast.makeText(context, "پرداخت انجام نشد", Toast.LENGTH_LONG).show();
BuyNCoinsActivity.this.finish();
return;
}
else if (purchase.getSku().equals(SKU_PREMIUMN)) {
setPremiumState(true);
Toast.makeText(context, "با تشکر از خرید شما :-)", Toast.LENGTH_SHORT).show();
mHelperN.consumeAsync(purchase, mConsumeFinishedListenerN);
}
}
};
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
try {
mHelperN.launchPurchaseFlow(BuyNCoinsActivity.this,
SKU_PREMIUMN, 1, mPurchaseFinishedListenerN);
}
catch (Exception e) {
e.printStackTrace();
Toast.makeText(context,
"متأسفانه مشکلی پیش آمده، لطفا از بازی خارج و دوباره وارد شوید.",
Toast.LENGTH_LONG).show();
}
}
}, 5000);
}
public static boolean prepareBazaarInAppBillingN(final boolean requireUpdatePrefrences,
final QueryInventoryFinishedListener mGotInventoryListener) {
try {
mHelperN = new IabHelper(context, rsa_key);
Log.d(TAG, "Starting setup.");
IabHelper.OnIabSetupFinishedListener listener =
new IabHelper.OnIabSetupFinishedListener() {
@Override
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) {
mHelperN.queryInventoryAsync(mGotInventoryListener);
}
}
};
mHelperN.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;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if ( !mHelperN.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}
catch (Exception e) {
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (mHelperN != null)
mHelperN.dispose();
mHelperN = null;
}
}
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .