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