アプリにアプリ内課金 v3 を入れようとしています。
私はフォローしました:http://developer.android.com/google/play/billing/billing_integrate.html
アプリを開発者コンソールに 3 日間アップロードし、アプリ製品に設定しました。
Base64 でエンコードされた RSA 公開鍵とアプリ内製品 ID を入力します。
購入を開始すると、エラー メッセージが表示されます。RESPONSE_CODE を 5 と Google で確認すると
アプリ内課金リファレンス ( http://developer.android.com/google/play/billing/billing_reference.html#billing-codes )
アプリの設定に問題があるようです。
android.test.purchased のような Google テスト ID を試すと、良い結果が得られます。
これは私のコードです、多分私はここで何か間違ったことをしています:
some_id is my test in app product id.
protected void onCreate(Bundle savedInstanceState) {
..
..
..
Helper = new IabHelper(this, base64EncodedPublicKey);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
Toast.makeText(getApplicationContext(), "connection bad",Toast.LENGTH_SHORT).show();
}
Toast.makeText(getApplicationContext(), "connection good",Toast.LENGTH_SHORT).show();
}
});
mServiceConn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
mService = null;
}
@Override
public void onServiceConnected(ComponentName name,
IBinder service) {
mService = IInAppBillingService.Stub.asInterface(service);
}
};
bindService(new
Intent("com.android.vending.billing.InAppBillingService.BIND"),
mServiceConn, Context.BIND_AUTO_CREATE);
...
...
..
私の購入コード:
IabHelper.QueryInventoryFinishedListener
mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result, Inventory inventory)
{
if (result.isFailure()) {
// handle error
return;
}
String applePrice =
inventory.getSkuDetails("some_id").getPrice();
// update the UI
}
};
ArrayList<String> skuList = new ArrayList<String>();
skuList.add("some_id");
Bundle querySkus = new Bundle();
querySkus.putStringArrayList("ITEM_ID_LIST", skuList);
Bundle skuDetails = new Bundle();
try {
skuDetails = mService.getSkuDetails(3, getPackageName(), "inapp", querySkus);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String sku = "some_id";
Bundle buyIntentBundle = new Bundle();
try {
buyIntentBundle = mService.getBuyIntent(3, getPackageName(), sku, "inapp", "j");
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
try {
startIntentSenderForResult(pendingIntent.getIntentSender(),1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
} catch (SendIntentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Bundle ownedItems = mService.getPurchases(3, getPackageName(), "inapp", null);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}