# 교환 처리하기

교환은 주문한 **상품의 배송이 시작된 이후, 주문 상품을 다른 상품으로 교체하는 것**을 의미합니다. 배송된 상품을 수거하고 새상품을 재배송합니다. 구매자는 주문 상품이 '배송중', '배송완료' 상태일 때 교환을 요청할 수 있어요.

<figure><img src="https://1893239884-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5jZ0MNZGU289cgosea36%2Fuploads%2FVdcKpIiltYiqHMxPytUY%2Fimage.png?alt=media&#x26;token=3d3108d6-6a7f-41a6-9f30-b1f5336c9bd8" alt=""><figcaption></figcaption></figure>

* 판매자는 교환 요청을 승인 및 거절할 수 있어요.&#x20;
* 판매자가 교환 요청을 승인하면, 수거가 완료한 다음에 교환 상품을 재배송하거나 교환을 반려할 수 있어요.
* 판매자가 교환 상품을 재배송하면, 송장번호를 입력하고 주문 상태는 '재배송중'으로 바뀌어요.
* 교환을 반려하면 주문은 교환 요청했을 때의 상태(배송중 또는 배송완료)로 돌아갑니다.
* 판매자는 재배송중일 때 교환 송장을 변경할 수 있고, 배송이 완료되면 주문 상태를 '교환완료'로 바꿔야 해요.
* 구매자는 교환된 상품에 대해서 다시 교환을 요청할 수 있고, 교환 요청 완료된 주문에 대해서 재교환 요청 및 반품 요청할 수 있어요.

## 교환 승인하기

판매자가 교환 요청 및 교환을 승인하고 모든 과정을 일반적으로 마치는 방법입니다.

{% stepper %}
{% step %}

### 교환 요청 확인하기

[클레임 요청 목록 조회 API](https://shopping-docs.toss.im/dev/api-2/claim#get-api-v3-shopping-fep-claims)로 교환 클레임을 확인해주세요.  `type` 쿼리 파라미터를 `EXCHANGE`로 설정해주세요. `status` 쿼리 파라미터는 항상 `REQUESTED`로 설정해주세요. 요청 상태인 교환 클레임을 불러옵니다.

**GET** `/api/v3/shopping-fep/claims?type={CLAIM_TYPE}&status={CLAIM_STATUS}'`

```bash
  curl --request GET \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/claims?type=EXCHANGE&status=REQUESTED' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'
```

{% endstep %}

{% step %}

### 클레임 ID로 교환 요청 승인하기

응답의 `success` 필드 안에 `items.id`는 해당 클레임 요청의 유니크한 ID 값입니다. [교환 요청 승인 API](https://shopping-docs.toss.im/dev/api-2/claim#post-api-v3-shopping-fep-claims-claimid-exchange-approval)의 Path 파라미터로 사용해주세요. 교환 요청 승인시 주문 상품은 '교환수거중' 상태가 됩니다.

**POST** `/api/v3/shopping-fep/claims/{claimId}/exchange/approval`

```bash
  curl --request POST \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/claims/{claimId}/exchange/approval' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'
```

{% endstep %}

{% step %}

### 교환 수거 완료하기

구매자가 발송한 상품을 잘 받았다면 [교환 수거 완료 API](https://shopping-docs.toss.im/dev/api-2/claim#post-api-v3-shopping-fep-claims-claimid-exchange-collection)를 호출해주세요. 교환 수거 완료 시 주문 상태는 '교환수거완료'로 바뀌어요.

**POST** `/api/v3/shopping-fep/claims/{claimId}/exchange/collection`

```bash
  curl --request POST \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/claims/{claimId}/exchange/collection' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'
```

{% endstep %}

{% step %}

### 교환 상품 재배송하기

수거 완료한 상품에 문제가 없다면 [교환 재배송 API](https://shopping-docs.toss.im/dev/api-2/claim#post-api-v3-shopping-fep-claims-claimid-exchange-delivery)를 호출해주세요. 교환 승인시 주문 상태는 '재배송중'으로 변경됩니다. 재배송 송장 정보(택배사 및 송장번호)를 요청 파라미터로 입력해주세요.

만약 추후에 송장 정보를 수정해야 된다면 교환 송장번호 변경 API를 사용해주세요.

**POST** `/api/v3/shopping-fep/claims/{claimId}/exchange/delivery`

```bash
  curl --request POST \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/claims/{claimId}/exchange/delivery' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json' \
  --data '{"deliveryCompany":"CJ대한통운", "shippingTrackingNumber":"1022-5765-4265"}'
```

{% endstep %}

{% step %}

### 교환 완료하기

구매자가 교환된 상품을 잘 받았다면 [교환 완료 API](https://shopping-docs.toss.im/dev/api-2/claim#post-api-v3-shopping-fep-claims-claimid-exchange-completion)를 호출해주세요.

**POST** `/api/v3/shopping-fep/claims/{claimId}/exchange/completion`

```bash
  curl --request POST \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/claims/{claimId}/exchange/completion' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'
```

{% endstep %}
{% endstepper %}

## 교환 요청 거절하기

재고부족 등의 이유로 구매자의 교환 요청을 거절할 수도 있어요. [교환 요청 거절 API](https://shopping-docs.toss.im/dev/api-2/claim#post-api-v3-shopping-fep-claims-claimid-exchange-rejection)를 호출해주세요. Path의 `{claimId}` 부분에 취소할 클레임의 ID를 추가해주세요. 요청 파라미터로 거절 사유를 알려주세요.

**POST** `/api/v3/shopping-fep/claims/{claimId}/exchange/rejection`

```bash
  curl --request POST \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/api/v3/shopping-fep/claims/{claimId}/exchange/rejection' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'
  --data '{"requestRejectReason":"재고 부족"}'
```

## 상품 수거 이후 교환 반려하기

상품을 수거한 다음에 교환을 반려할 수 있어요. [교환 반려 API](https://shopping-docs.toss.im/dev/api-2/claim#post-api-v3-shopping-fep-claims-claimid-exchange-collection-rejection)를 호출해주세요. 반려된 주문의 상태는 '배송중' 혹은 '배송완료'로 돌아갑니다.

**POST** `/api/v3/shopping-fep/claims/{claimId}/exchange/collection-rejection`

```bash
  curl --request POST \
  --url 'https://shopping-fep.toss.im/api/v3/shopping-fep/api/v3/shopping-fep/claims/{claimId}/exchange/rejection' \
  --header 'Authorization: Bearer {ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'
  --data '{"rejectReason":"재고 부족"}'
```

> ### API 연동 중 문의사항이나 개선 제안이 있으신가요?

{% hint style="info" %}
토스쇼핑 API 연동에 대한 질문이나, 건의사항이 있다면 [연동/개발 문의](https://discord.gg/xPz6H9NZ3P)에 남겨주세요. 다른 유저의 문의를 참고하거나, 토스쇼핑 담당자와 질의를 주고 받을 수 있어요.
{% endhint %}
