• 1. 개요


    심리스 연동에서 회원의 보유금액은 사이트 측에서 관리됩니다.사이트는 특정 API를 KPLAY시스템에 제공하여 해당 정보를 보내야 합니다.


  • 1.1 제품 목록

    제품 ID

    공급자

    타입

    설명

    1

    에볼루션


    아이프레임은 allowfullscreen = true로 설정하십시오

    0

    기본 로비

    1

    RNG 블랙 잭

    2

    RNG 머니 휠

    3

    RNG 라이트닝 룰렛

    4

    RNG 유로피안 룰렛

    5

    RNG 메가 볼

    6

    RNG 용호

    7

    RNG 바카라

    8

    RNG 톱 카드

    2

    빅 게이밍

    0

    기본 로비

    3

    마이크로

    0

    기본 로비

    1

    그랜드 로비

    5

    아시아 게이밍

    0

    기본 로비

    6

    드림 게이밍

    0

    기본 로비

    9

    섹시 게이밍

    0

    기본 로비

    10

    프라그마틱 플레이

    0

    기본 로비

    12

    플레이테크

    0

    기본 로비

    16

    로얄 카지노 게이밍

    0

    기본 로비

    17

    에즈기

    0

    기본 로비

    18

    보타


    보타 연동 경우

    아이프램 사용 불가

    0

    기본 로비

    19

    스카이윈드

    0

    기본 로비

    21

    모티베이션

    0

    기본 로비

    22

    두윈


    두윈 연동 경우

    아이프램 사용 불가

    0

    기본 로비

    24

    오리엔탈 게이밍

    0

    기본 로비

    26

    타이산

    0

    기본 로비

    30

    아이코닉21

    0

    기본 로비

    34

    GPI

    0

    기본 로비

    35

    XPG

    0

    기본 로비

    38

    DB

    0

    기본 로비

    39

    힐튼


    힐튼 연동 경우

    아이프램 사용 불가

    0

    기본 로비


  • 1.2 슬롯 서비스 리스트

    제품 ID

    공급자

    타입

    설명

    0

    슬롯 로비

    0

    디폴트 슬롯 로비

    200

    프라그마틱플레이 슬롯

    로비로 생성

    프라그마틱플레이 슬롯 게임

    201

    하바네로

    로비로 생성

    하바네로 슬롯 게임

    202

    엘리시움

    로비로 생성

    엘리시움 슬롯 게임

    205

    스페이드 게이밍

    로비로 생성

    스페이드 게이밍 슬롯 게임

    207

    플레이 앤 고

    로비로 생성

    플레이 앤 고 슬롯 게임

    208

    월드 매치

    로비로 생성

    월드 매치 슬롯 게임

    209

    마이크로 게이밍 슬롯

    로비로 생성

    마이크로 게이밍 슬롯 게임

    212

    YL게이밍

    로비로 생성

    YL게이밍 슬롯 게임

    213

    EVO 레드타이거

    로비로 생성

    EVO 레드타이거 슬롯 게임

    214

    넷엔트

    로비로 생성

    넷엔트 슬롯 게임

    215

    드레이곤 소프트

    로비로 생성

    드레이곤 소프트 슬롯 게임

    216

    YGG 드라실

    로비로 생성

    YGG 드라실 슬롯 게임

    217

    분고

    로비로 생성

    분고 슬롯 게임

    218

    플레이슨

    로비로 생성

    플레이슨 슬롯 게임

    219

    플레이테크 슬롯

    로비로 생성

    플레이테크 슬롯 게임

    220

    CQ9 슬롯

    로비로 생성

    CQ9 슬롯 게임

    221

    스카이윈드

    로비로 생성

    스카이윈드 슬롯 게임

    222

    와즈단

    로비로 생성

    와즈단 슬롯 게임

    223

    포켓 게임즈 소프트

    로비로 생성

    포켓 게임즈 소프트 슬롯 게임

    224

    로얄 슬롯 게이밍

    로비로 생성

    로얄 슬롯 게이밍 슬롯 게임

    225

    Evo 빅 타임 게이밍

    로비로 생성

    Evo 빅 타임 게이밍 슬롯 게임

    227

    Evo 에볼 노 리미트

    로비로 생성

    Evo 에볼 노 리미트 슬롯 게임

    228

    CC88

    로비로 생성

    CC88 슬롯 게임

    230

    패스트 스핀

    로비로 생성

    패스트 스핀 슬롯 게임

    231

    넥스트 스핀

    로비로 생성

    넥스트 스핀 슬롯 게임

    235

    플레이 스타

    로비로 생성

    플레이 스타 슬롯 게임

    249

    나가게임즈

    로비로 생성

    나가게임즈 슬롯 게임

    250

    히든버튼

    로비로 생성

    히든버튼 슬롯 게임

    253

    슬롯밀

    로비로 생성

    슬롯밀 슬롯 게임

    254

    피터앤슨

    로비로 생성

    피터앤슨 슬롯 게임

    255

    핵쏘 게이밍

    로비로 생성

    핵쏘 게이밍 슬롯 게임

    256

    아바타UX

    로비로 생성

    아바타UX 슬롯 게임

    257

    568윈

    로비로 생성

    568윈 슬롯 게임

    258

    블루프린트

    로비로 생성

    브루 프린트 슬롯 게임

    263

    지리

    로비로 생성

    지리 슬롯 게임

    265

    JDB

    로비로 생성

    JDB 슬롯 게임

    267

    GPI 슬롯

    로비로 생성

    GPI 슬롯 게임

    268

    킹 미다스

    로비로 생성

    킹 미다스 슬롯 게임

    279

    엔도르피나

    로비로 생성

    엔도르피나 슬롯 게임


  • 1.3 스포츠 제품 목록

    제품 ID

    공급자

    타입

    설명

    101

    E-스포츠

    0

    기본 로비

    108

    라이브 스포츠

    0

    기본 로비

    109

    비터 스포츠

    0

    기본 로비


  • 1.4 P2P 제품 목록

    제품 ID

    공급자

    타입

    설명

    10002

    글로벌 홀덤

    0

    기본 로비

    10003

    바둑이

    0

    기본 로비


  • 1.5 미니 게임 제품 목록

    제품 ID

    공급자

    타입

    설명

    300

    스프라이브

    1 - 에비에이터

    2 - 다이스

    3 - 플링코

    4 - 골

    5 - 하일로

    6 - 마인즈

    7 - 키노

    8 - 미니 룰렛

    9 - 핫라인

    게임은 Type ID를 통하여만 액세스할 수 있습니다.

    301

    에볼루션 파워볼

    1 - 에볼루션 파워볼 1턴

    2 - 에볼루션 파워사다리 1턴

    3 - 에볼루션 파워사다리 2턴

    4 - 에볼루션 파워사다리 3턴

    5 - 에볼루션 파워볼 2턴

    6 - 에볼루션 파워볼 3턴

    7 - 에볼루션 파워볼 4턴

    8 - 에볼루션 파워볼 5턴

    9 - 에볼루션 파워사다리 4턴

    10 - 에볼루션 파워사다리 5턴

    게임은 Type ID를 통하여만 액세스할 수 있습니다.


  • 1.6 KPLAY 에서 제공하는 것

    • KPLAY 앤드포인트

    • KPLAY AG코드

    • KPLAY AG토큰

    • KPLAY 비밀키


  • 1.7 사이트에서 제공하는 것

    • 사이트 앤드 포인트


    예제:

    사이트 앤드 포인트 : http://www.merchant.com/

    자동 작성된 debit api주소 : http://www.merchant.com/debit


  • 1.8 사이트에서 작성하는 API

    심리스 연동을 위해서는 사이트는 아래의 API를 작성하여야 합니다.


    • Debit – 회원의 잔고 차감

    • Credit – 회원의 잔고 증감

    • Balance – 회원의 잔고 조회

    • Bonus – 플레이어 보너스 획득을위한 API (슬롯에만 적용 가능)

    • Buyin – 피싱 게임에 대한 플레이어 잔액을 차감하는 API (피싱 게임에만 적용 가능)


  • 1.9 데이터의 흐름 및 cronjob

    KPLAY에서 모든 Debit에는 쌍이 되는 Credit이 존재합니다. 해당 쌍의 조회는 txn_id로 가능합니다.

    사이트는 모든 Debit에 대하여 Credit의 수신을 조회하는 cronjob을 작성하여야 합니다. Debit발생 후 10분이내에 Credit을 받지 못한다면 해당 Debit에 대하여 results API를 통하여 별도로 결과를 조회 후 반영하여야 합니다.



  • 2. AUTH (필수)


    사이트에서 게임을 실행하기 위해서 아래의 API를 콜합니다. API는 자동으로 회원을 생성하거나 회원정보를 업데이트 합니다.


    HTTP 방법 : POST

    URL : <KPLAY 앤드포인트>/auth


  • 2.1 요청 포멧

    Header

    필드

    유형

    설명

    필수

    ag-code

    string

    AG코드

    ag-token

    string

    AG코드


    Body

    필드

    유형

    설명

    필수

    user

    object


    user.id

    integer

    회원의 고유 아이디


    길이 9

    user.name

    string

    회원의 고유 이름

    생성 후 변경 불가


    길이 3 – 20

    user.balance

    decimal(15,2)

    사용자의 잔고

    user.language

    char(3)

    사용자의 언어

    13.1 언어

    user.domain_url

    string

    (슬롯 및 피싱 로비 전용)


    이 필드는 귀사의

    도메인으로

    콜백하고 게임으로

    리디렉션할때에

    필요합니다.

    prd

    object


    prd.id

    integer

    제품 ID

    1.1 제품 목록 을참조하십시오

    prd.type

    integer

    제품의 종류

    1.1 제품 목록 을참조하십시오

    아니오

    prd.skin

    integer

    (슬롯 전용)


    테마 옵션입니다. 디폴트는 다크 테마입니다.


    사용 가능한 서비스 스킨:-

    1 - 다크

    2 - 라이트


    테마의 보기는 13.2 슬롯 로비 스킨

    을참조하십시오.

    아니오

    prd.filter

    integer

    (슬롯 로비 전용)


    로비 입장 시 특정 서비스의 아이디로 필터를 사용합니다.

    아이디는 1.2 슬롯 서비스 리스트 를 참조할 수 있습니다.

    아니오

    prd.lobby

    integer

    (기론에만 적용)


    로비에 액세스하거나 Type ID로 특정 게임에 액세스할 때 사용합니다.

    Type ID는 1.3 스포츠 제품 목록을 참조하십시오.


    로비 필드 값은:

    0 = Type ID로 특정 게임에 접속합니다.

    1 = 로비로 접속합니다.

    아니오

    prd.open_type

    string

    (슬롯 및 피싱 로비 전용)


    n – 새탭, r – 리다이렉트

    디폴트: n

    아니오

    prd.is_mobile

    boolean

    true의 경우 모바일

    사이트의 URL을

    리턴합니다


    기본값 : 아니오

    prd.table_id

    string

    에볼루션 라이브 카지노 테이블 ID

    17. Get Game Table ID 참조

    아니오



    ****참고****

    슬롯의 경우에 콜백 URL의 포매트는

    http://{domain_url}/slots/{product_id}/{type}?isMobile=false입니다.

    이 콜백 URL을 AUTH 방법(섹션 2 유저 AUTH)과 매핑해야 합니다, {product_id} 및 {type} 변수를 전달하여 슬롯 게임을 시작합니다.


    ****모바일사이트의 URL****

    http://{domain_url}/slots/{product_id}/{type}?isMobile=true


  • 2.2 요청 예


    {

    "user":

    {

    "id":1,

    "name":"johndoe",

    "balance":123.05,

    "language":"en"

    },

    "prd":

    {

    "id":1,

    "type":0,

    "is_mobile":0,

    "lobby":0, // 기론에만 적용 (제품 ID 102)

    "open_type":"n"

    "filter":200 // 에 의존 제품 ID

    }

    }



  • 2.3 응답 포맷

    필드

    유형

    설명

    status

    integer

    0 경우 오류

    1 성공하는 경우

    user_id

    integer

    KPLAY 사용자 ID

    username

    string

    KPLAY 사용자 이름

    launch_url

    string

    시작 URL

    error

    string

    오류 메시지 상태 = 0


  • 2.4 응답 예

    성공


    {

    "status":1,

    "user_id":1000011,

    "username":"ABCjohndoe",

    "launch_url": "http://casino.com"

    }



    오류


    {

    "status":0,

    "error":"ACCESS_DENIED"

    }



    오류

    설명

    ACCESS_DENIED

    사이트의 증명서 불일치 (code/token).

    INVALID_PRODUCT

    프로덕트가 존재하지 않을 경우

    INVALID_PARAMETER

    무효 또는 없는 domain_url 경우

    INVALID_USER

    사용자가 존재하지 않을 경우

    INTERNAL ERROR

    이외의 에러


  • 2.5 샘플 코드

    20.1 인증 을 참조하십시오




  • 3. DEBIT (필수)


    KPLAY는 배팅 시에 회원에게서 차감할 금액을 이 API를 통하여 사이트에 전달합니다.


    HTTP 방법 : POST

    URL : <사이트 앤드포인트>/debit


  • 3.1 요청 포맷

    Header

    필드

    타입

    설명

    secret-key

    string

    KPLAY 사이트 비밀키

    정상적인 KPLAY에서의 접근인지를

    확인합니다.


    Body

    필드

    타입

    설명

    user_id

    integer

    KPLAY 사용자 ID

    amount

    decimal(15, 2)

    금액

    prd_id

    integer

    제품 ID

    txn_id

    string

    고유 트랜잭션 ID

    game_id

    integer

    게임 ID

    10. Product Game List (필수)


    **Debit 요청에서는 DG의 게임 ID가 항상 0입니다.

    게임 ID가 필요하신 경우에는

    “Results”API를 호출하여 게임 ID를

    업데이트하십시오.


    영향을 받은 제품(들):-

    ➢ 드림 게이밍

    ➢ E-스포츠

    table_id

    string

    테이블 ID

    * 에볼루션 라이브 카지노에만 적용됩니다.

    round_id

    string

    라운드 ID

    * 2024년 7월 24일 이후에만 적용(KRW).


    라운드 ID가 포함되지 않은 제품:-

    ➢ 드림 게이밍

    ➢ 비터 스포츠

    ➢ 스페이드 게이밍

    ➢ 패스트 스핀

    credit_amount

    decimal(15, 2)

    credit_amount가 존재하는 경우에는 AG가 그레딧

    결산을 하셔야 합니다

    txn_details

    Array

    거래내역 목록

    txn_details.event_id

    string

    이벤트 아이디

    * 라이브 베팅에만 적용

    txn_details.league_id

    string

    리그 아이디

    * 라이브 베팅에만 적용

    txn_details.league_name

    string

    리그 이름

    * 라이브 베팅에만 적용

    txn_details.league_kr_name

    string

    리그 한국 이름

    * 라이브 베팅에만 적용

    txn_details.sport_id

    integer

    스포츠 아이디

    * 라이브 베팅에만 적용

    txn_details.sport_name

    string

    스포츠 이름

    * 라이브 베팅에만 적용

    txn_details.country_code

    string

    국가 코드

    * 라이브 베팅에만 적용

    txn_details.type

    string

    베팅 유형

    * 라이브 베팅에만 적용

    txn_details.type_desc

    string

    베팅 유형 설명

    * 라이브 베팅에만 적용

    txn_details.event_part_id

    integer

    이벤트 파트 아이디

    * 라이브 베팅에만 적용

    txn_details.event_part_name

    string

    이벤트 파트 이름

    * 라이브 베팅에만 적용

    txn_details.selection

    string

    베팅 선택

    * 라이브 베팅에만 적용

    txn_details.selection_desc

    string

    베팅 선택 설명

    * 라이브 베팅에만 적용

    txn_details.home_team

    string

    홈팀 팀명

    * 라이브 베팅에만 적용

    txn_details.away_team

    string

    원정팀 팀명

    * 라이브 베팅에만 적용

    txn_details.home_team_kr

    string

    홈팀 한국 팀명

    * 라이브 베팅에만 적용

    txn_details.away_team_kr

    string

    원정팀 한국 팀명

    * 라이브 베팅에만 적용

    txn_details.start_time

    string

    이벤트 시작 시간

    * 라이브 베팅에만 적용

    txn_details.odds

    decimal(3,2)

    배당율

    * 라이브 베팅에만 적용

    txn_details.hdp

    string

    핸디캡 값

    * 라이브 베팅에만 적용


  • 3.2 요청 예


    {

    "user_id":1000011,

    "amount":100.00,

    "prd_id":1,

    "txn_id":"A00000005",

    "game_id":1005,

    "table_id":"jimihendrix00000",

    "round_id":"17df2d6fc0f95beb63861983-r3ildu3tr7naae3z"

    }



    포함된credit_amount


    {

    "user_id":1000011,

    "amount":100.00,

    "prd_id":1,

    "txn_id":"A00000005",

    "game_id":1005,

    "table_id":"jimihendrix00000",

    "round_id":"17df2d6fc0f95beb63861983-r3ildu3tr7naae3z",

    "credit_amount":100

    }



    라이브 베팅에만 적용


    {

    "user_id":1000011,

    "amount":100.00,

    "prd_id":506,

    "txn_id":"A00000005",

    "game_id":1005,

    "txn_details":[

    {

    "event_id":237241598721036288,

    "league_id":227988609297436672,

    "league_name":"KBO",

    "league_kr_name":"KBO",

    "sport_id":9,

    "sport_name":"Baseball",

    "country_code":"KR",

    "type":"T",

    "type_desc":"Over/Under",

    "event_part_id":70,

    "event_part_name":"Whole Match",

    "selection":"Lotte Giants - 7.5",

    "selection_desc":"Under",

    "home_team":"KT Wiz",

    "away_team":"Lotte Giants",

    "home_team_kr":"KT 위즈",

    "away_team_kr":"롯데 자이언츠",

    "start_time":"2024-05-16 09:30:00",

    "odds":"1.49",

    "hdp":"7.5",

    }

    ]

    }



  • 3.3 응답 포맷

    필드

    타입

    설명

    status

    integer

    0 경우 오류

    1 성공하는 경우

    balance

    decimal(15, 2)

    최신 멤버 균형

    error

    string

    오류 메시지 상태 = 0



  • 3.4 응답 예

    성공


    {

    "status":1,

    "balance":505.50

    }



    오류


    {

    "status":0,

    "error":"ACCESS_DENIED"

    }



    에러 메시지

    설명

    ACCESS_DENIED

    잘못된 비밀 키

    INVALID_USER

    회원이 사이트에 없는 경우

    DUPLICATE_DEBIT

    같은 "txn_id"의 debit이 이미 사이트에 존재하는 경우

    INSUFFICIENT_FUNDS

    차감할 잔액이 부족한 경우

    UNKNOWN_ERROR

    상인 시스템에서 내부 오류


    **Debit 요청에서는 DG의 게임 ID가 항상 0입니다.

    게임 ID가 필요하신 경우에는 “Results”API를 호출하여 게임 ID를 업데이트하십시오.


    **Debit = 0 경우에 AG는 상태 = 1의 응답을 반환해야 합니다.




  • 4. CREDIT (필수)


    KPLAY는 게임의 결과 처리 시 회원에게 지급할 금액을 이 API를 통하여 사이트에 전달합니다


    HTTP 방법 : POST

    URL : <사이트 앤드포인트>/credit


  • 4.1 요청 포맷

    Header

    필드

    타입

    설명

    secret-key

    string

    KPLAY 사이트 비밀키

    정상적인 KPLAY에서의 접근인지를

    확인합니다.


    Body

    필드

    타입

    설명

    user_id

    integer

    KPLAY 사용자 ID

    amount

    decimal(15,2)

    금액

    prd_id

    integer

    제품 ID

    txn_id

    string

    고유 트랜잭션 ID

    is_cancel

    integer

    0은 일반 지급

    1은 취소 또는 환불

    game_id

    integer

    게임 ID

    * 에볼루션 라이브 카지노에만 적용됩니다.

    table_id

    string

    테이블 ID

    * 에볼루션 라이브 카지노에만 적용됩니다.

    round_id

    string

    라운드 ID

    * 2024년 7월 24일 이후에만 적용(KRW).


    라운드 ID가 포함되지 않은 제품:-

    ➢ 드림 게이밍

    ➢ 비터 스포츠

    ➢ 스페이드 게이밍

    ➢ 패스트 스핀

    total_bet

    decimal(15,2)

    총 베팅금액

    * 히든 포커에만 적용.

    rake

    decimal(15,2)

    총 레이크금액

    * 히든 포커에만 적용.


  • 4.2 요청 예


    {

    "user_id":1000011,

    "amount":195.00,

    "prd_id":1,

    "txn_id":"A00000005",

    "is_cancel":0,

    "round_id":"343093"

    }



  • 4.3 응답 포맷

    필드

    타입

    설명

    status

    integer

    0 경우 오류

    1 성공하는 경우

    balance

    decimal(15,2)

    최신 회원 보유금액

    error

    string

    오류 시 메시지


  • 4.4 응답 예

    성공


    {

    "status":1,

    "balance":505.50

    }



    오류


    {

    "status":0,

    "error":"ACCESS_DENIED"

    }



    에러 메시지

    설명

    ACCESS_DENIED

    잘못된 비밀 키

    INVALID_USER

    사이트에 해당 유저가 존재하지 않을 경우

    INVALID_DEBIT

    같은 txn_id에 해당하는 debit이 존재하지 않는 경우

    DUPLICATE_CREDIT

    같은 txn_id에 해당하는 credit이 이미 존재하는 경우

    UNKNOWN_ERROR

    사이트 내부 오류




  • 5. Resettlement (필수 스포츠북 전용)


    KPLAY는 스포츠 북 재정착 베팅에 대한 회원 잔액을 조절하기 위하여 이 API를 업체에 호출합니다


    참고: 스포츠 북에만 적용


    HTTP 방법 : POST

    URL : <사이트 앤드포인트>/resettle


  • 5.1 요청 포맷

    Header

    필드

    타입

    설명

    secret-key

    string

    KPLAY 사이트 비밀키

    정상적인 KPLAY에서의 접근인지를

    확인합니다.


    Body

    필드

    타입

    설명

    user_id

    integer

    KPLAY 사용자 ID

    amount

    integer

    금액

    txn_id

    string

    고유 트랜잭션 ID

    prd_id

    integer

    제품 ID

    is_cancel

    integer

    0은 일반 지급

    1은 취소 또는 환불

    resettlement_time

    datetime

    재정착 일자/시간

    표준 시간대 UTC+0

    ISO 포맷으로


  • 5.2 요청 예


    {

    "user_id":12345,

    "amount":1000,

    "txn_id":ABC12345,

    "prd_id": 103,

    "is_cancel":0,

    "resettlement_time":2022-09-12 10:00:00

    }



  • 5.3 응답 포맷

    필드

    타입

    설명

    status

    integer

    0 경우 오류

    1 성공하는 경우

    balance

    decimal(15, 2)

    최신 회원 잔고

    error

    string

    오류 메시지


  • 5.4 응답 예

    성공


    {

    "status":1

    "balance":2000.00

    }



    오류


    {

    "status":0

    "error":"INVALID_USER"

    }



    에러 메시지

    설명

    INVALID_USER

    사이트에 해당 유저가 존재하지 않을 경우


    *참고: KPLAY는 업체가 이 요청에 응답할 때까지 지속적으로 업체에게 이 API를 호출합니다




  • 6. BALANCE (필수)


    KPLAY는 유저의 최신 잔고를 조회하기 위해 사이트에 이 API를 호출 합니다.


    HTTP 방법: POST

    URL: <사이트 앤드포인트>/balance


  • 6.1 요청 포맷

    Header

    필드

    타입

    설명

    secret-key

    string

    KPLAY 사이트 비밀키

    정상적인 KPLAY에서의 접근인지를

    확인합니다.


    Body

    필드

    타입

    설명

    user_id

    integer

    KPLAY 사용자 ID

    prd_id

    integer

    제품 ID


  • 6.2 요청 예


    {

    "user_id":1000011

    "prd_id": 1

    }



  • 6.3 응답 포맷

    필드

    타입

    설명

    status

    integer

    0 경우 오류

    1 성공하는 경우

    balance

    decimal(15, 2)

    최신 회원 잔고

    error

    string

    오류 메시지


  • 6.4 응답 예

    성공


    {

    "status":1

    "balance":9999.99

    }



    오류


    {

    "status":0

    "error":"ACCESS_DENIED"

    }



    에러 메시지

    설명

    ACCESS_DENIED

    잘못된 비밀 키

    INVALID_USER

    사이트에 해당 유저가 존재하지 않을 경우

    UNKNOWN_ERROR

    사이트 내부 오류




  • 7. RESULTS (필수)


    사이트는 KPLAY에서 결과를 얻기 위해 이 API를 호출 할 수 있습니다.

    Debit 발생 후 10분이내에 Credit을 수신하지 못하는 경우 결과 API로 처리 하여야 합니다.


    HTTP 방법 : GET

    URL: <KPLAY 앤드포인트>/results/{prd_id}/{txn_id}


  • 7.1 요청 포맷

    Header

    필드

    타입

    설명

    필수

    ag-code

    string

    KPLAY AG코드

    ag-token

    string

    KPLAY AG토큰


    Body

    필드

    타입

    설명

    필수

    prd_id

    integer

    제품 ID

    txn_id

    string

    트랜잭션 ID


  • 7.2 요청 예


  • 7.3 응답 포맷

    필드

    타입

    설명

    status

    integer

    0 경우 오류

    1 성공하는 경우

    type

    integer

    0 트랜잭션이 여전히 미처리인 경우

    1 트랜잭션이 해결 된 경우

    game_id

    integer

    게임 아이디

    7.2 부록 참조

    stake

    integer

    Debit 금액

    payout

    integer

    Credit 금액

    Type이 1인 경우에만 유효

    is_cancel

    integer

    0은 일반

    1은 취소 또는 환불

    Type이 1인 경우에만 유효

    is_resettle

    integer

    0 이전에 거래가 재결제된 경우

    1 재정착된 경우

    error

    string

    오류 메시지


  • 7.4 응답 예

    성공


    {

    "status": 1,

    "type": 1,

    "game_id": 1,

    "stake":100.00,

    "payout":195.00,

    "is_cancel":0

    "is_resettlement":1

    }



    오류


    {

    "status":0,

    "error":"ACCESS_DENIED"

    }



    에러 메시지

    설명

    ACCESS_DENIED

    사이트의 증명서 불일치(code/token).

    INVALID_TXN

    존재하지 않는 트랜잭션

    INTERNAL_ERROR

    KPLAY 내부 오류




  • 8. Bonus (필수)


    KPLAY가 머천트에거 보너스가 발동되는 것을 알려주기 위하여 사이트에서 이 API를 호출할 겁니다.


    HTTP 방법 : POST

    URL : <사이트 앤드포인트>/bonus


  • 8.1 요청 포맷

    Header

    필드

    타입

    설명

    secret-key

    string

    KPLAY 사이트 비밀키


    Body

    필드

    타입

    설명

    user_id

    integer

    KPLAY 사용자 ID

    type

    integer

    Type 0: 인 게임 보너스

    Type 1: 프로모션

    Type 2: 잭팟

    amount

    decimal(15,2)

    보너스금액

    prd_id

    integer

    제품 ID

    1.2 슬롯 서비스 리스트

    game_id

    integer

    게임 ID

    10. Product Game List

    txn_id

    string

    독특한 트랜잭션 ID



  • 8.2 요청 예


    {

    "user_id":1000011,

    "type":0,

    "amount":200.00,

    "prd_id":200,

    "game_id":438,

    "txn_id":"A00000005"

    }



  • 8.3 응답 포맷

    필드

    타입

    설명

    status

    integer

    오류 발생한 경우는 0

    성공한 경우는 1

    balance

    decimal(15,2)

    최신 회원 잔고

    error

    string

    상태 = 0인 경우의 오류 메시지


  • 8.4 응답 예

    성공


    {

    "status":1,

    "balance":1500.0

    }



    오류


    {

    "status":0,

    "error":"ACCESS_DENIED"

    }



    에러 메시지

    설명

    ACCESS_DENIED

    사이트의 증명서 불일치(code/token)

    INVALID_USER

    사이트에 해당 유저가 존재하지 않는 경우

    UNKNOWN_ERROR

    사이트 내부 오류



    FAQ

    Q: 보너스 엔드포인트 유형 0과 유형 1의 차이는 무엇입니까?

    A: 유형 0 게임에서 프리 스핀이며, 유형 1 보너스/프로모션은 에이전트 또는 서비스 제공 회사가 제공하는 프로모션입니다.


    Q: 유형 0 게임 프리 스핀은 CREDIT 엔드포인트로 전송됩니까?

    A: 유형 0 BONUS 엔드포인트로 전송되며 CREDIT 엔드포인트로 전송하지 않습니다. 프리 스핀 회전시 DEBIT 요청을 전송하지 않습니다.




  • 9. Product List (선택 과목)


    KPLAY에서 서비스 사용 가능한 서비스를 얻기 위하여 이 API를 호출해야 합니다.


    HTTP 방법 : POST

    URL : <KPLAY 앤드포인트>/productlist


  • 9.1 요청 포맷

    Header

    필드

    타입

    설명

    ag-code

    string

    KPLAY AG코드

    ag-token

    string

    KPLAY AG토큰


    Body

    필드

    타입

    설명

    language

    string

    서비스 이름에 대한 언어옵션

    한국어: ko/kr,

    영어: en

    디폴트: 영어

    wallet

    integer

    0 – 모든 월렛

    1 – 심리스

    2 - 월렛

    디폴트: 모든 월렛



  • 9.2 요청 예


    {

    "language":"kr",

    "wallet":1

    }



  • 9.3 응답 포맷

    필드

    타입

    설명

    status

    integer

    0 -오류

    1 -성공

    prd_id

    string

    서비스 ID

    prd_name

    integer

    사비스 이름

    error

    string

    상태 = 0인 경우의 오류 메시지


  • 9.4 응답 예


    {

    "status":1,

    "data":[

    {

    "prd_id":1,

    "prd_name":"에볼루션",

    },

    {

    "prd_id":2,

    "prd_name":"빅게이밍",

    },

    {

    "prd_id":5,

    "prd_name":"아시아 게이밍",

    }

    ]

    }



    에러 메시지

    설명

    INVALID_PARAMETER

    무효한 사이트 비밀키

    ACCESS_DENIED

    AG가 비활성화되었습니다.

    USER_NOT_EXIST

    AG가 존재하지 않는 경우 또는 AG토큰이 잘 못된 경우

    INTERNAL_ERROR

    KPLAY 내부 오류




  • 10. Product Game List (필수)


    KPLAY에서 서비스 게임 목록을 얻기 위하여 이 API를 호출해야 합니다.


    HTTP 방법 : POST

    URL : <KPLAY 앤드포인트>/gamelist


  • 10.1 요청 포맷

    Header

    필드

    타입

    설명

    ag-code

    string

    KPLAY AG코드

    ag-token

    string

    KPLAY AG토큰


    Body

    필드

    타입

    설명

    language

    string

    게임 이름에 대한 언어 설정은 디폴트가 영어며

    한국어: ko, 영어: en

    참고: 이 API에 대한 콜 요청은 분당 1회입니다


  • 10.2 요청 예


    {

    "language":"en"

    }



  • 10.3 응답 포맷

    필드

    타입

    설명

    status

    integer

    오류 발생한 경우는 0

    성공한 경우는 1

    game_name

    string

    사비스 게임 이름

    game_id

    integer

    서비스 게임 ID

    game_icon

    string

    제품 게임 아이콘 (슬롯 게임 전용)

    rtp

    string

    슬롯 RTP

    is_enabled

    integer

    0 - 허용안함

    1 - 허용함

    error

    string

    상태 = 0인 경우의 오류 메시지


  • 10.4 응답 예

    성공


    {

    "game_list":{

    "1":[

    {

    "game_id": 15,

    "game_name":"baccarat",

    "rtp":"0",

    "is_enabled": 1

    }

    ],

    "200":[

    {

    "game_id": 1,

    "game_name":"Aztec Bonanza",

    "game_icon":"https://slots.kplaycasino.com/pragmatic/slots/id/1.png",

    "game_icon_large":"https://slots.kplaycasino.com/500*500/pragmatic/slots/id/1.png",

    "rtp":"97.06%",

    "is_enabled": 1

    }

    ]

    },

    "status":1

    }



    오류


    {

    "status":0,

    "error":"INVALID_PARAMETER"

    }



    에러 메시지

    설명

    INVALID_PARAMETER

    무효한 사이트 비밀키

    INVALID_PRODUCT

    사이트에서 서비스 ID가 존재하지 않는 경우

    INTERNAL_ERROR

    KPLAY내부 오류




  • 11. Get Game Info (필수)


    해당 API를 호출 해서 KPLAY 에서 게임 정보를 얻기 수 있습니다.


    HTTP 방법 : POST

    URL : <KPLAY 앤드포인트>/gameinfo


  • 11.1 요청 포맷

    Header

    필드

    타입

    설명

    ag-code

    string

    KPLAY AG코드

    ag-token

    string

    KPLAY AG토큰


    Body

    필드

    타입

    설명

    language

    string

    게임 이름에 대한 언어 설정은 디폴트가 영어며

    한국어: ko, 영어: en

    참고: 게임 정보 API은 1분당 1번만 요청 가능 합니다


  • 11.2 요청 예


    {

    "language":"en"

    }



  • 11.3 응답 포맷

    필드

    타입

    설명

    status

    integer

    오류 발생한 경우는 0

    성공한 경우는 1

    recommended

    string

    추천 게임

    popular

    string

    인기 게임

    new_game

    string

    신규 게임

    game_id

    integer

    서비스 게임 ID

    game_name

    string

    사비스 게임 이름

    error

    string

    상태 = 0인 경우의 오류 메시지


  • 11.4 응답 예

    성공


    {

    "status":1,

    "recommended":{

    "200":[

    {

    "game_id": 14,

    "game_name":"Wild West Gold"

    },

    "209":[

    {

    "game_id": 62,

    "game_name":"Basketball Star"

    }

    ]

    },

    "popular":{

    "202":[

    {

    "game_id": 466,

    "game_name":"Supa Crew"

    },

    "205":[

    {

    "game_id": 153,

    "game_name":"Christmas Miracles"

    }

    ]

    },

    "new_game":{

    "200":[

    {

    "game_id": 512,

    "game_name":"Kingdom of The Dead"

    },

    "220":[

    {

    "game_id": 277,

    "game_name":"Treasure Pirate"

    }

    ]

    }

    }



    오류


    {

    "status":0,

    "error":"INVALID_PARAMETER"

    }



    에러 메시지

    설명

    INVALID_PARAMETER

    무효한 사이트 비밀키

    INVALID_PRODUCT

    사이트에서 서비스 ID가 존재하지 않는 경우

    INTERNAL_ERROR

    KPLAY내부 오류




  • 12. Get Push Bets (선택 과목)


    판매자는 푸시된 베팅 내역을 얻기 위해 KPLAY에서 이 API를 호출합니다.


    ● 게임 결과가 동점인 경우 플레이어와 은행가에 베팅하는 거래는 "푸시" 거래가 됩니다. 예를 들어 플레이어가 플레이어나 뱅커 중 한 명에게 내기를 걸었지만 결과는 동점인 경우 환불 금액 = pushed_amount.

    ● 푸시된 금액 = 0이면 트랜잭션에 푸시가 없습니다.

    ● 트랜잭션이 리스트에 없으면 데이터를 아직 사용할 수 없습니다.

    txn_id 필트가 있는 경우, start_dateend_date 필드가 무시하게 되고 더이상 필수 항목이 아닙니다. 특정 Txn_id가 하나만 입력하십시오.


    참고:

    ● 이것은 업체가 EVO에서만 푸시된 베팅 내역 세부 정보를 얻는 데 사용됩니다.

    ● 요청날짜는UTC+0시간대를 기반으로 정해집니다.

    ● 바카라 및 블랙잭 게임에만 적용됩니다.


    HTTP 방법 : POST

    URL : <KPLAY 앤드포인트>/getpushbets



  • 12.1 요청 포맷

    Header

    필드

    타입

    설명

    필수

    ag-code

    string

    KPLAY AG 코드

    ag-token

    string

    KPLAY AG 토큰


    Body

    필드

    타입

    설명

    필수

    start_date

    datetime

    게임 시작 일시

    12.2 요청 예

    end_date

    datetime

    게임 종료 일시

    12.2 요청 예

    prd_id

    integer

    인용하다

    1.1 제품 목록

    txn_id

    varchar

    특정 거래 ID

    12.2 요청 예


  • 12.2 요청 예

    start_date 및 end_date만 사용


    {

    "start_date": "2021-06-01T03:00:00Z",

    "end_date": "2021-06-01T04:50:00Z",

    "prd_id": 1

    }



    **참고: start/end 시작/종료 시간은 2 시간 제한됩니다


    트랜잭션 ID 사용


    {

    "prd_id" :1,

    "txn_id" :"624610570377457431"

    }



  • 12.3 리턴 포맷

    필드

    타입

    설명

    status

    integer

    0 – 오류

    1 – 성공

    data

    object

    거래 ID, 푸시된 금액, 푸시된 금액1, 및 측면 금액이 포함됩니다.


    pushed_amount (바카라 및 블랙잭에만 적용)


    바카라

    - 결과가 Tie일 때 플레이어 또는 뱅커에게 베팅 금액이 푸시됩니다


    블랙잭

    - 딜러와 플레이어의 핸드 값이 같을 때마다 푸시가 트리거됩니다

    - 푸시 22는 프리벳 블랙잭에서만 발생합니다 (게임 아이디 26)


    pushed_amount1 (바카라에만 적용)

    - pushed_amount에 추가된 푸시 금액

    - 타이에 베팅된 금액이 포함됩니다.

    - 예를 들어, push_amount는 100이며 타이에 베팅하는 금액은 50인 경우 push_amount1은 150입니다


    side_amount (바카라에만 적용)

    - 결과와 상관없이, 뱅커, 플레이어, 타이를 제외한 모든 사이드 베팅의 총 금액.

    error

    string

    잘못된 요청 포맷을 입력하실 때 뜨는 오류 메시지


  • 12.4 리턴 예

    성공 (시작 및 종료 날짜만)


    {

    "status": 1,

    "data": [

    {

    "txn_id": "624610570377450431",

    "pushed_amount": 100,

    "pushed_amount1": 100

    "side_amount": 100

    },

    {

    "txn_id": "624610570377451432",

    "pushed_amount": 0,

    "pushed_amount1": 0

    "side_amount": 0

    }

    ]

    }



    성공 (거래 ID만 사용)


    {

    "status": 1,

    "data": [

    {

    "txn_id": "624610570377457431",

    "pushed_amount": 0,

    "pushed_amount1": 0

    "side_amount": 0

    }

    ]

    }



    오류


    {

    "status": 0,

    "error": "ACCESS_DENIED"

    }



    오류

    설명

    ACCESS_DENIED

    사이트 정보가 무효한 경우.

    INVALID_PRODUCT

    프로덕트가 존재하지 않는 경우

    INVALID_DATE

    무효한 날짜를 입력된 경우

    INTERNAL ERROR

    KPLAY 내부 오류

    REQUEST_TOO_FREQUENT

    1분 이내에 동일한 서비스 ID를 2회 호출한 경우.




  • 13. BUY-IN (필수)


    KPLAY는 운영자 시스템에서 이 API를 통해 바이인이 발생한다는 것이 운영자에게 통지를 드립니다. (P2P 제품에만 적용)


    HTTP 방법 : POST

    URL : <사이트 앤드포인트>/buyin


  • 13.1 요청 포맷

    Header

    필드

    타입

    설명

    secret-key

    string

    KPLAY 사이트 비밀키

    정상적인 KPLAY에서의 접근인지를

    확인합니다.


    Body

    필드

    타입

    설명

    user_id

    integer

    KPLAY 사용자 ID

    amount

    decimal(15, 2)

    금액

    prd_id

    integer

    제품 ID

    txn_id

    string

    고유 트랜잭션 ID

    game_id

    integer

    게임 ID

    10. Product Game List

    credit_amount

    decimal(15, 2)

    credit_amount가 존재하는 경우에는 AG가 그레딧

    결산을 하셔야 합니다


  • 13.2 요청 예


    {

    "user_id":1000011,

    "amount":100.00,

    "prd_id":506,

    "txn_id":"A00000005",

    "game_id":1005

    }



    포함된credit_amount


    {

    "user_id":1000011,

    "amount":100.00,

    "prd_id":506,

    "txn_id":"A00000005",

    "game_id":1005,

    "credit_amount":100

    }



  • 13.3 응답 포맷

    필드

    타입

    설명

    status

    integer

    0 경우 오류

    1 성공하는 경우

    balance

    decimal(15, 2)

    최신 멤버 균형

    error

    string

    오류 메시지 상태 = 0


  • 13.4 응답 예

    성공


    {

    "status":1,

    "balance":505.50

    }



    오류


    {

    "status":0,

    "error":"ACCESS_DENIED"

    }



    에러 메시지

    설명

    ACCESS_DENIED

    잘못된 비밀 키

    INVALID_USER

    회원이 사이트에 없는 경우

    DUPLICATE_DEBIT

    같은 "txn_id"의 debit이 이미 사이트에 존재하는 경우

    INSUFFICIENT_FUNDS

    차감할 잔액이 부족한 경우

    UNKNOWN_ERROR

    상인 시스템에서 내부 오류




  • 14. BET DETAIL


    사이트는 이 API를 호출하여 베팅 정보를 가져올 수 있습니다


    HTTP 방법 : POST

    URL : <KPLAY 앤드포인트>/betresults


  • 14.1 요청 포맷

    Header

    필드

    타입

    필수

    설명

    ag-code

    String

    ag-token

    String


    Body

    필드

    타입

    필수

    설명

    lang

    String

    한국어: ko,

    영어: en

    prd_id

    Number

    txn_id

    string


  • 14.2 요청 예


    {

    "lang":"en",

    "prd_id":5001,

    "txn_id":"8888888888"

    }



  • 14.3 응답 포맷

    Txn ID가 올바르고 베팅 세부 정보를 존재하는 경우에는 베팅 세부 정보 페이지를 여는 URL을 반환합니다. Txn ID가 유효하지 않거나 베팅 세부 정보를 존재하지않으면 오류 코드로 응답합니다.


    Body

    필드

    타입

    필수

    설명

    status

    Number

    0 = 실패

    1 = 성공

    error

    String

    아니오


  • 14.4 응답 예


    성공


    오류


    {

    "status":0,

    "error":"GAME_INFO_NOT_FOUND"

    }





  • 15. BET DETAIL


    *히든 포커에 만 적용

    머천들은 이 API를 호출하여 회원 정보를 얻습니다.


    HTTP 방법 : POST

    URL : <KPLAY 앤드포인트>/betresults/member


  • 15.1 요청 포맷

    Header

    필드

    타입

    필수

    설명

    ag-code

    String

    ag-token

    String


    Body

    필드

    타입

    필수

    설명

    user_id

    integer

    KPLAY 사용자 ID


  • 15.2 요청 예


    {

    "user_id":192985

    }



  • 15.3 응답 예


    성공


    오류


    {

    "status":0,

    "error":"INVALID_MEMBER"

    }




  • 16. Remaining Deposit


    사이트가 AG 의 잔여한도 및 발급된 보증금을 획득하기 위하여 KPLAY 에게서 이 API 를 콜합니다.

    *Note: 이 API 는 요청 값 (request body) 이 필요없음. 분당 하나의 요청만 허용됩니다.


    HTTP 방법 : GET

    URL : <KPLAY 앤드포인트>/remainingdeposit


  • 16.1 요청 포맷

    Header

    필드

    타입

    필수

    설명

    ag-code

    String

    ag-token

    String



  • 16.2 응답 포맷

    필드

    타입

    필수

    설명

    given_deposit

    Number

    available_deposit

    Number

    status

    Number

    0 = 실패

    1 = 성공


  • 16.3 응답 예


    성공


    {

    "given_deposit":10000000,

    "available_deposit":1000000,

    "status":1

    }



    오류


    {

    "status":0,

    "error":"INTERNAL_ERROR

    }






  • 17. Get Game Table ID


    업체는 사용중인 에볼루션 스킨 ID와 맞은 게임 아이디를 얻기 위하여 이 API를 호출합니다. 특정 테이블로 직접 실행할 수 있습니다.


    HTTP 방법 : GET

    URL : <KPLAY 앤드포인트>/getgametable


  • 17.1 요청 포맷

    Header

    필드

    타입

    설명

    ag-code

    String

    KPLAY AG코드

    ag-token

    String

    KPLAY AG토큰


  • Body

    필드

    타입

    설명

    language

    string

    게임 이름에 대한 언어 설정은 디폴트가 영어며

    한국어: ko, 영어: en


  • 17.2 요청 예


    {

    "language":"en"

    }



  • 17.3 응답 포맷

    필드

    타입

    설명

    status

    Int

    0 -오류
    1 -성공

    skin_id

    Int

    AG사용중인 스킨 ID입니다.

    game_name

    String

    에볼루션의 게임 이름.

    table_id

    String

    특정 테이블로 직접 실행하기 위한 테이블 ID입니다.

    game_id

    Int

    게임 ID입니다.

    game_type

    String

    게임 타입

    error

    String

    상태가 0인 경우의 오류메세지.


  • 17.4 응답 예


    성공


    {

    "status":1,

    "tables":[

    {

    "skin_id": 9,

    "game_name":"Golden Wealth Baccarat",

    "game_id": 1,

    "table_id":[

    "gwbaccarat000001",

    "n7ltqx5j25sr7xbe"

    ],

    "game_type":"Baccarat"

    },

    {

    "skin_id": 9,

    "game_name":"Baccarat Control Squeeze",

    "game_id": 92,

    "table_id":[

    "k2oswnib7jjaaznw"

    ],

    "game_type":"Baccarat"

    }

    ]

    }








  • 18. Get Rake API (P2P Product)


    머천들은 이 API를 호출하여 매일 최신 레이크를 얻을 수 있습니다.

    참고: 심리스 월렛이만 전용입니다. 참고: 정확한 데이터를 얻으려면, 이 API를 전일 날짜로 불러주세요. 예를 들어 5월 4일의 데이터를 얻드려면 5월 5일에 이 API에 호출해야 합니다


    HTTP 방법 : POST

    URL : <KPLAY 앤드포인트>/getrake


  • 18.1 요청 포맷

    Header

    필드

    타입

    설명

    ag-code

    String

    KPLAY AG코드

    ag-token

    String

    KPLAY AG토큰


    Body

    필드

    타입

    설명

    prd_id

    Int

    P2P Product ID

    start_date

    Date

    레이크 시작 시간

    end_date

    Date

    레이크 종료 시간



  • 18.2 요청 예



    {

    "prd_id":10002,

    "start_date": "2023-04-17",

    "end_date": "2023-04-18"

    }




  • 18.3 응답 포맷

    필드

    타입

    설명

    status

    Int

    0 -오류
    1 -성공

    data

    Object

    username

    String

    아마존 사용자 이름

    member_id

    Int

    KPLAY 사용자 ID

    date

    Date

    게임 일시 (UTC+9)

    rake

    Decimal

    일일 레이크.


  • 18.4 응답 예


    성공


    {

    "status":1,

    "data":[

    {

    "username": "babara",

    "member_id":192928,

    "date": 2023-04-17,

    "rake":"123.00",

    },

    {

    "username": zuhui,

    "member_id":192930,

    "date": 2023-04-18,

    "rake":"123.00",

    }

    ]

    }




    오류


    {

    "status":0,

    "error":"ACCESS_DENIED"

    }



    오류

    설명

    INVALID_DATE

    요청 본문의 start_date 또는 end_date값이 비어나 없는 경우.

    INVALID_PARAMETER

    헤더의 ag_code 또는 ag_token값이 비어나 잘못한 경우.

    ACCESS_DENIED

    머천이 비활성화 경우.

    USER_NOT_EXIST

    머천이 존재하지 않는 경우.

    UNKNOWN_ERROR

    잘못된 월렛입니다. 요청한 머천의 월렛을 심리스 월렛이 아님 경우.

    INTERNAL_ERROR

    아마존 내부 오류.




  • 19. 크론잡(Cronjob) 설정 가이드


    Kplay에서는 credit 콜을 한번 실행합니다. 해당 credit call은 각업체의 credit callback을 통하여 수신되어 처리되어야 합니다. 네트워크 사정등의 이유로 해당 콜이 수신되지 않은 경우 KPlay에서는 재전송을 하지 않으며 업체는 Results API를 이용하여 미처리 트랜잭션에 대해서 credit의 처리를 완료해야 합니다.

    참고: 이 예시에 표시된 샘플 코드는 PHP에만 적용됩니다



  • 19.1 KPLAY 에서 결과 API를 호출하는 법

    새 php 파일을 생성하고 하단의 샘플 코드에 따라 KPLAY API 이용해서 데이터를 호출합니다.



  • 19.2 Result API 정보

    이 API에 대한 정보를 얻으려면 먼저 API 설명서 섹션 7. Results 참조하십시오.



  • 19.3 엔드포인트 URL

    이 API를 호출하는 엔드포인트 URL의 형식은 KPLAY 엔드포인트 과 String 'Result' , 제품 ID 및 트랜잭션 ID의 조합입니다. 샘플 코드는 다음과 같습니다:



    $endpoint = 'https://KPLAYendpoint.com/';

    $prdId = 1;

    $txnId = '123456789';


    $url = $endpoint.'results/'.$prdId.'/'.$txnId;



  • 19.4 Header

    이 API를 호출하는 헤더의 형식은 'Content-Type', 'Ag-Code' 및 'Ag-Token' 키를 포함하는 배열(array)입니다.



    $agent = 'ABC1234';

    $token = 'agentsampletoken';


    $header = array('Content-Type: application/json',

    'Ag-Code: '.$agent,

    'Ag-Token:'.$token,);



    참고:

    Ag-Code는 관리자 로그인에 사용하시는 에이전트 아이디이며 Ag-Token은 발급받으신 토큰을 이용하시기 바랍니다.


  • 19.5 PHP로 GET 요청 전송

    지금은, 저희가 19.3 Endpoint URL 에서 얻은 $url19.4 Header에서 얻은 $header가 있습니다. KPLAY에서 결과 응답을 받기 위해 PHP로 Kplay에게 Get 요청을 보낼 수 있습니다. 아래 샘플 코드는 $url과 $header를 통해 결과 API를 호출하는 예입니다.



    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);


    if($header == '')

    {

    $header = array('Content-Type: application/json');

    }


    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);


    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);


    $response = curl_exec($ch);

    curl_close($ch);


    return $response;



    참고:

    Ag-Code는 관리자 로그인에 사용하시는 에이전트 아이디이며 Ag-Token은 발급받으신 토큰을 이용하시기 바랍니다


  • 19.6 서버에 Crontab 설치 법

    서버에서 cd 명령으로 crontab을 설치할 프로젝트에 이동하고 crontab view 설치하려면 아래 명령을 입력하십시오.



    crontab -e



    아래 포맷을 따라 1단계에서 생성된 php 파일을 crontab에 추가합니다. 앞에 있는 * * * * *가 cron 스케줄 표현입니다. cron 스케줄 표현으로 파일 실행 시간을 예약됩니다. 그리고 php를 입력하고 crontab에 추가할 php 파일의 경로를 따릅니다.



    #* * * * * php ~/testFolder/testCron/cron1.php // Will be ignored

    * * * * * php ~/testFolder/testCron/cron2.php // Will be executed



    위의 샘플 코드에서 cron 스케줄 식을 * * * * * 로 설정하기 때문에 cron 탭은 cron2.php 파일을 분 단위로 실행합니다.

    cron1.php 앞에 #을 넣었기 때문에 cron1.php crontab으로 실행되지 않습니다


    참고: #은 crontab의 주석 구문입니다. crontab은 이 구문으로 시작하는 줄을 무시합니다.

    cron 스케줄 표현식에 대한 더 자세히 알려면 이 웹 사이트를: crontab.guru 참조하십시오



    Credit 처리가 완료 되지 않은 각 트랜잭션에 대하여


    재시도 할 것인지 판정 ( 재시도 할 때 마다 시간 간격을 늘리는 로직을 추천합니다.)


    재시도 여부가 결정되면 results API를 통하여 결과를 재수신하고 결과가 있으면 결과를 반영합니다.



  • 19.7 기본 로직 설명

    19.7.1 주의사항

    E-스포츠나 라이브 스포츠의 경우 배팅시점과 결과처리 시점이 몇 시간 또는 몇일이 될 수 있습니다. 매분마다 계속 결과의 확인을 시도하면 트래픽이 과도하게 증가 할 수 있으니, 인터벌을 증가하는 로직을 추천합니다.


    19.7.2 가장 간단한 재시도 로직

    제곱근을 이용하면 기하급수적으로 증가하는 인터벌을 생성할 수 있습니다.



    last_execute_interval :마지막 실행 시간과의 차이


    //처음 5분간은 처리하지 않음

    last_execute_interval = last_execute_interval -5;


    //이후는 제곱근에 따라 기하급수적으로 인터벌을 증가시킴

    //1분 2분 4분 8분 16분 32분 64분


    if (round(sqrt(last_execute_interval)) == sqrt(last_execute_interval))

    {

    //여기서 재시도하여 주시기 바랍니다.

    }



  • 19.8 샘플 코드 설명


    function __construct()

    {

    try

    {

    // db connection

    $servername = DB_SERVER_NAME;

    $username = DB_USERNAME;

    $password = DB_PASSWORD;

    $dbname = DB_NAME;


    $hostName = KPLAY_HOSTNAME; //KPLAY Hostname

    $token = KPLAY_TOKEN; //KPLAY Token

    $agent = KPLAY_CODE; //KPLAY Code


    $conn = new \mysqli($servername, $username, $password, $dbname);

    //if connect to DB failed

    if ($conn->connect_error)

    {

    return $response = [

    'status' => 0

    ,'error' => 'UNKNOWN_ERROR'

    ];

    }


    $selectSQL = "SELECT a.txn_id, a.prd_id, a.user_id

    FROM debit a

    LEFT JOIN credit b

    ON a.txn_id = b.txn_id

    WHERE b.txn_id IS NULL";


    $db = $conn->query($selectSQL);


    //데빗 리스트에는 존재하나 크레딧 리스트에는 존재하지 않는 항목을 추출합니다.


    if ($db->num_rows > 0)

    {

    while($row = $db->fetch_assoc())

    {

    $txnId = $row['txn_id'];

    $prdId = $row['prd_id'];

    $userId = $row['user_id'];


    //여기에 인터벌 판정 관련 로직을 추가하여 주시기 바합니다.


    $method = 'results'; //auth game method


    $url = $hostName.$method.'/'.$prdId.'/'.$txnId; //auth game endpoint


    //prepare header

    $header = [

    'Content-Type: application/json',

    'Ag-Code: '.$agent,

    'Ag-Token:'.$token,

    ];


    $data = [];


    $helper = new Helper;

    $response = $helper->getData($url,$header);


    $data = json_decode($response);


    //각 항목에 대해서 results콜을 통하여 결과를 수신합니다.


    $status = $data->status;

    $type = $data->type;


    if ($status == 1 && $type == 1)

    {

    //결과가 수신되면 크레딧 리스트에 해당 정보를 등록합니다.


    $gameId = $data->game_id;

    $stake = $data->stake;

    $payout = $data->payout;

    $isCancel = $data->is_cancel;


    if ($isCancel == 1)

    {

    $betType = 'x';

    $credit = $stake;

    }

    else

    {

    $betType = 'c';

    $credit = $payout;

    }


    //Insert credit record to DB

    $insertSQL = "INSERT INTO credit

    (txn_id,type,amount)

    VALUES

    ('".$txnId."','".$betType."',".$credit.")";


    $insertDB = $conn->query($insertSQL);


    // Update user balance

    $updateSQL = "UPDATE users_balance

    SET balance = balance + ".$credit."

    WHERE user_id = ".$userId;


    $updateDB = $conn->query($updateSQL);

    }

    else

    {

    $error = $data->error;

    var_dump($error);


    exit;

    }

    }

    }

    else

    {

    exit;

    }

    }

    catch(\Exception $e)

    {

    return '';

    }

    }




  • 20. Appendix


  • 20.1 언어

    따르다 ISO 639-1 Code


    언어

    코드

    영어

    en

    대한민국

    ko

    인도네시아어

    id

    힌디어

    hi

    태국어

    th

    중국어

    zh


  • 20.2 슬롯 로비 스킨

    1 - 다크 테마



    2 - 라이트 테마



  • 21. Sample Code


  • 21.1 인증


    $hostName = 'http://www.KPLAY.com/';

    $method = 'auth';

    $token = 'xxxxxxxxx';

    $agent = 'xxxxxxxxx';


    $url = $hostName.$method;


    $header = array('Content-Type: application/json',

    'Ag-Code: '.$agent,

    'Ag-Token: '.$token,);


    $data = [

    'user' => [

    'id' => '12'

    ,'name' => 'superjohn'

    ,'balance' => '88899.00'

    ,'language' => 'ko'

    ]

    ,'prd' => [

    'id' => 1

    ,'type' => 0

    ,'is_mobile' => 0

    ]

    ];


    $response = self::postData($url,$data,$header);


    $response = json_decode($response);


    $iframe = $response->{'response'};


    public static function postData($url,$data,$header = '')

    {

    try

    {

    $ch = curl_init();


    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_POST, 1);


    if($header == '')

    {

    $header = array('Content-Type: application/json');

    }


    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);


    if (is_array($data))

    {

    $data = json_encode($data);

    }

    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);


    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);


    $response = curl_exec($ch);

    curl_close($ch);


    return $response;

    }

    catch(\Exception $e)

    {

    return '';

    }

    }