Skip to content

Commit

Permalink
네이버 배송비 정책 관련 안내자료 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
jangbora committed Jul 12, 2017
1 parent 8ca6ae4 commit 8735d96
Show file tree
Hide file tree
Showing 3 changed files with 283 additions and 4 deletions.
4 changes: 3 additions & 1 deletion NAVERPAY/README.md
@@ -1,4 +1,6 @@
# 네이버페이
네이버페이 연동 방식은 기존 일반 PG, 간편결제 서비스의 연동방식과는 차이가 많아 별도의 매뉴얼로 구성됩니다.

네이버페이 용도의 REST API들이 추가되는 작업 및 매뉴얼 내용 보강이 지속적으로 진행될 예정이며, [네이버페이 샘플](sample/README.md)을 참조해주세요.
- 기본 샘플 : [네이버페이 샘플](sample/README.md)
- 배송비 정책 매뉴얼 : [배송비 정책](sample/naverpay-shipping.md)
- JSON-Schema : [결제요청 파라메터 JSON Schema](sample/naverpay-schema.md)
58 changes: 55 additions & 3 deletions NAVERPAY/sample/naverpay-schema.md
Expand Up @@ -111,15 +111,67 @@
"type": "integer"
},
"feeType": {
"deprecated" : true,
"description": "배송비 적용방식(FREE:무료, CHARGE:유료, CONDITIONAL_FREE:조건부 무료, CHARGE_BY_QUANTITY:수량별 부과)",
"enum": ["FREE", "CHARGE", "CONDITIONAL_FREE", "CHARGE_BY_QUANTITY"]
},
"feePayType": {
"description": "배송비 지불방식(FREE:무료, PREPAYED:선불, CASH_ON_DELIVERY:착불)",
"enum": ["FREE", "PREPAYED", "CASH_ON_DELIVERY"]
"description": "배송비 지불방식(PREPAYED:선불, CASH_ON_DELIVERY:착불)",
"enum": ["PREPAYED", "CASH_ON_DELIVERY"]
},
"feeRule": {
"description": "조건별 배송비 규칙",
"$ref": "#/definitions/feeRule"
}
},
"required": ["baseFee", "feeType", "feePayType"]
"required": ["baseFee", "feePayType"]
},
"feeRule": {
"properties": {
"freeByThreshold": {
"description": "무료배송 최소 주문금액",
"type": "integer"
},
"repeatByQty": {
"description": "배송비 반복부과 기준 구매수량",
"type": "integer"
},
"rangesByQty": {
"description": "구매수량별 커스텀 추가배송비",
"type": "array",
"$ref": "#/definitions/feeRangeByQty"
},
"surchargesByArea": {
"description": "지역별 추가배송비",
"type": ["string", "array"],
"$ref": "#/definitions/feeAreaByQty"
}
}
},
"feeRangeByQty": {
"properties": {
"from": {
"description": "배송비 구간적용 최소 수량",
"type": "integer"
},
"surcharge": {
"description": "해당 구간에 적용되는 추가 배송비",
"type": "integer"
}
}
},
"feeAreaByQty": {
"properties": {
"area": {
"description": "지역별 배송비 구간명",
"type": "array",
"enum": ["island", "jeju"]
},
"surcharge": {
"description": "해당 지역에 적용되는 추가 배송비",
"type": "integer"
}
}
}
}
}
Expand Down
225 changes: 225 additions & 0 deletions NAVERPAY/sample/naverpay-shipping.md
@@ -0,0 +1,225 @@
네이버페이 결제 시 적용 가능한 배송비 정책을 유형별로 알아보고, 파라메터 구성에 대한 예시를 확인해봅니다.

# JSON 구성

`IMP.request_pay(param, callback)` 호출 시 `naverProducts.shipping` 속성에 대한 JSON구성은 다음과 같습니다.

```javascript
{
groupId : "묶음배송구분 카테고리 ID",
method : "DELIVERY", //DELIVERY(택배·소포·등기), QUICK_SVC(퀵 서비스), DIRECT_DELIVERY(직접 전달), VISIT_RECEIPT(방문 수령), NOTHING(배송 없음)
baseFee : 400, //기본 배송비
feePayType : "PREPAYED", //PREPAYED(선불), CASH_ON_DELIVERY(착불)
feeRule : {
freeByThreshold : 20000,
repeatByQty : 4,
rangesByQty : [
{from: 10, surcharge:4000},
{from: 20, surcharge:6000}
],
surchargesByArea : [ //array or string(API)
{area:"island", surcharge:2000},
{area:"jeju", surcharge:3000}
]
}
}
```

# 1. 무료 배송

`feeRule`, `feePayType` 속성을 정의할 필요가 없으며

- baseFee : 0

로 설정합니다.

```javascript
{
groupId : "묶음배송구분 카테고리 ID",
method : "DELIVERY", //DELIVERY(택배·소포·등기), QUICK_SVC(퀵 서비스), DIRECT_DELIVERY(직접 전달), VISIT_RECEIPT(방문 수령), NOTHING(배송 없음)
baseFee : 0 //기본 배송비
}
```

# 2. 배송비 고정
모든 구매자에게 동일한 배송비를 수취하는 경우에 사용합니다.(예. 2,500원)

`feeRule` 속성을 정의할 필요가 없으며

- baseFee : 2500
- feePayType : "PREPAYED"(선불) 또는 "CASH\_ON\_DELIVERY"(착불)

로 설정합니다.

```javascript
{
groupId : "묶음배송구분 카테고리 ID",
method : "DELIVERY", //DELIVERY(택배·소포·등기), QUICK_SVC(퀵 서비스), DIRECT_DELIVERY(직접 전달), VISIT_RECEIPT(방문 수령), NOTHING(배송 없음)
baseFee : 2500, //기본 배송비
feePayType : "PREPAYED" //PREPAYED(선불), CASH_ON_DELIVERY(착불)
}
```

# 3. 조건부 무료 배송(feeRule)
기본적으로 배송비가 부과되나 주문 총합계 금액이 기준 이상일 때 배송비를 면제해주는 정책인 경우입니다.

기본 배송비는 2,500원이며 주문 총합계 금액이 20,000원 이상일 때 배송비 무료를 설정하기 위해서는

- feeRule.freeByThreshold : 20000
- baseFee : 2500
- feePayType : "PREPAYED"(선불) 또는 "CASH\_ON\_DELIVERY"(착불)

로 설정합니다.

```javascript
{
groupId : "묶음배송구분 카테고리 ID",
method : "DELIVERY", //DELIVERY(택배·소포·등기), QUICK_SVC(퀵 서비스), DIRECT_DELIVERY(직접 전달), VISIT_RECEIPT(방문 수령), NOTHING(배송 없음)
baseFee : 2500, //기본 배송비
feePayType : "PREPAYED", //PREPAYED(선불), CASH_ON_DELIVERY(착불)
feeRule : {
freeByThreshold : 20000
}
}
```

# 4. 구매 수량별 차등 배송비(feeRule)
제품의 부피가 크거나 중량이 무거워 구매자가 상품을 여러 개 구매할 경우 배송비가 추가로 부과되어야하는 경우입니다.

## 4.1 규칙적인 배송비 부과
상품 구매수량이 N개 늘어날 때마다 배송비가 일정하게 증가하는 경우입니다.
(기본배송비 기준으로 금액이 증가하게 됩니다.)

기본 배송비는 2,500원이며 10개마다 2,500원의 배송비가 반복적으로 증가하도록 설정하려면,

- feeRule.repeatByQty : 10
- baseFee : 2500
- feePayType : "PREPAYED"(선불) 또는 "CASH\_ON\_DELIVERY"(착불)

로 설정합니다.

```javascript
{
groupId : "묶음배송구분 카테고리 ID",
method : "DELIVERY", //DELIVERY(택배·소포·등기), QUICK_SVC(퀵 서비스), DIRECT_DELIVERY(직접 전달), VISIT_RECEIPT(방문 수령), NOTHING(배송 없음)
baseFee : 2500, //기본 배송비
feePayType : "PREPAYED", //PREPAYED(선불), CASH_ON_DELIVERY(착불)
feeRule : {
rangesByQty : 10
}
}
```

## 4.2 수량 구간별 커스텀 추가 배송비(feeRule)
수량 구간을 임의로 나누어 각 구간별로 **추가 부과**되는 배송비를 설정할 수 있습니다. 구간은 최대 3개까지만 설정이 가능합니다.

구매 수량이 1개~10개까지는 기본배송비를 적용하며 11개~20개까지는 5,000원의 배송비(== 2,500원 추가)를, 21개 이상은 10,000원(== 7,500원 추가)의 배송비를 부과하려면

- feeRule.rangesByQty : 구간정의
- baseFee : 2500
- feePayType : "PREPAYED"(선불) 또는 "CASH\_ON\_DELIVERY"(착불)

로 설정합니다.

```javascript
{
groupId : "묶음배송구분 카테고리 ID",
method : "DELIVERY", //DELIVERY(택배·소포·등기), QUICK_SVC(퀵 서비스), DIRECT_DELIVERY(직접 전달), VISIT_RECEIPT(방문 수령), NOTHING(배송 없음)
baseFee : 2500, //기본 배송비
feePayType : "PREPAYED", //PREPAYED(선불), CASH_ON_DELIVERY(착불)
feeRule : {
rangesByQty : [
{from: 11, surcharge:2500}, //11개이상 21개 미만 최종 5,000(=2,500+2,500)원 배송비
{from: 21, surcharge:7500} //21개이상 최종 10,000(=2,500+7,500)원 배송비
]
}
}
```


# 5. 지역별 추가배송비(surchargesByArea)
상품 배송지역에 따른 추가 배송비를 결정하는 설정이므로, #1, #2, #3, #4에서 안내된 feeRule과 동시에 선언될 수 있습니다.

(즉, feeRule에서 `surchargesByArea``freeByThreshold`, `repeatByQty`, `rangesByQty`와 함께 선언될 수 있습니다).

## 5.1 우편번호 기준으로 네이버페이에 위임
네이버페이에서 배송지역의 우편번호를 보고 추가배송비를 자동 계산하도록 설정하는 방법입니다. 최대 3개의 구간으로 구분될 수 있으며, 구간의 정의는 다음과 같습니다.

1. 기본 내륙 배송비
2. 도서 산간 지역(거제도, 울릉도, 강화도 등) : *area명은 island입니다.*
3. 제주도 : *area명은 jeju입니다.*

기본 내륙 배송비는 `baseFee`금액이 적용됩니다.
제주도에 대한 구간 정의가 이뤄지지 않으면, 제주도는 일반 도서 산간지역으로 분류됩니다.

### 5.1.1 제주포함, 도서산간 지역 배송비 추가

기본 내륙 배송비는 2,500원으로 설정하고 제주도를 포함하여 모든 도서산간 지역은 4,500원의 배송비(== 2,000원 추가 배송비)를 책정하고자 한다면,

- feeRule.surchargesByArea : `{area:"island", surcharge:2000}`
- baseFee : 2500
- feePayType : "PREPAYED"(선불) 또는 "CASH\_ON\_DELIVERY"(착불)

로 설정합니다.

```javascript
{
groupId : "묶음배송구분 카테고리 ID",
method : "DELIVERY", //DELIVERY(택배·소포·등기), QUICK_SVC(퀵 서비스), DIRECT_DELIVERY(직접 전달), VISIT_RECEIPT(방문 수령), NOTHING(배송 없음)
baseFee : 2500, //기본 배송비
feePayType : "PREPAYED", //PREPAYED(선불), CASH_ON_DELIVERY(착불)
feeRule : {
surchargesByArea : [ //array or string(API)
{area:"island", surcharge:2000}
]
}
}
```


### 5.1.2 일반 도서산간 지역과 제주도 구분한 배송비 설정

기본 내륙 배송비는 2,500원으로 설정하고 일반 도서산간 지역은 4,500원(== 2,000원 추가 배송비)으로, 제주도의 경우 7,000원(== 4,500원 추가 배송비)의 배송비를 책정하고자 한다면,

- feeRule.surchargesByArea : `{area:"island", surcharge:2000}, {area:"jeju", surcharge:4500}`
- baseFee : 2500
- feePayType : "PREPAYED"(선불) 또는 "CASH\_ON\_DELIVERY"(착불)

로 설정합니다.

```javascript
{
groupId : "묶음배송구분 카테고리 ID",
method : "DELIVERY", //DELIVERY(택배·소포·등기), QUICK_SVC(퀵 서비스), DIRECT_DELIVERY(직접 전달), VISIT_RECEIPT(방문 수령), NOTHING(배송 없음)
baseFee : 2500, //기본 배송비
feePayType : "PREPAYED", //PREPAYED(선불), CASH_ON_DELIVERY(착불)
feeRule : {
surchargesByArea : [ //array or string(API)
{area:"island", surcharge:2000},
{area:"jeju", surcharge:4500}
]
}
}
```

## 5.2 지역배송비 커스텀 설정

네이버페이 기본 기능에서는 내륙 / 일반 도서산간 / 제주도 3가지 구분만 가능하기 때문에 꽃배달, 퀵서비스와 같이 시,군,구 단위로 지역배송비 설정을 보다 세밀하게 해야하는 경우 API를 이용해 자체적으로 구현할 수 있습니다.
이 경우에는 가맹점에서 자체적으로 우편번호 DB를 구축하고 구매자가 구매를 시도할 때 네이버페이 => 가맹점으로 요청하는 API에 대해 응답함으로써 지역에 대한 추가배송비를 설정할 수 있습니다.(추후 보다 상세한 내용 업데이트하겠습니다)

- feeRule.surchargesByArea : "API"

와 같이 "API"라는 문자열(string)을 지정하면 됩니다.

```javascript
{
groupId : "묶음배송구분 카테고리 ID",
method : "DELIVERY", //DELIVERY(택배·소포·등기), QUICK_SVC(퀵 서비스), DIRECT_DELIVERY(직접 전달), VISIT_RECEIPT(방문 수령), NOTHING(배송 없음)
baseFee : 2500, //기본 배송비
feePayType : "PREPAYED", //PREPAYED(선불), CASH_ON_DELIVERY(착불)
feeRule : {
surchargesByArea : "API"
}
}
```

0 comments on commit 8735d96

Please sign in to comment.