Unreal에서 원스토어 인앱결제 사용하기
Last updated
Last updated
Unreal 개발환경에서 원스토어 인앱결제를 간편하게 적용 할 수 있도록 원스토어 Unreal Plugin을 제공합니다.
해당 플러그인은 Unreal 4.25 버전으로 개발 되었습니다.
Unreal Plugin은 다음과 같이 구성되어 있습니다.
assets : 원스토어 SDK가 사용하는 global-appstores.json 파일이 위치합니다. 해당 파일은 빌드 시, Android Assets으로 이동되어 apk에 포함됩니다.
lib : 원스토어 인앱 SDK와 Unreal 사용을 돕기 위한 Adapter 라이브러리가 위치합니다. 해당 파일은 빌드 시, jar lib로 이동되어 apk에 포함됩니다.
ONEStoreIap_UPL.xml : 빌드 시, GameActivity 및 Gradle 정보를 수정합니다.
OneStoreIap.Build.cs : Android 빌드 시, ONEStoreIap_UPL.xml을 로드 할 수 있도록 제공합니다.
Unreal SDK에서 Product 정보는 다음과 같이 전달됩니다.
해당 내용은 Public/OneStoreIapInterface.h에 FOneStoreIapProductData struct로 정의되어 있습니다.
Original Product Json
원스토어로 부터 전달받은 파싱 전 Json String
Product Id
개발자센터를 통해 등록한 상품아이디
Type
인앱 상품의 타입 ("inapp" or "auto")
Price
인앱 상품의 가격 정보
Price Currency Code
인앱 상품의 통화 정보
Price Amount micros
인앱 가격 * 100만
Title
개발자센터를 통해 등록한 Product Name
Unreal SDK에서 Purchase 정보는 다음과 같이 전달됩니다.
해당 내용은 Public/OneStoreIapInterface.h에 FOneStoreIapPurchaseData struct로 정의되어 있습니다.
Original Purchase Data
원스토어로부터 전달받은 파싱 전 Json String
Signature Data
원스토어로부터 전달받은 Signature String
Order Id
결제ID
Package Name
구매한 앱의 패키지명
Product Id
개발자센터를 통해 등록한 상품 아이디
Purchase Time
구매 시간
Acknowledge State
구매확인 상태( 0: Not Acknowledged, 1: Acknowledged)
Developer Payload
연동 회원사 서버에서 생성 관리하는주문 번호
Purchase Id
원스토어에서 발행한 개별 결제 ID
Purchase Token
원스토어에서 발행한 자동 결제 ID
Billing Key
자동 결제에 사용되는 billingKey 정보 (Option)
원스토어 Unreal Plugin은 다음과 같은 Blueprint를 제공합니다.
다음부터는 각 Blueprint에 대한 설명입니다.
원스토어와 연결은 각 API를 호출하면 자연스럽게 진행됩니다.
다만 연결 종료의 경우 화면의 라이프 사이클에 따라 호출이 필요합니다.
원스토어에 등록된 상품의 상세 정보를 요청합니다.
관리형 상품의 경우 Product Type에 "inapp" 으로 월정액 상품의 경우 "auto"로 규격을 호출하면 됩니다.
앱간 호출의 경우 메모리 이슈가 있을 수 있으니 20 ~ 30개씩 끊어 조회하는 것을 추천합니다.
Request Params
Product Type
관리형 상품("inapp") or 월정액 상품("auto")
Product List
상품 상세를 조회할 상품의 Product Id(String)의 list
Response Type
On Success
상품 상세 조회 성공 시 호출 됨
On Failure
상품 상세 조회 실패 시 호출 됨
On Need Update
원스토어 결제 모듈의 업데이트 필요 시 호출 됨
On Need Login
원스토어 로그인 필요 시 호출 됨
Response Params
Result Code
성공 : 0 / 실패 시 에러코드를 전달 (에러 코드는 기존 가이드 참조)
In App Product Info List
성공 시, 조회를 요청한 상품의 상세 data(FOneStoreIapProductData)의 리스트를 전달
소비(consume)되지 않은 관리형 상품과 월정액 상품의 구매 이력 조회가 가능합니다.
Product Type에 관리형 상품 또는 월정액 상품을 지정하여 조회를 진행하면 됩니다.
Product Type
관리형 상품("inapp") or 월정액 상품("auto")
On Success
구매 이력 조회 성공 시 호출 됨
On Failure
구매 이력 조회 실패 시 호출 됨
On Need Update
원스토어 결제 모듈의 업데이트 필요 시 호출 됨
On Need Login
원스토어 로그인 필요 시 호출 됨
Result Code
성공 : 0 / 실패 시 에러코드를 전달 (에러 코드는 기존 가이드 참조)
One Store Iap Purchase Data List
성공 시, 조회를 요청한 상품의 상세 data(FOneStoreIapPurchaseData)의 리스트를 전달
원스토어 인앱 결제를 요청합니다.
Request Params
Product Type
관리형 상품("inapp") or 월정액 상품("auto")
Product Id
개발자센터를 통해 등록한 상품아이디
Product Name
결제 화면에 노출 할 상품명 (공백일 경우 개발자센터에 등록된 상품명 노출)
Dev Payload
연동 회원사 서버에서 생성 관리하는주문 번호 입력 할 경우 Consume & Acknowledge에서도 동일한 값을 입력해야 함
Response Type
On Success
결제 성공 시 호출 됨
On Failure
결제 실패 시 호출 됨
On Need Update
원스토어 결제 모듈의 업데이트 필요 시 호출 됨
On Need Login
원스토어 로그인 필요 시 호출 됨
Response Params
Result Code
성공 : 0 / 실패 시 에러코드를 전달 (에러 코드는 기존 가이드 참조)
Purchase Data
성공 시, 결제 성공 한 상품의 상세 data를 전달
재구매가 필요한 소비성 상품은 구매에 성공한 후 소비(Consume) 및 아이템 지급을 진행해야 합니다.
소비 처리가 되지 않으면, 해당 상품은 다시 구매가 되지 않습니다.
원스토어 인앱결제 SDK V19부터 3일 이내에 소비(consume) 또는 구매 확인(ackowledge)를 하지 않을 경우 아이템이 지급되지 않은 것으로 판단되어 해당 구매는 취소됩니다.
Request Params
Purchase Data
결제 및 구매 이력 조회 시, 전달받은 구매 전문 String
Dev Payload
연동 회원사 서버에서 생성 관리하는주문 번호 결제 시 입력한 dev payload와 동일해야 함(결제 시 미 사용 하였다면 고유 값 입력 가능)
Response Type
On Success
소모 성공 시 호출 됨
On Failure
소모 실패 시 호출 됨
On Need Update
원스토어 결제 모듈의 업데이트 필요 시 호출 됨
On Need Login
원스토어 로그인 필요 시 호출 됨
Response Params
Result Code
성공 : 0 / 실패 시 에러코드를 전달 (에러 코드는 기존 가이드 참조)
Original Purchase Data
Consume을 요청한 Purchase Data를 그대로 리턴 함
구매에 성공한 상품에 대한 구매 확인 기능으로 영구성으로 사용할 관리형 상품이나 월정액 상품의 경우에는 acknowledge를 호출해야 합니다.
원스토어 인앱결제 SDK V19부터 3일 이내에 소비(consume) 또는 구매 확인(ackowledge)를 하지 않을 경우 아이템이 지급되지 않은 것으로 판단되어 해당 구매는 취소됩니다.
Request Params
Purchase Data
결제 및 구매 이력 조회 시, 전달받은 구매 전문 String
Dev Payload
연동 회원사 서버에서 생성 관리하는주문 번호 결제 시 입력한 dev payload와 동일해야 함(결제 시 미 사용 하였다면 고유 값 입력 가능)
Response Type
On Success
구매 확인 성공 시 호출 됨
On Failure
구매 확인 실패 시 호출 됨
On Need Update
원스토어 결제 모듈의 업데이트 필요 시 호출 됨
On Need Login
원스토어 로그인 필요 시 호출 됨
Response Params
Result Code
성공 : 0 / 실패 시 에러코드를 전달 (에러 코드는 기존 가이드 참조)
Original Purchase Data
Acknowledge을 요청한 Purchase Data를 그대로 리턴 함 구매 데이터의 Acknowledge상태 변경을 확인 하기 위해서는 Get Purchase Data를 이용
월정액 상품의 상태를 변경 합니다.
상태의 경우 cancel or reactivate 2가지 상태이며 cancel의 경우 다음 결제일에 자동 결제를 진행하지 않습니다.
Request Params
Purchase Data
결제 및 구매 이력 조회 시, 전달받은 구매 전문 String
Response Type
On Success
월정액 상품 상태 변경 성공 시 호출 됨
On Failure
월정액 상품 상태 변경 실패 시 호출 됨
On Need Update
원스토어 결제 모듈의 업데이트 필요 시 호출 됨
On Need Login
원스토어 로그인 필요 시 호출 됨
Response Params
Result Code
성공 : 0 / 실패 시 에러코드를 전달 (에러 코드는 기존 가이드 참조)
Action
상태 변경 (cancel / reactivate)
cancel : 월정액 정기결제 해제 예약
reactivate : 해지 예약 상태를 원상태로 회복
Original Purchase Data
상태 변경을 요청한 구매 데이터 원본
v19의 경우 S2S API에서 이용 가능 한 마켓 구분 코드를 전달하는 API를 제공한다.
Response Type
On Success
마켓 구분 코드 규격 호출 성공 시 호출 됨
On Failure
마켓 구분 코드 규격 호출 실패 시 호출 됨
On Need Update
원스토어 결제 모듈의 업데이트 필요 시 호출 됨
On Need Login
원스토어 로그인 필요 시 호출 됨
Response Params
Result Code
성공 : 0 / 실패 시 에러코드를 전달 (에러 코드는 기존 가이드 참조)
Store Code
스토어 고유 값을 리턴 (ex 원스토어 : MKT_ONE)
위 규격의 Response Type 중 On Need Login이 호출 될 시, 원스토어 로그인이 처리를 위해 사용됩니다.
Response Type
On Success
로그인 성공 시 호출 됨
On Failure
로그인 실패 시 호출 됨
Response Params
Result Code
성공 : 0 / 실패 시 에러코드를 전달 (에러 코드는 기존 가이드 참조)
위 규격의 Response Type 중 On Need Update가 호출 될 시, 원스토어 업데이트 처리를 위해 사용됩니다.
Response Type
On Success
업데이트 성공 시 호출 됨
On Failure
업데이트 실패 시 호출 됨
Response Params
Result Code
성공 : 0 / 실패 시 에러코드를 전달 (에러 코드는 기존 가이드 참조)
구매 데이터의 검증을 지원하는 API로 개발자센터에서 발급 받은 라이센스 key (Public key)를 통해 Signature와 Purchase Data를 검증합니다.
다만 서버 검증을 할 경우는 해당 API를 사용하기 보다는 서버 아이템 검증을 진행하는 것을 추천드립니다.
Request Params
Public Key
개발자센터에서 발급 받은 라이센스 key (Public key)
Original Purchase Data
결제 or 미소비 구매 이력 API 호출 시 전달된 Purchase Data String
Signature data
결제 or 미소비 구매 이력 API 호출 시 전달된 Signature String
Response Params
Return Value
true : 검증 성공
false : 검증 실패
다음은 Blueprint를 이용하는 예제입니다. 반드시 예제대로 구현할 필요는 없으며, 공개된 Blueprint를 수정하여 알맞게 사용하면 됩니다.