انجمن سایت کلیدستان



خطا در پرداخت درون برنامه ای another async operation(refresh inventory) is in progreزمان کنونی: ۱۳۹۵/۰۹/۱۷، ۰۱:۰۴ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: parniaznet
آخرین ارسال: admin
پاسخ 2
بازدید 598

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
خطا در پرداخت درون برنامه ای another async operation(refresh inventory) is in progre

خطا در پرداخت درون برنامه ای another async operation(refresh inventory) is in progre

#1
وقت بخیر
من از کد های زیر برای پرداخت درون برنامه ای و چک کردن پرداخت سمت سرور استفاده می کنم :

کد پی‌اچ‌پی:
private database db;
    static final 
String TAG "";
    static final 
String SKU_PREMIUM "deser1";
    
boolean mIsPremium false;
    static final 
int RC_REQUEST =21111368 ;
    
IabHelper mHelper;
    private static final 
String TAG_SUCCESS "consumptionState";
    private static 
String url_all_products "http://eydkojaberim.ir/sajad/fall/barresi.php";
    
JSONParser jParser = new JSONParser();
    
JSONArray products null;
    
String order;
 
    @
Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.kharid);
        
db = new database(this);
        
db.open();
         
        
String base64EncodedPublicKey "MIHNMA0GCSqGSIb3DQEBAQUAA4G7ADCBtwKBrwDXKC8YG  l/T62dNzpumjYNQheGxo/cARIshxIGbuBsBWn9mkFeRrqnmZv3iPjNRkvedca7kmqM5g1bR  w6NU/qo2cyFd4Way1I7s/kfZCAp+1Hz2KWwyhG1SKS290nCbkf75T89IMjWE2Yaz/NSBrllLKKrYgUaOPejRRPd6iHvdPoSd/b3KxWs+6izaX0YqCR5DpmZ25BTcY2nUpKd+Kvsm48MzwDrPL0G  gXRseEH8CAwEAAQ==";
        
mHelper = new IabHelper(thisbase64EncodedPublicKey);
        
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)  ;
            }
        });
         
         
     
        
Button btn = (ButtonfindViewById(R.id.button1);
        
btn.setOnClickListener(new OnClickListener() {
             
            @
Override
            
public void onClick(View v) {
                
mHelper.launchPurchaseFlow(Kharid.thisSKU_PREMIUMRC_REQUESTmPurchaseFinishedListener"payload-string");
                 
            }
        });
    }
    
IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
        @
Override
        
public void onQueryInventoryFinished(IabResult resultInventory 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.");
        }
    };
 
    
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
        @
Override
        
public void onIabPurchaseFinished(IabResult resultPurchase purchase) {
            if (
result.isFailure()) {
                
Log.d(TAG"Error purchasing: " result);
                return;
            }
            else if (
purchase.getSku().equals(SKU_PREMIUM)) {
                
order purchase.getOrderId();
                new 
NetCheck().execute();
            }
        }
    };
 
    @
Override
    
protected void onActivityResult(int requestCodeint resultCodeIntent data) {
        
super.onActivityResult(requestCoderesultCodedata);
 
        
Log.d(TAG"onActivityResult(" requestCode "," resultCode "," data);
 
        
// Pass on the activity result to the helper for handling
        
if (!mHelper.handleActivityResult(requestCoderesultCodedata)) {
            
super.onActivityResult(requestCoderesultCodedata);
        } else {
            
Log.d(TAG"onActivityResult handled by IABUtil.");
        }
    }
 
    private class 
NetCheck extends AsyncTask<String,String,Boolean> {
         
        @
Override
        
protected void onPreExecute(){
            
super.onPreExecute();
        }
 
        @
Override
        
protected Boolean doInBackground(String... params) {
            
ConnectivityManager cm = (ConnectivityManagergetSystemService(Context.CONNECTIVITY_SERVICE);
            
NetworkInfo netInfo cm.getActiveNetworkInfo();
            if (
netInfo != null && netInfo.isConnected()) {
                try {
                    
URL url = new URL("http://www.google.com");
                    
HttpURLConnection urlc = (HttpURLConnectionurl.openConnection();
                    
urlc.setConnectTimeout(3000);
                    
urlc.connect();
                    if (
urlc.getResponseCode() == 200) {
                        return 
true;
                    }
                } catch (
MalformedURLException e1) {
                    
// TODO Auto-generated catch block
                    
e1.printStackTrace();
                } catch (
IOException e) {
                    
// TODO Auto-generated catch block
                    
e.printStackTrace();
                }
            }
            return 
false;
        }
         
        @
Override
        
protected void onPostExecute(Boolean th) {
             
            if(
th == true){
                new 
SaveProductDetails().execute();
            }
            else{
                
//namayeshe matn ke begim khata dad
            
}
        }
 
    }
    class 
SaveProductDetails extends AsyncTask<StringStringString> {
        
ProgressDialog pDialog;
        @
Override
        
protected void onPreExecute() {
            
super.onPreExecute();
             
pDialog = new ProgressDialog(Kharid.this);
             
pDialog.setMessage("در حال تکمیل فرایند خرید...");
             
pDialog.setIndeterminate(true);
             
pDialog.setCancelable(true);
             
pDialog.show();
        }
 
        @
Override
        
protected String doInBackground(String... args) {
 
            List<
NameValuePairparams = new ArrayList<NameValuePair>();
            
params.add(new BasicNameValuePair("package""com.fallrooz.srp"));
            
params.add(new BasicNameValuePair("product"SKU_PREMIUM));
            
params.add(new BasicNameValuePair("tokenid"order));
 
            
JSONObject json jParser.getJSONFromUrl(url_all_products,params);
 
            try {
                
int consumptionState json.getInt(TAG_SUCCESS);
                 
                if (
consumptionState == 1) {
                    
runOnUiThread(new Runnable() {
                        @
Override
                        
public void run() {
                            
Toast.makeText(Kharid.this"خرید موفق"Toast.LENGTH_SHORT).show();
                            
db.update_vip("1");
                            
Intent intent = new Intent(Kharid.thisMainActivity.class);
                               
startActivity(intent);
                                                    }
                    });
                } else {
                    
runOnUiThread(new Runnable() {
                        @
Override
                        
public void run() {
                            
Toast.makeText(Kharid.this"شما از لاکی پچر استفاده می کنید"Toast.LENGTH_SHORT).show();
 
                        }
                    });
                }
                 
            } catch (
JSONException e) {
                
e.printStackTrace();
            }
 
            return 
null;
        }
 
        @
Override
        
protected void onPostExecute(String file_url) {
            
pDialog.dismiss();
        }
    }


ولی وقتی رو دکمه خرید کلیک می کنم خطای زیر رو میده :

کد پی‌اچ‌پی:
05-21 23:04:06.277E/AndroidRuntime(4204): java.lang.IllegalStateExceptionCan't start async operation (launchPurchaseFlow) because another async operation(refresh inventory) is in progress.
05-21 23:04:06.277: E/AndroidRuntime(4204):     at com.util.IabHelper.flagStartAsync(IabHelper.java:8  22)
05-21 23:04:06.277: E/AndroidRuntime(4204):     at com.util.IabHelper.launchPurchaseFlow(IabHelper.ja  va:373)
05-21 23:04:06.277: E/AndroidRuntime(4204):     at com.util.IabHelper.launchPurchaseFlow(IabHelper.ja  va:338)
05-21 23:04:06.277: E/AndroidRuntime(4204):     at com.deser.srp.Kharid$4.onClick(Kharid.java:77)
05-21 23:04:06.277: E/AndroidRuntime(4204):     at android.view.View.performClick(View.java:4463)
05-21 23:04:06.277: E/AndroidRuntime(4204):     at android.view.View$PerformClick.run(View.java:18770  )
05-21 23:04:06.277: E/AndroidRuntime(4204):     at android.os.Handler.handleCallback(Handler.java:808  )
05-21 23:04:06.277: E/AndroidRuntime(4204):     at android.os.Handler.dispatchMessage(Handler.java:10  3)
05-21 23:04:06.277: E/AndroidRuntime(4204):     at android.os.Looper.loop(Looper.java:193)
05-21 23:04:06.277: E/AndroidRuntime(4204):     at android.app.ActivityThread.main(ActivityThread.jav  a:5333)
05-21 23:04:06.277: E/AndroidRuntime(4204):     at java.lang.reflect.Method.invokeNative(Native Method)
05-21 23:04:06.277: E/AndroidRuntime(4204):     at java.lang.reflect.Method.invoke(Method.java:515)
05-21 23:04:06.277: E/AndroidRuntime(4204):     at com.android.internal.os.ZygoteInit$MethodAndArgsCa  ller.run(ZygoteInit.java:829)
05-21 23:04:06.277: E/AndroidRuntime(4204):     at com.android.internal.os.ZygoteInit.main(ZygoteInit  .java:645)
05-21 23:04:06.277: E/AndroidRuntime(4204):     at dalvik.system.NativeStart.main(Native Method) 

کسی میدونه مشکل از چیه؟
پاسخ

خطا در پرداخت درون برنامه ای another async operation(refresh inventory) is in progre

#2
سلام.
لینک های زیر را ببینید :

http://stackoverflow.com/questions/15575...ync-operat

http://stackoverflow.com/questions/15628...urchaseflo

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)