Apple 소모성 상품 구매
일반적인 구매 Flow의 시퀀스 다이어그램
-c4acf138027288459ed418d9584ebb3f.png)
추가 설명
- 게임 클라이언트(with SDK)는 StoreKit을 이용해서 구매를 시작할 수 있습니다.
- 참고: SwiftyStoreKit과 같은 Lightweight In App Purchases Swift framework 도 있습니다. (유지보수 등의 문제로 그대로 사용하시면 안되고 참고 정도만 하시는게 좋습니다.)
- 판매할 상품을 스토어와 게임서버 데이터 기반(옵셔널)으로 조회하여 상점 페이지에 보여줍니다.
- 유저는 상점에서 구매할 상품을 선택 후 게임서버 → 빌링 API에 구매 예약(6-3)을 진행합니다.
- 유저는 Apple에 결제 완료를 진행하고 관련 정보를 게임서버 → 빌링 API를 통해 검증(9-3)을 요청합니다.
- 이때 빌링 API는 영수증 검증 등의 과정이 진행됩니다.
- 유저의 구매 완료에 대한 검증 결과 문제가 없다면 게임서버는 상품을 지급(9-7)하고 빌링 API에 완료(9-8)로 보고합니다.
- 유저에게 구매 완료 결과를 리턴합니다.
- 클라이언트는 유저가 구매한 소모성 상품의 영수증을 최종 소모(완료) 처리합니다.
재 처리 Flow의 시퀀스 다이어그램
주의: 게임서버 -> 빌링 API 호출 누락에 대한 재 처리입니다. 클라이언트 사이드쪽 재 처리는 SDK가이드를 참고로 대응이 필요합니다.
-6cc7f20c1c22b2effe53853fd8da0e8b.png)
추가 설명
- 게임서버에서 여러 이유로 상품(재화) 지급이 누락될 수 있습니다. 해당 상황을 대비한 기능을 지원합니다.
- 유저가 인게임 상점 페이지에 진입하면 상품 지급이 누락된 데이터가 있는지 확인합니다.
- 빌링 API는 검증은 성공했는데(VERIFY_SUCCESS) 완료되지(COMPLETED) 않고 방치된 데이터를 최대 5건까지 조회해줍니다.
- 일반적인 경우에는 1건 이상 남지 않도록 게임서버는 개발되어 있을겁니다.
- 빌링 API에서 COMPLETED안된 데이터 리스트가 응답된다면 해당 빌링주문ID(boid) 기반으로 게임DB와 다시 확인하여 누락된게 맞는지 확인합니다.
- 누락된 데이터로 판별되면 유저에게 상품을 지급합니다.
- 빌링 시스템에 완료 요청 처리합니다.
- 상품의 중복 지급이 발생하지 않도록 꼭 체크하여야합니다.