Order API

CREMA 서버에 등록된 주문 정보를 확인하고, 등록/수정하는 방법을 제공합니다.

List orders

주문 목록을 가져옵니다.

GET /v1/orders HTTP/1.1

Parameters

이름 타입 필수 설명
limit integer 한 페이지에 가져올 주문의 개수입니다. 최대 100개까지 가능합니다. 기본: 30
page integer 페이지 번호입니다. 최대 페이지 수는 Link http header의 rel="last"에 기재되어 있습니다. 기본: 1
paid_on date 주문의 결제일입니다. 입력하면 해당 날짜의 주문만 가져오게 됩니다. 형식: "yyyy-mm-dd"
usernames string 주문한 사용자 아이디입니다. 입력된 사용자들의 주문만 가져오고 싶을 때 사용합니다. ,를 구분자로 여러 명을 입력할 수 있습니다.

Response

HTTP/1.1 200 OK
Link: <https://api.cre.ma/v1/orders?page=5&paid_on=2014-06-05&usernames=su1,su2>; rel="last", <https://api.cre.ma/v1/orders&page=2&paid_on=2014-06-05&usernames=su1,su2>; rel="next"
[
  {
    "id": 1,
    "code": "20140608012503-06322762012",
    "total_price": {
      "cents": 23500,
      "currency_iso": "KRW"
    },
    "user_code": "su1",
    "user_email": "test1@cre.ma",
    "username": "su1",
    "paid_at": "2014-06-05T01:27:19.000+09:00",
    "updated_at": "2014-06-02T02:00:35.000+09:00",
    "sub_orders": [
      {
        "id": 5794156,
        "product_id": 541879,
        "product_code": "122401",
        "status": "paid"
      }
    ]
  },
  {
    "id": 2,
    "code": "20140608010845-21671135318",
    "total_price": {
      "cents": 98100,
      "currency_iso": "KRW"
    },
    "user_code": "su2",
    "user_email": "test2@cre.ma",
    "username": "su2",
    "paid_at": "2014-06-05T22:14:12.000+09:00",
    "updated_at": "2014-06-08T23:30:07.000+09:00",
    "sub_orders": [
      {
        "id": 5794162,
        "product_id": 545952,
        "product_code": "122582",
        "status": "paid"
      },
      {
        "id": 5794164,
        "product_id": 223809,
        "product_code": "0",
        "status": "paid"
      }
    ]
  },
]

Get a single order

주문 한건의 상세 정보를 가져옵니다.

with id

GET /v1/orders/:id HTTP/1.1
이름 타입 필수 설명
id integer 주문의 id

with code

GET /v1/orders HTTP/1.1
이름 타입 필수 설명
code string 주문 번호

Response

HTTP/1.1 200 OK
{
  "id": 1,
  "code": "20150129190100-40702729687",
  "user_code": "thecrema",
  "user_email": "test@cre.ma",
  "username": "thecrema",
  "phone": "01012345678",
  "total_price": {
    "cents": 49000,
    "currency_iso": "KRW"
  },
  "sub_orders": [
    {
      "id": 2,
      "product_id": 941841,
      "product_options": {
        "색상": "블랙",
        "사이즈": "235"
      },
      "price": {
        "cents": 49000,
        "currency_iso": "KRW"
      },
      "status": "paid",
      "delivery_started_at": null,
      "delivered_at": null,
      "invoice": null,
      "delivery_service": "",
      "created_at": "2015-01-29T19:01:00.000+09:00",
      "updated_at": "2015-02-03T02:05:20.000+09:00",
      "reviews_count": 0
    }
  ],
  "created_at": "2015-01-29T19:01:00.000+09:00",
  "updated_at": "2015-02-03T02:05:20.000+09:00"
}

Create or Update an order

새로운 주문을 생성하거나 기존 데이터를 수정합니다.

POST /v1/orders HTTP/1.1

Parameters

이름 타입 필수 설명
code string 주문 번호. 주문의 고유 식별자입니다. 다른 주문과 중복되면 안됩니다.
created_at datetime(ISO 8601) 주문 생성일. 초단위까지만 유효
total_price float 주문 실결제금액(쿠폰, 적립금을 제외한 결제 금액)
user_code string 구매자 쇼핑몰 아이디(회원 주문이라면 값을 넣어줘야 합니다. 이 값이 없는 경우 비회원 주문으로 등록됩니다.)
user_name string 구매자 이름
user_phone string 구매자 휴대폰 번호
user_email string 구매자 이메일 주소. Email 주소가 있으면 값을 넣어줘야 합니다. 이 값이 없는 경우 리뷰 이메일이 발송되지 않습니다.
user_grade_id integer 회원등급 id. 회원 등급이 있으면 값을 넣어줘야 합니다. 이 값이 없는 경우 리뷰 게시판에 회원등급이 노출되지 않습니다.
store_name string 오프라인 매장 주문일 경우 매장명
order_device string 주문 경로. PC에서 주문한 경우 pc, 모바일에서 주문한 경우 mobile을 입력합니다.
mileage integer 주문에 사용된 적립금

Response

HTTP/1.1 201 Created
Location: https://api.cre.ma/v1/orders
{
  "id": 1,
  "code": "20150129190100-40702729687",
  "user_code": "thecrema",
  "user_email": "test@cre.ma",
  "username": "thecrema",
  "phone": "01012345678",
  "total_price": {
    "cents": 49000,
    "currency_iso": "KRW"
  },
  "sub_orders": [
    {
      "id": 2,
      "product_id": 941841,
      "product_options": {
        "색상": "블랙",
        "사이즈": "235"
      },
      "price": {
        "cents": 49000,
        "currency_iso": "KRW"
      },
      "status": "paid",
      "delivery_started_at": null,
      "delivered_at": null,
      "invoice": null,
      "delivery_service": "",
      "created_at": "2015-01-29T19:01:00.000+09:00",
      "updated_at": "2015-02-03T02:05:20.000+09:00",
      "reviews_count": 0
    }
  ],
  "created_at": "2015-01-29T19:01:00.000+09:00",
  "updated_at": "2015-02-03T02:05:20.000+09:00"
}

Update an order

주문의 내용을 수정합니다.

with id

PATCH /v1/orders/:id HTTP/1.1
이름 타입 필수 설명
id integer 주문의 id
code string 주문 번호. 주문의 고유 식별자입니다. 다른 주문과 중복되면 안됩니다.
created_at datetime(ISO 8601) 주문 생성일. 초단위까지만 유효
total_price float 주문 실결제금액(쿠폰, 적립금을 제외한 결제 금액)
user_code string 구매자 쇼핑몰 아이디(해당 파라미터가 없는 경우, 비회원 주문으로 등록됩니다.)
user_name string 구매자 이름
user_phone string 구매자 휴대폰 번호
user_email string 구매자 이메일 주소. Email 주소가 있으면 값을 넣어줘야 합니다. 이 값이 없는 경우 리뷰 이메일이 발송되지 않습니다.
user_grade_id integer 회원등급 id. 회원 등급이 있으면 값을 넣어줘야 합니다. 이 값이 없는 경우 리뷰 게시판에 회원등급이 노출되지 않습니다.
store_name string 오프라인 매장 주문일 경우 매장명
order_device string 주문 경로. PC에서 주문한 경우 pc, 모바일에서 주문한 경우 mobile을 입력합니다.
mileage integer 주문에 사용된 적립금

with code

PATCH /v1/orders HTTP/1.1
이름 타입 필수 설명
code string 주문 번호
created_at datetime(ISO 8601) 주문 생성일. 초단위까지만 유효
total_price float 주문 실결제금액(쿠폰, 적립금을 제외한 결제 금액)
user_code string 구매자 쇼핑몰 아이디(해당 파라미터가 없는 경우, 비회원 주문으로 등록됩니다.)
user_name string 구매자 이름
user_phone string 구매자 휴대폰 번호
user_email string 구매자 이메일 주소. Email 주소가 있으면 값을 넣어줘야 합니다. 이 값이 없는 경우 리뷰 이메일이 발송되지 않습니다.
user_grade_id integer 회원등급 id. 회원 등급이 있으면 값을 넣어줘야 합니다. 이 값이 없는 경우 리뷰 게시판에 회원등급이 노출되지 않습니다.
store_name string 오프라인 매장 주문일 경우 매장명
order_device string 주문 경로. PC에서 주문한 경우 pc, 모바일에서 주문한 경우 mobile을 입력합니다.
mileage integer 주문에 사용된 적립금

Response

HTTP/1.1 204 No Content
Location: https://api.cre.ma/v1/orders/:id

Delete an order

주문 한 개를 삭제합니다. 삭제 후에는 복구가 불가능합니다.
주문과 연관된 정보도 함께 삭제합니다 : 주문상품, 리뷰, 발송내역(sms, 알림톡, 이메일), 추가정보(사이즈 피드백)

with id

DELETE /v1/orders/:id HTTP/1.1
이름 타입 필수 설명
id integer 주문의 id

with code

DELETE /v1/orders HTTP/1.1
이름 타입 필수 설명
code string 주문 번호

Response

HTTP/1.1 204 No Content

Example (Ruby)

require 'curl'
require 'json'

# access_token 값 얻기
c = Curl::Easy.new('https://api.cre.ma/oauth/token')
c.http_post(
  Curl::PostField.content('grant_type', 'client_credentials'),
  Curl::PostField.content('client_id', ENV['CREMA_APP_ID']),
  Curl::PostField.content('client_secret', ENV['CREMA_SECRET'])
)
access_token = JSON.parse(c.body_str)['access_token']

# 주문 추가
c = Curl::Easy.new('https://api.cre.ma/v1/orders')
c.http_post(
  Curl::PostField.content('access_token', token),
  Curl::PostField.content('code', '20150304161200978'),
  Curl::PostField.content('created_at', Time.zone.new(2015, 3, 4, 16, 12, 0)),
  Curl::PostField.content('total_price', 30_000),
  Curl::PostField.content('user_code', 'thecrema'),
  Curl::PostField.content('user_phone', '01095660855')
)
# 쇼핑몰 DB 주문 테이블에 컬럼을 하나 추가하시어 해당 주문에 이 값을 저장해주세요.
order_id = JSON.parse(c.body_str)['id']

# 주문상품 추가
c = Curl::Easy.new("https://api.cre.ma/v1/orders/#{order_id}/sub_orders")
c.http_post(
  Curl::PostField.content('access_token', token),
  Curl::PostField.content('product_id', 942_041),
  Curl::PostField.content('price', 18_000),
  Curl::PostField.content('delivery_started_at', Time.zone.new(2015, 3, 4, 20, 12, 0)),
  Curl::PostField.content('status', 'delivery_started'),
  Curl::PostField.content('invoice', '012345678'),
  Curl::PostField.content('delivery_service', 'epost')
)

# 쇼핑몰 DB 주문상품 테이블에 컬럼을 하나 추가하시어 해당 주문상품에 이 값을 저장해주세요.
sub_order1_id = JSON.parse(c.body_str)['id']
c = Curl::Easy.new("https://api.cre.ma/v1/orders/#{order_id}/sub_orders")
c.http_post(
  Curl::PostField.content('access_token', token),
  Curl::PostField.content('product_id', 942_040),
  Curl::PostField.content('price', 12_000),
  Curl::PostField.content('delivered_at', Time.zone.new(2015, 3, 5, 12, 12, 0)),
  Curl::PostField.content('status', 'delivery_finished'),
  Curl::PostField.content('invoice', '0123456789'),
  Curl::PostField.content('delivery_service', 'epost'),
  Curl::PostField.content('product_options[]', 'size:160'),
  Curl::PostField.content('product_options[]', 'color:white')
)
# 쇼핑몰 DB 주문상품 테이블에 컬럼을 하나 추가하시어 해당 주문상품에 이 값을 저장해주세요.
JSON.parse(c.body_str)['id']

# 주문 총 주문 금액 변경
Curl.put("https://api.cre.ma/v1/orders/#{order_id}?access_token=#{access_token}&total_price=32000")

# 주문 삭제
Curl.delete("https://api.cre.ma/v1/orders/#{order_id}?access_token=#{access_token}")

# 주문상품 송장번호 변경
Curl.put("https://api.cre.ma/v1/orders/#{order_id}/sub_orders/#{sub_order1_id}?access_token=#{access_token}&invoice=1932830212")

# 주문상품 삭제
Curl.delete("https://api.cre.ma/v1/orders/#{order_id}/sub_orders/#{sub_order1_id}?access_token=#{access_token}")

직접 사용해 보세요!

API Explorer를 사용하여 API 요청 및 응답을 확인해 보세요.

결과