ARNPROXY

잔액으로 Residential 구매

POST/account/api/v1/residential/orders/create
작업을 명시적으로 확인하세요

기록, 잔액 또는 서비스 설정이 변경될 수 있습니다. 범위와 주의 사항을 먼저 읽으세요. 결과가 불확실하면 새 작업을 시작하지 말고 같은 작업을 조회하세요.

권한 인증

AuthorizationBearer YOUR_ARNPROXY_API_KEY
필요한 권한purchases
Acceptapplication/json
Content-Typeapplication/json
Idempotency-Key문자, 숫자, _ 또는 -로 16~100자. 같은 작업에는 저장한 동일 값을 사용하세요.

매개변수

이름유형설명
Idempotency-Key
header필수
string문자/숫자/_/- 16~100자. 작업과 상태 조회에 같은 값을 사용하고 다른 본문에 재사용하지 마세요.
mode
body필수
stringnew는 패키지를 만들고 topup은 본인 패키지에 GB를 추가합니다.
time_id
body필수
integer해당 카탈로그/options의 기간/GB 요금제 ID이며 일수나 GB 수량이 아닙니다.
location_id
body조건부
integermode=new에서만 필수이며 topup에서는 금지됩니다.
package_id
body조건부
integermode=topup에서만 필수이며 new에서는 금지됩니다.
promo_code
body선택
string선택적 프로모션 코드, 최대 100바이트. 견적과 구매/갱신에서 동일하게 유지하세요.
기본값: ""
currency
body필수
string같은 견적의 TRY 또는 USD이며 계정 통화와 일치해야 합니다.
expected_total_minor
body필수
integer같은 견적의 total_minor를 정수로 보내세요. 소수 금액/문자열 불가, 최소 1.
expected_selection_hash
body필수
string같은 견적의 selection_hash: 소문자 16진수 64자.
terms
body필수
boolean명시적 승인에는 JSON 불리언 true를 보내야 하며 문자열 "true"는 안 됩니다.

요청 본문

YOUR_/FROM_을 해당 카탈로그, 견적 또는 범위의 값으로 바꾸세요. 예제의 동의 값은 false입니다. 실제 작업에 동의할 때만 승인하세요.

request.json
{
    "mode": "topup",
    "package_id": "YOUR_PACKAGE_ID",
    "time_id": "FROM_RESIDENTIAL_CATALOG",
    "promo_code": "",
    "currency": "FROM_QUOTE",
    "expected_total_minor": "FROM_QUOTE_TOTAL_MINOR",
    "expected_selection_hash": "FROM_QUOTE_SELECTION_HASH",
    "terms": false
}

추가 사용 예제

ID와 가격은 예시입니다. 카탈로그와 동일 견적의 실제 값을 사용하고 JSON ID 및 expected_total_minor는 숫자로 보내세요. 예제의 terms=false는 안전을 위한 값입니다. 실제 유료 작업에 대한 고객의 명시적 동의 후에만 terms=true를 보내세요.

Residential: 신규 패키지와 GB 추가의 차이 · mode=new

Residential 주문에서는 고객이 용도를 선택하지 않습니다. 새 패키지는 웹사이트 주문과 같은 고정 용도를 서버가 자동 지정하므로 purpose_id, subpurpose_id 또는 other_purpose를 보내지 마세요. 트래픽 충전은 기존 패키지 용도를 유지합니다.

application/json
{
    "mode": "new",
    "location_id": 20,
    "time_id": 201,
    "promo_code": "",
    "currency": "TRY",
    "expected_total_minor": 1000,
    "expected_selection_hash": "0000000000000000000000000000000000000000000000000000000000000000",
    "terms": false
}

Residential: 신규 패키지와 GB 추가의 차이 · mode=topup

Residential 주문에서는 고객이 용도를 선택하지 않습니다. 새 패키지는 웹사이트 주문과 같은 고정 용도를 서버가 자동 지정하므로 purpose_id, subpurpose_id 또는 other_purpose를 보내지 마세요. 트래픽 충전은 기존 패키지 용도를 유지합니다.

application/json
{
    "mode": "topup",
    "package_id": 10001,
    "time_id": 201,
    "promo_code": "",
    "currency": "TRY",
    "expected_total_minor": 1000,
    "expected_selection_hash": "0000000000000000000000000000000000000000000000000000000000000000",
    "terms": false
}

요청 예제

cURL
printf 'Authorization: Bearer %s\n' "$ARNPROXY_API_KEY" |
  curl --silent --show-error --header @- \
    --header 'Accept: application/json' \
    --connect-timeout 10 --max-time 30 \
    --header 'Idempotency-Key: YOUR_SAVED_OPERATION_KEY' \
    --request POST --header 'Content-Type: application/json' \
    --data-binary @request.json \
    'https://www.arnproxy.com/account/api/v1/residential/orders/create'

이 페이지에서는 예제를 실행하지 않습니다. API 키는 서버 환경 변수에 보관하고 URL이나 브라우저 코드에 넣지 마세요. POST 예제에는 request.json을 준비하세요.

응답

201성공 응답
application/json
{
    "ok": true,
    "data": {
        "state": "accepted",
        "mode": "topup",
        "delivery_state_at_acceptance": "queued",
        "currency": "TRY",
        "total": "15.00",
        "total_minor": 1500,
        "gb": 1,
        "days": 30,
        "target_package_id": 20001,
        "order": {
            "id": 20002,
            "number": "1000020002",
            "location_id": 20,
            "time_id": 201,
            "last_service_date": "2030-02-01"
        },
        "accepted_at": "2030-01-01T12:00:00+00:00",
        "automatic_renewal": false,
        "source": "existing_website_residential_delivery",
        "replayed": false
    },
    "meta": {
        "request_id": "000000000000000000000001",
        "phase": "public_v1",
        "source": "arnproxy_records"
    }
}
응답 필드 및 유형
이름유형설명
okboolean성공 여부. false이면 error.code를 확인하세요.
dataobject작업별 결과이며 예제는 설명용 합성 데이터입니다.
data.statestring기록/작업 상태. accepted는 배송 완료가 아니며 completed는 연결 테스트가 아닙니다.
data.modestringmode의 작업별 값입니다. 반환된 유형을 유지하고 동작 설명을 확인하세요.
data.delivery_state_at_acceptancestringdelivery state at acceptance의 작업별 값입니다. 반환된 유형을 유지하고 동작 설명을 확인하세요.
data.currencystring계정 거래 통화: TRY 또는 USD.
data.totalstring금액. 정밀도를 위해 반환된 문자열/정수 표현을 유지하세요.
data.total_minorinteger최소 통화 단위 정수: 1000은 10.00 TRY/USD입니다.
data.gbinteger트래픽 양. 목록/설정 작업은 트래픽을 구매하지 않습니다.
data.daysinteger요금제 기간(일). GB 요금제의 트래픽 양과 별개입니다.
data.target_package_idintegertarget package id의 작업별 값입니다. 반환된 유형을 유지하고 동작 설명을 확인하세요.
data.orderobjectorder의 작업별 값입니다. 반환된 유형을 유지하고 동작 설명을 확인하세요.
data.order.idinteger관련 ARNPROXY 기록 ID. 공급자 내부 ID 대신 사용하세요.
data.order.numberstring표시 주문 번호이며 id를 요구하는 필드와 바꿔 쓸 수 없습니다.
data.order.location_idinteger로컬 카탈로그의 위치 또는 제품 유형 ID.
data.order.time_idinteger로컬 기간/GB 요금제 ID이며 일수나 GB 수량이 아닙니다.
data.order.last_service_datestring마지막 서비스일: 현재, 이전 또는 견적 예상일. 예상만으로 갱신되지는 않습니다.
data.accepted_atstringAPI가 반환하는 형식의 타임스탬프. 예제 날짜는 합성값입니다.
data.automatic_renewalbooleanautomatic renewal의 작업별 값입니다. 반환된 유형을 유지하고 동작 설명을 확인하세요.
data.sourcestring데이터 출처. 로컬 기록과 실시간 공급자 조회는 서로 다른 근거입니다.
data.replayedboolean동일 작업의 저장된 결과이며 새 결제/작업의 증거가 아닙니다.
metaobject요청 추적 및 데이터 출처 메타데이터.
meta.request_idstring이 HTTP 요청의 추적 ID이며 작업 키나 주문 ID가 아닙니다.
meta.phasestringphase의 작업별 값입니다. 반환된 유형을 유지하고 동작 설명을 확인하세요.
meta.sourcestring데이터 출처. 로컬 기록과 실시간 공급자 조회는 서로 다른 근거입니다.

오류 응답

HTTP 401 · INVALID_API_KEY
{
  "ok": false,
  "error": { "code": "INVALID_API_KEY" },
  "meta": { "request_id": "000000000000000000000001" }
}

인증 및 검증 단계에서 실행 전에 요청이 거부될 수 있습니다. 오류 문서를 확인하고 지원 문의용 request_id를 보관하세요. 키나 비밀번호를 보내지 마세요. 오류 및 제한 →

동작 및 주요 참고 사항

  • 패키지와 목록 ID는 ARNPROXY 기록 ID이며 공급자 키가 아닙니다. 오래된 스냅샷은 접근을 허용하지 않습니다. 필요 시 residential_package_refresh를 사용하세요.
  • mode=new는 패키지 생성, mode=topup은 GB 추가입니다. residential_catalog/quote를 먼저 사용하세요. 잔액 접수와 백그라운드 배송은 별개이며 같은 작업 키로 추적합니다.
  • 시간 초과/5xx는 쓰기 실패의 증거가 아닙니다. 원래 Idempotency-Key로 상태를 조회하고 새 키로 재시도하지 마세요. GET은 변경을 재전송하지 않습니다.
  • Residential 주문에서는 고객이 용도를 선택하지 않습니다. 새 패키지는 웹사이트 주문과 같은 고정 용도를 서버가 자동 지정하므로 purpose_id, subpurpose_id 또는 other_purpose를 보내지 마세요. 트래픽 충전은 기존 패키지 용도를 유지합니다.
  • 호환성을 위해 mode=new에서 유효한 기존 subpurpose_id/other_purpose 필드를 받을 수 있지만 새 주문의 자동 용도를 변경하지 않습니다. 새 연동에서는 생략하세요. mode=topup에서는 지원하지 않습니다. 이미 접수한 요청은 같은 Idempotency-Key와 같은 요청으로 확인하고 새 키로 다시 구매하지 마세요.
  • 자동 용도 설정을 사용할 수 없으면 주문 생성이나 잔액 차감 없이 RESIDENTIAL_DEFAULT_PURPOSE_UNAVAILABLE(HTTP 503)을 반환합니다. 관리자가 설정을 확인해야 합니다.
동일한 작업 추적Residential 배송 상태 →

현재 언어로 검색합니다. 닫기: Esc