Apple 유저의 구매 완료 데이터를 빌링에 저장 요청 - 게임에서 결제 기능을 직접 구현한 경우

circle-info

해당 API는 게임에서 결제를 직접 구현한 경우에 구매 완료 데이터를 빌링 시스템에 전송하는 API입니다.

기본 정보

  1. 협의된 특정 게임은 자체 구현한 결제를 사용할 수 있습니다.

    1. 단, 결제 어뷰징 방지는 게임쪽에서 잘 구현해주셔야합니다.

      1. 예) 저렴한 상품 구매 후 비싼 상품 지급 요청 방지

  2. 게임에서 결제를 구현했지만 매출 인식과 같은 재무 처리 및 플랫폼 기능을 일부 활용하기 위해서 ‘구매 완료 데이터’를 전송해줄 필요가 있습니다.

항목
내용
비고

호출주체

게임서버(s2s API)

HTTP 메소드

POST

Content-Type

application/json

Request

HTTP Request end point

POST https://각 환경별 빌링시스템 도메인/billing/api-game/v1/purchase/apple/appstore/implement/self/consumable/completed/save

HTTP Request Header

  • 아래의 HTTP Header들을 API 요청에 포함시켜야합니다.

이름
비고

X-Req-Pjid

프로젝트ID

기술 PM 등에게 전달받은 프로젝트ID

X-Auth-Access-Key

인증용 키

기술 PM 등에게 전달받은 해당 게임용 인증 키

HTTP Request Parameter

  • Content-Type: application/json 으로 요청되어야 합니다.

    • 영수증 관련 정보들의 길이 및 escape 등의 문제 때문

이름
데이터 타입
필수 Y/N
설명

pjid

String(20)

Y

프로젝트ID

  • 동일 게임이라면 서비스ID가 여러개일 수 있지만 프로젝트ID는 같음

1004

playerId

String(50)

Y

주문 완료를 진행하는 유저ID

ipCountry

String(10)

N

player의 IP기반 국가코드로 법적 대응을 위해서 수집

productId

String(200)

Y

구매를 진행한 상품ID(SKU와 같은 값)

apple_gem_01

microPrice

long

Y

구매 금액 micro단위

  • 사용측의 부동 소수점 오차등을 방지하기 위해서 micro단위 사용

구매 금액 micro단위(예. $0.99는 990,000 µ$. 100만을 곱함)

currency

String(10)

Y

구매 금액의 화폐 단위

USD

memo

String(2000)

N

메모

  • 필요시 옵셔널하게 사용

transactionId

String

Y

구매 단건의 transaction_id

  • 애플 → SDK → 클라이언트 → 게임서버 → 빌링으로 전달 필요

  • 멀티 디바이스 사용할 경우 소모성 상품이더라도 동일 영수증내 in_app이 N건이 존재 가능하기 때문에 거래를 특정할 수 있는 애플 transactionId가 필요

2000000574982560

receiptData

String

Y

애플 구매 영수증

참고

Response

응답은 JSON형태로 전달됩니다.

Success sample

  • 성공할 경우 빌링 시스템에는 구매 완료 데이터가 생성되며 이때 boid가 생성됩니다.

  • 아래는 성공의 경우 샘플 json입니다.

Error sample

  • 이미 전송 완료된 데이터를 다시 요청한 경우

  • 잘못된 영수증 데이터로 요청

에러 코드 정의

  • 아래와 같은 에러코드가 resultCode에 응답될 수 있습니다. (참고 링크)

  • 아래의 에러코드들은 모든 빌링 API에서 발생 가능한 에러 코드들입니다.

    • 해당 에러코드 외에 각 API에서만 발생가능한 에러코드들도 있습니다.

    • 각 에러 코드를 바탕으로 필요시 비즈니스 로직을 작성하시면 됩니다.

에러코드
비고

SYSTEM_ERROR

빌링 API에서 발생한 시스템 에러

  • HTTP 상태코드 500 리턴

NOT_ALLOW_AUTH

API 인증 헤더 누락이거나 기타 권한이 없는 요청에서 발생

  • 아래 에러 코드들은 해당 API에서 발생 가능한 추가 에러 코드들입니다.

에러코드
비고

INVALID_PARAMETER

NOT_VALID_RECEIPT

구매 영수증 검증

  • 영수증 변조 등 잘못된 영수증 문제

요청 curl 샘플

  • 도메인 및 인증 헤더 등은 변경 필요

Last updated