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


رتبه موضوع:
  • 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 - توسط parniaznet - ۱۳۹۴/۰۲/۳۱, ۱۱:۰۸ ب.ظ

پرش به انجمن:


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