ARNPROXY

잔액으로 구매

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

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

권한 인증

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

매개변수

이름유형설명
Idempotency-Key
header필수
string문자/숫자/_/- 16~100자. 작업과 상태 조회에 같은 값을 사용하고 다른 본문에 재사용하지 마세요.
product_id
body필수
integerproducts의 제품 ID, 1~2147483647.
lines
body필수
object[]한 제품의 서로 다른 위치 행 1~20개. location_id는 중복 불가하며 총 프록시는 최대 100000개입니다.
lines[].location_id
body필수
integer선택한 제품 카탈로그의 위치 ID.
lines[].time_id
body필수
integer해당 위치에서 제공하는 기간 ID.
lines[].quantity
body필수
integer1~100000이며 product.minimum_quantity도 적용됩니다.
lines[].purpose_id
body필수
integer현재 사용 목적 흐름에서는 201을 보내세요.
lines[].subpurpose_id
body필수
integer201에 속한 활성 하위 용도이며 기타는 -1입니다.
lines[].other_purpose
body조건부
stringsubpurpose_id=-1일 때 필수이며 UTF-8 1~30자. 그 외에는 무시됩니다.
currency
body필수
string같은 견적의 TRY 또는 USD이며 계정 통화와 일치해야 합니다.
expected_total_minor
body필수
integer같은 견적의 total_minor를 정수로 보내세요. 소수 금액이나 문자열은 안 됩니다. 1~999999999999.
terms
body필수
boolean명시적 승인에는 JSON 불리언 true를 보내야 하며 문자열 "true"는 안 됩니다.
promo_code
body선택
string선택적 프로모션 코드, 최대 100바이트. 견적과 구매/갱신에서 동일하게 유지하세요.
기본값: ""
auth
body선택
object제공 인증 방식이며 기본값은 {"mode":"username_password"}입니다. 기본 인증 정보 관리 권한을 부여하지 않습니다.
auth.mode
body조건부
stringauth를 보낼 때 필수: username_password 또는 ip. 여기에 사용자명/비밀번호를 지정하지 마세요.
auth.ip
body조건부
stringauth.mode=ip일 때만 IPv4가 필수이며 username_password에서는 생략하세요.

요청 본문

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

request.json
{
    "product_id": "FROM_PRODUCTS",
    "lines": [
        {
            "location_id": "FROM_CATALOG",
            "time_id": "FROM_CATALOG",
            "quantity": 1,
            "purpose_id": 201,
            "subpurpose_id": "FROM_CATALOG_CHILDREN"
        }
    ],
    "currency": "FROM_QUOTE",
    "expected_total_minor": "FROM_QUOTE_TOTAL_MINOR",
    "promo_code": "",
    "terms": false
}

추가 사용 예제

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

동일 유형으로 두 국가 주문

하나의 product_id에 서로 다른 location_id를 최대 20개 사용할 수 있습니다. 국가별로 별도 주문이 생성되며 연결된 결제는 하나의 청구서로 처리됩니다. 수량 할인은 국가별 수량으로 계산합니다.

application/json
{
    "product_id": 5,
    "lines": [
        {
            "location_id": 10,
            "time_id": 101,
            "quantity": 1,
            "purpose_id": 201,
            "subpurpose_id": 202
        },
        {
            "location_id": 11,
            "time_id": 102,
            "quantity": 1,
            "purpose_id": 201,
            "subpurpose_id": 202
        }
    ],
    "currency": "TRY",
    "expected_total_minor": 2000,
    "promo_code": "",
    "terms": false
}

“기타” 사용 목적

기타를 선택하면 subpurpose_id=-1과 1–30자의 other_purpose를 보냅니다. 다른 선택에는 other_purpose가 필요하지 않습니다. purpose_id는 여전히 201입니다.

application/json
{
    "product_id": 5,
    "lines": [
        {
            "location_id": 10,
            "time_id": 101,
            "quantity": 1,
            "purpose_id": 201,
            "subpurpose_id": -1,
            "other_purpose": "Custom purpose"
        }
    ],
    "currency": "TRY",
    "expected_total_minor": 1000,
    "promo_code": "",
    "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/orders/create'

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

응답

201성공 응답
application/json
{
    "ok": true,
    "data": {
        "state": "accepted",
        "delivery_state_at_acceptance": "queued",
        "currency": "TRY",
        "total": "10.00",
        "total_minor": 1000,
        "checkout_group_id": null,
        "orders": [
            {
                "id": 10001,
                "number": "1000010001",
                "location_id": 10,
                "time_id": 101,
                "quantity": 1,
                "total": "10.00"
            }
        ],
        "accepted_at": "2030-01-01T12:00:00+00:00",
        "automatic_renewal": false,
        "replayed": false
    },
    "meta": {
        "request_id": "000000000000000000000001",
        "phase": "public_v1",
        "source": "arnproxy_records"
    }
}
응답 필드 및 유형
이름유형설명
okboolean성공 여부. false이면 error.code를 확인하세요.
dataobject작업별 결과이며 예제는 설명용 합성 데이터입니다.
data.statestring기록/작업 상태. accepted는 배송 완료가 아니며 completed는 연결 테스트가 아닙니다.
data.delivery_state_at_acceptancestringdelivery state at acceptance의 작업별 값입니다. 반환된 유형을 유지하고 동작 설명을 확인하세요.
data.currencystring계정 거래 통화: TRY 또는 USD.
data.totalstring금액. 정밀도를 위해 반환된 문자열/정수 표현을 유지하세요.
data.total_minorinteger최소 통화 단위 정수: 1000은 10.00 TRY/USD입니다.
data.checkout_group_idinteger|nullcheckout group id의 작업별 값입니다. 반환된 유형을 유지하고 동작 설명을 확인하세요.
data.ordersarrayorders의 작업별 값입니다. 반환된 유형을 유지하고 동작 설명을 확인하세요.
data.orders[]objectorders의 작업별 값입니다. 반환된 유형을 유지하고 동작 설명을 확인하세요.
data.orders[].idinteger관련 ARNPROXY 기록 ID. 공급자 내부 ID 대신 사용하세요.
data.orders[].numberstring표시 주문 번호이며 id를 요구하는 필드와 바꿔 쓸 수 없습니다.
data.orders[].location_idinteger로컬 카탈로그의 위치 또는 제품 유형 ID.
data.orders[].time_idinteger로컬 기간/GB 요금제 ID이며 일수나 GB 수량이 아닙니다.
data.orders[].quantityinteger선택 또는 주문한 프록시 수량.
data.orders[].totalstring금액. 정밀도를 위해 반환된 문자열/정수 표현을 유지하세요.
data.accepted_atstringAPI가 반환하는 형식의 타임스탬프. 예제 날짜는 합성값입니다.
data.automatic_renewalbooleanautomatic renewal의 작업별 값입니다. 반환된 유형을 유지하고 동작 설명을 확인하세요.
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는 products/catalog에서 가져오세요. quote 행에는 location_id, time_id, quantity만 포함합니다. purchase 행에는 purpose_id=201 및 선택한 subpurpose_id가 추가로 필요합니다.
  • 여러 국가는 별도 주문과 하나의 다중 항목 청구서를 만듭니다. 할인은 국가별입니다. accepted는 배송 완료가 아니며 order_delivery와 order_proxies로 추적하세요.
  • 시간 초과/5xx는 쓰기 실패의 증거가 아닙니다. 원래 Idempotency-Key로 상태를 조회하고 새 키로 재시도하지 마세요. GET은 변경을 재전송하지 않습니다.
  • 일반 주문에서 두 가지 목적을 따로 선택하게 하지 마세요. catalog.purposes에서 id=201을 찾고 children만 표시합니다. purchase의 purpose_id는 정수 201로 고정하고 subpurpose_id에는 선택한 하위 ID를 넣습니다. 기존 연동과의 호환성을 위해 카탈로그 계층 구조는 유지됩니다.
  • 기타를 선택하면 subpurpose_id=-1과 1–30자의 other_purpose를 보냅니다. 다른 선택에는 other_purpose가 필요하지 않습니다. purpose_id는 여전히 201입니다.
  • 하나의 product_id에 서로 다른 location_id를 최대 20개 사용할 수 있습니다. 국가별로 별도 주문이 생성되며 연결된 결제는 하나의 청구서로 처리됩니다. 수량 할인은 국가별 수량으로 계산합니다.
동일한 작업 추적구매 상태 확인 →

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