개발도구

원스토어 개발자센터용 API나 SDK는 어디서 다운로드 받을 수 있나요?

  • 개발도구 에서 SDK 다운로드 및 API 목록을 확인하실 수 있습니다.

Android API 변경으로 앱의 기능이 일부가 작동하지 않을 수도 있다고 합니다. 확인할 방법이 있나요?

  • 원스토어 개발자센터에서는 새로운 OS Version의 단말이 출시하기 전에 판매회원님의 상품이 변경된 OS Version, API level 변경에 동작 이상이 발생하는지 여부를 한번 더 검증 후, 문제가 없는 상품이 사용자들에게 보여질 수 있도록 검증(QA)을 확대, 강화했습니다.

  • 또한 판매회원이 직접 OS Version을 선택해서 수정할 수 있습니다. 자세한 내용은 상품 등록 가이드를 참고하시기 바랍니다.

원스토어의 상품에 업데이트가 존재하는지 확인할 수 있는 방법이 있는지 알고싶습니다.

  • 업데이트 연동가이드는 현재 원스토어 Client가 설치된 여부 확인 및 상세 페이지로 이동만 가이드 하고 있습니다.

  • 업데이트 사항의 존재 유무 여부에 대한 확인은 별도로 제공하지 않고 있지만 추후 제공 할 수 있도록 검토 중입니다.

Android Debug key Signing 이라면서 APK 업로드가 안됩니다.

  • 일반적인 개발툴(Eclipse, Android Studio)에서는 Android SDK를 통해서 애플리케이션을 실행할 때마다 자동으로 디버그 서명을 만들고,

  • 이 서명은 Application이 사용될 때마다 서명되지만, Android 상품을 원스토어 개발자센터에 등록 하여 판매 하고자할 경우 배포전 개인 인증서키를 이용하여 Application Signing을 해주어야 합니다.

  • 기본적으로 Android Build 시 Debug키나 Signing을 하지 않을 경우, 업데이트시 설치가 되지 않거나, 유효기간 만료로 배포가 되지 않을 수 있습니다. 개인키로 Signing 후 패키징을 진행하여 상품 PKG 진행 부탁 드립니다.

  • 개인 인증서 목적 및 효용

    • 개발자 자신이 개발한 Application임을 사용자에게 알리고, 하나의 인증서로 관리하기 위함

    • Contents 업그레이드 간편화

    • 여러 Application을 하나의 프로세스로 실행

코드, 데이터 공유

Signing은 개발자가 인증하는 Application임을 서명을 통해서 알리는데 목적이 있으며, 이를 위해서 개인 키를 포함하는 암호화된 서명 파일이 있는 keystore가 필요하고, 이를 JDK에서 제공하는 jarsigner 로 공개키로 서명하게 됩니다. 보다 자세한 내용은 여기서 확인하시기 바랍니다.

keystore 생성 / APK파일 생성 및 서명하는 방법

  • Android Application 개발 및 Build 후, 정상 실행 및 동작을 확인 하여, Signing 작업을 진행 합니다. 이후 개인키를 이용하여, 마지막 Signing 작업은 진행 해주시면 됩니다.

  • 신규 개인키를 생성하여, Signing 적용하는 방법

    • Eclipse > Open Project(프로젝트 생성, 개발) > Run > Run

    • File > Export > Android > Export Android Application

    • Browse > Select Android Project

    • Create new keystore > Input Location,Password,Confirm(저장할 인증키 위치 및 비밀번호 설정)

    • Input Alias,Password,Confirm,Validity(years), First and Last Name, Count Code(다른 입력사항의 경우 선택)

    • 저장할 APK 파일 위치 설정(Browse > 저장할 공간 설정) > Finish(완료)

  • 이미 발급 된 개인키를 이용하여, Signing 적용하는 방법

    • Eclipse > Export > Android > Export Android Application

    • Browse > Select Android Project

    • Use existing keystore , Input password(신규 생성시 입력한 keystore비밀번호)

    • Use existing key, Input password (신규 생성시 입력한 alias비밀번호)

    • 저장할 APK 파일 위치 설정(Browse > 저장할 공간 설정) > Finish(완료)

  • JDK를 이용하여 개인키를 생성하여, Signing 적용하는 방법

    • 명령어 프롬프트진입(PC 시작 > 실행 > CMD 진입)

    • 명령어 입력 key생성 : 명령어 keytool을 이용하여 개인키 생성

      Ex) keytool -genkey -v –keystore tstore.mykey -alias mytstore -keyalg RSA -validity 10000 keytool : key 생성 명령어, keystore : key 생성 이름, alias : 가명, 가칭 이름. Keyalg : 알고르즘 validity : 기간

검증(QA)과정에서 특정 해상도에서 오류가 발생한다고 합니다.

  • 기본적으로 원스토어 개발자센터에 올라오는 상품은 Android 다자인 가이드라인에 따라서 작성하는 것을 권장합니다.

  • 다양한 해상도와 스크린(LCD)에 대응하기 위한 반응형 레이아웃(flexible layouts) 개발로 권장 드립니다.

Android 4.0(Ice Cream Sandwich) 단말에서 호환성 문제로 검증 반려가 됐습니다.

  • 일부 상품이 Ice Cream Sandwich OS(이하 ICS) 환경에서는 특정 오류 문구(“Application명”이 중지되었습니다.)를 출력하며 비정상 종료되는 현상이 검증과정에서 발생하고 있습니다. 그 원인과 대응 방법를 참고하시기 바랍니다.

    • 원인: GC 의 예외 처리가 엄격화 됨에 따라 어플리케이션 실행에 영향을 줄 수 있음

      • GC관련 일반적인 오류 항목

        • Native 영역에서 Java 객체를 저장할 때 JNI로 들어오는 모든 객체는 local reference이므로 해당 함수를 벗어나면 메모리가 해제됩니다. 따라서 외부에서 지속적으로 참조할 필요가 있는 객체는 global reference로 선언하여 관리해야 합니다.

        • FindClass의 반환 값을 global reference로 사용하고자 할 때 지속적으로 참조할 필요가 있는 값인 경우 NewGlobalRef로 변경하여 저장해야 합니다.

        • JNIEnv를 저장하여 사용할 경우 JNIEnv는 다른 thread context에서 사용할 수 없습니다.

    • 해결 가이드

      • Java Exception, JNI 오류 메시지 확인(JNI ERROR, JNI WARNING) 후 수정

      • CheckJNI 툴 활용

      • JNI 호환 모드 해제 후 디버깅

        • manifest에서 targetSdkVersion을 14(Ice Cream Sandwich)로 설정.

위 분석 내용은 원스토어 개발자센터 내 판매 중인 상품에 대하여 임의 상품을 선정하여 ICS 환경에서 테스트 및 분석 결과를 바탕으로 작성되었습니다. ICS 지원 상품 개발 진행 시 참고하시어 상품 개발 및 판매에 도움이 되셨으면 합니다.

원스토어 In-App Purchase

  • [API V5] 인앱결제 테스트 시 '비정상 앱에서 결제가 요청되었습니다.'는 메시지가 나오고 결제 진행이 안됩니다.

    • 해당 이슈는 상용 검증 환경 또는 상용 환경에서 발생되는 이슈 입니다. 다음의 내용 확인 부탁드립니다.

      • 앱 개발 중인 경우

        • 개발 중인 앱의 경우, 상용 검증 환경에서 개발하시는 것 보다, 개발자 모드로 전환하여 개발을 진행 하는 것이 좋습니다.

        • 개발자 모드로 전환은 아래 가이드 링크를 확인 하시고 진행 하시면 됩니다, Guide 링크

      • 개발 완료 후, 상용 검증을 진행 하고 싶을 경우

        • 개발자 모드에서 개발을 완료하고 상용 환경에서 확인을 해보고 싶을 경우, 다음의 내용 대로 진행 하시면 됩니다.

        • 가. 개발 완료 된 APK를 배포용 signing key 이용하여 signing 하여 개발자 센터에 등록

        • 나. 다음의 가이드에 따라 테스트 용도의 아이디를 상용 테스트로 변환, Guide 링크

        • 다. 동일한 signing key로 signing 된 apk를 이용하여 상용 테스트

        • 라. 결제 취소 하기

      • APK가 개발자 센터에 등록되어 있는 상태에서 상용 결제 불가한 경우

        • 결제 테스트로 이용한 APK의 signing key가 원스토어 개발자 센터에 등록한 apk와 동일한지 확인

        • 동일 하지 않으면 동일한 key로 signing, 동일한 경우 이슈가 발생하는 apk와 test case를 개발자 센터를 통해 전달 부탁드립니다.

[API V5] 기존에 원스토어에서 판매 중이던 API V4로 개발된 앱을 API V5로 업데이트 할 수 있나요?

  • 원스토어 인앱결제 API V5(SDK V17)는 이전 버전과 전혀 다른 구조로 설계되었기 때문에 하위 호환성이 없습니다. 따라서, 인앱결제 API V5(SDK V17)는 신규 상품을 등록할 경우에만 적용 가능합니다.

  • 현재 판매하고 있는 상품이 API V4(SDK V16)를 적용한 경우, 해당 인앱버전으로 계속 상품을 업데이트하고 서비스하시면 됩니다.

[API V5] 기존 API V4 (IAP SDK V16)에서는 전자영수증 검증 기능이 있었는데요, API V5에서는 이 기능을 지원하지 않는 것인가요?

  • API V5 (IAP SDK V17)부터는 더 이상 전자영수증을 사용하지 않으며, API V5 기반 앱에서 발생한 결제에 대해서 API V4로 조회가 불가능합니다. 하위 호환성을 제공하지 않으며, API V5를 신규 적용한 앱을 출시하는 경우 서버 API 중 구매이력 조회나, 단말 API 중 미소비 상품조회 API를 이용하여 구현하면 됩니다.

  • 원스토어는 인앱결제 API V4(SDK V16)에 대한 결제 서비스도 지속적으로 제공합니다.

[API V5] 원스토어 앱을 로그인하지 않은 상태에서 launchLoginFlowAsync를 호출하면 onErrorSecurityException이 발생합니다.

  • 원스토어 서비스의 보안 로직에 의해 접근이 허가되지 않았습니다. 최신 원스토어 서비스(6.064 이상)는 이 문제를 해결하였으니, 원스토어 서비스를 최신 버전으로 업데이트 하세요.

[API V5] onErrorRemoteException 에러는 어떤 상황에서 발생하나요?

  • onErrorRemoteException 은 원스토어 서비스와 binding 연결을 하지 않은 상태에서 API를 호출할 경우 발셍됩니다. 해결을 위해 아래 두 가지를 확인해야 합니다.

    • 원스토어 서비스가 정상 동작 하는지 확인

      • 원스토어 앱에서 상품 구매 시 정상적으로 결제창이 열리는지 확인합니다. (결제 할 필요는 없음)

    • PurchaseClient 라이프 사이클 확인

      • 원스토어가 제공한 샘플 중 LuckyActivity.java에 initHelper 라는 함수가 있습니다.

      • 해당 코드를 보면 mPurchaseclient.connect를 호출하여 원스토어 서비스와 연결하는데, isBillingSupportedAsync API 사용 전에 해당 연결하는 작업을 했는지 확인이 필요합니다. 했더라도 API 호출 전에, mPurchaseClient.terminate(); 가 호출되는 case가 없는지 확인해 봅니다. terminate의 경우, 원스토어 서비스와 바인딩을 명시적으로 끊어버리기 때문입니다.

        mPurchaseClient = new PurchaseClient(this, AppSecurity.getPublicKey());
        ~/~/ 원스토어 서비스로 인앱결제를 위한 서비스 바인딩을 요청합니다.
        mPurchaseClient.connect(mServiceConnectionListener);

[API V5] API V4에서는 개발용 모드, 상용 모드로 접속하기 위해서 접속모드를 명시 후 앱을 빌드하여 테스트 했습니다. API V5에서 개발용 모드, 상용 모드는 어떻게 설정하나요?

  • API V5에서는 테스트를 위해 별도 모드 설정 및 빌드를 할 필요가 없습니다. 원스토어 개발자센터의 해당 앱에 테스트 ID를 등록하고, 테스트 모드를 설정할 수 있습니다. 자세한 내용은 개발자가이드 내, '결제 테스트 및 보안' 항목을 참고하시기 바랍니다.

[API V5] 결제 테스트 시, "Service has not allowed."라는 메시지가 나오고 진행이 안됩니다. 무엇이 문제인가요?

  • API V4(SDK V16)용 라이브러리 적용 시 노출되는 에러 입니다. API V5(SDK V17)을 이용해 개발해주세요.

[API V5] API V4에서는 TID, TxID라는 용어가 사용되었었는데, API V5에서는 orderId, purchaseId, developerPayload 등 생소한 용어가 많이 나옵니다. 각각 어떤 의미이며, 어떨때 활용하는 것인지 궁금합니다.

  • orderId는 purchaseId와 같이 결제 transaction을 구분할 수 있는 ID로 확장 API, VOC 처리, 향후 추가기능 등에 적용될 수 있습니다.

  • orderId와 pruchaseId는 transaction의 unique한 key값으로 변경되지 않으며 두 값은 1:1로 대응됩니다.

  • API V5부터는 인앱결제 I/F에서 사용되는 주요 키가 purchaseId로 변경되었습니다.

  • 고객문의 응대 시 개인정보가 없는 developerPayload나 orderId 사용을 권장합니다.

  • 현재 개발자센터의 고객관리 메뉴 하위의 TxID 조회 등의 화면에서 조회 및 취소 요청 시에는 TxID(orderId)나 TID(developerPayload)로만 가능하나, 최대한 빨리 purchaseId로도 조회/취소요청이 가능하도록 개선할 예정입니다.

  • API V4와 V5 간 거래관련 용어의 매칭은 다음과 같습니다.

    API V4API V5

    TxID

    orderId

    TID, bpinfo

    developerPayload

    없음

    purchaseId

[API V5] '클래스를 찾을 수 없습니다.'라는 오류 메시지가 나옵니다.

  • 라이브러리가 잘못 적용되어 있을 가능성이 높습니다. 특히 16과 17은 클래스 구성이 다르니 17용 라이브러리를 사용하였는지 확인 하시기 바랍니다.

[API V5] 해외에서 개발자들이 신용카드로 상용결제 테스트를 할 수 있는 방법이 있는지요?

  • 원스토어는 한국에서 발행된 신용카드로만 결제가 가능합니다.

  • 상용결제 테스트가 불가능할 경우 Sandbox 결제 테스트만 진행하셔도 원스토어에서 서비스하는 데 문제가 없으니 참고하시기 바랍니다.

[API V5] Public Key(라이센스 Key)란?

  • 인앱 결제로 구매한 항목을 확인하거나, 구매내역 검증 시 이용하는 공개키 입니다.

  • 공개키를 확인하고 싶다면 인앱결제 적용을 위한 사전준비()의 4번 항목을 참고하세요

[API V5] Guide에 라이센스 Key 관련 NDK를 제공한 이유는?

  • Google의 경우도 해당 key에 대한 보호가 필요하다고 하고 있으며("API Key를 어플리케이션 코드 내에 바로 삽입 하지 않고, 복호화가 가능한 암호화 (가령 XOR 연산을 예를 들면) 를 이용 하는데, 어플리케이션 실행 시 암호화 하도록 하고, 암호화에 사용하는 키를 서버 로 부터 획득 하는 구조로 구현 하도록 한다."), 보호하는 방법의 하나로 NDK 방식을 제공하였습니다. 실제로는 개발사 별 자체 방식대로 라이센스 Key를 보호하면 됩니다.

[API V4] 결제 완료 후 구매 결과 값을 받지 못할 경우 아이템 지급 방법이 있나요?

  • App에서 결제 완료 후 구매 결과 값을 받지 못할 경우를 대비 하여 App 실행시 원스토어 개발자센터 In-App 결제 모듈 API 중 Query기능(request_purchase_history)을 사용하여 아이템 구매 여부를 확인 후 성공인 경우 아이템을 지급 하도록 처리 하면 됩니다.

  • 또한 Server API인 TID 구매이력 조회를 이용하여 특정 시점에 결제의 정상처리 여부를 확인하여 아이템 지급 여부를 판단할 수 있습니다.

[API V4] In-App 상품 결제 테스트 방법 및 유의사항

  • In-App 상품 결제 테스트 시에는 개발용 In-App 결제 모듈을 사용하여 테스트 하셔야 하며(dev 폴더 내 JAR 파일),

  • 테스트 완료 후 상용 In-App 결제 모듈(release 폴더 내 JAR 파일)을 적용하여 Build한 바이너리를 등록 및 검증요청하셔야 합니다.

    • Self-Test 진행 과정

      • 경로: 원스토어 개발자센터 > Apps > 상품현황 > In-App 정보 > 테스트

      • Self-Test 진행 방법

        • 테스트 단말 탭 > MDN추가 및 다양화 결제 수단 포인트를 입력하여 테스트 단말 등록

        • 상품별 설정 탭 > 결과 설정(정상, 원스토어 회원탈퇴, 판매중지 등)을 변경 하여 상품 자체 테스트 진행

        • 과금 로그 조회 및 구매 내역 조회를 통해 상품의 정상 구입 및 과금 여부 확인 > 테스트 완료

        • 상용 In-App 결제 모듈(release 폴더 내 JAR 파일)를 적용하여 재컴파일 후 검증 요청 진행 (검증 상용 환경 기준으로 진행되므로 In-App과 연동하는 상용 Server 의 정상동작 여부의 확인이 선행되어야 합니다)

      • In-App 결제의 상품 등록 등의 자세한 내용은 원스토어 개발자센터의 IAP Developer Guide을 참고하기 바랍니다.

[API V4] 월별 자동결제 상품 해지 확인하는 방법이 있나요?

  • In-App 결제 모듈에서 월별 자동결제 상품 해지 여부를 확인 하는 API는 지원 하지 않으므로 상품인증 API의 만료일 체크로 확인 해야 합니다.

  • 월별 자동결제 상품 해지가 된 후 request_purchase_history, auth_item로 sendCommandRequest 함수를 호출 하였을 때 결과 데이터로 수신되는 endDate 필드 값으로 계속 결제로 인한 사용만료일 연장 여부를 확인할 수 있습니다.

  • 자세한 내용은 원스토어 개발자센터의 IAP SDK Reference > sendCommandRequest를 참고하시기 바랍니다.

[API V4] 영구성 In-App 상품의 경우 In-App 상품 개발에 차이가 있나요?

  • 영구성 상품을 이용 하고자 할 경우 App 재설치 등의 사유가 발생 할 수 있으므로 기존 구매 여부 확인 후 아이템을 복원 해주도록 예외처리를 해주셔야 합니다. (Ex : 컨텐츠 삭제 및 재이용시 In-App 상품 결제가 불가 하므로 예외 처리 필요)

  • App 실행 시 In-App 결제 SDK API 중 Query 기능을 사용 하여 아이템 구매 여부를 확인 후 성공인 경우 아이템 지급 하도록 구현 부탁드립니다. (Query 기능 : auth_item, whole_auth_item 등)

[API V4] 영구성 In-App 상품 Self-Test 시 결제가 계속 됩니다. 복원의 함수도 없는것 같구요.

  • 자세한 내용은 원스토어 개발자센터의 IAP SDK Reference를 참고하시기 바랍니다.

  • 상품 결제 테스트 및 개발의 편의를 위하여 개발 환경에서만 예외적으로 중복 구매 가능하도록 되어있으며, 상용 In-App 결제 모듈 적용 시에는 최초 1회 구매가 가능 하며 이후 구매 요청 시 구매 불가 팝업이 노출 됩니다.

[API V4] item_use 또는 subtract_points 메소드를 사용시 포인트 차감 수량은 몇 개 인가요?

  • item_use 또는 subtract_point 메소드 사용 시 고정으로 1포인트가 차감 됩니다.

[API V4] 전자영수증은 어디에 있나요?

  • 앱상품 구매요청을 보낸 후 결제가 정상적으로 성공하면, 구매요청의 응답값에 서버에서 발급한 전자영수증 데이터가 포함되어 내려옵니다.

  • 샘플 소스코드에 나와있는 것처럼 IapResponse 객체 data 에 전자영수증이 포함되어 내려옵니다. 샘플 소스코드 확인 바랍니다.

    @Override
    public void onResponse(IapResponse data) { ...
    } 
  • 정확한 흐름 확인을 위하여 원스토어 개발자센터의 IAP quick Guide를 참고하시기 바랍니다.

[API V4] 전자영수증 검증 샘플 코드를 얻을 수 없을까요?

  • 샘플코드는 IAP 라이브러리 압축파일에 있는 sample_app 코드의 ReceiptConfirm 클래스를 참조 바랍니다.

  • Http post 전송 및 처리는 ReceiptConfirm 클래스의 doInBackground 메소드를 참조하시기 바랍니다.

[API V4] 분명히 전자영수증 검증 요청에 필요한 데이터를 모두 보냈는데 파라메터가 부족하다고 나옵니다.

  • 전자영수증 검증 요청에는 3 가지 데이터가 필요합니다.

  • txid, appid, receipt(전자영수증) 데이터가 올바른지 다시 한 번 확인해주시고, http post 전송시 http header 값의 “Content-type”이 “application/json”으로 설정되어 있는지 확인 바랍니다.

  • 전송시 http body는 아래와 같은 형태가 되어야 합니다.

  • { "txid":"TSTORE0004_20150515102510XXXXXXXXXXXXXXX", "appid":"OA00012345", "signdata":”MIIH7QYJKoZIhvcNAQcCo … ozANBglghkgBZQMEA" }

[API V4] 구매이력조회 인터페이스 요청을 했는데 ‘9999’ 에러 코드가 나옵니다.

  • TID 를 잘못 입력했을 가능성이 큽니다. 구매이력조회 인터페이스에 사용되는 TID 는 구매요청시 개발자가 입력한 값이고, 결제를 완료했을 때 내려오는 TXID 와 구분이 되어야 합니다.

  • TXID 는 전자영수증 검증에 사용되는 값이니 TID 와 혼동 없으시기 바랍니다.

[API V4] 구매 전자 영수증 검증 Interface 를 사용하려는데, 계속 필수 파라미터 부족이 뜹니다.

  • 전자 영수증 검증은 JSON 객체를 만들고 http body 부분에 JSON 객체의 내용을 POST 방식으로 전자영수증 검증 서버로 요청하도록 구현 해야 합니다

  • 전자 서명 영수증 검증 요청 시에는 appid, txid, signdata를 JSON 형식의 데이터를 post 방식으로 요청 하면 되며 http header 값 중 content-type의 값을 application/json으로 설정 하여 검증 요청 진행 하면 됩니다.

    JSONobject json = new JSONObject(); // JSON 객체 생성
    json.put("appid","OA00123456");
    json.put("txid", txid);
    json.put("signdata", signdata); // 요청용 JSON 객체 완성
     
    HttpClient client = new DefaultHttpClient();
    HttpPost httpPostRequest = new HttpPost("https://iapdev.tstore.co.kr/digitalsignconfirm.iap");
    StringEntity se = new StringENtity(json.toString(), "UTF-8");
     
    httpPostRequest.setEntity(se); // 요청용 String 객체 셋팅
    httpPostRequest.setHeader("Content-Type", "application/json"); // Header 설정
     
    HttpResponse resp = client.execute(httpPostRequest); // 전자영수증 검증 요청 후 응답을 받아옴

프로가드 적용 시 예외처리를 할 수 있나요?

  • 원스토어 개발자센터 최신 In-App 결제 모듈 적용 시 프로가드를 적용할 경우는 아래 샘플 proguard config를 참고하여 설정 바랍니다.

  • proguard config: Proguard-project.txt 파일에 아래 항목을 추가 해야 정상적으로 작동 합니다.

    // proguard config
            -keep class com.skplanet.dodo.**{*;}
            -keep class com.skplanet.internal.dodo.**{*;}
            -keep class com.skplanet.payplanet.dodo.**{*;}
            -keep class com.skplanet.payplanet.iap.**{*;}
            -keep class com.skplanet.payplanet.internal.**{*;}
     
            -keep class com.google.gson.**{*;}
            -keep class com.skplanet.dev.guide.pdu.**{*;}
            -keep class com.tmoney.aidl.**{*;}
     
            -keep public class android.net.http.SslError
            -keep public class android.webkit.WebViewClient
     
            -dontwarn android.webkit.WebView
            -dontwarn android.net.http.SslError
            -dontwarn android.webkit.WebViewClient
     
            -keepattributes Signature
            -keepattributes *Annotation*
            -keepattributes JavascriptInterface
     
            -dontshrink

  • 추가적으로 Sample App(iap_api_sample)의 유틸리티 패키지(com.skplanet.dev.guide.helper, com.skplant.dev.guide.pub, gson-2.2.2.jar)를 그대로 사용 할 경우 gson 관련 클래스도 프로가드 대상에서 제외해야 하므로 아래 항목이 추가 되오니 참고하시기 바랍니다.

    -keep class com.google.gson.**{*;}
    -keep class com.skplanet.dev.guide.pdu.**{*;}

In-App 결제 모듈 관련 문의만 빠르게 답변을 받고 싶어요.

  • In-App 결제 모듈 적용 관련 문의 시에는 아래 항목을 포함하여 운영팀 대표메일(devhelper@onestore.co.kr)로 문의 주시기 바랍니다.

  • 또는 Q&A(Support > Help > 기술지원 > 질문유형 : 기술지원) 로 문의 주시면 보다 빠르게 확인해서 지원드릴 수 있습니다.

  • In-App 결제 모듈 적용 문의 항목

    • Application ID

    • 상품명

    • PID

    • 오류 발생 시간

    • 과금 테스트 시 사용한 휴대폰 번호

    • 과금 테스트 시 사용한 휴대폰 모델명 및 Android OS Version

    • 전체 오류 로그(App 실행 시부터 오류 발생 시까지)

    • In-App 결제 모듈 적용 소스 발췌

    • In-App 결제 모듈 구현 로직 및 동작 Flow 설명

    • 오류 현상 및 재현 경로(오류 화면 포함)

    • 소스 내 Application ID 및 PID 정상 입력 여부 확인

    • In-App 결제 모듈 Version(ex : V16.03.00 등)

    • In-App 결제 모듈 종류(ex : 개발용, 상용)

    • 프로가드 적용 여부

    • App 개발 플랫폼(ex : Android, Adobe Air, Corona, Cocos2d-x, Unity 3D 등)

    • APK 파일

    • 문의 내용

    전자 서명 영수증 에러 문의 항목

    • Application ID

    • 상품명

    • PID

    • 오류 발생 시간

    • 과금 테스트 시 사용한 휴대폰 번호

    • 과금 테스트 시 사용한 휴대폰 모델명 및 Android OS Version

    • 전체 오류 로그

    • 전자 영수증 요청 정보(appid, txid, signdata)

    • In-App 결제 모듈 Version(ex : V16.03.00 등)

    • In-App 결제 모듈 종류(ex : 개발용, 상용)

    • 전자 영수증 검증 요청 URL

    • 문의 내용

[API V4] 해외에서 한국 단말기가 없는 경우, Self-Test는 어떻게 진행 해야 하나요?

  • USIM이 장착 되어 있는 휴대폰 준비

  • 개발용 In-App 결제 모듈 적용 (iap plugin 객체 생성 시 파라미터 값 development 설정)

  • Sefl-Test 페이지 진입 후 임의의 MDN 등록

  • IAP Setting App 실행 후 Self-Test 페이지에 등록한 MDN과 동일 하도록 설정 (통신사 임의 선택 가능)

  • In-App 상품 상태 값 설정 후 Self-Test 진행

  • Self-Test 완료 후 상용 In-App 결제 모듈 적용 하여 검증 요청 진행 (iap plugin 객체 생성 시 파라미터 값 release 설정)

[API V4] 개발용 In-App 결제 모듈 테스트 시 '개발자 POC에 등록된 테스트 단말이 아닙니다.' 팝업이 노출 됩니다.

  • 개발자센터 내 테스트 단말 정보 등록 후 개발용 모듈로 테스트 진행 부탁 드립니다.

  • Self-Test 페이지에 MDN을 등록 해야 정상적인 테스트가 가능 합니다. (Apps > In-App 정보 > 테스트 > 테스트 단말 등록)

[API V4] 개발용 In-App 결제 모듈 테스트시 '판매 중인 상품이 아닙니다. 검증 중입니다.'팝업이 노출 됩니다.

  • In-App 상품의 판매 상태가 미승일 상태 일 때 상용 In-App 결제 모듈 적용 하여 발생 하는 현상이므로

  • In-App 결제 모듈 압축 해제 후 dev 폴더 내 JAR 파일을 적용 후 테스트 진행 하면 정상적으로 테스트가 가능 합니다.

  • 그리고 등록중인 상품은 상용 결제가 불가능 하오니 검증 완료 및 판매상태 변경 확인 후 상용 결제 진행 부탁 드립니다.

[API V4] Self-Test 페이지 포인트 등록 하였으나 포인트가 노출 되지 않는 현상 발생 합니다.

  • 개발용 In-App 결제 모듈 적용 후 Build 해야 정상적인 테스트가 가능 합니다.

  • In-App 결제 페이지에서 조회 버튼을 선택 하여 포인트 조회 후 포인트 사용을 선택 해야 정상적으로 포인트 사용이 가능 합니다.

[API V4] TID 구매이력 URL 조회 사용 시 유의사항

  • 구매이력 조회 요청 URL이 IP:PORT 형식으로 되어 있을 경우 도메인: PORT 형식으로 전환 하는 것을 권장 하고 있습니다.

    • 개발용 : https://iapdev.tstore.co.kr:8082/billIntf/billinglog/billloginquiry.action

    • 상용 : https://iap.tstore.co.kr:8090/billIntf/billinglog/billloginquiry.action

In-App 상품명 및 가격을 변경 하려고 하는데 어떻게 해야 하나요?

  • In-App 상품명은 판매 상태(판매중지/판매금지 제외)와 무관하게 수정 가능합니다.

  • In-App 상품금액은 판매 상태가 등록 중일 경우, 언제든 수정이 가능하며 판매중/판매중지/판매금지 일 경우 일주일에 1회 수정이 가능합니다.

[API V4] 전자 영수증 검증 요청 시 유효성 오류(9113)가 리턴 됩니다.

  • API 호출시 data가 정상적으로 전달되지 않았거나 전자영수증 값이 임의 변경된 경우로, 아래 내용들에 대해서 확인 부탁 드립니다.

    • signdata가 정상적으로 전달 되는지 확인 필요(App Server -> In-App 결제 서버, App -> App Server)

    • signdata에 공백이 존재 하는지 확인 필요

    • signdata 저장 시 다른 문자(특수문자, ex:+ 등)가 포함되지 않았는지 확인 필요

  • txid, appid, sigdata 정보가 정상일 경우 오류가 발생하지 않습니다.

  • 해당 정보 중 일부에 오류가 있는 것으로 판단되오며, 정확한 확인을 위해 하기 추가 정보 기입하시어 전달 부탁 드립니다. (+ 혹은 / 등의 기호가 제대로 표시되는지 확인 부탁 드립니다. 간혹 공백으로 전달되는 경우가 있으니 확인 부탁 드립니다.)

[API V4] 결제 완료 후 원스토어 개발자센터에서 전자영수증 발급 처리 되었으나,네트워크 연결 끊김 등으로 개발서버에서 Response를 받지 못하는 경우 전자 영수증을 재 발급 받을수 있는 방법이 있나요?

  • 전자 영수증의 재발급은 기술적으로 불가합니다. 전자영수증을 취득하지 못하여 아이템 지급이 불가한 경우가 발생할 수 있기 때문에 방어로직으로 sdk에서 제공하는 request_purchase_history api를 호출하거나 Server API인 'TID 구매이력 조회' 연동을 권장합니다.

[API V4] 가로 <-> 세로 화면 전환 시 In-App 결제 페이지 노출 되지 않는 현상이 있습니다

  • In-App 결제 모듈은 In-App 결제 페이지의 생존을 보장 하고 있으며 화면 모드가 변경 되는 경우 결제 페이지가 사라지고 다시 생성되는 과정을 거쳐야 하기 때문에 결제 페이지가 노출 되지 않는 현상이 발생 하게 됩니다.

  • 화면 전환 시 결제 페이지가 노출 되지 않을 경우 App에서 가로/세로 전환을 못하도록 설정 하여 결제 페이지를 올바르게 유지 해야 하며 App이나 화면의 설정이 변경 되는 경우 아래 URL을 참고 하여 AndroidManifest.xml 파일에 해당 옵션을 적용 해야 합니다.

구버전 인앱결제가 종료했다고 하는데, 어디까지가 구버전인가요?

  • 2015년말 종료되는 구버전 인앱SDK는 아래 이미지와 같이 검은색 결제창이 뜨는 버전을 의미합니다.

  • 웹뷰 기반의 결제창이 뜨는 경우는 종료되지 않습니다.

Last updated