اتفاقا وقتی دیدم این مشکل رو دارم اولین کاری که کردم این بود که پروژه ای که توی github گذاشتی رو یه نگاه کردم ولی چیزه خاصی به ذهنم نرسید فقط یه قسمت هست که payload string می خواد نمی دونم چیه؟
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
کرش کردن نرم افزار هنگام کار با پرداخت درون برنامه ای
مدیریت گفتگو
آخرین تغییر: 12 سال پیش
سلام خدمت دوستای گلم
من پرداخت درون برنامه ای بازار رو توی برنامم قرار دادم و تستش کردم همه چیش درست کار می کرد فقط یه مشکل داشت اونم اینکه وقتی یه بار به سرور های بازار متصل میشیم اگر کنسل کنیم و دوباره بخوایم برای خرید به سرور وصل شیم نرم افزار کرش می کنه و از برنامه خارج میشه
ممنون میشم اگه کسی می دونه مشکل چیه جوابم رو بده :)
پاسخها 2
پروژه منو امتحان کن ببین همین مشکل را داره :
نظرات
یه رشته string که برای امنیت بیشتر همین چیزا .... خود بازار هم نمیدونه چیه
پس پروژه من کرش نمیشه ولی برای شما کرش میشه؟ کد هاتو میتونی برازی یه نگاهی بندازیم
کد هارو گذاشتم اگه زحمتی نیست یه نگاه بنداز ببین مشکلش رو متوجه میشی ؟ ممنون از توجهت :)
من واسه preload ایمیل زدم ، خودشونم نمیدونن ! ، گفتن "از اسناد گوگل استفاده کنید ، پرداخت درون برنامه ای بازار بر اساس گوگل پلی نوشته شده" من :/ دیوار :| همسایه بغلی مون :)
عجب !!!!! حالا خوبه به گوگلم ایمیل بدیم اونم بگه نمی دونم از اول توش بوده ما هم تغییرش ندادیم :)
خیلی از مواردش اینجوری بود ! ، اصلا خیلی از مواردش تو بازار پیاده نشده ، ولی اگه پست نکنی ، کرش میکنه ! ، کلا خیلی مسخرست ، باید یه سر به درون پرداخت مایکت هم بزنم !
اینم کله کد های پروژه
کارکردش هم به این صورته که یه textview داره که وضعیت اولش غیرفعاله و یه button
وقتی روی button کلیک میشه به صفحه ی بازار واسه خرید میره .
package ir.colbeh.test.peyment;
import util.IabHelper;
import util.IabResult;
import util.Inventory;
import util.Purchase;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
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;
public class PeymentActivity extends Activity {
Button btnActivate;
Button btnPeyment;
TextView txtStatus;
static final String TAG = "peyment";
static final String SKU_PREMIUM = "test1";
boolean mIsPremium = false;
static final int RC_REQUEST = 0;
IabHelper mHelper;
String base64EncodedPublicKey = "RSA-Code";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
G.curentActivity = this;
btnActivate = (Button) findViewById(R.id.btnActivate);
btnPeyment = (Button) findViewById(R.id.btnPeyment);
txtStatus = (TextView) findViewById(R.id.txtStatus);
final IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
@Override
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.");
// does the user have the premium upgrade?
mIsPremium = inventory.hasPurchase(SKU_PREMIUM);
// update UI accordingly
Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));
}
Log.d(TAG, "Initial inventory query finished; enabling main UI.");
}
};
final IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
@Override
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
if (result.isFailure()) {
Log.d(TAG, "Error purchasing: " + result);
return;
}
else if (purchase.getSku().equals(SKU_PREMIUM)) {
txtStatus.setText("وضعیت فعال");
Toast.makeText(getApplicationContext(), purchase.getDeveloperPayload(), Toast.LENGTH_LONG).show();
}
}
};
btnPeyment.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mHelper.launchPurchaseFlow(G.curentActivity, SKU_PREMIUM, RC_REQUEST, mPurchaseFinishedListener, "payload-string");
}
});
mHelper = new IabHelper(this, base64EncodedPublicKey);
Log.d(TAG, "Starting setup.");
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
@Override
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(mGotInventoryListener);
}
});
}
@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.");
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (mHelper != null)
mHelper.dispose();
mHelper = null;
}
}
نظرات
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات