PDA

View Full Version : خرید سکه



Amin-rz
یک شنبه 23 اسفند 1394, 09:58 صبح
سلام.من تو پروژه ام خرید انجام میدم ولی نمی دونم چطور باید مصرف محصول رو به بازار بفرستم.درست مثل خرید سکه که چندین بار میشه یه محصول رو خرید.:افسرده:
این کد صفحه خرید هست که کاملا کار می کنه.

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundExce ption;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;

import util.IabHelper;
import util.IabResult;
import util.Inventory;
import util.Purchase;

public class UpdateActivity extends Activity {

int update = 0;
public ProgressDialog dialog ;
Button btn1;
Button btn2;
Button btnComent;
SharedPreferences sp;
TextView tvtop;
Bundle input;
//Debug tag, for logging
static final String TAG = "eshghroman";
//SKUs for our products: the premium upgrade (non-consumable)
String SKU_PREMIUM = "mahsool";
//Does the user have the premium upgrade?
boolean mIsPremium = false;
//(arbitrary) request code for the purchase flow
static final int RC_REQUEST = 10001;
//The helper object
IabHelper mHelper;



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


// show loading dialog with ProgressDialog
dialog = new ProgressDialog(this);
dialog.setCancelable(false);
dialog.setInverseBackgroundForced(false);




sp = PreferenceManager.getDefaultSharedPreferences(this );



if(!isPackageInstalled("com.farsitel.bazaar", UpdateActivity.this)){
toast("نرم افزار بازار هنوز نصب نشده است");
}
else{
dialog.setMessage("بررسی سبد خرید");
dialog.show();
String base64EncodedPublicKey = "MIHNMA0GCSqGSIb3DQEBAQUAA4G7ADCBtwKBrwCwxkpI7w1n15 aEvHNG5HOEVKLIJEWur2e3jHkjL5e2OgA0DYX/BbVtM3E4dpXMd89sSUtHwa3jiQ6TyZYO6sHb0okJKjw08R+Hyx j9ghvMd+5X4vutoyhZeT94rmdF+6XmzghxdcDocKbG0BdoHY7t tFyz6OohqAz6HUlnYdGuA5L+sDbJBywr7zkFvNtJa561DmpXdm +s+W8fIM/xv7ErED2BoCO68cQutn+fdHRyzoKjECAwEAAQ==";
// You can find it in your Bazaar console, in the Dealers section.
// It is recommended to add more security than just pasting it in your source code;
mHelper = new IabHelper(this, base64EncodedPublicKey);


Log.d(TAG, "Starting setup.");
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
Log.d(TAG, "Setup finished.");

if (!result.isSuccess()) {
toast("وارد اکانت حساب کاربری خود در بازار شوید."+"\n"+"یا اتصال به اینترنت را بررسی کنید.");

// Oh noes, there was a problem.
Log.d(TAG, "Problem setting up In-app Billing: " + result);
}
// Hooray, IAB is fully set up!
mHelper.queryInventoryAsync(mGotInventoryListener) ;

}

@Override
public void onIabSetupFinished1(IabResult result) {
// TODO Auto-generated method stub

}


});




}





}






//با آغاز اکتیویتی کد زیر اجرا میشود که برای جستجو premium بودن میباشد.
//اگر کاربر premium باشد دیالوگ loading مخفی میشه dialog.hide() متد UpdateUi() اجرا میشه و محتوای این متد را در باتن قرار میده.
//اگر کاربر premium نباشه هم منتظر لمس کردن کاربر بر روی دکمه میشه که متد onOnlineUpgradeAppButtonClicked را فراخوانی کند.
IabHelper.QueryInventoryFinishedListener mGotInventoryListener = 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);
dialog.hide();
toast("خطا در ارتباط با سرور."+"\n"+"وارد اکانت حساب کاربری خود در بازار شوید."+"\n"+"یا اتصال به اینترنت را بررسی کنید.");
return;
}
else {



Log.d(TAG, "Query inventory was successful.");
// does the user have the premium upgrade?
mIsPremium = inventory.hasPurchase(SKU_PREMIUM);

// update UI accordingly

Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));
}
dialog.hide();
updateUi();
Log.d(TAG, "Initial inventory query finished; enabling main UI.");

}

};



@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.");
}

}

boolean verifyDeveloperPayload(Purchase p) {
String payload = p.getDeveloperPayload();

return true;
}

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
if (result.isFailure()) {
toast("وارد اکانت حساب کاربری خود در بازار شوید."+"\n"+"یا اتصال به اینترنت را بررسی کنید.");
Log.d(TAG, "Error purchasing: " + result);
return;
}
if (!verifyDeveloperPayload(purchase)) {
toast("وارد اکانت حساب کاربری خود در بازار شوید."+"\n"+"یا اتصال به اینترنت را بررسی کنید.");
complain("Error purchasing. Authenticity verification failed.");
return;
}

Log.d(TAG, "Purchase successful.");

if (purchase.getSku().equals(SKU_PREMIUM)) {
Log.d(TAG, "Purchase is premium upgrade. Congratulating user.");
mIsPremium = true;
updateUi();
toast("با تشکر از خرید شما");


}
}
};

@Override
public void onDestroy() {
super.onDestroy();

Log.d(TAG, "Destroying helper.");
if (mHelper != null) mHelper.dispose();
mHelper = null;
}



// اگر کاربر پریمیوم باشد دستورات آپدیت را انجام میدهد در غیر اینصورت به صفحه خرید هدایت می شود.
public void updateUi() {

if (mIsPremium) {

Editor e = sp.edit();
e.putInt("up", 1);
e.commit();

toast("شما کاربر ویژه هستید");
toast("نرم افزار را ریستارت کنید");

finish();
}

else
{

toast("نرم افزار خریداری نشده است");

}
}






void complain(String message) {
Log.e(TAG, "**** testbilling Error: " + message);
}





public static boolean isPackageInstalled(String packagename,Context context) {
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
return true;}
catch (NameNotFoundException e) {
return false;}
}

public void onOnlineUpgradeAppButtonClicked(View arg0) {



if(!isPackageInstalled("com.farsitel.bazaar", UpdateActivity.this)){
toast("نرم افزار بازار هنوز نصب نشده است");
}
else{

Log.d(TAG, "Upgrade button clicked; launching purchase flow for upgrade.");

/* TODO: for security, generate your payload here for verification. See the comments on
* verifyDeveloperPayload() for more info. Since this is a SAMPLE, we just use
* an empty string, but on a production app you should carefully generate this. */

float random1 =(int) (Math.random()*(999999999));
float random2 =(int) (Math.random()*(999999999));
float random3 =(int) (Math.random()*(999999999));
float random4 =(int) (Math.random()*(999999999));
float random5 =(int) (Math.random()*(999999999));
float random6 =(int) (Math.random()*(999999999));
float random7 =(int) (Math.random()*(999999999));
float random8 =(int) (Math.random()*(999999999));
float random9 =(int) (Math.random()*(999999999));

String payload = random1+"grfgfdg"+random2+"vjkhjk"+random3+"sefhyi"+random4+"4254gfh"+random5+"75fsd"+random6+"wda54"+random7+"we42"+random8+"er4345fv"+random9+"cdgdf5";

mHelper.launchPurchaseFlow(UpdateActivity.this, SKU_PREMIUM, RC_REQUEST,
mPurchaseFinishedListener, payload);



}


}




public void toast(String string){


LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast,(ViewGroup) findViewById(R.id.textViewtoast));
TextView tvtoast = (TextView) layout.findViewById(R.id.textViewtoast);
tvtoast.setText(string);

Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.BOTTOM, 0, 55);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

}




private static long back_pressed = 0L;
@Override
public void onBackPressed()
{
finish();
}




public static boolean isIntentAvailable(final Context context, final Intent intent) {

final PackageManager packageManager = context.getPackageManager();

List<ResolveInfo> list =

packageManager.queryIntentActivities(intent,

PackageManager.MATCH_DEFAULT_ONLY);

return list.size() > 0;

}




}