SubOrder API
CREMA 서버에 등록된 주문상품 정보를 확인하고, 등록/수정하는 방법을 제공합니다.
List sub_orders
주문상품 목록을 가져옵니다.
with order_id
GET /v1/orders/:order_id/sub_orders HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_id |
integer | ✔ | 주문의 id |
limit |
integer | ✖ | 한 페이지에 가져올 주문상품의 개수입니다. 최대 100개까지 가능합니다. 기본: 30 |
page |
integer | ✖ | 페이지 번호입니다. 최대 페이지 수는 Link http header의 rel="last" 에 기재되어 있습니다. 기본: 1 |
product_id |
integer | ✖ | 상품 id입니다. 입력하면 주문 내 특정 상품만 가져오고 싶을 때 사용합니다. |
with order_code
GET /v1/sub_orders HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_code |
string | ✔ | 주문 번호 |
limit |
integer | ✖ | 한 페이지에 가져올 주문상품의 개수입니다. 최대 100개까지 가능합니다. 기본: 30 |
page |
integer | ✖ | 페이지 번호입니다. 최대 페이지 수는 Link http header의 rel="last" 에 기재되어 있습니다. 기본: 1 |
product_id |
integer | ✖ | 상품 id입니다. 입력하면 주문 내 특정 상품만 가져오고 싶을 때 사용합니다. |
Response
HTTP/1.1 200 OK
Link: <https://api.cre.ma/v1/orders/:id/sub_orders?page=1>; rel="last", <https://api.cre.ma/v1/orders&page=1>; rel="next"
[
{
"id": 11188262,
"code": "sub_order1",
"product_id": 940567,
"created_at": "2015-02-01T19:10:36.000+09:00",
"updated_at": "2015-02-03T02:04:15.000+09:00"
},
{
"id": 11188263,
"code": "sub_order2",
"product_id": 941683,
"created_at": "2015-02-01T19:10:36.000+09:00",
"updated_at": "2015-02-03T02:04:15.000+09:00"
}
]
Get a single sub_order
주문상품 한건의 상세 정보를 가져옵니다.
with order_id
and id
GET /v1/orders/:order_id/sub_orders/:id HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_id |
integer | ✔ | 주문의 id |
id |
integer | ✔ | 주문상품의 id |
with order_id
and code
GET /v1/orders/:order_id/sub_orders HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_id |
integer | ✔ | 주문의 id |
code |
string | ✔ | 주문상품의 code |
with order_code
and id
GET /v1/sub_orders/:id HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_code |
string | ✔ | 주문 번호 |
id |
integer | ✔ | 주문상품의 id |
with order_code
and code
GET /v1/sub_orders HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_code |
string | ✔ | 주문 번호 |
code |
string | ✔ | 주문상품의 code |
Response
HTTP/1.1 200 OK
{
"id": 11188250,
"code": "sub_order1",
"product_id": 940621,
"product_options": {
"색상": "블랙",
"사이즈": "235"
},
"product_count": 1,
"price": {
"cents": 45800,
"currency_iso": "KRW"
},
"status": "paid",
"delivery_started_at": null,
"delivered_at": null,
"invoice": null,
"delivery_service": "",
"created_at": "2015-02-01T21:28:53.000+09:00",
"updated_at": "2015-02-03T02:04:12.000+09:00",
"reviews_count": 0
}
Create or Update a sub_order
새로운 주문상품을 생성하거나 기존 데이터를 수정합니다. 아래 두 가지 요청 중 선택해서 사용할 수 있습니다.
쇼핑몰 마이페이지의 주문 내역에서 정확한 상품 및 상품 옵션과 상품 후기(리뷰)쓰기 버튼을 매핑해주고 싶다면, code
를 선택이 아닌 필수로 연동해주셔야 합니다.
모든 주문상품의 code
를 연동한 후 주문 목록 페이지 위젯 설치 방법 을 참고하여 sub_order_code
를 추가해주시면 됩니다.
with order_id
POST /v1/orders/:order_id/sub_orders HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_id |
integer | ✔ | 주문의 id |
code |
string | ✖ | 주문상품의 code. 주문상품의 고유 식별자입니다. 다른 주문상품과 중복되면 안됩니다. (code가 없으면 임의의 code 값으로 저장됩니다.) |
product_id |
integer | ✔ | 주문상품에 속한 상품의 크리마 서비스측 id(쇼핑몰 서비스측 id 아님), product_code를 입력한 경우 product_id는 입력하지 않아도 됩니다. |
product_code |
string | ✔ | 주문상품에 속한 상품의 쇼핑몰 서비스측 고유 식별자, product_id를 입력한 경우 product_code는 입력하지 않아도 됩니다. |
price |
float | ✔ | 주문상품의 가격. 단일 상품 구매 가격인 아닌, '상품가격 X 구매수량' 입니다. 결제시 취소, 환불, 할인 등으로 인해 변경된 상품가격은 반영하지 않습니다. 수량이 변경되는 경우에는 수량에 맞게 값을 변경해주세요. |
product_count |
integer | ✖ | 주문상품 구매 수량 |
product_options |
array | ✖ | 주문상품 구매 옵션. 여러 개의 product_options[] 에 <key>:<value> 포맷으로 추가합니다. 핏·리뷰 서비스를 이용하는 경우 필수로 입력해야 합니다.예시(Content-Type) application/json: "product_options": ["size:160", "color:white"] application/x-www-form-urlencode: product_options[]=size:160&product_options[]=color:white |
status |
string | ✔ | 주문상품의 상태. 사용 가능한 값은 주문상태 페이지를 참조해주세요. |
delivery_started_at |
datetime(ISO 8601) | ✖ | 배송 시작일. 배송 시작하면 값을 넣어줘야 합니다. 이 값이 없는 주문에 대해서는 리뷰 문자와 이메일이 발송되지 않습니다. |
delivered_at |
datetime(ISO 8601) | ✖ | 배송 완료일 |
invoice |
string | ✖ | 송장번호 |
delivery_service |
string | ✖ | 배송업체. 사용 가능한 값은 택배사 페이지를 참조해주세요. |
with order_code
POST /v1/sub_orders HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_code |
string | ✔ | 주문 번호. 주문의 고유 식별자입니다. /v1/orders 에 사용하는 code 와 같은 값입니다. |
code |
string | ✖ | 주문상품의 code. 주문상품의 고유 식별자입니다. 다른 주문상품과 중복되면 안됩니다. (code가 없으면 임의의 code 값으로 저장됩니다.) |
product_id |
integer | ✔ | 주문상품에 속한 상품의 크리마 서비스측 id(쇼핑몰 서비스측 id 아님), product_code를 입력한 경우 product_id는 입력하지 않아도 됩니다. |
product_code |
string | ✔ | 주문상품에 속한 상품의 쇼핑몰 서비스측 고유 식별자, product_id를 입력한 경우 product_code는 입력하지 않아도 됩니다. |
price |
float | ✔ | 주문상품의 가격. 단일 상품 구매 가격인 아닌, '상품가격 X 구매수량' 입니다. 결제시 취소, 환불, 할인 등으로 인해 변경된 상품가격은 반영하지 않습니다. 수량이 변경되는 경우에는 수량에 맞게 값을 변경해주세요. |
product_count |
integer | ✖ | 주문상품 구매 수량 |
product_options |
array | ✖ | 주문상품 구매 옵션. 여러 개의 product_options[] 에 <key>:<value> 포맷으로 추가합니다. 핏·리뷰 서비스를 이용하는 경우 필수로 입력해야 합니다.예시(Content-Type) application/json: "product_options": ["size:160", "color:white"] application/x-www-form-urlencode: product_options[]=size:160&product_options[]=color:white |
status |
string | ✔ | 주문상품의 상태. 사용 가능한 값은 주문상태 페이지를 참조해주세요. |
delivery_started_at |
datetime(ISO 8601) | ✖ | 배송 시작일. 배송 시작하면 값을 넣어줘야 합니다. 이 값이 없는 주문에 대해서는 리뷰 문자와 이메일이 발송되지 않습니다. |
delivered_at |
datetime(ISO 8601) | ✖ | 배송 완료일 |
invoice |
string | ✖ | 송장번호 |
delivery_service |
string | ✖ | 배송업체. 사용 가능한 값은 택배사 페이지를 참조해주세요. |
Response
HTTP/1.1 201 Created
Location: https://api.cre.ma/v1/orders
{
"id": 11188250,
"code": "sub_order1",
"product_id": 940621,
"price": {
"cents": 45800,
"currency_iso": "KRW"
},
"status": "paid",
"delivery_started_at": null,
"delivered_at": null,
"invoice": null,
"delivery_service": "",
"created_at": "2015-02-01T21:28:53.000+09:00",
"updated_at": "2015-02-03T02:04:12.000+09:00"
}
Update a sub_order
주문상품의 내용을 수정합니다. 아래 네 가지 요청 중 선택해서 사용할 수 있습니다.
with order_id
and id
PATCH /v1/orders/:order_id/sub_orders/:id HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_id |
integer | ✔ | 주문의 id |
id |
integer | ✔ | 주문상품의 id |
code |
string | ✖ | 주문상품의 code. 주문상품의 고유 식별자입니다. 다른 주문상품과 중복되면 안됩니다. (code가 없으면 임의의 code 값으로 저장됩니다.) |
product_id |
integer | ✖ | 주문상품에 속한 상품의 크리마 서비스측 id(쇼핑몰 서비스측 id 아님) |
product_code |
string | ✖ | 주문상품에 속한 상품의 쇼핑몰 서비스측 고유 식별자 |
price |
float | ✖ | 주문상품의 가격. 단일 상품 구매 가격인 아닌, '상품가격 X 구매수량' 입니다. 결제시 취소, 환불, 할인 등으로 인해 변경된 상품가격은 반영하지 않습니다. 수량이 변경되는 경우에는 수량에 맞게 값을 변경해주세요. |
product_count |
integer | ✖ | 주문상품 구매 수량 |
product_options |
array | ✖ | 주문상품 구매 옵션. 여러 개의 product_options[] 에 <key>:<value> 포맷으로 추가합니다. 핏·리뷰 서비스를 이용하는 경우 필수로 입력해야 합니다.예시(Content-Type) application/json: "product_options": ["size:160", "color:white"] application/x-www-form-urlencode: product_options[]=size:160&product_options[]=color:white |
status |
string | ✖ | 주문상품의 상태. 사용 가능한 값은 주문상태 페이지를 참조해주세요. |
delivery_started_at |
datetime(ISO 8601) | ✖ | 배송 시작일. 배송 시작하면 값을 넣어줘야 합니다. 이 값이 없는 주문에 대해서는 리뷰 문자와 이메일이 발송되지 않습니다. |
delivered_at |
datetime(ISO 8601) | ✖ | 배송 완료일 |
invoice |
string | ✖ | 송장번호 |
delivery_service |
string | ✖ | 배송업체. 사용 가능한 값은 택배사 페이지를 참조해주세요. |
with order_id
and code
PATCH /v1/orders/:order_id/sub_orders HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_id |
integer | ✔ | 주문의 id |
code |
string | ✔ | 주문상품의 code. 주문상품의 고유 식별자입니다. 다른 주문상품과 중복되면 안됩니다. (code가 없으면 임의의 code 값으로 저장됩니다.) |
product_id |
integer | ✖ | 주문상품에 속한 상품의 크리마 서비스측 id(쇼핑몰 서비스측 id 아님) |
product_code |
string | ✖ | 주문상품에 속한 상품의 쇼핑몰 서비스측 고유 식별자 |
price |
float | ✖ | 주문상품의 가격. 단일 상품 구매 가격인 아닌, '상품가격 X 구매수량' 입니다. 결제시 취소, 환불, 할인 등으로 인해 변경된 상품가격은 반영하지 않습니다. 수량이 변경되는 경우에는 수량에 맞게 값을 변경해주세요. |
product_count |
integer | ✖ | 주문상품 구매 수량 |
product_options |
array | ✖ | 주문상품 구매 옵션. 여러 개의 product_options[] 에 <key>:<value> 포맷으로 추가합니다. 핏·리뷰 서비스를 이용하는 경우 필수로 입력해야 합니다.예시(Content-Type) application/json: "product_options": ["size:160", "color:white"] application/x-www-form-urlencode: product_options[]=size:160&product_options[]=color:white |
status |
string | ✖ | 주문상품의 상태. 사용 가능한 값은 주문상태 페이지를 참조해주세요. |
delivery_started_at |
datetime(ISO 8601) | ✖ | 배송 시작일. 배송 시작하면 값을 넣어줘야 합니다. 이 값이 없는 주문에 대해서는 리뷰 문자와 이메일이 발송되지 않습니다. |
delivered_at |
datetime(ISO 8601) | ✖ | 배송 완료일 |
invoice |
string | ✖ | 송장번호 |
delivery_service |
string | ✖ | 배송업체. 사용 가능한 값은 택배사 페이지를 참조해주세요. |
with order_code
and id
PATCH /v1/sub_orders/:id HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_code |
string | ✔ | 주문 번호 |
id |
integer | ✔ | 주문상품의 id |
code |
string | ✖ | 주문상품의 code. 주문상품의 고유 식별자입니다. 다른 주문상품과 중복되면 안됩니다. (code가 없으면 임의의 code 값으로 저장됩니다.) |
product_id |
integer | ✖ | 주문상품에 속한 상품의 크리마 서비스측 id(쇼핑몰 서비스측 id 아님) |
product_code |
string | ✖ | 주문상품에 속한 상품의 쇼핑몰 서비스측 고유 식별자 |
price |
float | ✖ | 주문상품의 가격. 단일 상품 구매 가격인 아닌, '상품가격 X 구매수량' 입니다. 결제시 취소, 환불, 할인 등으로 인해 변경된 상품가격은 반영하지 않습니다. 수량이 변경되는 경우에는 수량에 맞게 값을 변경해주세요. |
product_count |
integer | ✖ | 주문상품 구매 수량 |
product_options |
array | ✖ | 주문상품 구매 옵션. 여러 개의 product_options[] 에 <key>:<value> 포맷으로 추가합니다. 핏·리뷰 서비스를 이용하는 경우 필수로 입력해야 합니다.예시(Content-Type) application/json: "product_options": ["size:160", "color:white"] application/x-www-form-urlencode: product_options[]=size:160&product_options[]=color:white |
status |
string | ✖ | 주문상품의 상태. 사용 가능한 값은 주문상태 페이지를 참조해주세요. |
delivery_started_at |
datetime(ISO 8601) | ✖ | 배송 시작일. 배송 시작하면 값을 넣어줘야 합니다. 이 값이 없는 주문에 대해서는 리뷰 문자와 이메일이 발송되지 않습니다. |
delivered_at |
datetime(ISO 8601) | ✖ | 배송 완료일 |
invoice |
string | ✖ | 송장번호 |
delivery_service |
string | ✖ | 배송업체. 사용 가능한 값은 택배사 페이지를 참조해주세요. |
with order_code
and code
PATCH /v1/sub_orders HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_code |
string | ✔ | 주문 번호 |
code |
string | ✔ | 주문상품의 code. 주문상품의 고유 식별자입니다. 다른 주문상품과 중복되면 안됩니다. (code가 없으면 임의의 code 값으로 저장됩니다.) |
product_id |
integer | ✖ | 주문상품에 속한 상품의 크리마 서비스측 id(쇼핑몰 서비스측 id 아님) |
product_code |
string | ✖ | 주문상품에 속한 상품의 쇼핑몰 서비스측 고유 식별자 |
price |
float | ✖ | 주문상품의 가격. 단일 상품 구매 가격인 아닌, '상품가격 X 구매수량' 입니다. 결제시 취소, 환불, 할인 등으로 인해 변경된 상품가격은 반영하지 않습니다. 수량이 변경되는 경우에는 수량에 맞게 값을 변경해주세요. |
product_count |
integer | ✖ | 주문상품 구매 수량 |
product_options |
array | ✖ | 주문상품 구매 옵션. 여러 개의 product_options[] 에 <key>:<value> 포맷으로 추가합니다. 핏·리뷰 서비스를 이용하는 경우 필수로 입력해야 합니다.예시(Content-Type) application/json: "product_options": ["size:160", "color:white"] application/x-www-form-urlencode: product_options[]=size:160&product_options[]=color:white |
status |
string | ✖ | 주문상품의 상태. 사용 가능한 값은 주문상태 페이지를 참조해주세요. |
delivery_started_at |
datetime(ISO 8601) | ✖ | 배송 시작일. 배송 시작하면 값을 넣어줘야 합니다. 이 값이 없는 주문에 대해서는 리뷰 문자와 이메일이 발송되지 않습니다. |
delivered_at |
datetime(ISO 8601) | ✖ | 배송 완료일 |
invoice |
string | ✖ | 송장번호 |
delivery_service |
string | ✖ | 배송업체. 사용 가능한 값은 택배사 페이지를 참조해주세요. |
Response
HTTP/1.1 204 No Content
Location: https://api.cre.ma/v1/orders/:id/sub_orders/:id
Delete a single sub_order
주문상품 한 개를 삭제합니다. 삭제 후에는 복구가 불가능합니다.
주문상품과 연관된 정보도 함께 삭제합니다 : 주문(연관된 주문상품이 모두 삭제됐을 경우), 리뷰, 발송내역(sms, 알림톡, 이메일), 추가정보(사이즈 피드백)
with order_id
and id
DELETE /v1/orders/:order_id/sub_orders/:id HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_id |
integer | ✔ | 주문의 id |
id |
integer | ✔ | 주문상품의 id |
with order_id
and code
DELETE /v1/orders/:order_id/sub_orders HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_id |
integer | ✔ | 주문의 id |
code |
string | ✔ | 주문상품의 code |
with order_code
and id
DELETE /v1/sub_orders/:id HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_code |
string | ✔ | 주문 번호 |
id |
integer | ✔ | 주문상품의 id |
with order_code
and code
DELETE /v1/sub_orders HTTP/1.1
이름 | 타입 | 필수 | 설명 |
---|---|---|---|
order_code |
string | ✔ | 주문 번호 |
code |
string | ✔ | 주문상품의 code |
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/1/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 주문상품 테이블에 컬럼을 하나 추가하시어 해당 주문상품에 이 값을 저장해주세요.
sub_order_id = JSON.parse(c.body_str)['id']
# 주문상품 메시지 변경
Curl.put("https://api.cre.ma/v1/orders/1/sub_orders/#{sub_order_id}?access_token=#{access_token}&message=TEST")
# 주문상품 삭제
Curl.delete("https://api.cre.ma/v1/orders/1/sub_orders/#{sub_order_id}?access_token=#{access_token}")