Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

...

1.

...

Request Refund

1) Purpose

  • 채널에서 상품의 옵션이 판매되었을 때 이 API로 새 주문을 등록합니다발생한 환불에 대해 AX Cloud 에 요청 합니다.

  • 미리 정해진 환불 규정에 따라 요청할 수 있습니다.

2) Detail

  • 채널에서 정해진 환불 규정에 따라 환불 비율 정보를 포함하여 요청 합니다.

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

2. API Spec

1) Request

Endpoint

https://prod.ax-cloud.com/v1/channel/orders/tour구현 예정

Method

POST

Description

새 주문 등록특정 Product 의 환불을 요청 합니다.

Content-Type

application/json

Headers > Authorization

Token {api_key}

Headers > Channel

Code {channel_code}

2) Body Parameter

...

Name

...

Required

...

Type

...

Description

...

depth_combinations

...

O

...

List[Depth Combination]

...

  • 팔린 상품 옵션의 목록입니다.

  • 한 주문에 여러 옵션 구매가 가능하고 한 옵션에 대해 다수의 구매가 존재할 수 있기에 이를 대응하기 위한 구조입니다.

  • 하단 4) Type > Depth Combination 참고

...

order

...

O

...

Order

...

  • 팔린 상품 옵션에 대한 주문 정보

  • 하단 4) Type > Order 참고

...

purchaser

...

O

...

Purchaser

...

  • 구매자에 대한 정보

  • 하단 4) Type > Purchaser 참고

...

representative

...

O

...

Traveler

...

  • 대표 여행자에 대한 정보

  • 하단 4) Type > Traveler 참고

  • 대표 여행자가 없다면 purchaser 정보로 값을 채웁니다.

3) Response

...

Name

...

Type

...

Description

...

status_code

...

Integer

...

정상 처리 시 201

...

data

...

Object

...

-

...

order_code

...

String

...

생성된 주문의 식별자

...

titleStatus Code : 201 Response: AX Cloud 에 생성된 주문의 식별자 Code

...

  • 구현 예정

3) Response

  • 구현 예정

4) Error Spec

Expand
titleStatus Code : 400 Cause: 유효하지 않은 요청 값
Code Block
{'depth_combinations': '이 필드는 null일 수 없습니다.'}
Expand
titleStatus Code : 403 Cause: 유효하지 않은 API Key 혹은 Channel Code
Code Block
{'message': '이 작업을 수행할 권한(permission)이 없습니다.'}
  • 구현 예정

3. Request Example

1) CURL

Code Block
curl -X 'POST' \
  'https://prod.ax-cloud.com/v1/channel/orders/tour' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'X-CSRFTOKEN: gVNVnmaKfzEovZJFYXnxVkZsluzfXFWJDDj9lyq1WuSHuKPpBdgv1bVTiAVrgNqu' \
  -H "Authorization: Token api_key_secret" \
  -H "Channel: Code code_secret" \
  -d '{
  "depth_combinations": [
    {
      "channel_product_mapping_code": "af01c7c4-1637-46fb-b289-a090a9be0397",
      "dc_code": "d96b2ed4-12c5-4fb5-ae94-4f39b11ee980",
      "quantity": 2,
      "use_date": "2022-01-21T10:41:25.409Z",
      "unit_selling_price": 2222,
      "discount": 22,
      "discount_method": "쿠폰 할인",
      "amount_price": "2200",
      "tickets": [
        {
          "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": "2022-01-21T10:41:25.409Z",
    "purchase_requested_at": "2022-01-21T10:41:25.409Z",
    "reserved_at": "2022-01-21T10:41:25.409Z",
    "reservation_requested_at": "2022-01-21T10:41:25.409Z",
    "sub_total": "4444",
    "discount_method": "주문 전체 10% 할인",
    "discount": "444",
    "total": "4000",
    "status": "2",
    "is_voucher": true,
    "comment": "string",
    "currency": "1"
  },
  "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": "폐쇄 공포증이 있습니다."
  }
}'

4. Type

1) Order

...

Name

...

Required

...

Type

...

Description

...

channel_order_id

...

O

...

String

...

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

...

purchased_at

...

O

...

Datetime

...

  • UTC 기준 상품이 팔린 일시

...

purchase_requested_at

...

X

...

Datetime

...

  • UTC 기준 구매 요청이 발생한 일시

...

reserved_at

...

X

...

Datetime

...

  • UTC 기준 예약이 발생한 일시

...

reservation_requested_at

...

X

...

Datetime

...

  • 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

...

  • 주문의 상태

  • {"1": "New"}, # 새 주문
    {"2": "Supplier pending"}, # Supplier 대기
    {"3": "Supplier confirm"}, # Supplier 확정
    {"4": "Supplier reject"}, # Supplier 거절
    {"5": "Traveler cancel"}, # 여행자 취소
    {"6": "Unavoidable cancel"} # 불가피한 취소

...

is_voucher

...

O

...

Boolean

...

  • True

    • voucher가 있는 상품

  • False

    • voucher가 없는 상품

...

comment

...

X

...

String

...

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

...

currency

...

O

...

String

...

  • 상품이 팔린 화폐

  • {"1": "KRW"}, # 원화
    {"2": "USD"} # 미국 달러

2) Depth Combination

...

Name

...

Required

...

Type

...

Description

...

channel_product_mapping_code

...

O

...

String

...

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

...

dc_code

...

O

...

String

...

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

...

quantity

...

O

...

Integer

...

  • 각 옵션 판매량

...

use_date

...

O

...

Datetime

...

  • 팔린 상품의 사용 일자를 Datetime 표기

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

...

unit_selling_price

...

O

...

String

...

  • 옵션 당 판매 단가

  • 소수점 5자리

...

discount

...

X

...

String

...

  • 옵션 당 할인가

  • 소수점 5자리

...

discount_method

...

X

...

String

...

  • 옵션 당 할인 방법

...

amount_price

...

O

...

String

...

  • 옵션 당 최종가격

  • 소수점 5자리

...

travelers

...

O

...

List[Traveler]

...

  • 여행자 목록

3) Purchaser

...

Name

...

Required

...

Type

...

Description

...

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

...

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

4) Traveler

...

Name

...

Required

...

Type

...

Description

...

name

...

O

...

String

...

  • 여행자 이름

...

national_code

...

O

...

String

...

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

...

phone

...

O

...

String

...

  • 여행자 핸드폰 번호

...

email

...

O

...

String

...

  • 여행자 이메일

...

additional

...

X

...

Object

...

  • Supplier가 요구하는 추가 정보

...

extra

...

X

...

String

...

  • 구현 예정