안녕하세요. 새내기 개발자입니다.
매일 안드로이드 펍을 보면서 실력을 늘려가고 있습니다.
감사합니다.
----------------------------------------------------------------
어플 -> 결제 -> 어플 -> 어플서버
이런식으로 인앱을 구현했습니다.
소스는 api3샘플을 그대로 가져다가 수정해서 사용했습니다.
어찌어찌해서 결제되어 넘어온값으로 서버에 등록까지 했습니다.
문제는
1.테스트중에 20초인가 넘어가니 타임아웃 글이 나오면서 종료 되더군요.
(결제는 이루어졌는데 어플은 아무 반응이 없습니다. 물론어플서버에도 등록이 안되었구요)
다시 결제 버튼누르니 아이템을 소유하고 있다고 안되더라구요
2. 4~5섯번결재하면 서버에 등록되는게2번정도....
(결제는4~5섯번 다이루어졌습니다.)
로그를 볼방법도 디버그를 할방법도 없고 너무 답답합니다.
샘플 소스코드 이해도 잘 안되고 orz
이틀동안 여기저기 안본것이 없을정도로 봤습니다.
도저히 제힘으로는 역부족이여서 도움을 청합니다.
혹시 경험이나 인앱만져본분계시면
가는방향이나 팁정도만 주셔도 대단히 감사합니다.
밑에는 제가 샘플을 조금수정한 소스입니다. 지저분해도 용서를 ;;;
구입개시
mHelper.launchPurchaseFlow(this, SKU_GAS, RC_REQUEST, mPurchaseFinishedListener, payload);
결제결과 받아오기
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
Log.e(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);
// Pass on the activity result to the helper for handling
if (!mHelper.handleActivityResult(requestCode, resultCode, data))
{
super.onActivityResult(requestCode, resultCode, data);
}
else
{
Log.e(TAG, "onActivityResult handled by IABUtil.");
}
}
결과확인?
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener()
{
public void onIabPurchaseFinished(IabResult result, Purchase purchase)
{
Log.e(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
if (result.isFailure())
{
complain("Error purchasing: " + result);
return;
}
if (!verifyDeveloperPayload(purchase))
{
complain("Error purchasing. Authenticity verification failed.");
return;
}
if (purchase.getSku().equals(SKU_GAS))
{
Log.e(TAG, "Consumption successful. Provisioning.");
// bought 1/4 tank of gas. So consume it.
Log.e(TAG, "Purchase is gas. Starting gas consumption.");
mHelper.consumeAsync(purchase, mConsumeFinishedListener);
}
}
};
서버에등록하는곳
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener()
{
public void onConsumeFinished(Purchase purchase, IabResult result)
{
Log.e(TAG, "Consumption finished. Purchase: " + purchase + ", result: " + result);
if (result.isSuccess())
{
Log.e(null, "getDeveloperPayload : " + purchase.getDeveloperPayload());
CoinMyAsyncTask async = new CoinMyAsyncTask();
if (SKU_GAS.equals(SKU_GAS200))
{
async.execute(str, SKU_COUNT1);
}
else if (SKU_GAS.equals(SKU_GAS500))
{
async.execute(str, SKU_COUNT3);
}
else if (SKU_GAS.equals(SKU_GAS800))
{
async.execute(str, SKU_COUNT5);
}
}
else
{
complain("Error while consuming: " + result);
}
Log.e(TAG, "End consumption flow.");
}
};
(공지사항읽었습니다.)