Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 21 Next »


1. Create Order

1) Purpose

  • 채널에서 상품의 옵션이 판매되었을 때 이 API로 새 주문을 등록합니다.

  • Supplier 가 주문을 처리하기 위해서 등록해야 합니다.

2) Detail

  • 유효한 API Key 를 Request Header에 정해진 형식으로 입력해야만 호출 가능합니다.

  • 상품 - 등록 투어상품 매핑 요청 에서 응답으로 받은 channel_product_mapping_data_code 와, 팔린 (상품의) 옵션의 option_code가 필수적으로 요구됩니다.

  • 새로 주문을 등록하려는 채널에서는 주문을 추상화한 후, 채널 측 주문 식별자(channel_order_code)와 AX 측 주문 식별자(ax_order_code)를 연동해 관리해야 합니다.

  • 하나의 채널 측 주문에 대해 여러 개의 AX 측 주문이 연동될 수 있습니다. (한 주문에서 여러 옵션이 구매된 경우)

  • 하나의 AX 측 주문에서 quantity에 따라 n개의 AX측 ticket이 생성됩니다. 이는 부분 취소를 지원하기 위함입니다. 채널 또한 ticket 단위까지 추상화를 해 AX 측 ticket과 연동한다면 부분 취소를 지원할 수 있습니다.

  • 하나의 채널 측 주문이 하나의 옵션에 대해서 quantity가 1로 구매가 발생했다면 (channel_order_code ↔︎ ax_order_code ↔︎ ax_ticket_code)는 1:1:1 관계입니다.

2. API Spec

1) Request

Endpoint

product environment: https://prod.ax-cloud.com/v1/channel/orders/day-ticket

test environment: https://test.ax-cloud.com/v1/channel/orders/day-ticket

Method

POST

Description

새 주문 등록

Content-Type

application/json

Headers > Authorization

Token {api_key}

Headers > Channel

Code {channel_code}

2) Body Parameter

(1) Parameter

Name

Required

Type

Description

Example

depth_combinations

O

List[Option]

order

O

Order

purchaser

O

Purchaser

representative

O

Traveler

(2) Type - Order

Name

Required

Type

Description

Example

channel_order_id

O

String

  • 채널에서 주문을 식별하기 위해 부여한 아이디

purchased_at

O

Datetime

  • RFC 3339 형식의 UTC 기준 상품이 팔린 일시

purchase_requested_at

X

Datetime

  • RFC 3339 형식의 UTC 기준 구매 요청이 발생한 일시

reserved_at

X

Datetime

  • RFC 3339 형식의 UTC 기준 예약이 발생한 일시

reservation_requested_at

X

Datetime

  • RFC 3339 형식의 UTC 기준 예약 요청이 발생한 일시

sub_total

O

String

  • 티켓들의 Amount 총 합

  • 소수점 5자리

  • depth_combination > travelers에 기입된 unit_selling_price 총합

discount_method

X

String

  • 주문 전체에 적용된 할인 방법

discount

X

String

  • 주문 전체에 적용된 할인가

  • 소수점 5자리

total

O

String

  • 최종 결제 가격

  • 소수점 5자리

status

O

String

  • 주문의 상태
    "New" : 새 주문

is_voucher

O

Boolean

  • True

    • voucher가 있는 상품

  • False

    • voucher가 없는 상품

comment

X

String

  • 추가적으로 입력된 코멘트 입력

currency

O

String

  • 상품이 팔린 화폐

  • "KRW" : 원화
    "USD" : 미국 달러

(3) Type - Option

Name

Required

Type

Description

Example

channel_product_mapping_code

O

String

  • 채널에 등록된 상품 옵션과 AX Cloud 의 상품 옵션을 매핑한 테이블의 고유 식별자

option_code

O

String

  • 팔린 상품의 옵션에 해당하는 Depth Combination의 고유 식별자

quantity

O

Integer

  • 각 옵션 판매량

inventory_at

O

Datetime

  • 팔린 상품의 사용 일자를 RFC 3339 형식의 Datetime 표기

  • Depth Combination의 특정 날짜의 인벤토리를 특정하기 위해 필요.

unit_selling_price

O

String

  • 옵션 당 판매 단가

  • 소수점 5자리

discount

X

String

  • 옵션 당 할인가

  • 소수점 5자리

discount_method

X

String

  • 옵션 당 할인 방법

amount_price

O

String

  • 옵션 당 최종가격

  • 소수점 5자리

tickets

O

List[Ticket]

  • Depth Combination > quantity 하나에 대응되는 Entity

(4) Type - Purchaser

Name

Required

Type

Description

Example

is_required_more_information

O

Boolean

  • True

    • 추가적으로 더 입력받을 정보가 있다.

  • False

    • 추가적으로 더 입력받을 정보가 없다.

name

O

String

  • 구매자 이름

national_code

O

String

  • 여행자 전화번호 국가번호

phone

O

String

  • 여행자 핸드폰 번호

email

O

String

  • 여행자 이메일

additional

X

Object

  • Supplier가 요구하는 추가 정보

extra

O

String

  • 여행자가 작성한 기타 정보

(5) Type - Ticket

Name

Required

Type

Description

Example

channel_code

O

String

  • Channel에서 DepthCombination > quantity > 하나의 Ticket에 대한 식별자

name

O

String

  • 여행자 이름

national_code

O

String

  • 여행자 전화번호 국가 번호

phone

O

String

  • 여행자 핸드폰 번호

email

O

String

  • 여행자 이메일

additional

X

Object

  • Supplier가 요구하는 추가 정보

extra

X

String

  • 여행자가 작성한 기타 정보

3) Response

Name

Type

Description

Example

status_code

Integer

  • 201: 정상처리

  • 403: 유효하지 않은 요청 값

  • 404: 유효하지 않은 API Key

  • 201

  • 403

  • 404

data

Object

  • 채널측 주문 생성 요청에 대한 AX 주문 생성 값

channel_order_code

String

  • 채널측에서 생성한 주문의 식별자

channel_order_status

String

  • 생성된 주문의 상태

  • 주문 상태는 다음과 같습니다.

    • New : 새 주문
      Supplier pending : Supplier 대기
      Supplier confirm : Supplier 확정
      Supplier reject : Supplier 거절
      Traveler cancel : 여행자 취소
      Unavoidable cancel : 불가피한 취소

  • “New”

  • "Supplier pending"

  • "Supplier confirm"

  • ”Supplier reject"

  • "Traveler cancel"

  • "Unavoidable cancel"

options

List[Object]

option_code

string

  • 팔린 고유한 옵션에 대한 식별자

inventory_at

datetime

  • RFC 3339 형식의 UTC 기준 옵션의 Use date

ax_order_code

string

  • 팔린 고유한 옵션에 대해 AX 측에서 대응되도록 생성한 주문의 식별자

ax_order_status

string

  • AX 측에서 생성된 주문의 상태

  • 주문 상태는 다음과 같습니다.

    • New : 새 주문
      Supplier pending : Supplier 대기
      Supplier confirm : Supplier 확정
      Supplier reject : Supplier 거절
      Traveler cancel : 여행자 취소
      Unavoidable cancel : 불가피한 취소

  • “New“

  • “Supplier pending“

  • “Supplier confirm”

  • “Supplier reject”

  • “Traveler cancel”

  • “Unavoidable cancel”

quantity

Integer

  • 수량

tickets

List[Object]

  • quantity 하나에 대응되어 생성되는 티켓의 목록

ax_ticket_code

String

  • quantity 하나에 대응되어 생성되는 티켓의 식별자

ax_ticket_status

String

  • 생성된 티켓의 상태

  • 티켓의 상태는 다음과 같습니다.

    • New : Not used
      Used : 사용 처리됨
      Traveler canceled : 여행자 취소
      Supplier canceled : supplier 취소

  • “New“

  • “Used”

  • "Traveler canceled”

  • "Supplier canceled"

 Status Code : 201 Response: AX Cloud 에 생성된 주문
{
  "channel_order_code": "915c1218-f41c-492b-bb0b-96177ff4d2ee",
  "channel_order_status": "New",
  "options": [
    {
      "option_code": "d96b2ed4-12c5-4fb5-ae94-4f39b11ee980",
      "inventory_at": "2017-05-23 23:30:00",
      "ax_order_code": "b9872ed4-12c5-4fb5-ae18-4f39b11ee912",
      "ax_order_status": "New",
      "quantity": "2",
      "tickets": [
        {
          "ax_ticket_code": "827c0381-f41c-492b-bb0b-88229ff4d2ee",
          "ax_ticket_status": "New"
        },
        {
          "ax_ticket_code": "827c9283-f41c-492b-bb0b-88102ff4d8ee",
          "ax_ticket_status": "New"
        }
      ]
    },
    {
      "option_code": "d96b2ed4-12c5-4fb5-ae94-4f39b11ee981",
      "inventory_at": "2017-05-23 23:30:00",
      "ax_order_code": "b9872ed4-12c5-4fb5-ae18-4f39b11ee913",
      "ax_order_status": "New",
      "tickets": [
        {
          "ax_ticket_code": "087c2263-f41c-492b-bb0b-87263ff4d2ee",
          "ax_ticket_status": "New"
        },
        {
          "ax_ticket_code": "829c9283-f41c-492b-bb0b-65738ff4d8fe",
          "ax_ticket_status": "New"
        }
      ]
    },
  ]
}

4) Error Spec

 Status Code : 400 Cause: 유효하지 않은 요청 값
{'options': '이 필드는 null일 수 없습니다.'}
 Status Code : 403 Cause: 유효하지 않은 API Key
{'detail': '이 작업을 수행할 권한(permission)이 없습니다.'}

3. Request Example

1) CURL

curl -X 'POST' \
  'https://test.ax-cloud.com/v1/channel/orders/day-ticket' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Token api_key_secret" \
  -d '{
  "options": [
    {
      "channel_product_mapping_code": "af01c7c4-1637-46fb-b289-a090a9be0397",
      "option_code": "d96b2ed4-12c5-4fb5-ae94-4f39b11ee980",
      "quantity": 2,
      "inventory_at": "2017-05-23 23:30:00",
      "unit_selling_price": 2222,
      "discount": 22,
      "discount_method": "쿠폰 할인",
      "amount_price": "2200",
      "tickets": [
        {
          "channel_code": "d96b2td4-15c5-4fb5-ae94-4f36667ee980",
          "name": "first last",
          "national_code": "82",
          "phone": "01012345678",
          "email": "user@example.com",
          "additional": {
            "english_name": "first last",
            "korean_name": "성 이름"
          },
          "extra": "폐쇄 공포증이 있습니다."
        }, {
          "channel_code": "d96b2td4-15c5-4fb5-ae94-4f36667ee981",
          "name": "first last",
          "national_code": "82",
          "phone": "01012345678",
          "email": "user@example.com",
          "additional": {
            "english_name": "first last",
            "korean_name": "성 이름"
          },
          "extra": "폐쇄 공포증이 있습니다."
        }
      ]
    }
  ],
  "order": {
    "channel_order_code": "d96b3ed4-12c5-4fb5-ae22-4f39b11ee980",
    "purchased_at": "2017-05-23 23:30:00",
    "purchase_requested_at": "2017-05-23 23:30:00",
    "reserved_at": "2017-05-23 23:30:00",
    "reservation_requested_at": "2017-05-23 23:30:00",
    "sub_total": "4444",
    "discount_method": "주문 전체 10% 할인",
    "discount": "444",
    "total": "4000",
    "status": "Supplier pending",
    "is_voucher": true,
    "comment": "string",
    "currency": "KRW"
  },
  "purchaser": {
    "is_required_more_information": true,
    "name": "first last",
    "national_code": "82",
    "phone": "01012345678",
    "email": "user@example.com",
    "additional": {
      "english_name": "first last",
      "korean_name": "성이름"
    },
    "extra": "폐쇄 공포증이 있습니다."
  },
  "representative": {
    "name": "first last",
    "national_code": "82",
    "phone": "01012345678",
    "email": "user@example.com",
    "additional": {
      "english_name": "first last",
      "korean_name": "성이름"
    },
    "extra": "폐쇄 공포증이 있습니다."
  }
}'
  • No labels