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

مشکل با سیستم درون پرداختی بازار

Mir Unknown  7 سال پیش  6 سال پیش
0 0

سلام دوستان من با این کد درون پرداختی بازارو راه انداختم همه چیش خوب کار میکنه مشکلی که هستش اینه وقتی ی خرید میزنی دوباره رو همون بزنی بدون کم شدن هزینه خرید صورت میگیره پول از طرف کم نمیشه ولی خرید انجام میشه

من میخواهم محصولی که ی بار خرید شد دوباره هم خرید بشه

ی نگاه به این کد بندازید اگه ممکنه بگید مشکل از چیه و چکار کنم!

 
public class BalanceActivity extends ActivityBase {


private static final String TAG = "gapgram.inappbilling";
private static final String TOKEN = "gapgram.inappbilling";

static final String ITEM_SKU_1 = "networkpro.ifsoft.ru.iap1";

Button mBuy1Butto;
TextView mLabelCredits;

private Boolean loading = false;

IabHelper mHelper;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_balance);

String base64EncodedPublicKey = BILLING_KEY;

mHelper = new IabHelper(BalanceActivity.this, base64EncodedPublicKey);

mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {

public void onIabSetupFinished(IabResult result) {

if (!result.isSuccess()) {
// Oh noes, there was a problem.
complain("Problem setting up in-app billing: " + result);
return;

}

// Have we been disposed of in the meantime? If so, quit.
if (mHelper == null) return;

// IAB is fully set up. Now, let's get an inventory of stuff we own.
Log.d(TAG, "Setup successful. Querying inventory.");
}
});


if (savedInstanceState != null) {

loading = savedInstanceState.getBoolean("loading");

} else {

loading = false;
}


if (loading) {

showpDialog();
}

mLabelCredits = (TextView) findViewById(R.id.labelCredits);

mBuy1Button = (Button) findViewById(R.id.iap1_bazar_btn);




mBuy1Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

mHelper.launchPurchaseFlow(BalanceActivity.this, ITEM_SKU_1, 10001, mPurchaseFinishedListener, TOKEN);
}
});



update();
}

return true;
}

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {

public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);

// if we were disposed of in the meantime, quit.
if (mHelper == null) return;

if (result.isFailure()) {

// Handle error
complain("Error purchasing: " + result);
// setWaitScreen(false);
return;

}
if (!verifyDeveloperPayload(purchase)) {
complain("Error purchasing. Authenticity verification failed.");
//setWaitScreen(false);
return;
}
Log.d(TAG, "Purchase successful.");
if (purchase.getSku().equals(ITEM_SKU_1)) {

consumeItem_1();

App.getInstance().setBalance(App.getInstance().getBalance() + 40);
payment(40);

}
};

public void consumeItem_1() {

mHelper.queryInventoryAsync(mReceivedInventoryListener_1);

}

IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener_1 = new IabHelper.QueryInventoryFinishedListener() {

public void onQueryInventoryFinished(IabResult result, Inventory inventory) {

if (result.isFailure()) {

// Handle failure

} else {

mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU_1), mConsumeFinishedListener);
}
}
};


IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {

public void onConsumeFinished(Purchase purchase, IabResult result) {
Log.d(TAG, "Consumption finished. Purchase: " + purchase + ", result: " + result);

// if we were disposed of in the meantime, quit.
if (mHelper == null) return;

if (result.isSuccess()) {


Log.e("Consume", "Consume Finish");

} else {

// handle error

Log.e("Consume", "Consume Finish Error");
}
}
};

public void payment(final int cost) {

loading = true;

showpDialog();

CustomRequest jsonReq = new CustomRequest(Request.Method.POST, METHOD_BALANCE_MODIFY, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {

try {

if (!response.getBoolean("error")) {

if (response.has("balance")) {

App.getInstance().setBalance(response.getInt("balance"));
}

success();
}

} catch (JSONException e) {

e.printStackTrace();

} finally {

loading = false;

hidepDialog();

update();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {

loading = false;

hidepDialog();
}
}) {

@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("clientId", CLIENT_ID);
params.put("accountId", Long.toString(App.getInstance().getId()));
params.put("accessToken", App.getInstance().getAccessToken());
params.put("funds", Integer.toString(cost));

return params;
}
};

App.getInstance().addToRequestQueue(jsonReq);
}




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

if (requestCode == REQUEST_CODE) {

if (data == null) {

return;
}

} else {

if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {

super.onActivityResult(requestCode, resultCode, data);
}
}
}


public void update() {

mLabelCredits.setText(getString(R.string.label_credits) + " (" + Integer.toString(App.getInstance().getBalance()) + ")");
}

public void success() {

Toast.makeText(BalanceActivity.this, getString(R.string.msg_success_purchase), Toast.LENGTH_SHORT).show();

}

@Override
protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

outState.putBoolean("loading", loading);
}



@Override
protected void onDestroy() {

super.onDestroy();

hidepDialog();

if (mHelper != null) mHelper.dispose();
mHelper = null;
}

@Override protected void onResume() {

super.onResume();

update();
}



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

void alert(String message) {
AlertDialog.Builder bld = new AlertDialog.Builder(this);
bld.setMessage(message);
bld.setNeutralButton("OK", null);
Log.d(TAG, "Showing alert dialog: " + message);
bld.create().show();
}
}
+2 0
لطفا کد های اضافی را پاک کنید و بخشی که فکر میکنید خطا در آن است را قرار دهید و همچنین خطاهای سیستم را نیز درج نمایید (7 سال پیش)
0 0
دقیقا نمیدونم مشکل از کدوم قسمته تا جای که تونستم کد رو خلاصه کردم الان. ممنون میشم ی برسی بکنید (6 سال پیش)
 برای این سوال پاسخی وجود ندارد.

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