09. 원스토어 인앱결제 릴리즈 노트

원스토어 인앱결제 라이브러리 SDK V21.01 배포

원스토어 인앱결제 SDK V21.01이 배포 되었습니다.

주요 변경 사항은 다음과 같습니다.

  • 앱 무결성을 체크하는 보안 솔루션과 충돌이 있는 문제가 해결 되었습니다.

  • 국내 원스토어 앱이 설치되어 있을 때, 글로벌 원스토어 앱 다운로드 설치 동선에서 발생하던 로딩 문제가 해결 되었습니다.

  • 개발 단계에서 개발 환경을 변경 할 수 있는 설정을 제공합니다.

원스토어 인앱결제 라이브러리 API V7(SDK V21) 출시

원스토어 인앱결제 라이브러리 API V7(SDK V21.00)가 출시 되었습니다. 주요한 변경 사항은 다음과 같습니다.

새로운 상품은 원스토어 인앱결제 라이브러리 API V7(SDK V21)를 적용해야 합니다.

원스토어 인앱결제 API V5(SDK V17)이상을 적용한 앱은 API V7(SDK V21)로 마이그레이션이 가능합니다.

원스토어 인앱결제 API V4(SDK V16)은 이후 버전과 전혀 다른 구조로 설계 되었기 때문에, 원스토어 인앱결제 API V6(SDK V19)로 마이그레이션 할 수 없습니다.

구독형 상품

SDK V19 이하 버전에서 사용하던 월정액 상품을 대신하여 구독형 상품을 제공합니다.

구독형 상품은 사용자가 원스토어 앱 내에서 정기 결제 상품을 직접 관리 할 수 있는 다양한 기능을 제공하고

신규 유저 유입을 위한 프로모션, 정기 결제 상태 변경에 대한 알림 기능 등 개발자를 위한 다양한 기능도 제공됩니다.

로그인 프로세스 변경

기존에 사용되든 PurchaseClient.launchLoginFlowAsync()는 지원되지 않을 예정입니다.

신규로 만들어진 GaaSignInClient를 이용하여 로그인이 지원됩니다. 클래스명이 바뀌었지만 사용방식은 동일합니다.

배포 방식 변경

기존에는 guthub을 통한 배포였으나, V21부터는 maven을 통해 SDK가 배포 됩니다.

이제부터는 SDK의 업데이트가 훨씬 간편 해졌습니다.

원스토어 인앱결제 라이브러리 API V6(SDK V19) 출시

원스토어 인앱결제 라이브러리 API V6(SDK V19.00)가 출시 되었습니다. 주요한 변경 사항은 다음과 같습니다.

새로운 상품은 원스토어 인앱결제 라이브러리 API V6(SDK V19)를 적용해야 합니다.

원스토어 인앱결제 API V5(SDK V17)을 적용한 앱은 API V6(SDK V19)로 마이그레이션이 가능합니다.

원스토어 인앱결제 API V4(SDK V16)은 이후 버전과 전혀 다른 구조로 설계 되었기 때문에, 원스토어 인앱결제 API V6(SDK V19)로 마이그레이션 할 수 없습니다.

원스토어 인앱결제 API 버전 삭제

이제 앱의 매니페스트에서 인앱 API 버전을 추가할 필요가 없습니다.

인앱결제 SDK V19에 API Version meta-data가 추가됩니다.

구매 확인

원스토어 인앱결제 라이브러리 API V6(SDK V19) 이상을 사용하는 앱에서는 3일 이내에, 구매 확인을 해야합니다.

3일 이내에 구매 확인이 되지 않으면, 아이템이 정상적으로 지급이 되지 않은 것으로 판단하고 구매를 취소 합니다.

다음 메서드 중 하나를 사용하여 구매를 확인할 수 있습니다.

  • 소모성 제품인 경우 PurchaseClient.consumeAsync()를 사용합니다.

  • 소모성 제품이 아니라면 PurchaseClient.acknowledgeAsync()를 사용합니다.

월정액 상품의 경우에는 최초의 결제에 대해서만 구매를 확인하면 됩니다.

원스토어 인앱결제 API V6(SDK V19)를 적용한 경우, 반드시 3일 이내에 구매 확인을 해야합니다.

3일 이내에 구매 확인이 되지 않은 경우 구매가 취소되니 주의해야 합니다.

마켓 구분 코드 얻기

IAP 라이브러리 V6부터 Server to Server API를 사용하기 위해서는 마켓 구분 코드가 필요합니다.

getStoreInfoAsync()를 통해서 마켓 구분 코드를 획득 할 수 있습니다.

PurchaseClient API 변경

V5 (SDK V17)

V6(SDK V19)

결제모듈과의 연결

connect

startConnection

결제모듈과의 연결해제

terminate

endConnection

지원여부 확인

isBillingSupportedAsync

X

인앱 상품 구매

launchPurchaseFlowAsync

launchPurchaseFlow

인앱 상품 소비

consumeAsync

consumeAsync

인앱 상품 구매 확인

X

acknowledgeAsync

소비되지 않은 상품의 구매내역(월 자동결제 포함)

queryPurchasesAsync

queryPurchasesAsync

인앱 상품 상세정보

queryProductsAsync

queryProductDetailsAsync

월 자동결제 상태 변경

manageRecurringProductAsync

manageRecurringProductAsync

결제 모듈 업데이트 또는 설치

launchUpdateOrInstallFlow

launchUpdateOrInstallFlow

원스토어 로그인 호출

launchLoginFlowAsync

launchLoginFlowAsync

마켓 구분 코드 확인

X

getStoreInfoAsync

Server API 변경

구분API 목록API URI - V5(SDK V17)API URI - V6(SDK V19)변경사항

V5 (SDK V17)

V6 (SDK V19)

변경

OAuth 토큰발급

/v2/oauth/token

/v6/oauth/token

응답규격 중 status 필드 삭제

Http response code로 정상(200) 여부 확인

삭제

구매상품 상세조회

/v2/purchase/details/{purchaseId}/{packageName}

N/A

보안 강화를 위하여 구매상품 상세조회 API는 삭제

구매상품 상세조회 By 인앱상품ID로 통합

변경

구매상품 상세조회 By 인앱상품ID

/v2/purchase/details-by-productid /{purchaseId}/{packageName}/{productId}

/v6/apps/{packageName}/purchases/inapp/products /{productId}/{purchaseToken}

응답 규격에 purchaseId, acknowledgeState 필드 추가

변경

월정액 상품 구매 상세조회

/v2/purchase/recurring-details/{purchaseId}/{packageName}

/v6/apps/{packageName}/purchases/auto/products /{productId}/{purchaseToken}

응답규격에 acknowledgeState, lastPurchaseId, lastPurchaseState 추가

응답규격에 price, developerPayload, purchaseState 삭제

삭제

월정액 상품 마지막 구매 상세조회

/v2/purchase/last-recurring-details/{purchaseId}/{packageName}

N/A

월정액 상품 구매 상세조회 API 로 통합

변경

자동결제 해지

/v2/purchase/manage-payment-status/{purchaseId}/{packageName}/cancel

/v6/apps/{packageName}/purchases/auto/products /{productId}/{purchaseToken}/cancel

성공처리 응답규격변경

변경

자동결제 해지취소

/v2/purchase/manage-payment-status/{purchaseId}/{packageName}/reactivate

/v6/apps/{packageName}/purchases/auto/products /{productId}/{purchaseToken}/reactivate

성공처리 응답규격변경

변경

구매취소 내역조회

/v2/purchase/voided-purchases/{packageName}

/v6/apps/{packageName}/voided-purchases

API 사용성 향상을 위하여 구매취소내역 조회기준(startTime, endTime)을 구매일시에서 구매취소일시로 변경

응답규격에 purchaseToken, marketCode 추가

변경

구매상품 소비

/v2/purchase/consume/{purchaseId}/{packageName}

/v6/apps/{packageName}/purchases/all/products/ {productId}/{purchaseToken}/consume

성공처리 응답규격변경

추가

구매 확인

N/A

/v6/apps/{packageName}/purchases/all/products/ {productId}/{purchaseToken}/acknowledge

구매 확인 API 신규 추가

PNS 메시지 규격 변경

  • 원화 외의 통화를 지원하기 위하여 결제금액(price)의 데이터 타입이 Number에서 String으로 변경하였습니다.

  • 원화 외의 통화를 지원하기 위하여 결제금액의 통화코드(priceCurrencyCode)를 추가하였습니다.

  • 원화 외의 통화를 지원하기 위하여 결제수단별금액(amount)의 데이터 타입이 Number에서 String으로 변경하였습니다.

  • 응답 규격에 purchaseToken, environment, marketCode 필드가 추가되었습니다.

상세한 규격은 PNS 메시지 상세 변경 내역에서 확인 할 수 있습니다.

원스토어 인앱결제 라이브러리 API V5(SDK V17)

  • API 버전은 개발사 애플리케이션의 'AndroidManifest.xml' 파일에 아래와 같이 명시되어야 합니다.

  • 자세한 내용은 인앱결제 적용을 위한 사전준비 페이지의 'Android Manifest 파일 설정' 부분을 참고하시기 바랍니다.

  • API V5 (SDK V17)에서 개선된 사항은 다음과 같습니다.

    항목세부 개선 항목설 명

    API

    Consume 개념 도입

    아이템 미지급 상황 발생 시 앱에서 복구할 수 있는 로직을 제공합니다.

    Custom PID 지원

    인앱상품 ID(PID)를 개발자가 직접 입력할 수 있어, 직관적인 PID로 생성하여 운영할 수 있습니다.

    보편적인 인앱결제 인터페이스 제공

    타 마켓향으로 개발한 앱을 코딩상의 큰 개발공수 없이 원스토어향으로 런칭할 수 있습니다.

    결제 테스트 환경

    개발/상용 테스트 환경 분리 제공

    개발사의 검증 환경과 동일 수준의 원스토어 결제환경을 제공합니다.

    개발사의 개발환경에서는 원스토어 Sandbox와 연동하여 개발/테스트 할 수 있고, 개발사의 상용환경에서는 원스토어 상용환경에서 실결제를 해볼 수 있습니다.

    원스토어 개발자센터에서 테스트 ID로 등록한 ID로 원스토어 로그인 후, 실결제한 경우, 개발자가 자유롭게 구매취소 가능합니다.

    결제창 UI

    전면/팝업 결제화면 선택 가능

    전체 결제화면 또는 팝업 결제화면을 선택할 수 있습니다. 결제화면 설정은 원스토어 인앱결제 적용을 위한 사전준비 페이지의 'Android Manifest 파일 설정' 부분을 참고하시기 바랍니다.

    연동 방식

    IAP SDK, AIDL 선택 가능

    기존의 SDK 방식 뿐만 아니라, AIDL를 이용하여 직접 OSS와 연동할 수 있습니다. 단, 원스토어 서비스(ONE store service, OSS) 앱이 설치되어 있지 않은 단말에서는 인앱결제가 정상적으로 동작하지 않습니다. 원스토어 서비스 앱 설치에 대한 내용은 원스토어 인앱결제 적용을 위한 사전준비 페이지의 '원스토어 앱 설치' 부분을 참고하시기 바랍니다.

    개발자센터

    타 마켓 앱 상품 정보 크롤링 기능 개선

    기 등록된 타 마켓 앱 상품을 원스토어에 간편하게 등록할 수 있습니다.

    타 마켓 인앱상품 정보 import 기능 제공

    인증센터

    OAuth 발급/인증/관리

    개발자의 서버와 원스토어 인앱결제 서버 연동 시 데이터 보안을 강화하였습니다.

Last updated