2016-03-25 14 views
0

私のアンドロイドアプリにはアプリの購入オプションがあり、フルバージョンのロックを解除することができます。アンドロイドのアプリの購入

これは問題なく動作します。 しかし、顧客から数日前にフルバージョンのロックを解除したと言われました。 今、彼はデバイス(同じGoogleアカウント)を変更し、彼はアプリの購入で彼を復元したいと思います。

私のテスト段階で私は私の前にこの購入をするかどうか私の "購入ボタン"とGoogleサーバーが私に言うことができます。

が、顧客はどこ私のミスですか?

(私は最後の注文をキャンセル)彼が二度目のために今のアプリのオプションでこれを購入し、これは権利ではないことを、私に言いましたか

FullVersion活動

public class FullVersion extends AppCompatActivity implements IabBroadcastListener { 

    Intent intent = null; 
    boolean mIsPremium = false; 
    static final String SKU_PREMIUM = "IAP-NAME"; 
    static final int RC_REQUEST = 10001; 

    IabHelper mHelper; 
    IabBroadcastReceiver mBroadcastReceiver; 

    Button BuyFullVersion; 


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

     BuyFullVersion = (Button) findViewById(R.id.BuyFullVersion); 


     BuyFullVersion.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String payload = ""; 
       mHelper.launchPurchaseFlow(FullVersion.this, SKU_PREMIUM, RC_REQUEST, mPurchaseFinishedListener, payload); 
      } 
     }); 





     String base64EncodedPublicKey = "XXXXXXXXX"; 

     mHelper = new IabHelper(this, base64EncodedPublicKey); 
     mHelper.enableDebugLogging(true); 
     mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { 
      public void onIabSetupFinished(IabResult result) { 

       if (!result.isSuccess()) { 
        // GOOGLE ACCOUNT MISSING 
        return; 
       } 

       if (mHelper == null) return; 
       mBroadcastReceiver = new IabBroadcastReceiver(FullVersion.this); 
       IntentFilter broadcastFilter = new IntentFilter(IabBroadcastReceiver.ACTION); 
       registerReceiver(mBroadcastReceiver, broadcastFilter); 
       mHelper.queryInventoryAsync(mGotInventoryListener); 
      } 
     }); 



    } 







    IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() { 
     public void onQueryInventoryFinished(IabResult result, Inventory inventory) { 

      if (mHelper == null) return; 

      if (result.isFailure()) { 
       Log.e("-->","Failed to query inventory: " + result); 
       return; 
      } 

      if (result.isFailure()) { 
       Log.e("-->", "ERROR"); 
      } 
      else { 
       if (inventory.hasPurchase(SKU_PREMIUM) == true) { 
        // SET SHARED PREFERENCES BOOLEAN "FULLVERSION" = TRUE 
       } 
      } 


     Purchase premiumPurchase = inventory.getPurchase(SKU_PREMIUM); 
     mIsPremium = (premiumPurchase != null && verifyDeveloperPayload(premiumPurchase)); 
     } 
    }; 


    @Override 
    public void receivedBroadcast() { 
     mHelper.queryInventoryAsync(mGotInventoryListener); 
    } 


    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (mHelper == null) return; 

     if (!mHelper.handleActivityResult(requestCode, resultCode, data)) { 
      super.onActivityResult(requestCode, resultCode, data); 
     } 
    } 

    boolean verifyDeveloperPayload(Purchase p) { 
     return true; 
    } 



    IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { 
     public void onIabPurchaseFinished(IabResult result, Purchase purchase) { 

      if (mHelper == null) { 
       return; 
      } 

      if (result.isFailure()) { 
       Log.e("-->","Error purchasing: " + result); 
       return; 
      } 


      if (purchase.getSku().equals(SKU_PREMIUM)) { 
       mHelper.consumeAsync(purchase, mConsumeFinishedListener); 
      } 




      if (!verifyDeveloperPayload(purchase)) { 
       Log.e("-->","Error purchasing. Authenticity verification failed."); 
       return; 
      } 
     } 
    }; 


    IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() { 
     public void onConsumeFinished(Purchase purchase, IabResult result) { 

      if (mHelper == null) return; 

      if (result.isSuccess()) { 
       // SET SHARED PREFERENCES BOOLEAN "FULLVERSION" = TRUE 
      } else { 
       Log.e("-->","Error while consuming: " + result); 
      } 
     } 
    }; 


} 

答えて

0

打ち上げ購入は、このユーザが既に購入またはない... とそれに応じてあなたがそれを管理できるかどうかをチェックすることができます流れ前に。

public void AlreadyPurchase() 
{ 

    try { 

     alreadyPurchasedString=mHelper.getAllPurchases().toString(); 
     Log.d(TAG+ "Purchases: ",""+alreadyPurchasedString); 
     JSONArray array = new JSONArray(alreadyPurchasedString); 
     if(array.length() > 0) 
     { 
      for (int i = 0; i < array.length(); i++) { 
       JSONObject row = array.getJSONObject(i);  
       String productId=row.getString("productId"); //this will get the product id's that has been purchased. 
       if(productId.equals("YOUR SKU")) 
       { 
        mPrefs.editPrefs(); 
        mPrefs.putBoolean(PrefsManager.KEY_FULL_VERSION, true); 
        mPrefs.commitPrefs(); 
        Log.d(TAG +"To be restored:", " PRODUCT ID's "+productId); 
       } 

      } 
     } 
     else 
     { 
      alert("You have not any in app purchase earlier"); 
     } 
    } 
    catch (RemoteException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 




} 
+0

私のポスト1のコードをもう一度テストします。私は私のGoogleアカウントで私をログインし、 "購入"(プロモーションコード)を作った。フルバージョンはロックされていません。私はデバイスを切り替え、同じGoogleアカウントでログインし、自分のアプリケーションをダウンロードして開きます。フルバージョンはまだアンロックされていません。私はフルバージョン活動を開くと、私は直接 "完全なバージョンが復元されました"というアラートを取得します。この警告はコード部分にありますif(inventory.hasPurchase(SKU_PREMIUM)== true){ // SET SHARED PREFERENCES BOOLEAN "FULLVERSION "= TRUE} '私のコードは正しく動作すると思います。顧客は私に冗談を言うのだろうか、それとも別の問題があるのだろうか? – Stack108