Unreal에서 원스토어 인앱결제 사용하기
개요
Unreal 개발환경에서 원스토어 인앱결제를 간편하게 적용 할 수 있도록 원스토어 Unreal Plugin을 제공합니다.
해당 플러그인은 Unreal 4.25 버전으로 개발 되었습니다.
Unreal Plugin 구성
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을 로드 할 수 있도록 제공합니다.
응답 규격
Product
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 |
Purchase
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 Blueprint for OneStore IAP
원스토어 Unreal Plugin은 다음과 같은 Blueprint를 제공합니다.
다음부터는 각 Blueprint에 대한 설명입니다.
One Store Disconnect
원스토어와 연결은 각 API를 호출하면 자연스럽게 진행됩니다.
다만 연결 종료의 경우 화면의 라이프 사이클에 따라 호출이 필요합니다.
One Store Iap Get Product Details
원스토어에 등록된 상품의 상세 정보를 요청합니다.
관리형 상품의 경우 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)의 리스트를 전달 |
One Store Iap Purchase Info
소비(consume)되지 않은 관리형 상품과 월정액 상품의 구매 이력 조회가 가능합니다.
Product Type에 관리형 상품 또는 월정액 상품을 지정하여 조회를 진행하면 됩니다.
Request Params
Product Type | 관리형 상품("inapp") or 월정액 상품("auto") |
Response Type
On Success | 구매 이력 조회 성공 시 호출 됨 |
On Failure | 구매 이력 조회 실패 시 호출 됨 |
On Need Update | 원스토어 결제 모듈의 업데이트 필요 시 호출 됨 |
On Need Login | 원스토어 로그인 필요 시 호출 됨 |
Response Params
Result Code | 성공 : 0 / 실패 시 에러코드를 전달 (에러 코드는 기존 가이드 참조) |
One Store Iap Purchase Data List | 성공 시, 조회를 요청한 상품의 상세 data(FOneStoreIapPurchaseData)의 리스트를 전달 |
One Store Iap Request Purchase
원스토어 인앱 결제를 요청합니다.
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를 전달 |
One Store Iap Consume Purchase
재구매가 필요한 소비성 상품은 구매에 성공한 후 소비(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를 그대로 리턴 함 |
One Store Iap Acknowledge Purchase
구매에 성공한 상품에 대한 구매 확인 기능으로 영구성으로 사용할 관리형 상품이나 월정액 상품의 경우에는 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를 이용 |
One Store Iap Manage Recurring
월정액 상품의 상태를 변경 합니다.
상태의 경우 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 | 상태 변경을 요청한 구매 데이터 원본 |
One Store Iap Get Store Code
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) |
One Store Iap Request Login
위 규격의 Response Type 중 On Need Login이 호출 될 시, 원스토어 로그인이 처리를 위해 사용됩니다.
Response Type
On Success | 로그인 성공 시 호출 됨 |
On Failure | 로그인 실패 시 호출 됨 |
Response Params
Result Code | 성공 : 0 / 실패 시 에러코드를 전달 (에러 코드는 기존 가이드 참조) |
One Store Iap Request Update
위 규격의 Response Type 중 On Need Update가 호출 될 시, 원스토어 업데이트 처리를 위해 사용됩니다.
Response Type
On Success | 업데이트 성공 시 호출 됨 |
On Failure | 업데이트 실패 시 호출 됨 |
Response Params
Result Code | 성공 : 0 / 실패 시 에러코드를 전달 (에러 코드는 기존 가이드 참조) |
One Store Purchase Verify
구매 데이터의 검증을 지원하는 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 : 검증 실패 |
Sample Case
다음은 Blueprint를 이용하는 예제입니다. 반드시 예제대로 구현할 필요는 없으며, 공개된 Blueprint를 수정하여 알맞게 사용하면 됩니다.
관리형 상품 결제 및 소비 case
월정액 상품 결제 및 구매 확인 case
관리형 상품 구매이력 조회 및 소비 case
관리형 상품 구매이력 조회 및 구매 확인 case
구매이력 조회 및 월정액 상품 상태 변경 case
마켓 구분 코드 case
로그인 및 업데이트 처리 case
Last updated