Epic Gmes 구매 검증 요청
기본 정보
- Epic Games 유저의 구매 완료 요청에 대한 결제 내용을 검증합니다.
| 항목 | 내용 | 비고 |
|---|---|---|
| 호출주체 | 게임서버(s2s API) | |
| 도메인 | 각 환경별 도메인 | |
| 인증방식 | HTTP 헤더 인증 정보 | |
| HTTP 메소드 | POST | |
| Content-Type | application/json |
Request
HTTP Request end point
POST https://각 환경별 빌링시스템 도메인/billing/api-game/v1/purchase/epic/games/verify
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 등의 문제 때문에 사용측에서 body로 전송하는게 용이한 경우가 많음
| 이름 | 데이터 타입 | 필수 Y/N | 설명 | 예 |
|---|---|---|---|---|
| reqId | String(100) | Y | 중복 요청을 막거나 요청 추적을 위한 값 | userId_UUID 등과 같은 방식으로 생성 |
| pjid | String(20) | Y | 프로젝트ID (동일 게임이라면 서비스ID가 여러개일 수 있지만 프로젝트ID는 같음) | 1004 |
| boid | String(20) | Y | 빌링 시스템 구매 예약 API를 통해서 생성된 ID | 1234 |
| playerId | String(50) | Y | 주문 완료를 진행하는 유저ID | |
| epicUserId | String(50) | Y | Epic Games 구매후 획득한 권한 ID | 25663c96bb7a40a0a3c7998e42b81234 |
| entitlementId | String(50) | Y | Epic Games 구매후 획득한 권한 ID | 8fe744a7633d4618a07a371d1dd5f443 |
| productId | String(200) | Y | 구매 진행하는 상품ID(SKU와 같은 값) - 빌링 시스템과 Epic Games 개발 포털에 상품 등록이 선행되어야 함 | epic_test_gem_01 |
Response
응답은 JSON형태로 전달됩니다.
Sample
Success sample
- 성공으로 응답하면 게임 서버는 유저에게 지속성의 경우 실행 권한을 부여, 소모성 상품의 경우 아이템 및 재화를 지급하고, 이후 빌링 완료처리 API를 호출해서 최종 완료해주시면 됩니다.
- 소모성 상품의 경우 완료 처리 요청 때 Epic Games에 리딤까지 지원합니다.
- 게임 서버에서는 필요 로그를 게임DB 또는 로그 DB에 저장해주시는게 좋습니다.
{
"resultCode": "SUCCESS",
"resultMessage": "Verification successful. Status: VERIFY_SUCCESS"
}
Error sample
- 구매 완료된 boid에 대해서 다시 완료 요청
{
"resultCode": "INVALID_PARAMETER",
"resultMessage": "'boid: 1' purchaseState is not BILLING_RESERVED. The current value is 'COMPLETED"
}
- 구매 완료하지 않은 boid에 대한 요청
{
"resultCode": "INVALID_PARAMETER",
"resultMessage": "'boid: 1' purchaseStatus is not RESERVED. The current value is 'VERIFY_SUCCESS'"
}
에러 코드 정의
- 아래와 같은 에러코드가 resultCode에 응답될 수 있습니다. (참고 링크)
- 아래의 에러코드들은 모든 빌링 API에서 발생 가능한 에러 코드들입니다.
- 해당 에러코드 외에 각 API에서만 발생가능한 에러코드들도 있습니다.
- 각 에러 코드를 바탕으로 필요시 비즈니스 로직을 작성하시면 됩니다.
| 에러코드 | 비고 |
|---|---|
| SYSTEM_ERROR | 빌링 API에서 발생한 시스템 에러 (HTTP 상태코드 500 리턴) |
| NOT_ALLOW_AUTH | API 인증 헤더 누락이거나 기타 권한이 없는 요청에서 발생 |
- 아래 에러 코드들은 해당 API에서 발생 가능한 추가 에러 코드들입니다.
| 에러코드 | 비고 |
|---|---|
| INVALID_PARAMETER | |
| EXTERNAL_API_ERROR | 빌링 API가 호출하는 외부 API가 에러인 경우 (예: Epic Games Ecom WEB API 장애로 인한 오류. 게임 서버는 지수 백오프 알고리즘으로 재시도하거나 클라이언트의 미처리 영수증 처리 기능으로 처리할 수 있음) |
요청 curl 샘플
- 도메인 및 인증 헤더 등은 변경 필요
curl -X 'POST' \
'https://API도메인/billing/api-game/v1/purchase/epic/games/verify' \
-H 'accept: application/json;charset=UTF-8' \
-H 'X-Req-Pjid: PJID값' \
-H 'X-Auth-Access-Key: API인증키' \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{
"reqId": "userId_verify_98b50907-0928-493b-a816-dac8dbca1f54",
"boid": "4",
"playerId": "playerId",
"pjid": "PJID값",
"epicUserId": "25663c96bb7a40a0a3c7998e42b81234",
"entitlementId": "8fe744a7633d4618a07a371d1dd5f443",
"productId": "epic_test_gem_01"
}'