1

このチュートリアルhttp://blog.blundell-apps.com/simple-inapp-billing-payment/に従って、アプリ内購入について学ぼうとしています

これまでの私のコードは次のとおりです。

public class main extends Activity{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.e("BillingService", "Starting");
        setContentView(R.layout.main);

        startService(new Intent(this, BillingService.class));
        BillingHelper.setCompletedHandler(mTransactionHandler);

    }

    ////////////////////////////////

    public Handler mTransactionHandler = new Handler(){
            public void handleMessage(android.os.Message msg) {

                Log.e("IN APP", "Transaction complete");
                Log.e("IN APP", "Transaction status: "+BillingHelper.latestPurchase.purchaseState);
                Log.e("IN APP", "Item purchased is: "+BillingHelper.latestPurchase.productId);

                if(BillingHelper.latestPurchase.isPurchased())
                {
                    showItem();
                }

            };

    };

    ////////////////////////////////

    public void BuyButtonClick(View v) {

        if(BillingHelper.isBillingSupported()){
            Log.e("IN APP","Trying to buy...");
            BillingHelper.requestPurchase(this, "android.test.purchased"); 
        } else {
            Log.e("IN APP","Can't purchase on this device");
        }

    }

    ////////////////////////////////////////////////

    private void showItem() {

        TextView tv1 = (TextView)findViewById(R.id.tv1);
        tv1.setText("PAID!");

    }

    ////////////////////////////////////////////////

    @Override
    protected void onDestroy() {
        BillingHelper.stopService();
        super.onDestroy();
    }

    ////////////////////////////////

}

すべて正常に動作しているようですが、アプリの起動時にアイテムが購入されたかどうかを確認する方法も必要です。BillingHelper.verifyPurchase(signedData, signature)を使用する可能性があると思いますが、そこにどのようなデータと署名を入れればよいでしょうか? それとも何か別の方法があるのでしょうか?

ありがとう!

4

1 に答える 1

0

restoreTransactionsを使用すると、アプリケーションがいつ起動するかを確認できます。管理対象製品またはサブスクリプションを使用したことがある場合は、ユーザーのすべての詳細を取得できるのはあなただけです。

管理されていない製品の場合、Googleによって維持される詳細はありません。

だからあなたの主な活動でこれを呼んでください

mBillingService = new BillingService();
mBillingService.setContext(this);
mBillingService.restoreTransactions();

ResponseHandlerクラスでこれを呼び出すと、purchaseResponseメソッドが1つあります。

purchaseResponse(final Context context,
        final PurchaseState purchaseState, final String productId,
        final String orderId, final long purchaseTime,
        final String developerPayload, final String purchaseToken) {
 }

すべての詳細が返されます。

その後、purchaseStateを確認できます

           if (purchaseState == PurchaseState.PURCHASED) {

            } else if (purchaseState == PurchaseState.REFUNDED) {

            } else if (purchaseState == PurchaseState.CANCELED) {

            }
于 2012-12-10T10:51:16.047 に答える