심리스 월렛 연동 가이드
BITUP 파트너 API는 파트너 시스템과 BITUP 베팅 플랫폼 간의 원활한 연동을 지원합니다. 파트너는 회원 계정 관리, 베팅 처리, 정산을 안전한 콜백 기반 구조로 처리할 수 있습니다.
https://bet.bitupgo.com/api/partner.php
모든 요청에 X-Partner-Key 헤더가 필요합니다.
X-Partner-Key: 발급받은_시크릿_키
모든 응답은 JSON 형식이며 success 필드로 성공/실패를 구분합니다.
POST /api/partner.php?action=login
회원의 자동 로그인 URL을 생성합니다. 회원이 존재하지 않으면 자동으로 가입 처리됩니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| user_id | 문자열 | O | 회원 아이디 |
| user_pw | 문자열 | O | 비밀번호 |
| nickname | 문자열 | X | 닉네임 (미입력 시 user_id 사용) |
{
"success": true,
"login_url": "https://bet.bitupgo.com/auth/token_login.php?token=abc123...",
"expires_in": 60
}
{
"success": false,
"error": "Invalid partner key | Missing user_id or user_pw | Invalid password"
}
GET /api/partner.php?action=balance&user_id=xxx
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| user_id | 문자열 | O | 회원 아이디 |
{
"success": true,
"data": {
"user_id": "username",
"nickname": "닉네임",
"balance": 500000.00
}
}
GET /api/partner.php?action=result&tx_id=xxx
트랜잭션 ID로 베팅 결과를 조회합니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| tx_id | 문자열 | O | debit 콜백 시 전달된 트랜잭션 ID |
{
"success": true,
"data": {
"tx_id": "tx_xxx",
"user_id": "username",
"game_id": "202601270001",
"bet_type": "UP",
"amount": 10000.00,
"approved_amount": 10000.00,
"win_amount": 19500.00,
"profit": 9500.00,
"result": "win",
"start_price": 100000.50,
"end_price": 101000.50,
"round_result": "UP",
"status": "approved",
"created_at": "2026-01-27 12:34:56",
"settled_at": "2026-01-27 12:35:30"
}
}
GET /api/partner.php?action=history&user_id=xxx
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| user_id | 문자열 | O | 회원 아이디 |
| limit | 정수 | X | 페이지당 건수 (기본 20, 최대 100) |
| offset | 정수 | X | 페이지네이션 오프셋 (기본 0) |
{
"success": true,
"data": [
{
"tx_id": "tx_xxx",
"bet_type": "UP",
"amount": 10000.00,
"win_amount": 19500.00,
"result": "win",
"game_id": "202601270001",
"created_at": "2026-01-27 12:34:56"
}
]
}
POST /api/partner.php?action=create_partner
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| user_id | 문자열 | O | 아이디 |
| user_pw | 문자열 | O | 비밀번호 (최소 4자) |
| nickname | 문자열 | X | 닉네임 |
| commission_rate | 실수 | X | 커미션율 % (0 ~ 내 커미션율 이하) |
| prefix | 문자열 | O | 영문/숫자/_ 3~16자 (고유, 변경 불가) |
{
"success": true,
"partner": {
"user_id": 123,
"username": "PREFIX_username",
"partner_code": "PREFIX_ABC123",
"commission_rate": 2.0
}
}
GET /api/partner.php?action=commission
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| date_from | 문자열 | X | 시작일 Y-m-d (기본: 7일 전) |
| date_to | 문자열 | X | 종료일 Y-m-d (기본: 오늘) |
| game_type | 문자열 | X | "30s" 또는 "60s" |
{
"success": true,
"summary": {
"total_count": 150,
"total_commission": 50000.00,
"total_bet_amount": 1000000.00
},
"data": [
{
"round_number": 1234,
"game_type": "30s",
"bet_user": "username",
"bet_amount": 10000.00,
"commission_rate": 2.0,
"commission_amount": 100.00,
"created_at": "2026-04-15 12:34:56"
}
]
}
파트너가 심리스 월렛 모드를 활성화하면, BITUP은 모든 잔액 변동 시 파트너가 설정한 URL로 HTTP 콜백을 전송합니다.
POST {파트너_콜백_URL}
Content-Type: application/json
X-Signature: HMAC-SHA256(요청_본문, callback_secret_key)
X-Partner-Id: {파트너_ID}
// 성공
{ "success": true, "balance": 490000.00, "tx_id": "tx_xxx" }
// 실패
{ "success": false, "error": "잔액 부족" }
POST {callback_balance_url}
BITUP → 파트너로 회원 잔액을 조회합니다.
{
"action": "balance",
"user_id": "회원아이디",
"timestamp": 1672531200
}
{ "success": true, "balance": 500000.00 }
POST {callback_debit_url}
회원이 베팅하면 BITUP이 파트너에게 차감을 요청합니다.
{
"action": "debit",
"user_id": "회원아이디",
"game_id": "202601270001",
"game_type": "30s",
"amount": 10000.00,
"tx_id": "tx_abc123",
"timestamp": 1672531200
}
{ "success": true, "balance": 490000.00, "tx_id": "tx_abc123" }
POST {callback_credit_url}
회원이 베팅에서 승리하면 당첨금을 지급합니다.
{
"action": "credit",
"user_id": "회원아이디",
"game_id": "202601270001",
"game_type": "30s",
"win_amount": 19500.00,
"tx_id": "tx_abc123",
"start_price": 100000.50,
"end_price": 101000.50,
"result": "UP",
"timestamp": 1672531200
}
{ "success": true, "balance": 509500.00 }
POST {callback_cancel_url}
베팅이 취소/무효 처리되면 차감된 금액을 환불합니다.
{
"action": "cancel",
"user_id": "회원아이디",
"game_id": "202601270001",
"amount": 10000.00,
"tx_id": "tx_abc123",
"void_reason": "라운드 취소",
"timestamp": 1672531200
}
{ "success": true, "balance": 500000.00 }
파트너에게는 알(Egg) 잔액이 부여되며, 이는 베팅 한도이자 GGR 정산 원장 역할을 합니다.
| 이벤트 | 알 변동 | 설명 |
|---|---|---|
| 회원 베팅 | -배팅금액 | 파트너 알에서 차감 |
| 회원 당첨 | +당첨금액 | 파트너 알에 복원 (본사가 지급) |
| 회원 낙첨 | 변동 없음 | 이미 차감된 금액 = 파트너 수익 |
| 베팅 취소/무효 | +배팅금액 | 파트너 알에 환불 |
1. 회원이 UP 또는 DOWN 선택 후 베팅
2. 파트너 알 잔액 확인 (부족 시 거부)
3. 심리스 모드: 파트너에 debit 콜백 전송
4. 콜백 성공 시 베팅 확정, 실패 시 취소
5. 알(Egg) 차감 기록
1. 라운드 종료 후 BTC 가격으로 승패 판정
2. 승리: credit 콜백 → 당첨금 지급 + 알 복원
3. 패배: 알 변동 없음 (이미 차감 확정)
4. 무효: cancel 콜백 → 배팅금 환불 + 알 복원
| 조건 | 배당률 | 설명 |
|---|---|---|
| 양쪽 매칭 | 1.95배 | 5% 수수료 차감 후 지급 |
| 한쪽만 베팅 | 1.95배 | 하우스가 상대방 역할 |
| 타입 | 라운드 시간 | 배당률 | 설명 |
|---|---|---|---|
| 30s | 30초 | 1.95배 | BTC 가격 UP/DOWN 예측 |
| 60s | 60초 | 1.95배 | BTC 가격 UP/DOWN 예측 |
| HTTP 코드 | 설명 |
|---|---|
| 200 | 성공 (본문의 success 필드로 상세 확인) |
| 401 | 인증 실패 (X-Partner-Key 누락 또는 불일치) |
| 400 | 잘못된 요청 (필수 파라미터 누락) |
| 500 | 서버 오류 |
callback_secret_key는 안전하게 보관하세요. 클라이언트 코드에 노출하지 마세요.X-Signature를 검증하세요.tx_id를 이용하여 멱등성(idempotency)을 구현하세요 — 동일한 tx_id는 2번 처리하지 마세요.파트너 관리 페이지에서 다음 4개 URL을 설정합니다:
| 항목 | 설명 |
|---|---|
| callback_balance_url | 잔액 조회 URL |
| callback_debit_url | 베팅 차감 URL |
| callback_credit_url | 당첨금 지급 URL |
| callback_cancel_url | 베팅 취소/환불 URL |