بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرداخت درون برنامه ای
نیاز به راهنمایی دارم(آموزش دوستان رو مطالعه کردم اما مشکلم حل نشد)
دوستان عذر میخوام بابت این موضوع تاپیک جدید زدم ولی برام مهم بود
بنده با توجه به آموزشهای دوستان در انجمن برنامه تستی پرداخت دوره برنامه ای رو ایجاد کردم..اما متاسفانه زمانیکه خرید انجام میدم.. دوباره پیغام میذاره نسخه کامل رو تهیه نمایید و ایندفعه وارد بازار نمیشه و پیغام میذاره پرداخت انجام نشد.دوباره سعی نمایید.
مبلغ 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 سال پیش
+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.");
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .