Friday, April 3, 2015

Android 티스토어 인앱결제 간단 예제 소스 다운로드

티스토어 인앱을 구현하려면 티스토어 샘플로부터 구현을 하면 되는데 기존 티스토어 샘플은 Fragment로 되어 있어서 그것을 최소화 해보았다.

1. 먼저 다음과 같은 packege를 복사한다.
com.skplanet.dev.guide.helper
com.skplanet.dev.guide.pdu

2. libs이하의 폴더에 속한 so와 jar들을 복사한다.
3. 다음과 같이 샘플 코드를 작성한다. 인앱 리퀘스트는 제외하고 실제 인앱 구매만을 구현한다.

아래는 request를 만드는 함수이다. (이것도 기존 소스에서 복사해 온다.)
aid=애플리케이션 아이디
pid=프로덕트 아이디
나머지는 ""으로 해도 된다.

 private String makeRequest(String aid, String pid, String pname,
   String tid, String bpinfo) {
  ParamsBuilder pb = new ParamsBuilder();
  pb.put(ParamsBuilder.KEY_APPID, aid.toString().trim().toUpperCase())
    .put(ParamsBuilder.KEY_PID, pid.toString().trim());
  String tmp = pname.toString();
  if (!TextUtils.isEmpty(tmp)) {
   pb.put(ParamsBuilder.KEY_PNAME, tmp);
  } else {
   pb.put(ParamsBuilder.KEY_PNAME, "");
  }
  tmp = tid.toString();
  if (!TextUtils.isEmpty(tmp)) {
   pb.put(ParamsBuilder.KEY_TID, tmp);
  } else {
   pb.put(ParamsBuilder.KEY_TID, "");
  }
  tmp = bpinfo.toString();
  if (!TextUtils.isEmpty(tmp)) {
   pb.put(ParamsBuilder.KEY_BPINFO, tmp);
  } else {
   pb.put(ParamsBuilder.KEY_BPINFO, tmp);
  }
  return pb.build();
 }

실제 구매버튼의 onClick은 다음과 같이 구현한다.
그러면 티스토어 인앱 관련 웹액티비티가 뜬다음에 결제완료 코드를 callback으로 알려준다.

  payment.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    // String test="test";
    // Log.d("sktsample", test.toString());
    String parameter = makeRequest("OA006536xx", "09100086xx", "",
      "1234", "");
    Bundle req = mPlugin.sendPaymentRequest(parameter,
      new IapPlugin.RequestCallback() {
       @Override
       public void onResponse(IapResponse data) {
        if (data == null
          || data.getContentLength() <= 0) {
         Log.d(TAG,
           "onResponse() response data is null");
         return;
        }
        Response response = ConverterFactory
          .getConverter().fromJson(
            data.getContentToString());
        if (response == null) {
         // TODO invalid response data
         Log.d(TAG,
           "onResponse() invalid response data");
         return;
        }
        // TODO for logging
        StringBuffer sb = new StringBuffer(
          "onResponse() \n");
        sb.append("From:" + data.getContentToString())
          .append("\n")
          .append("To:" + response.toString());
        Log.d(TAG, sb.toString());
        // response.result.code
        if (!response.result.code.equals("0000")) {
         Log.d(TAG,
           "Failed to request to purchase a item");
         return;
        }
        // response.result.txid
        // response.result.receipt
        Log.d(TAG, response.toString());
       }
       @Override
       public void onError(String reqid, String errcode,
         String errmsg) {
        Log.d(TAG, "onError: " + errcode + " " + errmsg);
       }
      });
   }
  });

다운로드

No comments:

Post a Comment