-
-**API 시크릿은 절대로 외부에 노출되어서는 안되는 값**입니다.\
-실제 구현에서 액세스 토큰 발급은 꼭 서버사이드에서 해주세요.
+ 1. [관리자 콘솔 `상점・계정 관리` 화면](https://admin.portone.io/merchant) 접속
+ 2. `내 식별코드・API Keys` 버튼 클릭
-
+
+
+ **API 시크릿은 절대로 외부에 노출되어서는 안 되는 값**입니다.\
+ 실제 구현에서 액세스 토큰 발급은 꼭 서버 사이드에서 해주세요.
+
-
액세스 토큰 발급 받기
+
액세스 토큰 발급 받기
- 호출
+ 호출
-import getTokenImage from "./_assets/v1auth/get-token.png";
-
-
-
-
-포트원 REST API 서버는 **Google Public NTP**의 시간과 동기화되고 있습니다.
-
-
+
-
-하위 상점 연동을 할 경우 액세스 토큰을 발급받을 때 **Agent 계정**의 **API 키** 와 **API 시크릿**을 사용해야 합니다.
+
+ 포트원 REST API 서버는 **Google Public NTP**의 시간과 동기화되고 있습니다.
+
-[Agency & Tier 란?](/docs/ko/tip/agency-and-tier)
-
-
+
+ 하위 상점 연동을 할 경우 액세스 토큰을 발급받을 때 **Agent 계정**의 **API 키** 와 **API 시크릿**을 사용해야 합니다.
+ [Agency & Tier 란?](/docs/ko/tip/agency-and-tier)
+
-
액세스 토큰 사용하기
-
-발급받은 액세스 토큰은 다른 API를 호출할 때\
-`Authorization` 헤더에 `Bearer <액세스 토큰>` 형식의 값을 넣어주면 됩니다.
-
-자세한 내용은 [MDN - HTTP 인증 문서](https://developer.mozilla.org/ko/docs/Web/HTTP/Authentication)를 참고해주세요.
+
액세스 토큰 사용하기
-import useImage from "./_assets/v1auth/use.png";
-
-
+ 발급받은 액세스 토큰은 다른 API를 호출할 때\
+ `Authorization` 헤더에 `Bearer <액세스 토큰>` 형식의 값을 넣어주면 됩니다.
-
-하위 상점 연동을 할 경우 포트원 API 호출시 `Tier` 헤더에 하위 상점 티어 코드를 입력해야 합니다.
+ 자세한 내용은 [MDN - HTTP 인증 문서](https://developer.mozilla.org/ko/docs/Web/HTTP/Authentication)를 참고해주세요.
-[Agency & Tier 란?](/docs/ko/tip/agency-and-tier)
-
-import tierImage from "./_assets/v1auth/tier.png";
+
-
+
+ 하위 상점 연동을 할 경우 포트원 API 호출시 `Tier` 헤더에 하위 상점 티어 코드를 입력해야 합니다.
-
+ [Agency & Tier 란?](/docs/ko/tip/agency-and-tier)
+
+
-
액세스 토큰 만료기한 연장
+
액세스 토큰 만료기한 연장
-만료된 액세스 토큰으로 API를 호출하면 `401 Unauthorized` 응답을 받습니다.\
-액세스 토큰의 만료기한은 발행시간부터 **30분**입니다.
-
-- 기존 액세스 토큰이 만료되기 전 를 다시 호출했을 경우
- - 기존 액세스 토큰이 반환됩니다.\
- **만료기한이 1분 안쪽으로 남았을 때** 요청했다면 기존 액세스 토큰의 만료시간이 **5분 연장**됩니다.
-- 기존 액세스 토큰이 만료된 다음 를 다시 호출했을 경우
- - 새로운 액세스 토큰이 반환됩니다.
-
-import reuseImage from "./_assets/v1auth/reuse.svg";
+ 만료된 액세스 토큰으로 API를 호출하면 `401 Unauthorized` 응답을 받습니다.\
+ 액세스 토큰의 만료 기한은 발행시간부터 **30분**입니다.
-
+ - 기존 액세스 토큰이 만료되기 전 를 다시 호출했을 경우
+ - 기존 액세스 토큰이 반환됩니다.\
+ **만료 기한이 1분 안쪽으로 남았을 때** 요청했다면 기존 액세스 토큰의 만료 기한이 **5분 연장**됩니다.
-
-액세스 토큰의 재사용과 만료기한 5분 연장 동작방식은 다음과 같은 상황을 고려해서 설계되었습니다.
+ - 기존 액세스 토큰이 만료된 다음 를 다시 호출했을 경우
+ - 새로운 액세스 토큰이 반환됩니다.
-- 한 고객사에서 여러 대의 웹서버가 동시에 경쟁적으로 REST API(`/users/getToken`)를 호출하는 상황
-- 한 고객사에서 여러 대의 웹서버가 시간 동기화 되어있지 않은 상황
+
-
+
+ 액세스 토큰의 재사용과 만료기한 5분 연장 동작방식은 다음과 같은 상황을 고려해서 설계되었습니다.
+ - 한 고객사에서 여러 대의 웹서버가 동시에 경쟁적으로 REST API(`/users/getToken`)를 호출하는 상황
+ - 한 고객사에서 여러 대의 웹서버가 시간 동기화 되어있지 않은 상황
+
diff --git a/src/content/blog/2024-02/v2-oom.mdx b/src/content/blog/2024-02/v2-oom.mdx
index bbd107127..731d71661 100644
--- a/src/content/blog/2024-02/v2-oom.mdx
+++ b/src/content/blog/2024-02/v2-oom.mdx
@@ -8,6 +8,7 @@ thumbnail: ./_assets/v2-oom/0.png
---
import Figure from "~/components/Figure.astro";
+
import image0 from "./_assets/v2-oom/0.png";
import image1 from "./_assets/v2-oom/1.png";
import image2 from "./_assets/v2-oom/2.png";
diff --git a/src/content/blog/2024-02/v2-zio.mdx b/src/content/blog/2024-02/v2-zio.mdx
index e89cc844f..12989e76e 100644
--- a/src/content/blog/2024-02/v2-zio.mdx
+++ b/src/content/blog/2024-02/v2-zio.mdx
@@ -519,12 +519,12 @@ ZIO는 그러한 조건에 잘 부합하는 Effect System이었고 현재까지
이러한 요구사항을 만족하기 위해 신중한 고민을 거쳐 의사결정을 했고, 그렇게 탄생한 포트원 V2 모듈은 수많은 디지털 커머스 회사들과 함께할 준비를 마쳤습니다.
포트원 V2에서는 커머스 회사들이 결제와 관련된 고민을 덜 수 있도록 멋진 기능들을 많이 출시할 예정이니, 앞으로 포트원 V2 모듈의 행보를 지켜봐주세요!
-[scala]: \(https://scala-lang.org/\)
+[scala]: https://scala-lang.org/
-[why-fp-matters]: \(https://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf\)
+[why-fp-matters]: https://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf
-[for-comprehension]: \(https://docs.scala-lang.org/tour/for-comprehensions.html\)
+[for-comprehension]: https://docs.scala-lang.org/tour/for-comprehensions.html
-[ast]: \(https://en.wikipedia.org/wiki/Abstract_syntax_tree\)
+[ast]: https://en.wikipedia.org/wiki/Abstract_syntax_tree
-[zio]: \(https://zio.dev/\)
+[zio]: https://zio.dev/
diff --git a/src/content/blog/2024-03/tgs.mdx b/src/content/blog/2024-03/tgs.mdx
index e181c5aaf..2b8d0ee23 100644
--- a/src/content/blog/2024-03/tgs.mdx
+++ b/src/content/blog/2024-03/tgs.mdx
@@ -35,45 +35,45 @@ V1을 완전히 버리고 V2로 넘어가는 것이 아니기 때문에 하나
- 카카오페이 결제 파라미터
-|Name |타입 |필수여부|설명 |
+| Name | 타입 |필수여부| 설명 |
|:----------------:|:--------:|:------:|:--------------------------------------------------------------------------------------------------------------------:|
-|cid |String |O |가맹점 코드, 10자 |
-|cid\_secret |String |X |가맹점 코드 인증키, 24자, 숫자와 영문 소문자 조합 |
-|partner\_order\_id|String |O |가맹점 주문번호, 최대 100자 |
-|partner\_user\_id |String |O |가맹점 회원 id, 최대 100자 |
-|item\_name |String |O |상품명, 최대 100자 |
-|item\_code |String |X |상품코드, 최대 100자 |
-|quantity |Integer |O |상품 수량 |
-|total\_amount |Integer |O |상품 총액 |
-|tax\_free\_amount |Integer |O |상품 비과세 금액 |
-|vat\_amount |Integer |X |상품 부가세 금액 값을 보내지 않을 경우 다음과 같이 VAT 자동 계산 (상품총액 - 상품 비과세 금액)/11 : 소숫점 이하 반올림|
-|green\_deposit |Integer |X |컵 보증금 |
-|approval\_url |String |O |결제 성공 시 redirect url, 최대 255자 |
-|cancel\_url |String |O |결제 취소 시 redirect url, 최대 255자 |
-|fail\_url |String |O |결제 실패 시 redirect url, 최대 255자 |
-|available\_cards |JSON Array|X |결제 수단으로써 사용 허가할 카드사를 지정해야 하는 경우 사용 |
+| cid | String | O | 가맹점 코드, 10자 |
+| cid\_secret | String | X | 가맹점 코드 인증키, 24자, 숫자와 영문 소문자 조합 |
+|partner\_order\_id| String | O | 가맹점 주문번호, 최대 100자 |
+| partner\_user\_id| String | O | 가맹점 회원 id, 최대 100자 |
+| item\_name | String | O | 상품명, 최대 100자 |
+| item\_code | String | X | 상품코드, 최대 100자 |
+| quantity | Integer | O | 상품 수량 |
+| total\_amount | Integer | O | 상품 총액 |
+| tax\_free\_amount| Integer | O | 상품 비과세 금액 |
+| vat\_amount | Integer | X |상품 부가세 금액 값을 보내지 않을 경우 다음과 같이 VAT 자동 계산 (상품총액 - 상품 비과세 금액)/11 : 소숫점 이하 반올림|
+| green\_deposit | Integer | X | 컵 보증금 |
+| approval\_url | String | O | 결제 성공 시 redirect url, 최대 255자 |
+| cancel\_url | String | O | 결제 취소 시 redirect url, 최대 255자 |
+| fail\_url | String | O | 결제 실패 시 redirect url, 최대 255자 |
+| available\_cards |JSON Array| X | 결제 수단으로써 사용 허가할 카드사를 지정해야 하는 경우 사용 |
- 네이버페이 결제 파라미터
-|Name |타입 |필수여부|설명 |
+| Name | 타입 |필수여부| 설명 |
|:-----------------------:|:-----:|:------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
-|merchantPayKey |String |O |가맹점 주문내역 확인 가능한 가맹점 결제번호 또는 주문번호를 전달해야 합니다 |
-|merchantPayTransactionKey|String | |가맹점 주문내역 히스토리 확인이 가능한 가맹점 결제 트랜잭션 번호 또는 주문 트랜잭션 번호를 전달해야 합니다. |
-|merchantUserKey |String | |가맹점의 사용자 키(개인 아이디와 같은 개인정보 데이터는 제외하여 전달해야 합니다) |
-|productName |String |O |대표 상품명. 예: 장미의 이름 외 1건(X), 장미의 이름(O) |
-|productCount |Number |O |상품 수량 예: A 상품 2개 + B 상품 1개의 경우 productCount 3으로 전달 |
-|totalPayAmount |Number |O |총 결제 금액. 최소 결제금액은 10원 |
-|taxScopeAmount |Number |O |과세 대상 금액. 과세 대상 금액 + 면세 대상 금액 + 컵 보증금 금액 (옵션) = 총 결제 금액 |
-|taxExScopeAmount |Number |O |면세 대상 금액. 과세 대상 금액 + 면세 대상 금액 + 컵 보증금 금액 (옵션) = 총 결제 금액 |
-|environmentDepositAmount |Number | |1회용 컵에 담은 상품의 결제건인 경우에만 필수값이며, 그 외에는 전달할 필요가 없습니다. 컵 보증금 금액. 과세 대상 금액 + 면세 대상 금액 + 컵 보증금 금액 (옵션) = 총 결제 금액 |
-|returnUrl |String |O |결제 인증 결과 전달 URL, 결제 완료 후 이동할 URL(returnUrl + 가맹점 파라미터 전달이 가능합니다) 네이버페이는 결제 작업 완료 후, 고객사가 등록한 returnUrl로 리디렉션을 수행합니다 고객사는 이를 활용하여 내부 처리를 수행하거나 구매자에게 결제 결과 화면을 노출할 수 있습니다 |
-|purchaserName |String | |구매자 성명. 결제 상품이 보험 및 위험 업종 등인 경우에만 필수 값입니다. 그 외에는 전달할 필요가 없습니다 |
-|purchaserBirthday |String | |구매자 생년월일(yyyymmdd). 결제 상품이 보험 및 위험 업종 등인 경우에만 필수 값입니다. 그 외에는 전달할 필요가 없습니다 |
-|extraDeduction |Boolean| |도서 / 공연 / 영화 소득공제 대상 여부. 문화체육관광부에서 인증한 소득공제 제공 사업자가 대상 상품을 판매하는 경우 필수 값입니다. 해당 파라미터를 사용하기 위해서는 별도 요청을 주셔야 합니다. true : 대상, false : 비 대상 |
-|useCfmYmdt |String | |이용완료일(yyyymmdd) 가맹점 타입이 이용완료일 정산 또는 이용완료일 포인트 적립인 경우 필수 해당 값을 기준으로 이용완료일 정산의 경우 '정산기준일' 또는 이용완료일 포인트 적립인 경우 '포인트적립 기준일'이 지정됩니다. 이용완료일은 반드시 결제일과 같거나 결제일 이후여야 하며, 이용완료일이 결제일자 이전으로 적용될 경우 에러(InvalidUseCfmYmdt)가 발생됩니다. 이용완료일이 결제일자 기준으로 1년을 초과할 경우 별도 에러가 발생되지는 않으나 전달한 이용완료일(useCfmYmdt) 값이 결제일자 +365일로 조정 처리됩니다.|
-|merchantExtraParameter |String | |가맹점 자체적으로 추가 구분값으로 활용 가능한 별도의 예비 필드 (개인 아이디와 같은 개인정보 데이터는 제외하여 전달해야 합니다) |
-|productItems |Array |O |productItem 배열 |
-|subMerchantInfo |Object | |하부가맹점 정보. PG 업종 가맹점인 경우에만 필수값입니다 |
+| merchantPayKey | String| O | 가맹점 주문내역 확인 가능한 가맹점 결제번호 또는 주문번호를 전달해야 합니다 |
+|merchantPayTransactionKey| String| | 가맹점 주문내역 히스토리 확인이 가능한 가맹점 결제 트랜잭션 번호 또는 주문 트랜잭션 번호를 전달해야 합니다. |
+| merchantUserKey | String| | 가맹점의 사용자 키(개인 아이디와 같은 개인정보 데이터는 제외하여 전달해야 합니다) |
+| productName | String| O | 대표 상품명. 예: 장미의 이름 외 1건(X), 장미의 이름(O) |
+| productCount | Number| O | 상품 수량 예: A 상품 2개 + B 상품 1개의 경우 productCount 3으로 전달 |
+| totalPayAmount | Number| O | 총 결제 금액. 최소 결제금액은 10원 |
+| taxScopeAmount | Number| O | 과세 대상 금액. 과세 대상 금액 + 면세 대상 금액 + 컵 보증금 금액 (옵션) = 총 결제 금액 |
+| taxExScopeAmount | Number| O | 면세 대상 금액. 과세 대상 금액 + 면세 대상 금액 + 컵 보증금 금액 (옵션) = 총 결제 금액 |
+| environmentDepositAmount| Number| | 1회용 컵에 담은 상품의 결제건인 경우에만 필수값이며, 그 외에는 전달할 필요가 없습니다. 컵 보증금 금액. 과세 대상 금액 + 면세 대상 금액 + 컵 보증금 금액 (옵션) = 총 결제 금액 |
+| returnUrl | String| O | 결제 인증 결과 전달 URL, 결제 완료 후 이동할 URL(returnUrl + 가맹점 파라미터 전달이 가능합니다) 네이버페이는 결제 작업 완료 후, 가맹점이 등록한 returnUrl로 리디렉션을 수행합니다 가맹점은 이를 활용하여 내부 처리를 수행하거나 구매자에게 결제 결과 화면을 노출할 수 있습니다 |
+| purchaserName | String| | 구매자 성명. 결제 상품이 보험 및 위험 업종 등인 경우에만 필수 값입니다. 그 외에는 전달할 필요가 없습니다 |
+| purchaserBirthday | String| | 구매자 생년월일(yyyymmdd). 결제 상품이 보험 및 위험 업종 등인 경우에만 필수 값입니다. 그 외에는 전달할 필요가 없습니다 |
+| extraDeduction |Boolean| | 도서 / 공연 / 영화 소득공제 대상 여부. 문화체육관광부에서 인증한 소득공제 제공 사업자가 대상 상품을 판매하는 경우 필수 값입니다. 해당 파라미터를 사용하기 위해서는 별도 요청을 주셔야 합니다. true : 대상, false : 비 대상 |
+| useCfmYmdt | String| |이용완료일(yyyymmdd) 가맹점 타입이 이용완료일 정산 또는 이용완료일 포인트 적립인 경우 필수 해당 값을 기준으로 이용완료일 정산의 경우 '정산기준일' 또는 이용완료일 포인트 적립인 경우 '포인트적립 기준일'이 지정됩니다. 이용완료일은 반드시 결제일과 같거나 결제일 이후여야 하며, 이용완료일이 결제일자 이전으로 적용될 경우 에러(InvalidUseCfmYmdt)가 발생됩니다. 이용완료일이 결제일자 기준으로 1년을 초과할 경우 별도 에러가 발생되지는 않으나 전달한 이용완료일(useCfmYmdt) 값이 결제일자 +365일로 조정 처리됩니다.|
+| merchantExtraParameter | String| | 가맹점 자체적으로 추가 구분값으로 활용 가능한 별도의 예비 필드 (개인 아이디와 같은 개인정보 데이터는 제외하여 전달해야 합니다) |
+| productItems | Array | O | productItem 배열 |
+| subMerchantInfo | Object| | 하부가맹점 정보. PG 업종 가맹점인 경우에만 필수값입니다 |
위처럼 같은 기능을 하는 인터페이스임에도 PG사에 따라 파라미터 명과 파라미터 타입, 필수 파라미터 목록 모두 상이한 것을 볼 수 있습니다.
심지어 사용하는 통신 프로토콜마저 PG사마다 상이하죠.
@@ -214,7 +214,7 @@ Typed error를 적용함으로써 예시 코드의 `pay()` 함수에선 `AmountT
```kotlin
interface Example {
fun pay(): Effect
-
+
sealed interface PayError {
data object AmountTooBig: PayError
data object InvalidCardInfo: PayError
diff --git a/src/content/docs/_redir.yaml b/src/content/docs/_redir.yaml
index dd4f2222d..e8da2cd89 100644
--- a/src/content/docs/_redir.yaml
+++ b/src/content/docs/_redir.yaml
@@ -167,6 +167,13 @@
- old: /ko/api-v2/platform
new: /ko/platform/api
+- old: /ko/api-v2/billing_key
+ new: /ko/api-v2/billing-key
+- old: /ko/api-v2/cash_receipt
+ new: /ko/api-v2/cash-receipt
+- old: /ko/tip/portone_code
+ new: /ko/tip/portone-code
+
- old: /ko/ready/2-pg/payment-gateway/nice-v2
new: /ko/ready/2-pg/payment-gateway/nice
diff --git a/src/content/docs/en/api/api/api.mdx b/src/content/docs/en/api/api/api.mdx
index 8d3526591..13cdab12b 100644
--- a/src/content/docs/en/api/api/api.mdx
+++ b/src/content/docs/en/api/api/api.mdx
@@ -4,406 +4,386 @@ description: ''
---
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
import Swagger from "~/components/gitbook/swagger/Swagger.astro";
import SwaggerDescription from "~/components/gitbook/swagger/SwaggerDescription.astro";
import SwaggerParameter from "~/components/gitbook/swagger/SwaggerParameter.astro";
import SwaggerResponse from "~/components/gitbook/swagger/SwaggerResponse.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### Requests a payment by billing key (customer\_uid).
+## Requests a payment by billing key (customer\_uid).
-
-You can use the
+
+ You can use the
-**customer_uid**
+ **customer\_uid**
- obtained via Get billing key API or PG payment window to request a non-authenticated payment.
+ obtained via Get billing key API or PG payment window to request a non-authenticated payment.
+
-
+ ### Parameters
-### Parameters
+ #### Body
-#### Body
+
+
+ **Billing key**
+
+
-
-
+
+
+ **Order ID**
+
+
-**Billing key**
+
+ **Currency**
+
-
+
+
+ **Payment amount**
+
+
-
-
-
+
+ **Tax free amount**
+
-**Order ID**
+
+
+ **Product name**
+
+
-
+
+ **Customer name**
+
-
-
-**Currency**
+
+ **Customer email**
+
-
-
-
+
+ **Customer phone**
+
-**Payment amount**
+
+ **Customer address**
+
-
+
+ **Customer zip code**
+
-
-
-**Tax free amount**
+
+ **Number of installment months**
+
-
-
-
+
+ **Whether or not there are interest-free installments paid by merchants**
+
-**Product name**
+
+ **Option to use credit card points**
+
-
+
+ **Custom data**
+
-
-
-**Customer name**
+
+ **Webhook URL for success notification**
+
-
-
-**Customer email**
+
+ **Customer's browser (PC) IP**
+
-
-
-**Customer phone**
+ ### Responses
-
-
-**Customer address**
+
+
+
+ **`code`** **\*** **integer**
-
-
-**Customer zip code**
+ **Response code**
-
-
-**Number of installment months**
+ 0: success, Not 0: check the message
-
+ **`message`** **\*** **string**
-
-
-**Whether or not there are interest-free installments paid by merchants**
+ **Response message**
-
-
-**Option to use credit card points**
+ A non-zero code includes a message like 'Invalid payment info'.
-
-
-**Custom data**
+ **`response`** **(PaymentAnnotation, optional)**
+
+
-
-
-**Webhook URL for success notification**
+
+
+ **`code`** **\*** **integer**
-
+ **`Response code`**
-
-
-**Customer's browser (PC) IP**
+ 0: success, Not 0: check the message
-
+ **`message`** **\*** **string**
-### Responses
+ **Response message**
-
-
-
-**`code`** **\***** ****integer**
+ A non-zero code includes a message like 'Invalid payment info.
-**Response code**
+ **`imp_uid`** \* **string**
-0: success, Not 0: check the message
+ **i'mport payment transaction UID**
-**`message`** **\***** ****string**
+ **`merchant_uid`** **\*** **string**
-**Response message**
+ **Order ID**
-A non-zero code includes a message like 'Invalid payment info'.
+ **`pay_method`** **\*** **string**
-**`response`** **(PaymentAnnotation, optional)**
+ **Payment method code**
-
-
+ **`channel`** **\*** **string**
-
-
-**`code`** **\***** ****integer**
+ **Payment environment code**
-**`Response code`**
+ - pc: (authenticated) PC
+ - mobile: (authenticated) mobile
+ - api: recurring or non-authenticated
-0: success, Not 0: check the message
+ **`pg_provider`** **\*** **string**
-**`message`** **\***** ****string**
+ **PG code**
-**Response message**
+ ---
-A non-zero code includes a message like 'Invalid payment info.
+ **`emb_pg_provider`** **\*** **string**
-**`imp_uid`** \* **string**
+ **Hub-type PG code**
-**i'mport payment transaction UID**
+ **`pg_tid`** **\*** **string**
-**`merchant_uid`** **\***** ****string**
+ **PG transaction ID**
-**Order ID**
+ **`pg_id`** **\*** **string**
-**`pay_method`** **\***** ****string**
+ **PG MID**
-**Payment method code**
+ **`escrow`** **boolean**
-**`channel`** **\***** ****string**
+ **Indicates an escrow payment**
-**Payment environment code**
+ **`apply_num`** **string**
-- pc**:** (authenticated) PC
-- mobile: (authenticated) mobile
-- api: recurring or non-authenticated
+ **Credit card approval number**
-**`pg_provider`** **\***** ****string**
+ **`bank_code`** **string**
-**PG code**
+ **Bank code**
----
+ **`bank_name`** **string**
-**`emb_pg_provider`** **\***** ****string**
+ **Bank name**
-**Hub-type PG code**
+ ---
-**`pg_tid`** **\*** **string**
+ **`card_code`** **string**
-**PG transaction ID**
+ **Credit card code (KFTC Credit Card Codes:** [**link**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) )
-**`pg_id`** **\***** ****string**
+ **`card_name`** **string**
-**PG MID**
+ **Credit card name**
-**`escrow`** **boolean**
+ **`card_quota`** **integer**
-**Indicates an escrow payment**
+ **Number of installments (0 means one-off)**
-**`apply_num`** **string**
+ **`card_number`** **string**
-**Credit card approval number**
+ **Masked credit card number**
-**`bank_code`** **string**
+ ---
-**Bank code**
+ **`card_type`** **string**
-**`bank_name`** **string**
+ **Credit card type code**
-**Bank name**
+ - 0: credit
+ - 1: check
----
+ **`vbank_code`** **string**
-**`card_code`** **string**
+ **Virtual account bank code (refer to image below)**
-**Credit card code (KFTC Credit Card Codes:** [**link**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) )
+ ---
-**`card_name`** **string**
+ **`vbank_name`** **string**
-**Credit card name**
+ **Refund virtual account**
-**`card_quota`** **integer**
+ **`vbank_holder`** **string**
-**Number of installments (0 means one-off)**
+ **Refund virtual account holder**
-**`card_number`** **string**
+ **`vbank_date`** **string**
-**Masked credit card number**
+ **Refund virtual account expiration (UNIX timestamp)**
----
+ **`vbank_issued_at`** **string**
-**`card_type`** **string**
+ **Refund virtual account created at (UNIX timestamp)**
-**Credit card type code**
+ **`name`** **string**
-- 0: credit
-- 1: check
+ **Product name**
-**`vbank_code`** **string**
+ **`amount`** **\*** **integer**
-**Virtual account bank code (refer to image below)**
+ **Order (payment) amount**
----
+ **`cancel_amount`** **integer**
-**`vbank_name`** **string**
+ **Cancelled amount**
-**Refund virtual account**
+ **`currency`** **string**
-**`vbank_holder`** **string**
+ **Currency**
-**Refund virtual account holder**
+ - USD
+ - KRW
+ - EUR
-**`vbank_date`** **string**
+ ---
-**Refund virtual account expiration (UNIX timestamp)**
+ **`buyer_name`** **string**
-**`vbank_issued_at`** **string**
+ **Customer name**
-**Refund virtual account created at (UNIX timestamp)**
+ **`buyer_email`** **string**
-**`name`** **string**
+ **Customer email**
-**Product name**
+ **`buyer_tel`** **string**
-**`amount`** **\*** **integer**
+ **Customer phone**
-**Order (payment) amount**
-
-**`cancel_amount`** **integer**
-
-**Cancelled amount**
-
-**`currency`** **string**
-
-**Currency**
-
-- USD
-- KRW
-- EUR
-
----
+ **`buyer_addr`** **string**
-**`buyer_name`** **string**
+ **Customer address**
-**Customer name**
+ **`buyer_postcode`** **string**
-**`buyer_email`** **string**
+ **Customer zip code**
-**Customer email**\
+ **`custom_data`** **string**
-**`buyer_tel`** **string**
+ **echo data as JSON string**
-**Customer phone**
+ **`user_agent`** **string**
-**`buyer_addr`** **string**
+ **UserAgent of the device where payment is initiated**
-**Customer address**
+ **`status`** **\*** **string**
-**`buyer_postcode`** **string**
+ **Payment status code**
-**Customer zip code**
+ - ready
+ - paid
+ - cancelled
+ - failed
-**`custom_data`** **string**
+ **`started_at`** **\*** **string**
-**echo data as JSON string**
+ **Payment started at (UNIX timestamp)**
-**`user_agent`** **string**
+ **`paid_at`** **\*** **string**
-**UserAgent of the device where payment is initiated**
+ **Payment completed at (UNIX timestamp)**
-**`status`** **\***** ****string**
+ **`failed_at`** **\*** **string**
-**Payment status code**
+ **Payment failed at (UNIX timestamp)**
-- ready
-- paid
-- cancelled
-- failed
+ **`cancelled_at`** **\*** **string**
-**`started_at`** **\*** **string**
+ **Payment cancelled at (UNIX timestamp)**
-**Payment started at (UNIX timestamp)**
+ **`fail_reason`** **string**
-**`paid_at`** **\***** ****string**
+ **Reason for failure**
-**Payment completed at (UNIX timestamp)**\
+ **`cancel_reason`** **string**
-**`failed_at`** **\***** ****string**
+ **Reason for cancellation**
-**Payment failed at (UNIX timestamp)**
+ **`receipt_url`** **string**
-**`cancelled_at`** **\***** ****string**
+ **Credit card receipt URL**
-**Payment cancelled at (UNIX timestamp)**
+ **`cash_receipt_issued`** **boolean**
-**`fail_reason`** **string**
+ **Option to automatically issue cash receipt**
-**Reason for failure**
+ **`customer_uid`** **string**
-**`cancel_reason`** **string**
+ **customer\_uid related to the payment transaction**
-**Reason for cancellation**
+ **`customer_uid_usage`** **string**
-**`receipt_url`** **string**
+ **customer\_uid use code**
-**Credit card receipt URL**
+ - payment.scheduled: scheduled payment
+ - payment: payment
+ - issue: billing key issuance
-**`cash_receipt_issued` ****boolean**
+ **`cancel_history`** **(Array\[PaymentCancelAnnotation], optional):**
-**Option to automatically issue cash receipt**
+ **`Cancellation/partial cancellation history`**
+
+
-**`customer_uid`** **string**
+
+
+ **cancel\_history array \[]**
-**customer\_uid related to the payment transaction**
+ **`pg_tid`** **\*** **string**
-**`customer_uid_usage`** **string**
+ **PG cancellation transaction ID**
-**customer\_uid use code**
+ **`amount`** **\*** **integer**
-- payment.scheduled: scheduled payment
-- payment: payment
-- issue**: billing key issuance**
+ **Cancelled amount**
-**`cancel_history`** **(Array\[PaymentCancelAnnotation], optional):**
+ **`cancelled_at`** **\*** **string**
-**`Cancellation/partial cancellation history`**
+ **Cancelled at (UNIX timestamp)**
-
-
+ **`reason`** **\*** **string(256)**
-
-
-**cancel\_history array \[]**
+ **Reason for cancellation**
-**`pg_tid`** **\***** ****string**
+ **`receipt_url`** **\*** **string(300)**
-**PG cancellation transaction ID**
-
-**`amount`** **\*** **integer**
-
-**Cancelled amount**
-
-**`cancelled_at`** **\*** **string**
-
-**Cancelled at (UNIX timestamp)**
-
-**`reason`** **\*** **string(256)**
-
-**Reason for cancellation**
-
-**`receipt_url`** **\***** ****string(300)**
-
-**Cancellation receipt URL. Availability varies by PG.**
-
-
-
-
-
-
-
-```javascript
-{
- // Response
-}
-```
-
-
+ **Cancellation receipt URL. Availability varies by PG.**
+
+
+
+
+ ```ts
+ {
+ // Response
+ }
+ ```
+
### **Key request parameter description**
@@ -429,7 +409,7 @@ A non-zero code includes a message like 'Invalid payment info.
>
> Required for Paymentwall PG
-> **`buyer_name` ****string**
+> **`buyer_name`** **string**
>
> **Customer name**
>
@@ -442,79 +422,77 @@ A non-zero code includes a message like 'Invalid payment info.
> Required for Paymentwall PG
-
+
+ ```json
+ {
+ "code": 0,
+ "message": "string",
+ "response": {
+ "company": "string",
+ "invoice": "string",
+ "sent_at": 0,
+ "applied_at": 0
+ }
}
-}
-```
-
+ ```
-**Swagger Test Link**
-
-[**https://api.iamport.kr/#!/escrow.logis/escrow_logis_get**](https://api.iamport.kr/#!/escrow.logis/escrow_logis_get)
+ **Swagger Test Link**
+ [**https://api.iamport.kr/#!/escrow.logis/escrow\_logis\_get**](https://api.iamport.kr/#!/escrow.logis/escrow_logis_get)
diff --git a/src/content/docs/en/api/escrow-api/readme.mdx b/src/content/docs/en/api/escrow-api/readme.mdx
index 349fd1a2f..b5feb1f59 100644
--- a/src/content/docs/en/api/escrow-api/readme.mdx
+++ b/src/content/docs/en/api/escrow-api/readme.mdx
@@ -5,7 +5,7 @@ description: Learn about escrow service API.
import ContentRef from "~/components/gitbook/ContentRef.astro";
-### Escrow API currently supports the following PGs:
+## Escrow API currently supports the following PGs:
- KG Inicis
- NHN KCP
diff --git a/src/content/docs/en/api/escrow-api/update-delivery-info-api.mdx b/src/content/docs/en/api/escrow-api/update-delivery-info-api.mdx
index 03d1e4979..ac73acf55 100644
--- a/src/content/docs/en/api/escrow-api/update-delivery-info-api.mdx
+++ b/src/content/docs/en/api/escrow-api/update-delivery-info-api.mdx
@@ -4,138 +4,118 @@ description: ""
---
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
import Swagger from "~/components/gitbook/swagger/Swagger.astro";
import SwaggerDescription from "~/components/gitbook/swagger/SwaggerDescription.astro";
import SwaggerParameter from "~/components/gitbook/swagger/SwaggerParameter.astro";
import SwaggerResponse from "~/components/gitbook/swagger/SwaggerResponse.astro";
+import Hint from "~/components/Hint.astro";
-### Updates delivery info for an escrow transaction.
+## Updates delivery info for an escrow transaction.
-
+
+ ```json
+ {
+ "code": 0,
+ "message": "string",
+ "response": {
+ "imp_uid": "string",
+ "merchant_uid": "string",
+ "pg_tid": "string",
+ "pg_provider": "string",
+ "name": "string",
+ "gender": "string",
+ "birth": 0,
+ "birthday": "string",
+ "foreigner": true,
+ "phone": "string",
+ "carrier": "SKT",
+ "certified": true,
+ "certified_at": 0,
+ "unique_key": "string",
+ "unique_in_site": "string",
+ "origin": "string",
+ "foreigner_v2": true
+ }
}
-}
-```
-
+ ```
-**Swagger Test Link**
-
-[**https://api.iamport.kr/#!/certifications/getCertification**](https://api.iamport.kr/#!/certifications/getCertification)
+ **Swagger Test Link**
+ [**https://api.iamport.kr/#!/certifications/getCertification**](https://api.iamport.kr/#!/certifications/getCertification)
diff --git a/src/content/docs/en/api/identity-verification-api/request-identity-verification-api.mdx b/src/content/docs/en/api/identity-verification-api/request-identity-verification-api.mdx
index 1b0c80010..82e0cca4c 100644
--- a/src/content/docs/en/api/identity-verification-api/request-identity-verification-api.mdx
+++ b/src/content/docs/en/api/identity-verification-api/request-identity-verification-api.mdx
@@ -4,145 +4,134 @@ description: ''
---
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
import Swagger from "~/components/gitbook/swagger/Swagger.astro";
import SwaggerDescription from "~/components/gitbook/swagger/SwaggerDescription.astro";
import SwaggerParameter from "~/components/gitbook/swagger/SwaggerParameter.astro";
import SwaggerResponse from "~/components/gitbook/swagger/SwaggerResponse.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### Sends OTP number via SMS confirming the user's identity based on the submitted personal information.
+## Sends OTP number via SMS confirming the user's identity based on the submitted personal information.
-
-If the user's personal information is passed to the API and verified by the carrier, an OTP (6-digit verification number) is sent to the user via SMS. This is only supported by some merchants who have been pre-approved by the carrier, and is currently only being serviced through **Danal**.
-
-You can call the API by directly entering the name, date of birth + 7th digit of social security number, mobile phone number, and carrier information from the merchant. If the transmitted personal information is correct, a verification code SMS is sent to the mobile phone.
-
-When you receive an HTTP Status 200 response, it contains the verification ID (`imp_uid`) in the response body. To complete the verification process, call the /certifications/otp/confirm/\{imp\_uid} API with the OTP number.
-
-
-
-### Parameters
-
-#### Body
+
+ If the user's personal information is passed to the API and verified by the carrier, an OTP (6-digit verification number) is sent to the user via SMS. This is only supported by some merchants who have been pre-approved by the carrier, and is currently only being serviced through **Danal**.
-
-
+ You can call the API by directly entering the name, date of birth + 7th digit of social security number, mobile phone number, and carrier information from the merchant. If the transmitted personal information is correct, a verification code SMS is sent to the mobile phone.
-**User name**
+ When you receive an HTTP Status 200 response, it contains the verification ID (`imp_uid`) in the response body. To complete the verification process, call the /certifications/otp/confirm/\{imp\_uid} API with the OTP number.
+
-
+ ### Parameters
-
-
- **Mobile number**
+ #### Body
-May contain special characters.
+
+
+ **User name**
+
+
-
-
-**DOB**
+
+ **Mobile number**
-**`YYYYMMDD (6-digit)`**
+ May contain special characters.
+
-May contain special characters.
+
+ **DOB**
-
-
-**Gender code**
+ **`YYYYMMDD (6-digit)`**
-7th digit of 13-digit social security number
+ May contain special characters.
+
-
-
-**Carrier code**
+
+ **Gender code**
-**`SKT`**
+ 7th digit of 13-digit social security number
+
-**`KT`**
+
+ **Carrier code**
-**`LGT`**
+ **`SKT`**
-
-
-**Budget phone?**
+ **`KT`**
-
-
-**Merchant service name**
+ **`LGT`**
+
-
-
-**Order ID**
+
+ **Budget phone?**
+
-
-
-**PG code**
+
+ **Merchant service name**
+
-
+
+ **Order ID**
+
-### Responses
+
+ **PG code**
+
-
-
-
-**`code`** **\*** **integer**
+ ### Responses
-**Response code**
+
+
+
+ **`code`** **\*** **integer**
-0: success, Not 0: check the message
+ **Response code**
-**`message`** **\*** **string**
+ 0: success, Not 0: check the message
-**Response message**
+ **`message`** **\*** **string**
-A non-zero code includes a message like 'Invalid payment info'.
+ **Response message**
-**response ** **(CertificationOTPAnnotation, optional)**
+ A non-zero code includes a message like 'Invalid payment info'.
-
-
+ **response** **(CertificationOTPAnnotation, optional)**
+
+
-
-
-**`imp_uid *`` `** **`String`**
+
+
+ **`imp_uid *`` `** **`String`**
-**`i'mport verification ID`**
+ **`i'mport verification ID`**
+
+
+
-
-
+
+ ```ts
+ {
+ // Response
+ }
+ ```
+
-
-
-
-```javascript
-{
- // Response
-}
-```
-
-
-
-
-```javascript
-{
- // Response
-}
-```
-
-
-
-
-```javascript
-{
- // Response
-}
-```
-
-
+
+ ```ts
+ {
+ // Response
+ }
+ ```
+
+
+ ```ts
+ {
+ // Response
+ }
+ ```
+
### **Key request parameter description**
@@ -178,23 +167,21 @@ A non-zero code includes a message like 'Invalid payment info'.
> **danal.\{Merchant ID}**
-
+
+ ```json
+ {
+ "code": 0,
+ "message": "string",
+ "response": {
+ "imp_uid": "string"
+ }
}
-}
-```
-
+ ```
-**Swagger Test Link**
-
-[**https://api.iamport.kr/#!/certifications/requestOTP**](https://api.iamport.kr/#!/certifications/requestOTP)
+ **Swagger Test Link**
+ [**https://api.iamport.kr/#!/certifications/requestOTP**](https://api.iamport.kr/#!/certifications/requestOTP)
diff --git a/src/content/docs/en/api/import-api-overview.mdx b/src/content/docs/en/api/import-api-overview.mdx
index 95be69fb4..934c4663f 100644
--- a/src/content/docs/en/api/import-api-overview.mdx
+++ b/src/content/docs/en/api/import-api-overview.mdx
@@ -6,41 +6,41 @@ description: Get an overview of the i'mport API.
import Figure from "~/components/Figure.astro";
import Hint from "~/components/Hint.astro";
-### Learn how to configure HTTP header in i'mport API call.
+## Learn how to configure HTTP header in i'mport API call.
-1. Call [**/users/getToken**](rest-api-access-token) with **API Key** & **API secret** to get an **`access_token`**.\
+1. Call [**/users/getToken**](rest-api-access-token) with **API Key** & **API secret**
+ to get an **`access_token`**.
-2. In the API call, include the **`access_token`** as **`Authorization:`****`access_token`** or **`X-ImpTokenHeader:`****`access_token`** in the HTTP header.
+2. In the API call, include the **`access_token`** as **`Authorization:`****`access_token`**
+ or **`X-ImpTokenHeader:`****`access_token`** in the HTTP header.
-**Content-Type**
+ **Content-Type**
-API Content-Type supported in i'mport is:
-
-**Application.json;charset=UTF-8**
+ API Content-Type supported in i'mport is:
+ **Application.json;charset=UTF-8**
-**Agency Merchant**
-
-Sub-merchants must specify the following in the **`HTTP Header`** and use the **Agent account's** **`API key`** and **`Secret`** to call the i'mport API.
+ **Agency Merchant**
-- **`"Tier" : "`****`Tier code`**(Sub-merchant Tier Code)"
+ Sub-merchants must specify the following in the **`HTTP Header`** and use the **Agent account's** **`API key`**
+ and **`Secret`** to call the i'mport API.
+ - **`"Tier" : "`****`Tier code`**(Sub-merchant Tier Code)"
### API specification
-To check the detailed specification for i'mport API response, select the **HTTP Status ****200** response as shown below.
+To check the detailed specification for i'mport API response, select the **HTTP Status** **200** response as shown below.
-**API Swagger site**
-
-i'mport supports the Swagger API Specification.
+ **API Swagger site**
-[**https://api.iamport.kr**](https://api.iamport.kr)
+ i'mport supports the Swagger API Specification.
+ [**https://api.iamport.kr**](https://api.iamport.kr)
diff --git a/src/content/docs/en/api/miscellaneous-api/benepia-point/get-points-api.mdx b/src/content/docs/en/api/miscellaneous-api/benepia-point/get-points-api.mdx
index df54def39..31433054b 100644
--- a/src/content/docs/en/api/miscellaneous-api/benepia-point/get-points-api.mdx
+++ b/src/content/docs/en/api/miscellaneous-api/benepia-point/get-points-api.mdx
@@ -4,120 +4,106 @@ description: 베네피아 포인트를 단건 조회 합니다.
---
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
import Swagger from "~/components/gitbook/swagger/Swagger.astro";
import SwaggerDescription from "~/components/gitbook/swagger/SwaggerDescription.astro";
import SwaggerParameter from "~/components/gitbook/swagger/SwaggerParameter.astro";
import SwaggerResponse from "~/components/gitbook/swagger/SwaggerResponse.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### Gets Benepia points using user's Benepia account ID and password through KCP.
+## Gets Benepia points using user's Benepia account ID and password through KCP.
-
-Requires KCP site code.
-
-
-
-### Parameters
-
-#### Body
-
-
-
-
-**Benepia account ID**
+
+ Requires KCP site code.
+
-
+ ### Parameters
-
-
-
+ #### Body
-**Benepia account password**
+
+
+ **Benepia account ID**
+
+
-
+
+
+ **Benepia account password**
+
+
-
-
-**PG code**
+
+ **PG code**
-If there are multiple KCP PG settings, specify as **kcp.\{KCP site code}**. If omitted, the KCP pg setting in Admin console is used.
+ If there are multiple KCP PG settings, specify as **kcp.\{KCP site code}**. If omitted, the KCP pg setting in Admin console is used.
+
-
+ ### Responses
-### Responses
+
+
+
+ **`code`** **\*** **integer**
-
-
-
-**`code`** **\***** ****integer**
+ **Response code**
-**Response code**
+ 0: success, Not 0: check the message
-0: success, Not 0: check the message
+ **`message`** **\*** **string**
-**`message`** **\***** ****string**
+ **Response message**
-**Response message**
+ A non-zero code includes a message like 'Invalid payment info'.
-A non-zero code includes a message like 'Invalid payment info'.
+ **`response`` `****`(BenepiaPointAnnotation, optional)`**
+
+
-**`response`` `****`(BenepiaPointAnnotation, optional)`**
+
+
+ **`point`****`*`****`integer`**
-
-
+ **`Benepia points`**
+
+
+
-
-
-**`point`****`*`****`integer`**
-
-**`Benepia points`**
-
-
-
-
-
-
-
-```javascript
-{
- // Response
-}
-```
-
-
-
-
-```javascript
-{
- // Response
-}
-```
-
-
+
+ ```ts
+ {
+ // Response
+ }
+ ```
+
+
+ ```ts
+ {
+ // Response
+ }
+ ```
+
-
+
+ ```json
+ {
+ "code": 0,
+ "message": "string",
+ "response": {
+ "merchant_uid": "string",
+ "amount": 0
+ }
}
-}
-```
-
+ ```
-**Swagger Test Link**
-
-[**https://api.iamport.kr/#!/payments.validation/editPreparePayment**](https://api.iamport.kr/#!/payments.validation/editPreparePayment)
+ **Swagger Test Link**
+ [**https://api.iamport.kr/#!/payments.validation/editPreparePayment**](https://api.iamport.kr/#!/payments.validation/editPreparePayment)
diff --git a/src/content/docs/en/api/rest-api-access-token.mdx b/src/content/docs/en/api/rest-api-access-token.mdx
index 7c9c5504d..9f8efc7ed 100644
--- a/src/content/docs/en/api/rest-api-access-token.mdx
+++ b/src/content/docs/en/api/rest-api-access-token.mdx
@@ -4,22 +4,24 @@ description: Learn how to get an access token.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### Access token is required to make an i'mport REST API request.
+## Access token is required to make an i'mport REST API request.
To get access to private resources, such as payment information, you must obtain an access token and
include it in the i'mport REST API request.
-### Get an access token
+### Get an access token
-Request access token from server-side
-
-If you **request for access token from the client-side**, the **`REST API Key`****` ``and`** **`REST API Secret`** are **exposed to public creating a potential security vulnerability**. Therefore, you **must request for access token from the server-side.**
+ Request access token from server-side
+ If you **request for access token from the client-side**,
+ the **`REST API Key`** **and** **`REST API Secret`**
+ are **exposed to public creating a potential security vulnerability**.
+ Therefore, you **must request for access token from the server-side.**
### **STEP 01.** Request access code
@@ -31,60 +33,58 @@ to get an access token as follows:
-
-```python title="server-side"
- curl -H "Content-Type: application/json" POST -d '{"imp_key": "REST API key", "imp_secret":"REST API Secret"}' https://api.iamport.kr/users/getToken
-```
-
-
-
-
-```javascript title="server-side"
-// Request access token
- axios({
- url: "https://api.iamport.kr/users/getToken",
- // POST method
- method: "post",
- // "Content-Type": "application/json"
- headers: { "Content-Type": "application/json" },
- data: {
- // REST API key
- imp_key: "imp_apikey",
- // REST API Secret
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f"
- }
- });
-```
-
-
-
-
-```python
-import requests
-import json
-
-def getTokenApi(path):
- API_HOST = "https://api.iamport.kr"
- url = API_HOST + path
-
- headers = {'Content-Type': 'application/json', 'charset': 'UTF-8', 'Accept': '*/*'}
- body = {
- "imp_key": "", # REST API Key
- "imp_secret": "" # REST API Secret
- }
- try:
- response = requests.post(url, headers=headers, data=json.dumps(body, ensure_ascii=False, indent="\t"))
- return response
- except Exception as ex:
-
-res=getTokenApi("/users/getToken") # API call
-json_object=json.loads(res.text) # Convert to JSON object
-TokenVal = json_object['response']['access_token'] # Parse the token
-
-print(TokenVal)
-```
-
-
+
+ ```sh title="server-side"
+ curl -H "Content-Type: application/json" POST -d '{"imp_key": "REST API key", "imp_secret":"REST API Secret"}' https://api.iamport.kr/users/getToken
+ ```
+
+
+
+ ```ts title="server-side"
+ // Request access token
+ axios({
+ url: "https://api.iamport.kr/users/getToken",
+ // POST method
+ method: "post",
+ // "Content-Type": "application/json"
+ headers: { "Content-Type": "application/json" },
+ data: {
+ // REST API key
+ imp_key: "imp_apikey",
+ // REST API Secret
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f",
+ },
+ });
+ ```
+
+
+
+ ```python
+ import requests
+ import json
+
+ def getTokenApi(path):
+ API_HOST = "https://api.iamport.kr"
+ url = API_HOST + path
+
+ headers = {'Content-Type': 'application/json', 'charset': 'UTF-8', 'Accept': '*/*'}
+ body = {
+ "imp_key": "", # REST API Key
+ "imp_secret": "" # REST API Secret
+ }
+ try:
+ response = requests.post(url, headers=headers, data=json.dumps(body, ensure_ascii=False, indent="\t"))
+ return response
+ except Exception as ex:
+
+ res=getTokenApi("/users/getToken") # API call
+ json_object=json.loads(res.text) # Convert to JSON object
+ TokenVal = json_object['response']['access_token'] # Parse the token
+
+ print(TokenVal)
+ ```
+
### **STEP 02.** Get access token
@@ -93,21 +93,20 @@ Get the access token from the response as follows:
```json title="Response"
{
- "code": 0,
- "message": null,
- "response":{
- "access_token": "a9ace025c90c0da2161075da6ddd3492a2fca776", // access token
- "now": 1512446940, // i'mport REST API server's timestamp
- "expired_at": 1512448740, // token's expiration (UNIX timestamp, KST)
- },
+ "code": 0,
+ "message": null,
+ "response":{
+ "access_token": "a9ace025c90c0da2161075da6ddd3492a2fca776", // access token
+ "now": 1512446940, // i'mport REST API server's timestamp
+ "expired_at": 1512448740 // token's expiration (UNIX timestamp, KST)
}
+}
```
-**Standard NTP Server**
-
-The i'mport REST API server synchronizes with the standard time using **Google Public NTP**.
+ **Standard NTP Server**
+ The i'mport REST API server synchronizes with the standard time using **Google Public NTP**.
### **STEP 03.** Using access token
@@ -119,36 +118,35 @@ format:
> Authorization: **Bearer** a9ace025c90c0da2161075da6ddd3492a2fca776
-
-Call the REST API to get the payment details by **including the access token in the request header** as follows:
-
-``` title="server-side"
-curl -H "Content-Type: application/json" -H "Authorization: Bearer a9ace025c90c0da2161075da6ddd3492a2fca776" https://api.iamport.kr/payments/imp_448280090638
-```
-
-
-
-
-```json title="server-side"
-axios({
- url: "https://api.iamport.kr/payments/imp_448280090638",
- method: "get", // GET method
- headers: {
- // "Content-Type": "application/json"
- "Content-Type": "application/json",
- // Reissuing and Reusing Access Token
-ssued access token
- "Authorization": "Bearer a9ace025c90c0da2161075da6ddd3492a2fca776"
- }
- });
-```
-
-
+
+ Call the REST API to get the payment details by **including the access token in the request header** as follows:
+
+ ```sh title="server-side"
+ curl -H "Content-Type: application/json" -H "Authorization: Bearer a9ace025c90c0da2161075da6ddd3492a2fca776" https://api.iamport.kr/payments/imp_448280090638
+ ```
+
+
+
+ ```ts title="server-side"
+ axios({
+ url: "https://api.iamport.kr/payments/imp_448280090638",
+ method: "get", // GET method
+ headers: {
+ // "Content-Type": "application/json"
+ "Content-Type": "application/json",
+ // Use issued access token
+ Authorization: "Bearer a9ace025c90c0da2161075da6ddd3492a2fca776",
+ },
+ });
+ ```
+
-### Reissuing and Reusing Access Token
+### Reissuing and Reusing Access Token
-The expiration of the access token is **30 minutes** from the time of issuance. A token **cannot be used after its expiration**. An API call request with an expired token returns a **`401 Unauthorized`** response.
+The expiration of the access token is **30 minutes** from the time of issuance.
+A token **cannot be used after its expiration**.
+An API call request with an expired token returns a **`401 Unauthorized`** response.
> - Reissuance (after expiration): A new access token is issued.
> (Expiration: 30 minutes after issuance)
@@ -156,14 +154,13 @@ The expiration of the access token is **30 minutes** from the time of issuance.
> - Reuse (before expiration): Existing access token is reused. (Expiration: same as before,
> but extended by 5 minutes if requested within 1 minute from the original expiration)
-![]()
+![](/gitbook-assets/en/access_token_reuse.png)
-**5 minute extension of expiration**
-
-The reuse and 5 minute lifetime extension of access token are provided for the following situations:
+ **5 minute extension of expiration**
-- Multiple web servers of a single merchant are competing to call the REST API (`/users/getToken`) at the same time.
-- Multiple web servers of a single merchant are not synchronized in time.
+ The reuse and 5 minute lifetime extension of access token are provided for the following situations:
+ - Multiple web servers of a single merchant are competing to call the REST API (`/users/getToken`) at the same time.
+ - Multiple web servers of a single merchant are not synchronized in time.
diff --git a/src/content/docs/en/api/simple-payment-service-api/kakao-pay/get-order-api.mdx b/src/content/docs/en/api/simple-payment-service-api/kakao-pay/get-order-api.mdx
index 966526582..1d72c206b 100644
--- a/src/content/docs/en/api/simple-payment-service-api/kakao-pay/get-order-api.mdx
+++ b/src/content/docs/en/api/simple-payment-service-api/kakao-pay/get-order-api.mdx
@@ -3,66 +3,58 @@ title: Get order API
description: ''
---
-import Hint from "~/components/Hint.astro";
import Swagger from "~/components/gitbook/swagger/Swagger.astro";
import SwaggerDescription from "~/components/gitbook/swagger/SwaggerDescription.astro";
import SwaggerParameter from "~/components/gitbook/swagger/SwaggerParameter.astro";
import SwaggerResponse from "~/components/gitbook/swagger/SwaggerResponse.astro";
+import Hint from "~/components/Hint.astro";
-### Gets order details (API that wraps [Kakao Pay's Get order details API](https://developers.kakao.com/docs/restapi/kakaopay-api#%EC%A3%BC%EB%AC%B8%EB%82%B4%EC%97%AD%EC%A1%B0%ED%9A%8C)).
+## Gets order details (API that wraps [Kakao Pay's Get order details API](https://developers.kakao.com/docs/restapi/kakaopay-api#%EC%A3%BC%EB%AC%B8%EB%82%B4%EC%97%AD%EC%A1%B0%ED%9A%8C)).
-
-Request is similar and response is identical with Kakao Pay API.
-
-
-
-### Parameters
-
-#### Query
+
+ Request is similar and response is identical with Kakao Pay API.
+
-
-**Request date**
+ ### Parameters
-YYYYMMDD
+ #### Query
-
-
-**Kakao Pay MID**
+
+ **Request date**
-Default: Kakao Pay CID set in i'mport
+ YYYYMMDD
+
-
-
-**Page number**
+
+ **Kakao Pay MID**
-
+ Default: Kakao Pay CID set in i'mport
+
-
+
+ **Page number**
+
-### Responses
-
-
-```javascript
-{
- // Response
-}
-```
-
-
+ ### Responses
+
+ ```ts
+ {
+ // Response
+ }
+ ```
+
-**Swagger Test Link**
-
-[**https://api.iamport.kr/#!/kakao/getOrders**](https://api.iamport.kr/#!/kakao/getOrders)
+ **Swagger Test Link**
+ [**https://api.iamport.kr/#!/kakao/getOrders**](https://api.iamport.kr/#!/kakao/getOrders)
-### **Precaution**
-
-The support for this API will be terminated in**`2H of 2022`** due to Kakao Pay's policy change.
+ ### **Precaution**
+ The support for this API will be terminated in **`2H of 2022`** due to Kakao Pay's policy change.
diff --git a/src/content/docs/en/api/simple-payment-service-api/kcp-quick-pay/delete-user-api.mdx b/src/content/docs/en/api/simple-payment-service-api/kcp-quick-pay/delete-user-api.mdx
index e3c903a41..c6ac74312 100644
--- a/src/content/docs/en/api/simple-payment-service-api/kcp-quick-pay/delete-user-api.mdx
+++ b/src/content/docs/en/api/simple-payment-service-api/kcp-quick-pay/delete-user-api.mdx
@@ -4,142 +4,130 @@ description: ""
---
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
import Swagger from "~/components/gitbook/swagger/Swagger.astro";
import SwaggerDescription from "~/components/gitbook/swagger/SwaggerDescription.astro";
import SwaggerParameter from "~/components/gitbook/swagger/SwaggerParameter.astro";
import SwaggerResponse from "~/components/gitbook/swagger/SwaggerResponse.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### Deletes a KCP Quick Pay user information.
+## Deletes a KCP Quick Pay user information.
-### Accept setting is required
+ ### Accept setting is required
-You must specify the Accept setting in the HTTP header as follows:
-
-**Accept : application/json**
+ You must specify the Accept setting in the HTTP header as follows:
+ **Accept : application/json**
-
-
-
-
-### Parameters
-
-#### Path
+
-
-**Member ID**
+ ### Parameters
-
-
-**KCP Quick Pay site code**
+ #### Path
-
-
-**KCP Quick Pay partner type**
+
+ **Member ID**
+
-
-
-**KCP Quick Pay partner subtype**
+
+ **KCP Quick Pay site code**
+
-
+
+ **KCP Quick Pay partner type**
+
-### Responses
+
+ **KCP Quick Pay partner subtype**
+
-
-
-
-**`code`** **\***** ****integer**
+ ### Responses
-**Response code**
+
+
+
+ **`code`** **\*** **integer**
-0: success, Not 0: check the message
+ **Response code**
-**`message`** **\***\*\* ****string\*\*
+ 0: success, Not 0: check the message
-**Response message**
+ **`message`** **\*** **string**
-A non-zero code includes a message like 'Invalid payment info'.
+ **Response message**
-**` response`` `****`(KcpQuickMemberAnnotation, optional)`**
+ A non-zero code includes a message like 'Invalid payment info'.
-
-
+ **`response`` `****`(KcpQuickMemberAnnotation, optional)`**
+
+
-
-
-**`member_id`****`*`****`string`**
+
+
+ **`member_id`****`*`****`string`**
-**`Member ID`**
+ **`Member ID`**
-**`pg_provider`****`*`****`string`**
+ **`pg_provider`****`*`****`string`**
-**`PG code`**
+ **`PG code`**
-**`pg_id`****`*`****`string`**
+ **`pg_id`****`*`****`string`**
-**`PG Merchant ID`**
+ **`PG Merchant ID`**
-**`inserted`****`*`****`integer`**
+ **`inserted`****`*`****`integer`**
-**`User created at (UNIX timestamp)`**
+ **`User created at (UNIX timestamp)`**
-**`updated`****`*`****`integer`**
+ **`updated`****`*`****`integer`**
-**`User updated at (UNIX timestamp)`**
+ **`User updated at (UNIX timestamp)`**
+
+
+
-
-
-
-
-
-
-```javascript
-{
- // Response
-}
-```
-
-
-
-
-```javascript
-{
- // Response
-}
-```
-
-
+
+ ```ts
+ {
+ // Response
+ }
+ ```
+
+
+ ```ts
+ {
+ // Response
+ }
+ ```
+
-
+
+ ```json
+ {
+ "code": 0,
+ "message": "string",
+ "response": {
+ "imp_uid": "string",
+ "merchant_uid": "string",
+ "pay_method": "string",
+ "channel": "pc",
+ "pg_provider": "string",
+ "emb_pg_provider": "string",
+ "pg_tid": "string",
+ "pg_id": "string",
+ "escrow": true,
+ "apply_num": "string",
+ "bank_code": "string",
+ "bank_name": "string",
+ "card_code": "string",
+ "card_name": "string",
+ "card_quota": 0,
+ "card_number": "string",
+ "card_type": "null",
+ "vbank_code": "string",
+ "vbank_name": "string",
+ "vbank_num": "string",
+ "vbank_holder": "string",
+ "vbank_date": 0,
+ "vbank_issued_at": 0,
+ "name": "string",
+ "amount": 0,
+ "cancel_amount": 0,
+ "currency": "string",
+ "buyer_name": "string",
+ "buyer_email": "string",
+ "buyer_tel": "string",
+ "buyer_addr": "string",
+ "buyer_postcode": "string",
+ "custom_data": "string",
+ "user_agent": "string",
+ "status": "ready",
+ "started_at": 0,
+ "paid_at": 0,
+ "failed_at": 0,
+ "cancelled_at": 0,
+ "fail_reason": "string",
+ "cancel_reason": "string",
+ "receipt_url": "string",
+ "cancel_history": [
+ {
+ "pg_tid": "string",
+ "amount": 0,
+ "cancelled_at": 0,
+ "reason": "string",
+ "receipt_url": "string"
+ }
+ ],
+ "cancel_receipt_urls": [
+ "string"
+ ],
+ "cash_receipt_issued": true,
+ "customer_uid": "string",
+ "customer_uid_usage": "issue"
+ }
}
-}
-```
-
+ ```
-**Swagger Test Link**
-
-[**https://api.iamport.kr/#!/vbanks/modifyVbank**](https://api.iamport.kr/#!/vbanks/modifyVbank)
+ **Swagger Test Link**
+ [**https://api.iamport.kr/#!/vbanks/modifyVbank**](https://api.iamport.kr/#!/vbanks/modifyVbank)
diff --git a/src/content/docs/en/auth/guide-1/bill/pg-window.mdx b/src/content/docs/en/auth/guide-1/bill/pg-window.mdx
index 0fb4394de..37030cff3 100644
--- a/src/content/docs/en/auth/guide-1/bill/pg-window.mdx
+++ b/src/content/docs/en/auth/guide-1/bill/pg-window.mdx
@@ -4,154 +4,170 @@ description: Get a billing key through the payment window provided by the PG.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-#### You can enter the card information through the PG's payment window to get a billing key.
+You can enter the card information through the PG's payment window to get a billing key.
-- **Pros**: **no need to establish additional security process** for transmitting card information because the data is transmitted directly to PG without going through the server or i'mport server.
-- **Cons**: **cannot customize card registration form** since billing key is requested through the PG's payment window via web browser (cannot implement merchant site friendly UI/UX).
+- **Pros**: **no need to establish additional security process** for transmitting card information
+ because the data is transmitted directly to PG without going through the server or i'mport server.
-
+- **Cons**: **cannot customize card registration form** since billing key is requested
+ through the PG's payment window via web browser (cannot implement merchant site friendly UI/UX).
-### **STEP 01.** Request billing key
+
-As with authenticated payment, use the **JavaScript SDK** to call the PG's payment window. To get a billing key, specify the following additional parameters.
+## **STEP 01.** Request billing key
-> #### customer_uid: unique key that maps 1:1 with billing key
+As with authenticated payment, use the **JavaScript SDK** to call the PG's payment window.
+To get a billing key, specify the following additional parameters.
+
+> customer\_uid: unique key that maps 1:1 with billing key
-
-```javascript title="client-side"
- IMP.request_pay({ // Refer to above mentioned PG specific guide for param settings
- customer_uid: "gildong_0001_1234", // Unique ID for each card (billing key)
- /* ...Omitted... */
- }, function (rsp) { // callback
- if (rsp.success) {
- // Billing key request successful
- } else {
- // Billing key request failed
- }
- });
-```
-
-
-**What is a customer\_uid?**
-
-It is a unique value specified by the merchant that maps 1:1 with the billing key issued by PG. A unique `customer_uid` must be created for each card.
-
-Example: If a customer named **Hong Gildong** requests for a billing key from **A card**, the customer_uid must be issued for the **specified member's credit card number**
+
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
+ // Refer to above mentioned PG specific guide for param settings
+ customer_uid: "gildong_0001_1234", // Unique ID for each card (billing key)
+ /* ...Omitted... */
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // Billing key request successful
+ } else {
+ // Billing key request failed
+ }
+ },
+ );
+ ```
-
+
+ **What is a customer\_uid?**
-
+ It is a unique value specified by the merchant that maps 1:1 with the billing key issued by PG. A unique `customer_uid` must be created for each card.
+
+ Example: If a customer named **Hong Gildong** requests for a billing key from **A card**, the customer\_uid must be issued for the **specified member's credit card number**
+
+
### **STEP 02.** Handle response
-
-```javascript title="client-side"
- IMP.request_pay({ // param
- /* ...Omitted... */
- }, function (rsp) { // callback
- if (rsp.success) {
- // Billing key request successful
- // jQuery HTTP request
- jQuery.ajax({
- url: "{URL to receive customer-uid}", // Example: https://www.myservice.com/billings/
- method: "POST",
- headers: { "Content-Type": "application/json" },
- data: {
- customer_uid: "gildong_0001_1234", // Unique ID for each card (billing key)
+
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
+ // param
+ /* ...Omitted... */
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // Billing key request successful
+ // jQuery HTTP request
+ jQuery.ajax({
+ url: "{URL to receive customer-uid}", // Example: https://www.myservice.com/billings/
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ data: {
+ customer_uid: "gildong_0001_1234", // Unique ID for each card (billing key)
+ },
+ });
+ } else {
+ // Billing key request failed
}
- });
- } else {
- // Billing key request failed
- }
- });
-```
-
-Once the billing key is issued successfully, the **customer_uid** is sent to the merchant server. The server creates an API endpoint that receives the **customer_uid** from the client. The server can use the **customer_uid** to request future payments.\
-
-```javascript title="server-side"
- app.post("/billings", async (req, res) => {
- try {
- const { customer_uid } = req.body; // Get customer_uid from req.body
-
- ...
- } catch (e) {
- res.status(400).send(e);
- }
- });
-```
-
-Save the `customer_uid` in the merchant's database and use it to request future payments.
-
-
+ },
+ );
+ ```
+
+ Once the billing key is issued successfully, the **customer\_uid** is sent to the merchant server. The server creates an API endpoint that receives the **customer\_uid** from the client. The server can use the **customer\_uid** to request future payments.\\
+
+ ```ts title="server-side"
+ app.post("/billings", async (req, res) => {
+ try {
+ const { customer_uid } = req.body; // Get customer_uid from req.body
+ } catch (e) {
+ res.status(400).send(e);
+ }
+ });
+ ```
+
+ Save the `customer_uid` in the merchant's database and use it to request future payments.
+
### **STEP 03.** Request payment
-Use the saved **customer_uid** and call the i'mport [**Non-authenticated payment (billing key) API**](../../../api/api/api) to request payment.
+Use the saved **customer\_uid** and call the i'mport
+[**Non-authenticated payment (billing key) API**](../../../api/api/api) to request payment.
-**To use the i'mport REST API, you must first get an** [**access token**](../../../api/rest-api-access-token).
-
+ **To use the i'mport REST API, you must first get an** [**access token**](../../../api/rest-api-access-token).
-
-```javascript title="server-side"
-app.post("/billings", async (req, res) => {
- try {
- const { customer_uid } = req.body; // Get customer_uid from req.body
- // Get billing key
- const getToken = await axios({
- url: "https://api.iamport.kr/users/getToken",
- method: "post", // POST method
- headers: { "Content-Type": "application/json" }, // "Content-Type": "application/json"
- data: {
- imp_key: "imp_apikey", // REST API key
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f" // REST API Secret
+
+ ```ts title="server-side"
+ app.post("/billings", async (req, res) => {
+ try {
+ const { customer_uid } = req.body; // Get customer_uid from req.body
+ // Get billing key
+ const getToken = await axios({
+ url: "https://api.iamport.kr/users/getToken",
+ method: "post", // POST method
+ headers: { "Content-Type": "application/json" }, // "Content-Type": "application/json"
+ data: {
+ imp_key: "imp_apikey", // REST API key
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f", // REST API Secret
+ },
+ });
+ const { access_token } = getToken.data.response; // Access token
+ // Request payment (for first or nth time)
+ const paymentResult = await axios({
+ url: `https://api.iamport.kr/subscribe/payments/again`,
+ method: "post",
+ headers: { Authorization: access_token }, // Add access token to authorization header
+ data: {
+ customer_uid,
+ merchant_uid: "order_monthly_0001", // Order ID
+ amount: 8900,
+ name: "recurring payments for monthly subscription",
+ },
+ });
+ const { code, message } = paymentResult;
+ if (code === 0) {
+ // Successful communication with the card company (additional check is required to confirm whether the payment was successful)
+ if (paymentResult.status === "paid") {
+ // Payment approved
+ res.send({
+ // ...
+ });
+ } else {
+ // Payment not approved (Example: card limit exceeded, card suspended, insufficient balance)
+ // paymentResult.status: failed is returned
+ res.send({
+ // ...
+ });
+ }
+ res.send({
+ // ...
+ });
+ } else {
+ // Card company rejected payment (paymentResult is null)
+ res.send({
+ // ...
+ });
}
- });
- const { access_token } = getToken.data.response; // Access token
- ...
- // Request payment (for first or nth time)
- const paymentResult = await axios({
- url: \`https://api.iamport.kr/subscribe/payments/again\`,
- method: "post",
- headers: { "Authorization": access_token }, // Add access token to authorization header
- data: {
- customer_uid,
- merchant_uid: "order_monthly_0001", // Order ID
- amount: 8900,
- name: "recurring payments for monthly subscription"
- }
- });
- ...
- const { code, message } = paymentResult;
- if (code === 0) { // Successful communication with the card company (additional check is required to confirm whether the payment was successful)
- if ( paymentResult.status === "paid" ) { // Payment approved
- res.send({ ... });
- } else { // Payment not approved (Example: card limit exceeded, card suspended, insufficient balance)
- // paymentResult.status: failed is returned
- res.send({ ... });
- }
- res.send({ ... });
- } else { // Card company rejected payment (paymentResult is null)
- res.send({ ... });
+ } catch (e) {
+ res.status(400).send(e);
}
- } catch (e) {
- res.status(400).send(e);
- }
- });
-```
-
-
+ });
+ ```
+
diff --git a/src/content/docs/en/auth/guide-1/bill/readme.mdx b/src/content/docs/en/auth/guide-1/bill/readme.mdx
index e8c2711ca..a09efa01d 100644
--- a/src/content/docs/en/auth/guide-1/bill/readme.mdx
+++ b/src/content/docs/en/auth/guide-1/bill/readme.mdx
@@ -3,59 +3,56 @@ title: Request billing key payment
description: Request a non-authenticated payment request with the credit card information.
---
+import Figure from "~/components/Figure.astro";
import ContentRef from "~/components/gitbook/ContentRef.astro";
import Details from "~/components/gitbook/Details.astro";
-import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## Non-authenticated payment using a billing key
-**What is a billing key?**
-
-A billing key is an encryption key that can be used to make a payment at a desired time, such as subscriptions and Pay-As-You-Go payments. Since a merchant cannot store the customer's card information, it can get the card's billing key from the card company, store and use it to make payments.
+ **What is a billing key?**
+ A billing key is an encryption key that can be used to make a payment at a desired time, such as subscriptions and Pay-As-You-Go payments. Since a merchant cannot store the customer's card information, it can get the card's billing key from the card company, store and use it to make payments.
Depending on the PG, the billing key can be issued using the following two methods:
-
-#### Use i'mport REST API to get a billing key and use it to make a payment request.
-
-- `NICE Payments`
-- `JTNet`
-- `KCP`
-- `SettleBank`
-- `INICIS`
-- `DaouData`
-- `Paymentwall`
-
-
-
-
-#### Use a PG payment window to get a billing key.
-
-- `JTNet`
-- `INICIS`
-- `Danal (credit card, mobile)`
-- `Mobilians`
-- `Payco`
-- `KICC`
-- `KCP`
-- `Kakao Pay`
-- `Naver Pay`
-
-
+
+ Use i'mport REST API to get a billing key and use it to make a payment request.
+
+ - `NICE Payments`
+ - `JTNet`
+ - `KCP`
+ - `SettleBank`
+ - `INICIS`
+ - `DaouData`
+ - `Paymentwall`
+
+
+
+ Use a PG payment window to get a billing key.
+
+ - `JTNet`
+ - `INICIS`
+ - `Danal (credit card, mobile)`
+ - `Mobilians`
+ - `Payco`
+ - `KICC`
+ - `KCP`
+ - `Kakao Pay`
+ - `Naver Pay`
+
-## 2. Payment using card info (key-in payment)
+## 2. Payment using card info (key-in payment)
Upon pre-agreement with a PG, you can request a one-time payment using the credit card information.
This method requests payment by submitting card information each time. It is usually used by some
@@ -64,20 +61,18 @@ from customers via ARS to make a payment. Recently, as more merchants are using
method for authenticated payments, the use of key-in method is declining due to the inconvenience of
having to enter the card information every time.
-
+
-**An agreement with the PG is required to use key-in payment.**
-
+ **An agreement with the PG is required to use key-in payment.**
-
+ - NICE Payments
+ - NHN KCP
+ - JTNET
+ - SettleBank
+ - DaouData
diff --git a/src/content/docs/en/auth/guide-1/bill/rest-api.mdx b/src/content/docs/en/auth/guide-1/bill/rest-api.mdx
index 4bdf7fc64..88b27602b 100644
--- a/src/content/docs/en/auth/guide-1/bill/rest-api.mdx
+++ b/src/content/docs/en/auth/guide-1/bill/rest-api.mdx
@@ -4,9 +4,9 @@ description: Easily get a billing key using the i'mport REST API.
---
import Codepen from "~/components/gitbook/Codepen.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
You can use the i'mport REST API to request for a billing key to make a payment request. When you
request for a billing key with the customer's credit card information, the i'mport server calls the
@@ -19,137 +19,150 @@ has the following pros/cons:
requirements are strict for this service, and must take precautions to protect personal
information.
-#### If you are planning to develop a merchant UI/UX-friendly payment environment, API integration is the right choice.
+If you are planning to develop a merchant UI/UX-friendly payment environment,
+API integration is the right choice.
-### **STEP 01.** Accept credit card information
+## **STEP 01.** Accept credit card information
Add input fields for card information as shown below. Create a hidden field to store the
-**customer_uid** to send to the server upon form submission. For corporate cards (excluding cards
+**customer\_uid** to send to the server upon form submission. For corporate cards (excluding cards
issued under an employee's name), enter a _10-digit business registration number_ for the `birth`
parameter. The following example calls a `POST` request for `/subscription/issue-billing` with input
-values and **customer_uid** when you click the **Pay** button.
+values and **customer\_uid** when you click the **Pay** button.
-**What is a customer\_uid?**
+ **What is a customer\_uid?**
-It is a unique value specified by the merchant that maps 1:1 with the billing key issued by PG. A unique `customer_uid` must be created for each card.
-
-Example: If a customer named **Hong Gildong** requests for a billing key from **A card**, the customer_uid must be issued for the **specified member's credit card number**.
+ It is a unique value specified by the merchant that maps 1:1 with the billing key issued by PG. A unique `customer_uid` must be created for each card.
+ Example: If a customer named **Hong Gildong** requests for a billing key from **A card**, the customer\_uid must be issued for the **specified member's credit card number**.
-If you reuse the customer\_uid used to get the existing billing key, the existing billing key will be replaced with the new billing key issued on the new card number. (**The billing key that maps to the existing card will be deleted.**)
-
+ If you reuse the customer\_uid used to get the existing billing key, the existing billing key will be replaced with the new billing key issued on the new card number. (**The billing key that maps to the existing card will be deleted.**)
-**Credit card information required for billing key**
-
-- **Credit card number**
-- **Credit card expiration**
-- **DOB**
-- **First 2-digits of card password**
+ **Credit card information required for billing key**
+ - **Credit card number**
+ - **Credit card expiration**
+ - **DOB**
+ - **First 2-digits of card password**
-
-```html title="client-side"
-
-```
-
-
-
-
-```jsx title="client-side"
-// React.js
- class CardForm extends React.Components {
- constructor(props) {
- super(props);
- this.state = {
- cardNumber: "",
- expiry: "",
- birth: "",
- pwd2Digit: "",
- customer_uid: "gildong_0001_1234",
+
+ ```html title="client-side"
+
+ ```
+
+
+
+ ```tsx title="client-side"
+ // React.js
+ class CardForm extends React.Components {
+ constructor(props) {
+ super(props);
+ this.state = {
+ cardNumber: "",
+ expiry: "",
+ birth: "",
+ pwd2Digit: "",
+ customer_uid: "gildong_0001_1234",
+ };
+ }
+ handleInputChange = (event) => {
+ const { value, name } = event.target;
+ this.setState({
+ [name]: value,
+ });
};
+ handleFormSubmit = (event) => {
+ event.preventDefault();
+ const { cardNumber, expiry, birth, pwd2Digit, customer_uid } = this.state;
+ axios({
+ // Example: https://www.myservice.com/subscription/issue-billing
+ url: "{service URL to receive billing key request}",
+ method: "post",
+ data: {
+ cardNumber,
+ expiry,
+ birth,
+ pwd2Digit,
+ customer_uid,
+ },
+ }).then((rsp) => {
+ // Do something with the response
+ });
+ };
+ render() {
+ const { cardNumber, expiry, birth, pwd2Digit } = this.state;
+ return (
+
+ );
+ }
}
- ...
- handleInputChange = (event) => {
- const { value, name } = event.target;
- this.setState({
- [name]: value,
- });
- };
- ...
- handleFormSubmit = (event) => {
- event.preventDefault();
- const { cardNumber, expiry, birth, pwd2Digit, customer_uid } = this.state;
- axios({
- // Example: https://www.myservice.com/subscription/issue-billing
- url: "{service URL to receive billing key request}",
- method: "post",
- data: {
- cardNumber,
- expiry,
- birth,
- pwd2Digit,
- customer_uid,
- }
- }).then(rsp => {
- ...
- });
- };
- ...
- render() {
- const { cardNumber, expiry, birth, pwd2Digit } = this.state;
- return (
-
- )
- }
- }
-```
-
-
+ ```
+
@@ -157,29 +170,27 @@ If you reuse the customer\_uid used to get the existing billing key, the existin
### **STEP 02.** Extract card information
Create an API endpoint to extract the card information from the request body. The following is a
-sample **API endpoint** that processes a `POST` request to `/subscription/issue-billing`.\
+sample **API endpoint** that processes a `POST` request to `/subscription/issue-billing`.\\
-
-```javascript title="server-side"
-// Process POST request to "/subscription/issue-billing"
- app.post("/subscriptions/issue-billing", async (req, res) => {
- try {
- const {
- card_number, // card number
- expiry, // card expiration
- birth, // DOB
- pwd_2digit, // first 2-digits of card password
- customer_uid, // value that maps 1:1 with card (billing key)
- } = req.body; // extract card info from req.body
- ...
- } catch (e) {
- res.status(400).send(e);
- }
- });
-```
-
-
+
+ ```ts title="server-side"
+ // Process POST request to "/subscription/issue-billing"
+ app.post("/subscriptions/issue-billing", async (req, res) => {
+ try {
+ const {
+ card_number, // card number
+ expiry, // card expiration
+ birth, // DOB
+ pwd_2digit, // first 2-digits of card password
+ customer_uid, // value that maps 1:1 with card (billing key)
+ } = req.body; // extract card info from req.body
+ } catch (e) {
+ res.status(400).send(e);
+ }
+ });
+ ```
+
### **STEP 03.** Request billing key and handle response
@@ -188,8 +199,8 @@ Request for a billing key by using the i'mport [**Get billing key REST API**](..
return a response based on the result code.
-
-```javascript title="server-side"
+
+ ```ts title="server-side"
// Process POST request to "/subscription/issue-billing"
app.post("/subscriptions/issue-billing", async (req, res) => {
try {
@@ -200,7 +211,6 @@ return a response based on the result code.
pwd_2digit, // First 2-digits of card password
customer_uid, // Unique ID for each card (billing key)
} = req.body; // Get card info from req.body
- ...
// Get billing key
const getToken = await axios({
url: "https://api.iamport.kr/users/getToken",
@@ -208,47 +218,48 @@ return a response based on the result code.
headers: { "Content-Type": "application/json" }, // "Content-Type": "application/json"
data: {
imp_key: "imp_apikey", // REST API key
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f" // REST API Secret
- }
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f", // REST API Secret
+ },
});
const { access_token } = getToken.data.response; // Access token
- ...
// Get access token
const issueBilling = await axios({
- url: \`https://api.iamport.kr/subscribe/customers/\${customer_uid}\`,
+ url: `https://api.iamport.kr/subscribe/customers/${customer_uid}`,
method: "post",
- headers: { "Authorization": access_token }, // Add access token to authorization header
+ headers: { Authorization: access_token }, // Add access token to authorization header
data: {
card_number, // Card number
expiry, // Card expiration
birth, // Date of birth
pwd_2digit, // First 2-digits of card password
- }
+ },
});
- ...
const { code, message } = issueBilling.data;
- if (code === 0) { // Billing key request successful
- res.send({ status: "success", message: "Billing has successfully issued" });
- } else { // Billing key request failed
+ if (code === 0) {
+ // Billing key request successful
+ res.send({
+ status: "success",
+ message: "Billing has successfully issued",
+ });
+ } else {
+ // Billing key request failed
res.send({ status: "failed", message });
}
} catch (e) {
res.status(400).send(e);
}
});
-```
-
-
+ ```
+
-**To use the i'mport REST API, you must first get an** [**access token**](../../../api/rest-api-access-token)**.**
-
+ **To use the i'mport REST API, you must first get an** [**access token**](../../../api/rest-api-access-token)**.**
-**Request billing key and make payment at once**
-
-By using the key-in payment REST API[**`/subscribe/payments/onetime`**](../../../api/api/), you can get the billing key and make a payment in a single API call.
+ **Request billing key and make payment at once**
+ By using the key-in payment REST API[**`/subscribe/payments/onetime`**](../../../api/api/), you can get the billing key and make a payment in a single API call.
diff --git a/src/content/docs/en/auth/guide-1/page-1.mdx b/src/content/docs/en/auth/guide-1/page-1.mdx
index 46ee2b182..b8ffdc138 100644
--- a/src/content/docs/en/auth/guide-1/page-1.mdx
+++ b/src/content/docs/en/auth/guide-1/page-1.mdx
@@ -3,31 +3,35 @@ title: Key-in payment using card info
description: Request payments with only card information without authentication.
---
-import Details from "~/components/gitbook/Details.astro";
import Figure from "~/components/Figure.astro";
+import Details from "~/components/gitbook/Details.astro";
import Hint from "~/components/Hint.astro";
-Upon pre-agreement with a PG, you can request a one-time payment using the credit card information. This method requests payment by submitting card information each time. It is usually used by some merchants to avoid the hassle of authenticated payments or call centers that obtain card information from customers via ARS to make a payment. Recently, as more merchants are using a simple payment method for authenticated payments, the use of key-in method is declining due to the inconvenience of having to enter the card information every time.
+Upon pre-agreement with a PG, you can request a one-time payment using the credit card information.
+This method requests payment by submitting card information each time.
+It is usually used by some merchants to avoid the hassle of authenticated payments or call centers
+that obtain card information from customers via ARS to make a payment.
+Recently, as more merchants are using a simple payment method for authenticated payments,
+the use of key-in method is declining due to the inconvenience of having
+to enter the card information every time.
-
+
-**An agreement with the PG is required to use key-in payment.**
-
+ **An agreement with the PG is required to use key-in payment.**
-
+ - NICE Payments
+ - NHN KCP
+ - JTNET
+ - SettleBank
+ - DaouData
-You can request a key-in payment by using the [**Non-authenticated payment (one-time) API**](../../api/api/request-non-authenticated-payment-one-time-api) or the PG window.
+You can request a key-in payment by using
+the [**Non-authenticated payment (one-time) API**][one-time-api] or the PG window.
+
+[one-time-api]: ../../api/api/request-non-authenticated-payment-one-time-api
diff --git a/src/content/docs/en/auth/guide-1/subscription-payment-using-billing-key.mdx b/src/content/docs/en/auth/guide-1/subscription-payment-using-billing-key.mdx
index af270062a..dd19ef28e 100644
--- a/src/content/docs/en/auth/guide-1/subscription-payment-using-billing-key.mdx
+++ b/src/content/docs/en/auth/guide-1/subscription-payment-using-billing-key.mdx
@@ -7,37 +7,38 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Hint from "~/components/Hint.astro";
-#### subscriptionsubscriptionYou can use the customer\_uid obtained through the [Get billing key](../../api/billing-key-api/api-1) or [Non-authenticated payment (one-time)](../../api/api/request-non-authenticated-payment-one-time-api) API to request a subscription or scheduled payment.
+You can use the customer\_uid obtained through the [Get billing key](../../api/billing-key-api/api-1)
+or [Non-authenticated payment (one-time)](../../api/api/request-non-authenticated-payment-one-time-api) API
+to request a subscription or scheduled payment.
-### **STEP 01.** Request payment
+## **STEP 01.** Request payment
You can schedule a payment for a desired time in the future by using the ChaiPort **Schedule payment API**.
- ```javascript title="Node.js"
+ ```ts title="Node.js"
// Schedule payment
- axios({
- url: \`https://api.iamport.kr/subscribe/payments/schedule\`,
- method: "post",
- headers: { "Authorization": access_token }, // Add access token to authorization header
- data: {
- customer_uid: "gildong_0001_1234", // Unique ID for each card (billing key)
- schedules: [
- {
- merchant_uid: "order_monthly_0001", // Order ID
- schedule_at: 1519862400, // Schedule time in UNIX timestamp.
- amount: 8900,
- name: "Recurring payment for monthly subscription",
- buyer_name: "Hong Gildong",
- buyer_tel: "01012345678",
- buyer_email: "gildong@gmail.com"
- }
- ]
- }
- });
-
- ```
+ axios({
+ url: `https://api.iamport.kr/subscribe/payments/schedule`,
+ method: "post",
+ headers: { Authorization: access_token }, // Add access token to authorization header
+ data: {
+ customer_uid: "gildong_0001_1234", // Unique ID for each card (billing key)
+ schedules: [
+ {
+ merchant_uid: "order_monthly_0001", // Order ID
+ schedule_at: 1519862400, // Schedule time in UNIX timestamp.
+ amount: 8900,
+ name: "Recurring payment for monthly subscription",
+ buyer_name: "Hong Gildong",
+ buyer_tel: "01012345678",
+ buyer_email: "gildong@gmail.com",
+ },
+ ],
+ },
+ });
+```
@@ -56,41 +57,42 @@ result.
- ```javascript title="server-side"
+ ```ts title="server-side"
// Process POST request to "/iamport-callback/schedule"
- app.post("/iamport-callback/schedule", async (req, res) => {
- try {
- const { imp_uid, merchant_uid } = req.body;
- // Get access token
- const getToken = await axios({
- url: "https://api.iamport.kr/users/getToken",
- method: "post", // POST method
- headers: { "Content-Type": "application/json" }, // "Content-Type": "application/json"
- data: {
- imp_key: "imp_apikey", // REST API key
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f" // REST API Secret
- }
- });
- const { access_token } = getToken.data.response; // Access token
- // Get payment info from i'mport server using imp_uid
- const getPaymentData = await axios({
- url: \`https://api.iamport.kr/payments/\${imp_uid}\`, // Pass imp_uid
- method: "get", // GET method
- headers: { "Authorization": access_token } // Add access token to authorization header
- });
- const paymentData = getPaymentData.data.response; // Save payment info
- const { status } = paymentData;
- if (status === "paid") { // If payment is successful
- // Save payment info in DB
- await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData }); // Mongoose
- ...
- } else {
- // Retry payment
- }
- } catch (e) {
- res.status(400).send(e);
- }
+ app.post("/iamport-callback/schedule", async (req, res) => {
+ try {
+ const { imp_uid, merchant_uid } = req.body;
+ // Get access token
+ const getToken = await axios({
+ url: "https://api.iamport.kr/users/getToken",
+ method: "post", // POST method
+ headers: { "Content-Type": "application/json" }, // "Content-Type": "application/json"
+ data: {
+ imp_key: "imp_apikey", // REST API key
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f", // REST API Secret
+ },
+ });
+ const { access_token } = getToken.data.response; // Access token
+ // Get payment info from i'mport server using imp_uid
+ const getPaymentData = await axios({
+ url: `https://api.iamport.kr/payments/${imp_uid}`, // Pass imp_uid
+ method: "get", // GET method
+ headers: { Authorization: access_token }, // Add access token to authorization header
});
+ const paymentData = getPaymentData.data.response; // Save payment info
+ const { status } = paymentData;
+ if (status === "paid") {
+ // If payment is successful
+ // Save payment info in DB
+ await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData }); // Mongoose
+ } else {
+ // Retry payment
+ }
+ } catch (e) {
+ res.status(400).send(e);
+ }
+ });
```
@@ -105,48 +107,49 @@ URL.
- ```javascript title="server-side"
- // Process POST request to "/iamport-callback/schedule"
- app.post("/iamport-callback/schedule", async (req, res) => {
- try {
- const { imp_uid, merchant_uid } = req.body;
- // Get access token
- /* ...Omitted ... */
- // Get payment info from i'mport server using imp_uid
- /* ...Omitted ... */
- const paymentData = getPaymentData.data.response; // Save payment info
- const { status } = paymentData;
- if (status === "paid") { // If payment is successful
- // Save payment info in DB
- await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData }); // Mongoose
- ...
- // Schedule next payment
- axios({
- url: "{URL to receive payment schedule}", // Example: https://api.iamport.kr/subscribe/payments/schedule
- method: "post",
- headers: { "Authorization": access_token }, // Add access token to authorization header
- data: {
- customer_uid: "gildong_0001_1234", // Unique ID for each card (billing key)
- schedules: [
- {
- merchant_uid: "order_monthly_0001", // Order ID
- schedule_at: 1519516800, // Schedule time in UNIX timestamp.
- amount: 8900,
- name: "Recurring payment for monthly subscription",
- ...
- }
- ]
- }
- });
- } else {
- // Retry payment
- }
- } catch (e) {
- res.status(400).send(e);
- }
- });
+ ```ts title="server-side"
+ // Process POST request to "/iamport-callback/schedule"
+ app.post("/iamport-callback/schedule", async (req, res) => {
+ try {
+ const { imp_uid, merchant_uid } = req.body;
+ // Get access token
+ /* ...Omitted ... */
+ // Get payment info from i'mport server using imp_uid
+ /* ...Omitted ... */
+ const paymentData = getPaymentData.data.response; // Save payment info
+ const { status } = paymentData;
+ if (status === "paid") {
+ // If payment is successful
+ // Save payment info in DB
+ await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData }); // Mongoose
+ // Schedule next payment
+ axios({
+ url: "{URL to receive payment schedule}", // Example: https://api.iamport.kr/subscribe/payments/schedule
+ method: "post",
+ headers: { Authorization: access_token }, // Add access token to authorization header
+ data: {
+ customer_uid: "gildong_0001_1234", // Unique ID for each card (billing key)
+ schedules: [
+ {
+ merchant_uid: "order_monthly_0001", // Order ID
+ schedule_at: 1519516800, // Schedule time in UNIX timestamp.
+ amount: 8900,
+ name: "Recurring payment for monthly subscription",
+ },
+ ],
+ },
+ });
+ } else {
+ // Retry payment
+ }
+ } catch (e) {
+ res.status(400).send(e);
+ }
+ });
```
- The above example processes the webhook event that occurs when a scheduled payment is attempted. If the scheduled payment is completed successfully, the payment information is saved in the database and the next payment is scheduled.
+ The above example processes the webhook event that occurs when a scheduled payment is attempted.
+ If the scheduled payment is completed successfully, the payment information is saved
+ in the database and the next payment is scheduled.
diff --git a/src/content/docs/en/auth/guide-2/readme.mdx b/src/content/docs/en/auth/guide-2/readme.mdx
index f77979dbf..22a98ceb1 100644
--- a/src/content/docs/en/auth/guide-2/readme.mdx
+++ b/src/content/docs/en/auth/guide-2/readme.mdx
@@ -4,134 +4,125 @@ description: Learn how to cancel a payment using the i'mport payment cancel API.
---
import Codepen from "~/components/gitbook/Codepen.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### **STEP 01.** Request cancellation
+## **STEP 01.** Request cancellation
Request a refund to the server with the required refund information. In the case of virtual account
refund, you need to specify additional parameters for the refund deposit account information. The
-following example requests a refund with the required refund information.\
+following example requests a refund with the required refund information.\\
-
-```html title="client-side"
-
-
-
-```
-
-
-
-
-
-
-```jsx title="client-side"
-class CancelPay extends React.Component {
- cancelPay = () => {
- axios({
- url: "{URL to receive refund request}", // Example: http://www.myservice.com/payments/cancel
- method: "POST",
- headers: {
- "Content-Type": "application/json,
- },
- data: {
- merchant_uid: "mid_" + new Date().getTime(), // Order ID
- cancel_request_amount: 2000, // Refund amount
- reason: "Refund for test payment" // Reason for the refund
- refund_holder: "Jone Doe", // [required for virtual account refund] refund account holder's name
- refund_bank: "88" // [required for virtual account refund] refund account bank code (e.g. Shinhan Bank is 88 for KG Inicis)
- refund_account: "56211105948400" // [required for virtual account refund] refund account number
+
+ ```html title="client-side"
+
+
+
+ ```
+
+
+
-
+
+ ```tsx title="client-side"
+ class CancelPay extends React.Component {
+ cancelPay = () => {
+ axios({
+ url: "{URL to receive refund request}", // Example: http://www.myservice.com/payments/cancel
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ data: {
+ merchant_uid: "mid_" + new Date().getTime(), // Order ID
+ cancel_request_amount: 2000, // Refund amount
+ reason: "Refund for test payment", // Reason for the refund
+ refund_holder: "Jone Doe", // [required for virtual account refund] refund account holder's name
+ refund_bank: "88", // [required for virtual account refund] refund account bank code (e.g. Shinhan Bank is 88 for KG Inicis)
+ refund_account: "56211105948400", // [required for virtual account refund] refund account number
+ },
+ });
+ };
+ render() {
+ return ;
+ }
+ }
+ ```
+
### **STEP 02.** Get payment information
Assume that there is a **`Payments`** table that stores payment information as follows:
-```javascript title="server-side"
+```js title="server-side"
/* ... model/payments.js ... */
- var mongoose = require('mongoose');
- var Schema = mongoose.Schema;
- ...
- var PaymentsSchema = new Schema({
- imp_uid: String, // i'mport unique ID (unique key for refund)
- merchant_uid: String, // order ID (used to query payment information)
- amount: { type: Number, default: 0 }, // Payment amount (for calculating refundable amount)
- cancel_amount: { type: Number, default: 0 }, // Total amount refunded (for calculating refundable amount)
- ...
- });
- ...
- module.exports = mongoose.model('Payments', PaymentsSchema);
+const mongoose = require("mongoose");
+const Schema = mongoose.Schema;
+const PaymentsSchema = new Schema({
+ imp_uid: String, // i'mport unique ID (unique key for refund)
+ merchant_uid: String, // order ID (used to query payment information)
+ amount: { type: Number, default: 0 }, // Payment amount (for calculating refundable amount)
+ cancel_amount: { type: Number, default: 0 }, // Total amount refunded (for calculating refundable amount)
+});
+module.exports = mongoose.model("Payments", PaymentsSchema);
```
Query the payment information of the order from the **`Payments`** table using the order ID (**`merchant_uid`**) received from the client.
-```javascript title="server-side"
- /* ... Omitted ... */
- var Payments = require('./models/payments');
- app.post('/payments/cancel', async (req, res, next) => {
- try {
- /* Get access token */
- /* ... Omitted ... */
- /* Get payment information */
- const { body } = req;
- const { merchant_uid } = body; // Order ID from the client
- Payments.find({ merchant_uid }, async function(err, payment) {
- if (err) {
- return res.json(err);
- }
- const paymentData = payment[0]; // Save payment information
- /* Call i'mport REST API to request refund */
- ...
- });
- } catch (error) {
- res.status(400).send(error);
- }
- });
-
+```js title="server-side"
+/* ... Omitted ... */
+const Payments = require("./models/payments");
+app.post("/payments/cancel", async (req, res, next) => {
+ try {
+ /* Get access token */
+ /* ... Omitted ... */
+ /* Get payment information */
+ const { body } = req;
+ const { merchant_uid } = body; // Order ID from the client
+ Payments.find({ merchant_uid }, async function (err, payment) {
+ if (err) {
+ return res.json(err);
+ }
+ const paymentData = payment[0]; // Save payment information
+ /* Call i'mport REST API to request refund */
+ });
+ } catch (error) {
+ res.status(400).send(error);
+ }
+});
```
### **STEP 03.** Request refund to i'mport server
-To request a refund, you must first get a [**REST API access token**](../../api/rest-api-access-token). Use the **`access token`** to call the [**i'mport cancel ****API**](../../api/payment-api/cancel-payment-api) to request a refund.
+To request a refund, you must first get a [**REST API access token**](../../api/rest-api-access-token). Use the **`access token`** to call the [**i'mport cancel** **API**](../../api/payment-api/cancel-payment-api) to request a refund.
-**Note - Refunding mobile micropayments**
-
-- If a refund is **requested on a different month from when the payment is made, a full refund is not allowed**. For example, a payment made on January 31st is not refundable on February 1st.
+ **Note - Refunding mobile micropayments**
+ - If a refund is **requested on a different month from when the payment is made, a full refund is not allowed**. For example, a payment made on January 31st is not refundable on February 1st.
**Setting parameters for refund request:**
@@ -155,66 +146,66 @@ To request a refund, you must first get a [**REST API
> refund request will fail. If the `checksum` is not specified, the verification is not performed.
-**Reason for entering checksum**
+ **Reason for entering checksum**
-`checksum` is not required, but it is recommended for **comparing the refundable amount between the merchant server and the i'mport server**.
+ `checksum` is not required, but it is recommended for **comparing the refundable amount between the merchant server and the i'mport server**.
-For example, consider the case when a partial refund request of 1,000 won for a 10,000 won payment was completed on the i'mport server, but not on the merchant server due to a server or database error. In this case, the checksum of the i'mport server is changed to 9000, but that of the merchant server remains 10,000.
-
-If you attempt to make a refund request with `checksum(10000)`, the request will fail because the value does not match the `checksum(9000)` of the i'mport server.
+ For example, consider the case when a partial refund request of 1,000 won for a 10,000 won payment was completed on the i'mport server, but not on the merchant server due to a server or database error. In this case, the checksum of the i'mport server is changed to 9000, but that of the merchant server remains 10,000.
+ If you attempt to make a refund request with `checksum(10000)`, the request will fail because the value does not match the `checksum(9000)` of the i'mport server.
#### The following example requests a refund.
-```javascript title="Node.js"
- /* ... Omitted ... */
- app.post('/payments/cancel', async (req, res, next) => {
- try {
- /* Get access token */
+```ts title="Node.js"
+/* ... Omitted ... */
+app.post("/payments/cancel", async (req, res, next) => {
+ try {
+ /* Get access token */
+ /* ... Omitted ... */
+ /* Get payment information */
+ const { body } = req;
+ const { merchant_uid, reason, cancel_request_amount } = body; // Order ID from the client, reason for refund, refund amount
+ Payments.find({ merchant_uid }, async function (err, payment) {
/* ... Omitted ... */
- /* Get payment information */
- const { body } = req;
- const { merchant_uid, reason, cancel_request_amount } = body; // Order ID from the client, reason for refund, refund amount
- Payments.find({ merchant_uid }, async function(err, payment) {
- /* ... Omitted ... */
- const paymentData = payment[0]; // Save payment information
- const { imp_uid, amount, cancel_amount } = paymentData; // Get imp_uid, amount(paid amount), cancel_amount(total refund amount) from payment information
- const cancelableAmount = amount - cancel_amount; // Refundable amount (= paid amount - total refund amount)
- if (cancelableAmount <= 0) { // If refundable amount is 0
- return res.status(400).json({ message: "This order has already been fully refunded." });
- }
- ...
- /* Call i'mport REST API to request refund */
- const getCancelData = await axios({
- url: "{URL to receive refund request}", // Example: http://www.myservice.com/payments/cancel
- method: "post",
- headers: {
- "Content-Type": "application/json",
- "Authorization": access_token // Access token from i'mport server
- },
- data: {
- reason, // Reason for refund from client
- imp_uid, // Unique key for refund
- amount: cancel_request_amount, // Requested refund amount
- checksum: cancelableAmount // [Recommended] refundable amount
- }
- });
- const { response } = getCancelData.data; // Refund result
- /* Save refund result */
- ...
+ const paymentData = payment[0]; // Save payment information
+ const { imp_uid, amount, cancel_amount } = paymentData; // Get imp_uid, amount(paid amount), cancel_amount(total refund amount) from payment information
+ const cancelableAmount = amount - cancel_amount; // Refundable amount (= paid amount - total refund amount)
+ if (cancelableAmount <= 0) {
+ // If refundable amount is 0
+ return res
+ .status(400)
+ .json({ message: "This order has already been fully refunded." });
+ }
+ /* Call i'mport REST API to request refund */
+ const getCancelData = await axios({
+ url: "{URL to receive refund request}", // Example: http://www.myservice.com/payments/cancel
+ method: "post",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: access_token, // Access token from i'mport server
+ },
+ data: {
+ reason, // Reason for refund from client
+ imp_uid, // Unique key for refund
+ amount: cancel_request_amount, // Requested refund amount
+ checksum: cancelableAmount, // [Recommended] refundable amount
+ },
});
- } catch (error) {
- res.status(400).send(error);
- }
- });
+ const { response } = getCancelData.data; // Refund result
+ /* Save refund result */
+ });
+ } catch (error) {
+ res.status(400).send(error);
+ }
+});
```
### **STEP 04.** Save refund result
-#### After the refund process is completed, save the result in the database as follows:
+After the refund process is completed, save the result in the database as follows:
-```javascript title="Node.js"
+```ts title="Node.js"
/* ... Omitted ... */
app.post("/payments/cancel", async (req, res, next) => {
try {
@@ -238,7 +229,7 @@ app.post("/payments/cancel", async (req, res, next) => {
return res.json(err);
}
res.json(payment); // Return refund result to the client
- }
+ },
);
});
} catch (error) {
@@ -248,10 +239,9 @@ app.post("/payments/cancel", async (req, res, next) => {
```
-**Note - When cancelling a payment**
-
-Even if a **response code of 200 (OK)** is returned for the REST API ([**POST https://api.iamport.kr/payments/cancel**](https://api.iamport.kr/#!/payments/cancelPayment)) request, a non-zero code in the response body **means that the refund has failed**. You can check the reason for the failure in the message of the body.
+ **Note - When cancelling a payment**
+ Even if a **response code of 200 (OK)** is returned for the REST API ([**POST https://api.iamport.kr/payments/cancel**](https://api.iamport.kr/#!/payments/cancelPayment)) request, a non-zero code in the response body **means that the refund has failed**. You can check the reason for the failure in the message of the body.
### **STEP 04.** Handle response for refund request
@@ -259,46 +249,47 @@ Even if a **response code of 200 (OK)** is returned for the REST API ([**POST ht
Add the client-side logic to handle the response from the server as follows:
-
-```html title="client-side"
-
-
-
-```
-
-
-
-
-```jsx title="client-side"
-class CancelPay extends React.Component {
- cancelPay = () => {
- axios({
- /* ... Omitted ... */
- }).then(response => { // If refund is successful
- alert("Refund successful");
- }).catch(error => { // If refund fails
- alert("Refund failed");
- });
- }
- ...
- render() {
- return ;
- }
-}
-```
-
-
+
+ ```html title="client-side"
+
+
+
+ ```
+
+
+
+ ```tsx title="client-side"
+ class CancelPay extends React.Component {
+ cancelPay = () => {
+ axios({
+ /* ... Omitted ... */
+ })
+ .then((response) => {
+ // If refund is successful
+ alert("Refund successful");
+ })
+ .catch((error) => {
+ // If refund fails
+ alert("Refund failed");
+ });
+ };
+ render() {
+ return ;
+ }
+ }
+ ```
+
diff --git a/src/content/docs/en/auth/guide-2/refund.mdx b/src/content/docs/en/auth/guide-2/refund.mdx
index 871f8d3bd..6ace37b4a 100644
--- a/src/content/docs/en/auth/guide-2/refund.mdx
+++ b/src/content/docs/en/auth/guide-2/refund.mdx
@@ -6,84 +6,91 @@ description: Request a refund for a virtual account payment.
import Figure from "~/components/Figure.astro";
import Hint from "~/components/Hint.astro";
-### For a virtual account refund, you must sign up for the v**irtual account special service** provided by each PG.
+For a virtual account refund, you must sign up for the **virtual account special service**
+provided by each PG.
-**Why do you need to sign up for a virtual account special service?**
+ **Why do you need to sign up for a virtual account special service?**
-Unlike credit cards, fees for payment/refund are not subject to refund for virtual account refund. For example, for a 10,000 won payment, the merchant:
+ Unlike credit cards, fees for payment/refund are not subject to refund for virtual account refund. For example, for a 10,000 won payment, the merchant:
-- receives 9700 won (10,000 won - virtual account issuance fee of 300 won) from the PG at the time of payment.
-- pays 10,300 won (10,000 won to be refunded + 300 won remittance fee for the refund account) to the PG company when the payment is refunded.
-
-To prevent confusion that may arise regarding fees for virtual account refund, PGs provide **virtual account refunds only to merchants who are signed up for the virtual account special service**.
+ - receives 9700 won (10,000 won - virtual account issuance fee of 300 won) from the PG at the time of payment.
+ - pays 10,300 won (10,000 won to be refunded + 300 won remittance fee for the refund account) to the PG company when the payment is refunded.
+ To prevent confusion that may arise regarding fees for virtual account refund, PGs provide **virtual account refunds only to merchants who are signed up for the virtual account special service**.
-Since a virtual account transaction involves a one-way payment method, the target account for refund is unknown. Hence, you must specify the following refund account information in addition to the refund amount.
+Since a virtual account transaction involves a one-way payment method,
+the target account for refund is unknown.
+Hence, you must specify the following refund account information in addition to the refund amount.
- `refund_holder`: Refund account holder's name
- `refund_account`: Refund account number
- `refund_bank`: Refund account bank code
-**Note - Virtual account bank codes by PG**
-
-Since the **virtual account bank code** varies by PG even for the same bank, be sure to check the [**Bank codes by PG**](../../tips/bank-codes-by-pg) list.
+ **Note - Virtual account bank codes by PG**
+ Since the **virtual account bank code** varies by PG even for the same bank, be sure to check the [**Bank codes by PG**](../../tips/bank-codes-by-pg) list.
-#### The following example requests for a virtual account refund.
-
-```javascript title="Node.js"
- /* ... Omitted ... */
- app.post('/payments/cancel', async (req, res, next) => {
- try {
- /* Get access token */
+The following example requests for a virtual account refund.
+
+```ts title="Node.js"
+/* ... Omitted ... */
+app.post("/payments/cancel", async (req, res, next) => {
+ try {
+ /* Get access token */
+ /* ... Omitted ... */
+ /* Get payment information */
+ const { body } = req;
+ const {
+ merchant_uid,
+ reason,
+ cancel_request_amount,
+ refund_holder,
+ refund_bank,
+ refund_account,
+ } = body; // Order ID from the client, reason for refund, refund amount, virtual accoun info (account holder, account number, bank code
+ Payments.find({ merchant_uid }, async function (err, payment) {
/* ... Omitted ... */
- /* Get payment information */
- const { body } = req;
- const { merchant_uid, reason, cancel_request_amount, refund_holder, refund_bank, refund_account } = body; // Order ID from the client, reason for refund, refund amount, virtual accoun info (account holder, account number, bank code
- Payments.find({ merchant_uid }, async function(err, payment) {
- /* ... Omitted ... */
- const paymentData = payment[0]; // Save payment information
- const { imp_uid, amount, cancel_amount } = paymentData; // Get imp_uid, amount(paid amount), cancel_amount(total refund amount) from payment information
- const cancelableAmount = amount - cancel_amount; // Refundable amount (= paid amount - total refund amount)
- if (cancelableAmount <= 0) { // If refundable amount is 0
- return res.status(400).json({ message: "This order has already been fully refunded." });
- }
- ...
- /* Call i'mport REST API to request refund */
- const getCancelData = await axios({
- url: "https://api.iamport.kr/payments/cancel",
- method: "post",
- headers: {
- "Content-Type": "application/json",
- "Authorization": access_token // Access token from i'mport server
- },
- data: {
- reason, // Reason for refund from client
- imp_uid, // Unique key for refund
- amount: cancel_request_amount, // Requested refund amount
- checksum: cancelableAmount, // [Recommended] refundable amount
- refund_holder, // [required when refunding virtual account payment] refund account holder's name
- refund_bank, // [required for virtual account refund] refund account bank code (e.g. Shinhan Bank is 88 for KG Inicis)
- refund_account // [required for virtual account refund] refund account number
- }
- });
- const { response } = getCancelData.data; // Refund result
- /* Save refund result */
- ...
+ const paymentData = payment[0]; // Save payment information
+ const { imp_uid, amount, cancel_amount } = paymentData; // Get imp_uid, amount(paid amount), cancel_amount(total refund amount) from payment information
+ const cancelableAmount = amount - cancel_amount; // Refundable amount (= paid amount - total refund amount)
+ if (cancelableAmount <= 0) {
+ // If refundable amount is 0
+ return res
+ .status(400)
+ .json({ message: "This order has already been fully refunded." });
+ }
+ /* Call i'mport REST API to request refund */
+ const getCancelData = await axios({
+ url: "https://api.iamport.kr/payments/cancel",
+ method: "post",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: access_token, // Access token from i'mport server
+ },
+ data: {
+ reason, // Reason for refund from client
+ imp_uid, // Unique key for refund
+ amount: cancel_request_amount, // Requested refund amount
+ checksum: cancelableAmount, // [Recommended] refundable amount
+ refund_holder, // [required when refunding virtual account payment] refund account holder's name
+ refund_bank, // [required for virtual account refund] refund account bank code (e.g. Shinhan Bank is 88 for KG Inicis)
+ refund_account, // [required for virtual account refund] refund account number
+ },
});
- } catch (error) {
- res.status(400).send(error);
- }
- });
+ const { response } = getCancelData.data; // Refund result
+ /* Save refund result */
+ });
+ } catch (error) {
+ res.status(400).send(error);
+ }
+});
```
-If the virtual account refund request is successful, the refund amount will be deposited (from PG) into the specified refund account normally in about one working day.
+If the virtual account refund request is successful, the refund amount will be deposited (from PG)
+into the specified refund account normally in about one working day.
-
+
diff --git a/src/content/docs/en/auth/guide/1.mdx b/src/content/docs/en/auth/guide/1.mdx
index 5273dd300..e447baf7e 100644
--- a/src/content/docs/en/auth/guide/1.mdx
+++ b/src/content/docs/en/auth/guide/1.mdx
@@ -8,7 +8,7 @@ description: >-
import Youtube from "~/components/gitbook/Youtube.astro";
import Hint from "~/components/Hint.astro";
-#### Add the following JS library to the client-side page for payment integration.
+Add the following JS library to the client-side page for payment integration.
You must first install **jQuery 1.0 or later version**.
diff --git a/src/content/docs/en/auth/guide/2.mdx b/src/content/docs/en/auth/guide/2.mdx
index 8fa2ce4f2..c01c5da6e 100644
--- a/src/content/docs/en/auth/guide/2.mdx
+++ b/src/content/docs/en/auth/guide/2.mdx
@@ -7,20 +7,20 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Hint from "~/components/Hint.astro";
-#### On the checkout page, initialize the IMP object using your [Merchant ID](../../ready/3.).
+On the checkout page, initialize the IMP object using your [Merchant ID](../../ready/3.).
- ```javascript title="Client-side"
- var IMP = window.IMP; // Can be omitted
- IMP.init("Merchant ID"); // Example: imp00000000
+ ```ts title="Client-side"
+ const IMP = window.IMP; // Can be omitted
+ IMP.init("Merchant ID"); // Example: imp00000000
```
- ```javascript title="Client-side"
- const IMP = window.IMP; // Can be omitted
- IMP.init("{Merchant ID}"); // Example: imp00000000a
+ ```ts title="Client-side"
+ const IMP = window.IMP; // Can be omitted
+ IMP.init("{Merchant ID}"); // Example: imp00000000a
```
diff --git a/src/content/docs/en/auth/guide/3.mdx b/src/content/docs/en/auth/guide/3.mdx
index cf06e1972..aa2d46999 100644
--- a/src/content/docs/en/auth/guide/3.mdx
+++ b/src/content/docs/en/auth/guide/3.mdx
@@ -16,41 +16,39 @@ the first argument of the **request\_pay** function.
- ```javascript
-
+ },
+ );
```
- ```jsx
- class RequestPay extends React.Component {
- requestPay = () => {
- IMP.request_pay({ // param
+ ```tsx
+ export class RequestPay extends React.Component {
+ requestPay = () => {
+ IMP.request_pay(
+ {
+ // param
pg: "kcp",
pay_method: "card",
merchant_uid: "ORD20180131-0000011",
@@ -60,54 +58,53 @@ the first argument of the **request\_pay** function.
buyer_name: "Hong Gildong",
buyer_tel: "010-4242-4242",
buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
- buyer_postcode: "01181"
- }, rsp => { // callback
+ buyer_postcode: "01181",
+ },
+ (rsp) => {
+ // callback
if (rsp.success) {
- ...,
// Payment is successful
- ...
} else {
- ...,
// Payment failed
- ...
}
- });
- }
+ },
+ );
+ };
+ }
```
- ```javascript
-
+ ```ts
+ export default {
+ methods: {
+ requestPay: function () {
+ IMP.request_pay(
+ {
+ // param
+ pg: "kcp",
+ pay_method: "card",
+ merchant_uid: "ORD20180131-0000011",
+ name: "Norway swivel chair",
+ amount: 64900,
+ buyer_email: "gildong@gmail.com",
+ buyer_name: "Hong Gildong",
+ buyer_tel: "010-4242-4242",
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "01181",
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // Payment is successful
+ } else {
+ // Payment failed
+ }
+ },
+ );
+ },
+ },
+ };
```
@@ -115,11 +112,11 @@ the first argument of the **request\_pay** function.
**Note - Creating an order ID (merchant\_uid)**
- - The order number must always be assigned a **unique** **value** when the payment window is requested.
+ - The order number must always be assigned a **unique value** when the payment window is requested.
- After the payment process is complete, the server uses the order ID to retrieve the order information for **payment fraud check**. Be sure to create a **unique ID** on the merchant server and **store it in the DB**.
-#### The following is the above sample code with the Pay button added.
+The following is the above sample code with the Pay button added.
```html title="sample.html"
diff --git a/src/content/docs/en/auth/guide/4/iframe.mdx b/src/content/docs/en/auth/guide/4/iframe.mdx
index caa36d444..dac52015e 100644
--- a/src/content/docs/en/auth/guide/4/iframe.mdx
+++ b/src/content/docs/en/auth/guide/4/iframe.mdx
@@ -15,7 +15,8 @@ import Hint from "~/components/Hint.astro";
-#### Most payments that are processed in the PC environment can receive payment results through the callback function, which is the second argument of the request\_pay() function.
+Most payments that are processed in the PC environment can receive payment results
+through the callback function, which is the second argument of the request\_pay() function.
For **PayPal** payments, the payment window is loaded as a **pop-up (new window)** in a PC environment and you can also receive the payment result through **m\_redirect\_url**.
@@ -26,36 +27,47 @@ import Hint from "~/components/Hint.astro";
- ```javascript title="client-side"
- IMP.request_pay({
- /* ...Omitted... */
- }, function (rsp) { // callback
- if (rsp.success) { // payment successful: payment accepted or virtual account issued
- // HTTP request with jQuery
- jQuery.ajax({
- url: "{Merchant endpoint that receives server's payment info}",
- method: "POST",
- headers: { "Content-Type": "application/json" },
- data: {
- imp_uid: rsp.imp_uid, // Payment ID
- merchant_uid: rsp.merchant_uid // Order ID
- }
- }).done(function (data) {
- // Merchant server payment API call is successful
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
+ /* ...Omitted... */
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // payment successful: payment accepted or virtual account issued
+ // HTTP request with jQuery
+ jQuery
+ .ajax({
+ url: "{Merchant endpoint that receives server's payment info}",
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ data: {
+ imp_uid: rsp.imp_uid, // Payment ID
+ merchant_uid: rsp.merchant_uid, // Order ID
+ },
})
- } else {
- alert("Payment failed. Error: " + rsp.error_msg);
- }
- });
+ .done(function (data) {
+ // Merchant server payment API call is successful
+ console.log(data);
+ });
+ } else {
+ alert("Payment failed. Error: " + rsp.error_msg);
+ }
+ },
+ );
```
- ```javascript title="client-side"
- IMP.request_pay({
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
/* ...Omitted... */
- }, rsp => { // callback
- if (rsp.success) {
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
// HTTP request with axios
axios({
url: "{Endpoint that receives server's payment info}",
@@ -63,15 +75,17 @@ import Hint from "~/components/Hint.astro";
headers: { "Content-Type": "application/json" },
data: {
imp_uid: rsp.imp_uid,
- merchant_uid: rsp.merchant_uid
- }
+ merchant_uid: rsp.merchant_uid,
+ },
}).then((data) => {
// Server payment API call is successful
- })
+ console.log(data);
+ });
} else {
- alert(\`Payment failed. Error: \${rsp.error_msg}\`);
+ alert(`Payment failed. Error: ${rsp.error_msg}`);
}
- });
+ },
+ );
```
@@ -85,5 +99,6 @@ above.
> For information about the response parameter passed to the **callback** function, refer to [**rsp**](../../../sdk/javascript-sdk/undefined-1).
- The final payment result logic processing must be handled stably by using a [**webhook**](../../../result/webhook). If you don't set up a webhook, you may fail to receive the payment result.
+ The final payment result logic processing must be handled stably by using a [**webhook**](../../../result/webhook).
+ If you don't set up a webhook, you may fail to receive the payment result.
diff --git a/src/content/docs/en/auth/guide/4/redirect.mdx b/src/content/docs/en/auth/guide/4/redirect.mdx
index 822f9876a..4e4d4c695 100644
--- a/src/content/docs/en/auth/guide/4/redirect.mdx
+++ b/src/content/docs/en/auth/guide/4/redirect.mdx
@@ -9,7 +9,6 @@ import ContentRef from "~/components/gitbook/ContentRef.astro";
import Swagger from "~/components/gitbook/swagger/Swagger.astro";
import SwaggerDescription from "~/components/gitbook/swagger/SwaggerDescription.astro";
import SwaggerParameter from "~/components/gitbook/swagger/SwaggerParameter.astro";
-import SwaggerResponse from "~/components/gitbook/swagger/SwaggerResponse.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Hint from "~/components/Hint.astro";
@@ -22,25 +21,30 @@ import Hint from "~/components/Hint.astro";
- ```javascript title="client-side"
- IMP.request_pay({
- /* ...Omitted... */,
- m_redirect_url: "{redirect URL}"
- }, /* callback */); // callback is not called
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
+ /* ...Omitted... */
+ m_redirect_url: "{redirect URL}",
+ } /* callback */,
+ ); // callback is not called
```
- ```javascript title="client-side"
- IMP.request_pay({
- /* ...Omitted... */,
- m_redirect_url: "{redirect URL}"
- }, /* callback */); // callback is not called
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
+ /* ...Omitted... */
+ m_redirect_url: "{redirect URL}",
+ } /* callback */,
+ ); // callback is not called
```
-If **m\_redirect\_url** is specified as the **request\_pay** function parameter as above, the payment result is sent to the URL address in the form of a query string after **payment is completed**.
+If **m\_redirect\_url** is specified as the **request\_pay** function parameter as above,
+the payment result is sent to the URL address in the form of a query string after **payment is completed**.
**What is a query string?**
@@ -53,9 +57,9 @@ If **m\_redirect\_url** is specified as the **request\_pay** function parameter
You can receive the following parameters through the specified URL as a query string.
- ### Parameters
+ ## Parameters
- #### Query
+ ### Query
i'mport payment ID
@@ -80,13 +84,13 @@ The following is an example of a redirecting URL based on the query string.
- ```url
+ ```sh
curl https://myservice.com/payments/complete?imp_uid=unique_iamport_paymentID&merchant_uid=unique_merchant_orderID&imp_success=true
```
- ```
+ ```sh
curl https://myservice.com/payments/complete?imp_uid=unique_iamport_paymentID&merchant_uid=unique_merchant_orderID&imp_success=false&error_code=error_code(none_defined_currently)&error_msg=error_message
```
@@ -105,16 +109,26 @@ The following is an example of a redirecting URL based on the query string.
> The `payment process is complete` when:
>
> 1. **Payment is successful** (Status: `paid`, imp\_success: `true`)
+>
> 2. **Payment fails** (Status: `failed`, imp\_success: `false`)
+>
> 3. **Payment window fails to open** due to PG module setting error
+>
> 4. User **terminates the payment process** by clicking the X or Cancel button
-> 5. **Payment is suspended** due to invalid card information, limit exceeded, insufficient balance, etc.
+>
+> 5. **Payment is suspended** due to invalid card information,
+> limit exceeded, insufficient balance, etc.
+>
> 6. **Virtual account is issued** (status: `ready`, imp\_success: `true`)
**Note - imp\_success parameter**
- The `imp_success` parameter indicates **whether or not the payment process completed successfully**. However, since the payment page is opened by calling a JavaScript function from the client-side, **the payment amount can be forged** by a malicious user. Hence, **this value should not be used to determine the success of the payment**. Depending on the value of `imp_success`, determine the payment success as follows:
+ The `imp_success` parameter indicates **whether or not the payment process completed successfully**.
+ However, since the payment page is opened by calling a JavaScript function from the client-side,
+ **the payment amount can be forged** by a malicious user.
+ Hence, **this value should not be used to determine the success of the payment**.
+ Depending on the value of `imp_success`, determine the payment success as follows:
- imp\_success = true: First send payment information (imp\_uid, merchant\_uid) to the server to verify the payment amount, and then finalize payment success.
- imp\_success = false: Alert the user that the payment failed.
diff --git a/src/content/docs/en/auth/guide/5.mdx b/src/content/docs/en/auth/guide/5.mdx
index 7489452cb..d12d952e8 100644
--- a/src/content/docs/en/auth/guide/5.mdx
+++ b/src/content/docs/en/auth/guide/5.mdx
@@ -10,24 +10,27 @@ import Hint from "~/components/Hint.astro";
Based on the payment information from the client, the server verifies the **payment amount for fraud** and saves the payment information in the database if needed. The following are the steps for verifying the payment information.
- Server receives the i'mport payment ID (**imp\_uid**) and order ID (**merchant\_uid**)
+
- Call the [**Get payment API**](https://api.iamport.kr/#!/payments/getPaymentByImpUid) to get the
payment details.
+
- Based on the response, compare the actual payment amount with the payment request amount (from
merchant's database).
-### **STEP 01** Server receives payment result
+## **STEP 01** Server receives payment result
Example of receiving a POST request to the merchant endpoint URL that receives the payment information
- ```javascript title="server-side"
+ ```ts title="server-side"
app.use(bodyParser.json());
// "{Merchant endpoint that receives server's payment info}" POST request receiver
app.post("/payments/complete", async (req, res) => {
try {
// Get imp_uid, merchant_uid from req.body
const { imp_uid, merchant_uid } = req.body;
+ console.log(imp_uid, merchant_uid);
} catch (e) {
res.status(400).send(e);
}
@@ -42,41 +45,40 @@ Based on the payment information from the client, the server verifies the
Example of calling the [**Get payment**](https://api.iamport.kr/#!/payments/getPaymentByImpUid) **API** with the i'mport **payment ID (imp\_uid)** to retrieve the payment info.
- ```javascript title="server-side"
+ ```ts title="server-side"
app.use(bodyParser.json());
- ...
- app.post("/payments/complete", async (req, res) => {
- try {
- // Get imp_uid, merchant_uid from req.body
- const { imp_uid, merchant_uid } = req.body;
- ...
- // Get access token
- const getToken = await axios({
- url: "https://api.iamport.kr/users/getToken",
- method: "post", // POST method
- headers: { "Content-Type": "application/json" },
- data: {
- imp_key: "imp_apikey", // REST API key
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f" // REST API Secret
- }
- });
- const { access_token } = getToken.data.response; // access token
- ...
- // Get payment info from i'mport server using imp_uid
- const getPaymentData = await axios({
- // Pass imp_uid
- url: \`https://api.iamport.kr/payments/\${imp_uid}\`,
- // GET method
- method: "get",
- // Add access toke to Authorization header
- headers: { "Authorization": access_token }
- });
- const paymentData = getPaymentData.data.response; // Payment info
- ...
- } catch (e) {
- res.status(400).send(e);
- }
+ app.post("/payments/complete", async (req, res) => {
+ try {
+ // Get imp_uid, merchant_uid from req.body
+ const { imp_uid, merchant_uid } = req.body;
+ console.log(imp_uid, merchant_uid);
+ // Get access token
+ const getToken = await axios({
+ url: "https://api.iamport.kr/users/getToken",
+ method: "post", // POST method
+ headers: { "Content-Type": "application/json" },
+ data: {
+ imp_key: "imp_apikey", // REST API key
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f", // REST API Secret
+ },
+ });
+ const { access_token } = getToken.data.response; // access token
+ // Get payment info from i'mport server using imp_uid
+ const getPaymentData = await axios({
+ // Pass imp_uid
+ url: `https://api.iamport.kr/payments/${imp_uid}`,
+ // GET method
+ method: "get",
+ // Add access toke to Authorization header
+ headers: { Authorization: access_token },
});
+ const paymentData = getPaymentData.data.response; // Payment info
+ console.log(paymentData);
+ } catch (e) {
+ res.status(400).send(e);
+ }
+ });
```
@@ -99,49 +101,60 @@ Based on the payment information from the client, the server verifies the
Example of comparing the actual payment amount with the payment request amount, performing fraud check on the payment amount, and saving the data in the DB.
- ```javascript title="server-side"
+ ```ts title="server-side"
app.use(bodyParser.json());
- ...
- app.post("/payments/complete", async (req, res) => {
- try {
- // Get imp_uid, merchant_uid from req.body
- const { imp_uid, merchant_uid } = req.body;
- // Get access token
- /* ...Omitted... */
- // Get payment info from iamport server using imp_uid
- /* ...Omitted... */
- const paymentData = getPaymentData.data.response; // Payment info
- ...
- // Get the requested payment amount from the DB
- const order = await Orders.findById(paymentData.merchant_uid);
- const amountToBePaid = order.amount; // Requested payment amount
- ...
- // Verify payment
- const { amount, status } = paymentData;
- // If amount matches. Processed amount === Requested amount
- if (amount === amountToBePaid) {
- await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData }); // Save payment info to DB
- ...
- switch (status) {
- case "ready": // Issue virtual account
- // Save virtual account info in DB
- const { vbank_num, vbank_date, vbank_name } = paymentData;
- await Users.findByIdAndUpdate("/* customer id */", { $set: { vbank_num, vbank_date, vbank_name }});
- // Send virtual account issuance text message
- SMS.send({ text: \`Virtual account issued successfully. Account info \${vbank_num} \${vbank_date} \${vbank_name}\`});
- res.send({ status: "vbankIssued", message: "Virtual account issued successfully" });
- break;
- case "paid": // Payment complete
- res.send({ status: "success", message: "General payment successful" });
- break;
- }
- } else { // Amount mismatch. Forged/falsified payment.
- throw { status: "forgery", message: "Forged/falsified payment attempted" };
+ app.post("/payments/complete", async (req, res) => {
+ try {
+ // Get imp_uid, merchant_uid from req.body
+ const { imp_uid, merchant_uid } = req.body;
+ console.log(imp_uid, merchant_uid);
+ // Get access token
+ /* ...Omitted... */
+ // Get payment info from iamport server using imp_uid
+ /* ...Omitted... */
+ const paymentData = getPaymentData.data.response; // Payment info
+ // Get the requested payment amount from the DB
+ const order = await Orders.findById(paymentData.merchant_uid);
+ const amountToBePaid = order.amount; // Requested payment amount
+ // Verify payment
+ const { amount, status } = paymentData;
+ // If amount matches. Processed amount === Requested amount
+ if (amount === amountToBePaid) {
+ await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData }); // Save payment info to DB
+ switch (status) {
+ case "ready": // Issue virtual account
+ // Save virtual account info in DB
+ const { vbank_num, vbank_date, vbank_name } = paymentData;
+ await Users.findByIdAndUpdate("/* customer id */", {
+ $set: { vbank_num, vbank_date, vbank_name },
+ });
+ // Send virtual account issuance text message
+ SMS.send({
+ text: `Virtual account issued successfully. Account info ${vbank_num} ${vbank_date} ${vbank_name}`,
+ });
+ res.send({
+ status: "vbankIssued",
+ message: "Virtual account issued successfully",
+ });
+ break;
+ case "paid": // Payment complete
+ res.send({
+ status: "success",
+ message: "General payment successful",
+ });
+ break;
}
- } catch (e) {
- res.status(400).send(e);
+ } else {
+ // Amount mismatch. Forged/falsified payment.
+ throw {
+ status: "forgery",
+ message: "Forged/falsified payment attempted",
+ };
}
- });
+ } catch (e) {
+ res.status(400).send(e);
+ }
+ });
```
diff --git a/src/content/docs/en/auth/guide/6.mdx b/src/content/docs/en/auth/guide/6.mdx
index 9dd2dd4f6..b04751481 100644
--- a/src/content/docs/en/auth/guide/6.mdx
+++ b/src/content/docs/en/auth/guide/6.mdx
@@ -16,55 +16,69 @@ following example.
- ```javascript title="client-side"
- IMP.request_pay({
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
/* ...Omitted... */
- }, function (rsp) { // callback
- if (rsp.success) { // payment successful: payment accepted or virtual account issued
- // jQuery HTTP request
- jQuery.ajax({
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // payment successful: payment accepted or virtual account issued
+ // jQuery HTTP request
+ jQuery
+ .ajax({
/* ...Omitted... */
- }).done(function(data) { // response processing
- switch(data.status) {
- case: "vbankIssued":
+ })
+ .done(function (data) {
+ // response processing
+ switch (data.status) {
+ case "vbankIssued":
// Virtual account issued
break;
- case: "success":
+ case "success":
// Payment successful
break;
}
});
} else {
- alert("Payment failed. Error message: " + rsp.error_msg);
+ alert("Payment failed. Error message: " + rsp.error_msg);
}
- });
+ },
+ );
```
- ```javascript title="client-side"
- IMP.request_pay({
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
/* ...Omitted... */
- }, rsp => { // callback
- if (rsp.success) { // payment successful: payment accepted or virtual account issued
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // payment successful: payment accepted or virtual account issued
// axios HTTP request
axios({
/* ...Omitted... */
- }).then((data) => { // Response processing
- switch(data.status) {
- case: "vbankIssued":
+ }).then((data) => {
+ // Response processing
+ switch (data.status) {
+ case "vbankIssued":
// Virtual account issued
break;
- case: "success":
+ case "success":
// Payment successful
break;
}
});
} else {
- alert(\`Payment failed. Error message: \${rsp.error_msg}\`);
+ alert(`Payment failed. Error message: ${rsp.error_msg}`);
}
- });
+ },
+ );
```
diff --git a/src/content/docs/en/auth/guide/def.mdx b/src/content/docs/en/auth/guide/def.mdx
index e3deb6c30..c70a2726b 100644
--- a/src/content/docs/en/auth/guide/def.mdx
+++ b/src/content/docs/en/auth/guide/def.mdx
@@ -19,7 +19,8 @@ authentication result.
Communication for a live payment request is made directly between the merchant server and the PG server, and card information is not used in the payment request process.
-#### Authenticated payment is traditionally categorized into the following two types based on the authentication method.
+Authenticated payment is traditionally categorized into the followingtwo types
+based on the authentication method.
- ISP: authenticates pre-registered card information through a public key-based digital certificate
- MPI: authenticates card information by entering the card number, CVC, and secure click password.
@@ -29,4 +30,4 @@ to pre-register a credit card and use the **6-digit payment password** to easily
-#### You can easily integrate authenticated payment through i'mport!
+You can easily integrate authenticated payment through i'mport!
diff --git a/src/content/docs/en/auth/guide/readme.mdx b/src/content/docs/en/auth/guide/readme.mdx
index 8aae9ffd1..ed0c60b7f 100644
--- a/src/content/docs/en/auth/guide/readme.mdx
+++ b/src/content/docs/en/auth/guide/readme.mdx
@@ -23,7 +23,8 @@ authentication result.
Communication for a live payment request is made directly between the merchant server and the PG server, and card information is not used in the payment request process.
-#### Authenticated payment is traditionally categorized into the following two types based on the authentication method.
+Authenticated payment is traditionally categorized into the following two types
+based on the authentication method.
- ISP: authenticates pre-registered card information through a public key-based digital certificate
- MPI: authenticates card information by entering the card number, CVC, and secure click password.
@@ -33,7 +34,7 @@ to pre-register a credit card and use the **6-digit payment password** to easily
-#### You can easily integrate authenticated payments through i'mport!
+You can easily integrate authenticated payments through i'mport!
## 1. Add i'mport library
@@ -58,20 +59,20 @@ Add the JS library to your checkout page.
## 2. Initialize IMP object
-#### On the checkout page, initialize the IMP object using your [Merchant ID](../../ready/3.).
+On the checkout page, initialize the IMP object using your [Merchant ID](../../ready/3.).
- ```javascript title="Client-side"
- var IMP = window.IMP; // Can be omitted
- IMP.init("Merchant ID"); // Example: imp00000000
+ ```ts title="Client-side"
+ const IMP = window.IMP; // Can be omitted
+ IMP.init("Merchant ID"); // Example: imp00000000
```
- ```javascript title="Client-side"
- const IMP = window.IMP; // Can be omitted
- IMP.init("{Merchant ID}"); // Example: imp00000000a
+ ```ts title="Client-side"
+ const IMP = window.IMP; // Can be omitted
+ IMP.init("{Merchant ID}"); // Example: imp00000000a
```
@@ -89,41 +90,39 @@ the first argument of the **request\_pay** function.
- ```javascript
-
+ },
+ );
```
- ```jsx
- class RequestPay extends React.Component {
- requestPay = () => {
- IMP.request_pay({ // param
+ ```tsx
+ export class RequestPay extends React.Component {
+ requestPay = () => {
+ IMP.request_pay(
+ {
+ // param
pg: "kcp",
pay_method: "card",
merchant_uid: "ORD20180131-0000011",
@@ -133,54 +132,53 @@ the first argument of the **request\_pay** function.
buyer_name: "Hong Gildong",
buyer_tel: "010-4242-4242",
buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
- buyer_postcode: "01181"
- }, rsp => { // callback
+ buyer_postcode: "01181",
+ },
+ (rsp) => {
+ // callback
if (rsp.success) {
- ...,
// Payment is successful
- ...
} else {
- ...,
// Payment failed
- ...
}
- });
- }
+ },
+ );
+ };
+ }
```
- ```javascript
-
+ ```ts
+ export default {
+ methods: {
+ requestPay: function () {
+ IMP.request_pay(
+ {
+ // param
+ pg: "kcp",
+ pay_method: "card",
+ merchant_uid: "ORD20180131-0000011",
+ name: "Norway swivel chair",
+ amount: 64900,
+ buyer_email: "gildong@gmail.com",
+ buyer_name: "Hong Gildong",
+ buyer_tel: "010-4242-4242",
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "01181",
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // Payment is successful
+ } else {
+ // Payment failed
+ }
+ },
+ );
+ },
+ },
+ };
```
@@ -188,11 +186,11 @@ the first argument of the **request\_pay** function.
**Note - Creating an order ID (merchant\_uid)**
- - The order number must always be assigned a **unique** **value** each time the payment window is requested.
+ - The order number must always be assigned a **unique value** each time the payment window is requested.
- After the payment process is complete, the server uses the order ID to retrieve the order information for **payment fraud check**. Be sure to create a **unique ID** on the merchant server and **store it in the DB**.
-#### The following is the above sample code with the Pay button added.
+The following is the above sample code with the Pay button added.
```html title="sample.html"
@@ -263,7 +261,8 @@ the payment window type as follows:
-#### Most payments that are processed in the PC environment can receive payment results through the callback function, which is the second argument of the request\_pay() function.
+Most payments that are processed in the PC environment can receive payment results
+through the callback function, which is the second argument of the request\_pay() function.
For **PayPal** payments, the payment window is loaded as a **pop-up (new window)** in a PC environment and you can also receive the payment result through **m\_redirect\_url**.
@@ -274,36 +273,47 @@ the payment window type as follows:
- ```javascript title="client-side"
- IMP.request_pay({
- /* ...Omitted... */
- }, function (rsp) { // callback
- if (rsp.success) { // payment successful: payment accepted or virtual account issued
- // HTTP request with jQuery
- jQuery.ajax({
- url: "{Merchant endpoint that receives server's payment info}",
- method: "POST",
- headers: { "Content-Type": "application/json" },
- data: {
- imp_uid: rsp.imp_uid, // Payment ID
- merchant_uid: rsp.merchant_uid // Order ID
- }
- }).done(function (data) {
- // Merchant server payment API call is successful
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
+ /* ...Omitted... */
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // payment successful: payment accepted or virtual account issued
+ // HTTP request with jQuery
+ jQuery
+ .ajax({
+ url: "{Merchant endpoint that receives server's payment info}",
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ data: {
+ imp_uid: rsp.imp_uid, // Payment ID
+ merchant_uid: rsp.merchant_uid, // Order ID
+ },
})
- } else {
- alert("Payment failed. Error: " + rsp.error_msg);
- }
- });
+ .done(function (data) {
+ // Merchant server payment API call is successful
+ console.log(data);
+ });
+ } else {
+ alert("Payment failed. Error: " + rsp.error_msg);
+ }
+ },
+ );
```
- ```javascript title="client-side"
- IMP.request_pay({
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
/* ...Omitted... */
- }, rsp => { // callback
- if (rsp.success) {
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
// HTTP request with axios
axios({
url: "{Endpoint that receives server's payment info}",
@@ -311,15 +321,17 @@ the payment window type as follows:
headers: { "Content-Type": "application/json" },
data: {
imp_uid: rsp.imp_uid,
- merchant_uid: rsp.merchant_uid
- }
+ merchant_uid: rsp.merchant_uid,
+ },
}).then((data) => {
// Server payment API call is successful
- })
+ console.log(data);
+ });
} else {
- alert(\`Payment failed. Error: \${rsp.error_msg}\`);
+ alert(`Payment failed. Error: ${rsp.error_msg}`);
}
- });
+ },
+ );
```
@@ -344,20 +356,26 @@ above.
- ```javascript title="client-side"
- IMP.request_pay({
- /* ...Omitted... */,
- m_redirect_url: "{redirect URL}"
- }, /* callback */); // callback is not called
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
+ /* ...Omitted... */
+ m_redirect_url: "{redirect URL}",
+ },
+ /* callback */
+ ); // callback is not called
```
- ```javascript title="client-side"
- IMP.request_pay({
- /* ...Omitted... */,
- m_redirect_url: "{redirect URL}"
- }, /* callback */); // callback is not called
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
+ /* ...Omitted... */
+ m_redirect_url: "{redirect URL}",
+ },
+ /* callback */
+ ); // callback is not called
```
@@ -369,13 +387,13 @@ The following is an example of redirecting URL based on the query string.
- ```url
+ ```sh
curl https://myservice.com/payments/complete?imp_uid=unique_iamport_paymentID&merchant_uid=unique_merchant_orderID&imp_success=true
```
- ```
+ ```sh
curl https://myservice.com/payments/complete?imp_uid=unique_iamport_paymentID&merchant_uid=unique_merchant_orderID&imp_success=false&error_code=error_code(none_defined_currently)&error_msg=error_message
```
@@ -398,19 +416,28 @@ The following is an example of redirecting URL based on the query string.
> The `payment process is complete` when:
>
> 1. **Payment is successful** (Status: `paid`, imp\_success: `true`)
+>
> 2. **Payment fails** (Status: `failed`, imp\_success: `false`)
+>
> 3. **Payment window fails to open** due to PG module setting error
+>
> 4. User **terminates the payment process** by clicking the X or Cancel button
-> 5. **Payment is suspended** due to invalid card information, limit exceeded, insufficient balance, etc.
+>
+> 5. **Payment is suspended** due to invalid card information,
+> limit exceeded, insufficient balance, etc.
+>
> 6. **Virtual account is issued** (status: `ready`, imp\_success: `true`)
- The final payment result logic processing must be handled stably by using a [**webhook**](../../result/webhook). If you don't set up a webhook, you may fail to receive the payment result.
+ The final payment result logic processing must be handled stably by using a [**webhook**](../../result/webhook).
+ If you don't set up a webhook, you may fail to receive the payment result.
## 5. Verify payment information
-Based on the payment information from the client, the server verifies the **payment amount for fraud** and saves the payment information in the database if needed. The following are the steps for verifying the payment information.
+Based on the payment information from the client, the server verifies the **payment amount for fraud**
+and saves the payment information in the database if needed.
+The following are the steps for verifying the payment information.
- Server receives the i'mport payment ID (**imp\_uid**) and order ID (**merchant\_uid**)
@@ -426,7 +453,7 @@ Based on the payment information from the client, the server verifies the
Example of handling a POST request to the merchant endpoint URL that receives the payment information
- ```javascript title="server-side"
+ ```ts title="server-side"
app.use(bodyParser.json());
// "{Merchant endpoint that receives server's payment info}" POST request receiver
app.post("/payments/complete", async (req, res) => {
@@ -447,41 +474,38 @@ Based on the payment information from the client, the server verifies the
Example of calling the [**Get payment**](https://api.iamport.kr/#!/payments/getPaymentByImpUid) **API** with the i'mport **payment ID (imp\_uid)** to retrieve the payment info.
- ```javascript title="server-side"
+ ```ts title="server-side"
app.use(bodyParser.json());
- ...
- app.post("/payments/complete", async (req, res) => {
- try {
- // Get imp_uid, merchant_uid from req.body
- const { imp_uid, merchant_uid } = req.body;
- ...
- // Get access token
- const getToken = await axios({
- url: "https://api.iamport.kr/users/getToken",
- method: "post", // POST method
- headers: { "Content-Type": "application/json" },
- data: {
- imp_key: "imp_apikey", // REST API key
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f" // REST API Secret
- }
- });
- const { access_token } = getToken.data.response; // access token
- ...
- // Get payment info from i'mport server using imp_uid
- const getPaymentData = await axios({
- // Pass imp_uid
- url: \`https://api.iamport.kr/payments/\${imp_uid}\`,
- // GET method
- method: "get",
- // Add access toke to Authorization header
- headers: { "Authorization": access_token }
- });
- const paymentData = getPaymentData.data.response; // Payment info
- ...
- } catch (e) {
- res.status(400).send(e);
- }
+ app.post("/payments/complete", async (req, res) => {
+ try {
+ // Get imp_uid, merchant_uid from req.body
+ const { imp_uid, merchant_uid } = req.body;
+ // Get access token
+ const getToken = await axios({
+ url: "https://api.iamport.kr/users/getToken",
+ method: "post", // POST method
+ headers: { "Content-Type": "application/json" },
+ data: {
+ imp_key: "imp_apikey", // REST API key
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f", // REST API Secret
+ },
+ });
+ const { access_token } = getToken.data.response; // access token
+ // Get payment info from i'mport server using imp_uid
+ const getPaymentData = await axios({
+ // Pass imp_uid
+ url: `https://api.iamport.kr/payments/${imp_uid}`,
+ // GET method
+ method: "get",
+ // Add access toke to Authorization header
+ headers: { Authorization: access_token },
});
+ const paymentData = getPaymentData.data.response; // Payment info
+ } catch (e) {
+ res.status(400).send(e);
+ }
+ });
```
@@ -504,56 +528,66 @@ Based on the payment information from the client, the server verifies the
Example of comparing the actual payment amount and the payment request amount, performing fraud check on the payment amount, and saving the data in the DB.
- ```javascript title="server-side"
+ ```ts title="server-side"
app.use(bodyParser.json());
- ...
- app.post("/payments/complete", async (req, res) => {
- try {
- // Get imp_uid, merchant_uid from req.body
- const { imp_uid, merchant_uid } = req.body;
- // Get access token
- /* ...Omitted... */
- // Get payment info from iamport server using imp_uid
- /* ...Omitted... */
- const paymentData = getPaymentData.data.response; // Payment info
- ...
- // Get the requested payment amount from the DB
- const order = await Orders.findById(paymentData.merchant_uid);
- const amountToBePaid = order.amount; // Requested payment amount
- ...
- // Verify payment
- const { amount, status } = paymentData;
- // If amount matches. Processed amount === Requested amount
- if (amount === amountToBePaid) {
- await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData }); // Save payment info to DB
- ...
- switch (status) {
- case "ready": // Issue virtual account
- // Save virtual account info in DB
- const { vbank_num, vbank_date, vbank_name } = paymentData;
- await Users.findByIdAndUpdate("/* customer id */", { $set: { vbank_num, vbank_date, vbank_name }});
- // Send virtual account issuance text message
- SMS.send({ text: \`Virtual account issued successfully. Account info \${vbank_num} \${vbank_date} \${vbank_name}\`});
- res.send({ status: "vbankIssued", message: "Virtual account issued successfully" });
- break;
- case "paid": // Payment complete
- res.send({ status: "success", message: "General payment successful" });
- break;
- }
- } else { // Amount mismatch. Forged/falsified payment.
- throw { status: "forgery", message: "Forged/falsified payment attempted" };
+ app.post("/payments/complete", async (req, res) => {
+ try {
+ // Get imp_uid, merchant_uid from req.body
+ const { imp_uid, merchant_uid } = req.body;
+ // Get access token
+ /* ...Omitted... */
+ // Get payment info from iamport server using imp_uid
+ /* ...Omitted... */
+ const paymentData = getPaymentData.data.response; // Payment info
+ // Get the requested payment amount from the DB
+ const order = await Orders.findById(paymentData.merchant_uid);
+ const amountToBePaid = order.amount; // Requested payment amount
+ // Verify payment
+ const { amount, status } = paymentData;
+ // If amount matches. Processed amount === Requested amount
+ if (amount === amountToBePaid) {
+ await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData }); // Save payment info to DB
+ switch (status) {
+ case "ready": // Issue virtual account
+ // Save virtual account info in DB
+ const { vbank_num, vbank_date, vbank_name } = paymentData;
+ await Users.findByIdAndUpdate("/* customer id */", {
+ $set: { vbank_num, vbank_date, vbank_name },
+ });
+ // Send virtual account issuance text message
+ SMS.send({
+ text: `Virtual account issued successfully. Account info ${vbank_num} ${vbank_date} ${vbank_name}`,
+ });
+ res.send({
+ status: "vbankIssued",
+ message: "Virtual account issued successfully",
+ });
+ break;
+ case "paid": // Payment complete
+ res.send({
+ status: "success",
+ message: "General payment successful",
+ });
+ break;
}
- } catch (e) {
- res.status(400).send(e);
+ } else {
+ // Amount mismatch. Forged/falsified payment.
+ throw {
+ status: "forgery",
+ message: "Forged/falsified payment attempted",
+ };
}
- });
+ } catch (e) {
+ res.status(400).send(e);
+ }
+ });
```
The original requested amount is queried from the database with the **`merchant_uid`**, and the
actual processed amount is retrieved from the i'mport server with the **`imp_uid`**. The **two
-values are compared** to verify that they match. **If the verification is successful,
+values are compared** to verify that they match. **If the verification is successful,
the payment information is saved in the database** and a response is returned based on the payment
status (**`status`**). Otherwise, an error message is returned.
@@ -570,57 +604,69 @@ example.
- ```javascript title="client-side"
- IMP.request_pay({
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
/* ...Omitted... */
- }, function (rsp) { // callback
- if (rsp.success) { // payment successful: payment accepted or virtual account issued
- // jQuery HTTP request
- jQuery.ajax({
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // payment successful: payment accepted or virtual account issued
+ // jQuery HTTP request
+ jQuery
+ .ajax({
/* ...Omitted... */
- }).done(function(data) { // response processing
- switch(data.status) {
- case: "vbankIssued":
+ })
+ .done(function (data) {
+ // response processing
+ switch (data.status) {
+ case "vbankIssued":
// Virtual account issued
break;
- case: "success":
+ case "success":
// Payment successful
break;
}
});
} else {
- alert("Payment failed. Error message: " + rsp.error_msg);
+ alert("Payment failed. Error message: " + rsp.error_msg);
}
- });
+ },
+ );
```
- ```javascript title="client-side"
- IMP.request_pay({
+ ```ts title="client-side"
+ IMP.request_pay(
+ {
/* ...Omitted... */
- }, rsp => { // callback
- if (rsp.success) { // payment successful: payment accepted or virtual account issued
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // payment successful: payment accepted or virtual account issued
// axios HTTP request
axios({
/* ...Omitted... */
- }).then((data) => { // Response processing
- switch(data.status) {
- case: "vbankIssued":
+ }).then((data) => {
+ // Response processing
+ switch (data.status) {
+ case "vbankIssued":
// Virtual account issued
break;
- case: "success":
+ case "success":
// Payment successful
break;
}
});
} else {
- alert(\`Payment failed. Error message: \${rsp.error_msg}\`);
+ alert(`Payment failed. Error message: ${rsp.error_msg}`);
}
-
- });
-
+ },
+ );
```
@@ -633,6 +679,3 @@ payment complete message from the merchant endpoint URL** set in the **m\_redire
These parameters are returned as a response when the payment fails and they contains the same values returned from the PG without additional processing. Note that we don't yet provide definitions for the error codes and error messages that have accumulated in our system.
-
-```
-```
diff --git a/src/content/docs/en/console/guide/account.mdx b/src/content/docs/en/console/guide/account.mdx
index 56131d136..a59155bb7 100644
--- a/src/content/docs/en/console/guide/account.mdx
+++ b/src/content/docs/en/console/guide/account.mdx
@@ -10,12 +10,28 @@ import Figure from "~/components/Figure.astro";
## i'mport Admin console accounts
-- Merchant Admin account (Admin): The Merchant Admin account that is created when a merchant signs up in the Admin console. This account has access to all features.
-- Merchant Manager account (Manager): The Merchant Admin account can create and issue this account. This account only has read-only access to merchant/account management and integration, but has full access to any other features.
-- Merchant Developer account (Dev): The Merchant Manager account can create and issue this account. This account has full access to the integration feature, only read-only access to merchant account management, and access to no other features.
-- Merchant User account (Read Only): The Merchant Manager account can create and issue this account. This account has read-only access to all features.
-- Sub-merchant Manager account (Manager): The Merchant Manager account or its Sub-merchant Manager account can create and issue this account. This account has access to all features of the sub-merchant, and read-only access to the Merchant Admin account and merchant's business information.
-- Sub-merchant User account (Read Only): The Merchant Admin account or its Sub-merchant Manager account can create and issue this account. This account has read-only access to all features of the sub-merchant.
+- Merchant Admin account (Admin): The Merchant Admin account that is created
+ when a merchant signs up in the Admin console. This account has access to all features.
+
+- Merchant Manager account (Manager): The Merchant Admin account can create and issue this account.
+ This account only has read-only access to merchant/account management and integration,
+ but has full access to any other features.
+
+- Merchant Developer account (Dev): The Merchant Manager account can create and issue this account.
+ This account has full access to the integration feature,
+ only read-only access to merchant account management, and access to no other features.
+
+- Merchant User account (Read Only): The Merchant Manager account can create and issue this account.
+ This account has read-only access to all features.
+
+- Sub-merchant Manager account (Manager): The Merchant Manager account
+ or its Sub-merchant Manager account can create and issue this account.
+ This account has access to all features of the sub-merchant,
+ and read-only access to the Merchant Admin account and merchant's business information.
+
+- Sub-merchant User account (Read Only): The Merchant Admin account
+ or its Sub-merchant Manager account can create and issue this account.
+ This account has read-only access to all features of the sub-merchant.
## Admin account management
@@ -23,41 +39,50 @@ _Available menus/buttons are marked in blue._
-
+
+
+- The Admin account can create, issue, modify roles and information,
+ and delete accounts under the merchant.
-- The Admin account can create, issue, modify roles and information, and delete accounts under the merchant.
- Non-admin accounts can only view the accounts under the merchant.
![](/gitbook-assets/en/image.png)![]()
## Merchant and sub-merchant accounts
-- Merchant: A business with a unique business registration number except for agencies that develop payment service for other merchants.
-- Sub-merchant: Merchants can manage and integrate payments through the Admin console by dividing its business by service, product line, region, etc. Such a division is defined as a sub-merchant.
- - Payment integration: The merchant can assign its payment methods and PGs to a specific sub-merchant from the Admin console.
- - Sub-merchant account: Sub-merchant accounts are limited to read-only access to features and payments associated with the sub-merchant.
+- Merchant: A business with a unique business registration number
+ except for agencies that develop payment service for other merchants.
+
+- Sub-merchant: Merchants can manage and integrate payments through the Admin console
+ by dividing its business by service, product line, region, etc.
+ Such a division is defined as a sub-merchant.
+
+ - Payment integration: The merchant can assign its payment methods and PGs
+ to a specific sub-merchant from the Admin console.
+
+ - Sub-merchant account: Sub-merchant accounts are limited to read-only access
+ to features and payments associated with the sub-merchant.
## Sub-merchant management
### Merchant Admin account view
-
+
-- The Merchant Admin account can add and edit sub-merchants and create, edit, and delete accounts belonging to the sub-merchant.
+- The Merchant Admin account can add and edit sub-merchants
+ and create, edit, and delete accounts belonging to the sub-merchant.
#### Add/edit sub-merchant
![]()![]()
-- To add a sub-merchant, enter the sub-merchant name, payment channel, service url, contact information, and tier code.
- - The payment channel is assigned through the online payment application, and it can be assigned to a merchant in payment integration.
+- To add a sub-merchant, enter the sub-merchant name, payment channel,
+ service url, contact information, and tier code.
+ - The payment channel is assigned through the online payment application,
+ and it can be assigned to a merchant in payment integration.
+
- A payment channel already assigned to another sub-merchant cannot be assigned.
+
- To call the i'mport Payment SDK from the sub-merchant's URL, use the tier code and call `import.agency (‘tier code’)`.
#### Add sub-merchant account
@@ -68,17 +93,8 @@ _Available menus/buttons are marked in blue._
### Non-admin account view
-
+
-
+
-
+
diff --git a/src/content/docs/en/console/guide/list.mdx b/src/content/docs/en/console/guide/list.mdx
index a872384b0..3b559d11d 100644
--- a/src/content/docs/en/console/guide/list.mdx
+++ b/src/content/docs/en/console/guide/list.mdx
@@ -5,116 +5,169 @@ description: Check the details of each payment transaction.
Payment activity page
-* Filter payments by date range during which payment was attempted.
-* Perform comprehensive search by specifying a search condition or for all data if no condition is specified.
-* Filter payments by payment status, method, PG, type, and mode.
-* Total search results by status.
-* Payment activity list that shows payment status, customer information, payment method, PG, payment amount, mode, request time, and completion time.
-* Click the right corner of a payment record in the list to copy MID, UID or cancel payment.
-* Click on a payment to view its details.
-* Click on a payment to cancel it.
-* Click on a payment to resend a webhook.
-* Total transaction amount of search results - Total sales by currency calculated based on the total refund amount.
-* Excel download of basic payment details and selected additional data including customer, PG, credit card payment, and account transfer payment information.
+- Filter payments by date range during which payment was attempted.
+
+- Perform comprehensive search by specifying a search condition
+ or for all data if no condition is specified.
+
+- Filter payments by payment status, method, PG, type, and mode.
+
+- Total search results by status.
+
+- Payment activity list that shows payment status, customer information, payment method,
+ PG, payment amount, mode, request time, and completion time.
+
+- Click the right corner of a payment record in the list to copy MID, UID or cancel payment.
+
+- Click on a payment to view its details.
+
+- Click on a payment to cancel it.
+
+- Click on a payment to resend a webhook.
+
+- Total transaction amount of search results - Total sales by currency
+ calculated based on the total refund amount.
+
+- Excel download of basic payment details and selected additional data
+ including customer, PG, credit card payment, and account transfer payment information.
## Calendar filter
![]()
-* Specify the start and end date/time of the payment request to search for.
- * A payment request occurs when a customer attempts to make a payment.
- * Hence, the time of refund and completion may occur outside of the specified search period.
-* You can specify the year, month, day, hour, and minute.
-* For convenience, you can quickly set the dates using the buttons for today, yesterday, past 7 days, 30 days, or 90 days.
-* You can also manually enter the dates.
+- Specify the start and end date/time of the payment request to search for.
+ - A payment request occurs when a customer attempts to make a payment.
+ - Hence, the time of refund and completion may occur outside of the specified search period.
+
+- You can specify the year, month, day, hour, and minute.
+
+- For convenience, you can quickly set the dates using the buttons
+ for today, yesterday, past 7 days, 30 days, or 90 days.
+
+- You can also manually enter the dates.
## Comprehensive search
![]()
-* Perform a search by specifying a filter or on all payment data.
-* Comprehensive search filters:
- * i'mport transaction number
- * Merchant transaction number
- * Credit card approval number
- * Customer name
- * Customer mobile number
- * Customer email
- * PG approval number
- * Credit card number
- * Merchant ID
- * Payment environment
- * Live account bank
- * Virtual account bank
- * Bank account number
- * Name of depositor
- * Cash receipt issuance number
- * Customer address
- * Reason for cancellation
- * Payment environment details
- * Order name
-* The search logic is specified as 'like %value' that returns the values that start with the specified value.
- * In the future, the order name and customer address will be changed to 'like %value%'.
+- Perform a search by specifying a filter or on all payment data.
+
+- Comprehensive search filters:
+ - i'mport transaction number
+ - Merchant transaction number
+ - Credit card approval number
+ - Customer name
+ - Customer mobile number
+ - Customer email
+ - PG approval number
+ - Credit card number
+ - Merchant ID
+ - Payment environment
+ - Live account bank
+ - Virtual account bank
+ - Bank account number
+ - Name of depositor
+ - Cash receipt issuance number
+ - Customer address
+ - Reason for cancellation
+ - Payment environment details
+ - Order name
+
+- The search logic is specified as 'like %value' that returns the values
+ that start with the specified value.
+ - In the future, the order name and customer address will be changed to 'like %value%'.
## Filters
![]()
-* You can search payments by filtering on payment status, payment method, PG, payment type, and payment mode.
- * Payment status: All, Scheduled, Completed, Cancelled (full), Cancelled (partial), Failed
- * Payment method: Payment method
- * PG: PG
- * Payment type: All, subscription, general
- * Payment mode: All, live, test
+- You can search payments by filtering on payment status, payment method,
+ PG, payment type, and payment mode.
+ - Payment status: All, Scheduled, Completed, Cancelled (full), Cancelled (partial), Failed
+ - Payment method: Payment method
+ - PG: PG
+ - Payment type: All, subscription, general
+ - Payment mode: All, live, test
## Total payments by status
![]()
-* Shows payment totals by status (all, completed, scheduled, failed, and cancelled).
- * Failed payments include partial and full cancellations.
+- Shows payment totals by status (all, completed, scheduled, failed, and cancelled).
+ - Failed payments include partial and full cancellations.
## Payment activity list
-
+
+
+- Payment activity list shows results from a date range, comprehensive, or data filter search.
+
+- The default view shows all payment data for the last 6 months.
-* Payment activity list shows results from a date range, comprehensive, or data filter search.
-* The default view shows all payment data for the last 6 months.
-* The list shows the payment status, customer information, payment method, PG, payment amount, payment type, request time, and approval time.
- * Customer information includes the customer's name, email, and phone number (displayed in order) that are specified at payment request via SDK.
- * Payment type is general, subscription, or test.
-* Request and approval times are displayed in descending order, and you can click on either value to sort based the value.
-* If you click on the the dots to the right of a payment row in the Payment activity list, you can copy the merchant transaction number (merchant\_uid) and i'mport transaction number (imp\_uid). You can also cancel a completed or cancelled (partial) payment.
+- The list shows the payment status, customer information, payment method, PG,
+ payment amount, payment type, request time, and approval time.
+
+ - Customer information includes the customer's name, email, and phone number (displayed in order)
+ that are specified at payment request via SDK.
+
+ - Payment type is general, subscription, or test.
+
+- Request and approval times are displayed in descending order,
+ and you can click on either value to sort based the value.
+
+- If you click on the the dots to the right of a payment row in the Payment activity list, you can
+ copy the merchant transaction number (merchant\_uid) and i'mport transaction number (imp\_uid).
+ You can also cancel a completed or cancelled (partial) payment.
## Payment details
![]()
-* The Payment details page consists of the customer and payment information sections.
-* Customer information shows the customer's name, phone number, e-mail, and address submitted via SDK.
-* Payment information shows:
- * Payment status
- * i'mport transaction number
- * Each payment method shows:
- * Credit card: acquirer and masked card number
- * Virtual account: account bank, account holder, account number, and time of deposit
- * Bank transfer: account bank
- * Mobile micropayment: carrier
- * Total payment amount
- * Order amount - discount amount
- * Order amount
- * List price (VAT)
- * Paid with points
- * Paid with points refers to the points rewarded by simple payment companies and PGs.
- * Discount amount
- * Value retrieved from PG's message. Note that the availability of this data varies by PG.
- * Credit card approval number
- * Merchant ID
- * PG
- * PG approval number
- * Payment ID assigned by the PG.
- * Payment environment
- * Parsed device and web/app environment information
+- The Payment details page consists of the customer and payment information sections.
+
+- Customer information shows the customer's name, phone number,
+ e-mail, and address submitted via SDK.
+
+- Payment information shows:
+
+ - Payment status
+
+ - i'mport transaction number
+
+ - Each payment method shows:
+ - Credit card: acquirer and masked card number
+ - Virtual account: account bank, account holder, account number, and time of deposit
+ - Bank transfer: account bank
+ - Mobile micropayment: carrier
+
+ - Total payment amount
+ - Order amount - discount amount
+
+ - Order amount
+
+ - List price (VAT)
+
+ - Paid with points
+ - Paid with points refers to the points rewarded by simple payment companies and PGs.
+
+ - Discount amount
+ - Value retrieved from PG's message. Note that the availability of this data varies by PG.
+
+ - Credit card approval number
+
+ - Merchant ID
+
+ - PG
+
+ - PG approval number
+ - Payment ID assigned by the PG.
+
+ - Payment environment
+ - Parsed device and web/app environment information
## Payment cancellation
@@ -122,17 +175,26 @@ Payment activity page
![]()
-* You can cancel a payment from the Payment details page of a completed or partially cancelled payment.
-* The default setting is full refund. If you want a partial refund, you can directly edit the refund amount or click `Partial refund` to edit and then click `Cancel Payment` at the bottom to finish.
-* When you cancel a payment, the reason for cancellation is saved and sent to i'mport and PG.
-* If a payment to cancel includes tax-free amount, you can specify this amount in the provided input field.
-* When you cancel from the Admin console, a webhook is sent to the merchant's database for status update.
-* For virtual accounts, you can additionally enter the following refund account information:
- * Refund account bank
- * Refund bank account number
- * Refund account holder
+- You can cancel a payment from the Payment details page
+ of a completed or partially cancelled payment.
+
+- The default setting is full refund. If you want a partial refund,
+ you can directly edit the refund amount or click `Partial refund`
+ to edit and then click `Cancel Payment` at the bottom to finish.
+
+- When you cancel a payment, the reason for cancellation is saved and sent to i'mport and PG.
+
+- If a payment to cancel includes tax-free amount,
+ you can specify this amount in the provided input field.
+
+- When you cancel from the Admin console, a webhook is sent
+ to the merchant's database for status update.
+
+- For virtual accounts, you can additionally enter the following refund account information:
+ - Refund account bank
+ - Refund bank account number
+ - Refund account holder
## Resend webhook
![]()
-
diff --git a/src/content/docs/en/console/guide/readme.mdx b/src/content/docs/en/console/guide/readme.mdx
index 5a137d559..c54850f51 100644
--- a/src/content/docs/en/console/guide/readme.mdx
+++ b/src/content/docs/en/console/guide/readme.mdx
@@ -10,11 +10,11 @@ i'mport Admin console: [https://admin.iamport.kr/](https://admin.iamport.kr/)
## Apply for online payment
-### [Apply for online payment](reg)
+### [Apply for online payment](reg)
## Merchant and account management
-### [My ID & API Keys](my-id-and-api-keys)
+### [My ID & API Keys](my-id-and-api-keys)
### [Manage admin & sub-merchant accounts](account)
diff --git a/src/content/docs/en/console/pg.mdx b/src/content/docs/en/console/pg.mdx
index b0057255d..9e135be80 100644
--- a/src/content/docs/en/console/pg.mdx
+++ b/src/content/docs/en/console/pg.mdx
@@ -4,56 +4,58 @@ description: Learn how to set up and use multiple PGs.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### Set up multiple PGs in the i'mport **Admin console** and open a payment window for the desired payment method.
+Set up multiple PGs in the i'mport **Admin console**
+and open a payment window for the desired payment method.
-### 1. Configure authenticated payment (general)
+## 1. Configure authenticated payment (general)
-Go to [**i'mport Admin Console > System Settings > PG Settings tab > Default PG tab**](https://admin.iamport.kr/settings#tab_pg) to set the `default PG` that is used as the default `param.pg` value when you call [`IMP.request_pay`](https://docs.iamport.kr/en-US/sdk/javascript-sdk#request_pay) to open the payment window. The default value is used when the `pg` value is missing or invalid.
+Go to [**i'mport Admin Console > System Settings > PG Settings tab > Default PG tab**](https://admin.iamport.kr/settings#tab_pg)
+to set the `default PG` that is used as the default `param.pg` value
+when you call [`IMP.request_pay`](https://docs.iamport.kr/en-US/sdk/javascript-sdk#request_pay)
+to open the payment window. The default value is used when the `pg` value is missing or invalid.
-
+
-### 2. Add PG for subscription payment (for non-authenticated/**PG payment window)**
+## 2. Add PG for subscription payment (for non-authenticated/**PG payment window)**
-After acquiring a separate Merchant ID (MID) for subscription (non-authenticated) payment from the PG, use it to add the PG from the [**i'mport Admin Console > System Settings > PG Settings (general/subscription) tab**](https://admin.iamport.kr/settings#tab_pg).
+After acquiring a separate Merchant ID (MID) for subscription (non-authenticated) payment
+from the PG, use it to add the PG from the [**i'mport Admin Console > System Settings > PG Settings (general/subscription) tab**](https://admin.iamport.kr/settings#tab_pg).
-### 3. **Add PG for simple payment (Kakao Pay)**
+## 3. **Add PG for simple payment (Kakao Pay)**
Repeat step 2 to add PG setting for Kakao Pay.
-
+
-## Open PG's payment window
+## Open PG's payment window
-To open a PG's payment window, call [**JavaScript SDK**](../sdk/javascript-sdk/) `IMP.request_pay` by specifying the PG that is already configured in **Admin console** in the `param.pg` property.
+To open a PG's payment window, call [**JavaScript SDK**](../sdk/javascript-sdk/) `IMP.request_pay`
+by specifying the PG that is already configured in **Admin console** in the `param.pg` property.
-The [`pg` value](https://docs.iamport.kr/en-US/sdk/javascript-sdk#request_pay) can have the following format:
+The [`pg` value](https://docs.iamport.kr/en-US/sdk/javascript-sdk#request_pay)
+can have the following format:
- **`{ PG code }`**
- **`{ PG code }.{ PG Merchant ID }`**
Assume that we have added **3 PG settings** as follows:
-| PG | Merchant ID | Pay Type | Default PG |
-| --------------- | ----------------- | ---------------- | ---------- |
-| **`KG INICIS`** | `MID-a` (example) | **General** | O |
-| **`KG INICIS`** | `MID-b` (example) | **Subscription** | X |
-| `Kakao Pay` | `MID-c` (example) | Simple | X |
+|PG |Merchant ID |Pay Type |Default PG|
+|---------------|-----------------|----------------|----------|
+|**`KG INICIS`**|`MID-a` (example)|**General** |O |
+|**`KG INICIS`**|`MID-b` (example)|**Subscription**|X |
+|`Kakao Pay` |`MID-c` (example)|Simple |X |
-Of the previously added PG settings, `Kakao Pay` can be identified just with the `PG service code`. Set **`kakaopay`** in the `pg` property for the Kakao Pay payment request as follows:
+Of the previously added PG settings, `Kakao Pay` can be identified just with the `PG service code`.
+Set **`kakaopay`** in the `pg` property for the Kakao Pay payment request as follows:
-```javascript title="client-side"
+```ts title="client-side"
IMP.request_pay({
pg: "kakaopay", //Open Kakao Pay payment page
amount: 1000,
@@ -63,39 +65,39 @@ IMP.request_pay({
});
```
-Of the previously added PG settings, **`KG INICIS (general)`** and **`KG INICIS (subscription)`** have the **same PG service code**. Hence, you need to set `pg` to a value that combines the service code with the Merchant ID, **`{ PG Code }.{ PG Merchant ID }`**.
+Of the previously added PG settings, **`KG INICIS (general)`** and **`KG INICIS (subscription)`**
+have the **same PG service code**.
+Hence, you need to set `pg` to a value that combines the service code with the Merchant ID, **`{ PG Code }.{ PG Merchant ID }`**.
-
-```javascript title="JavaScript"
-IMP.request_pay({
- pg : "html5_inicis.MID-a", // Call KG INICIS general payment window (merchant ID: MID-a)
- amount : 1000,
- name : "Sample order",
- buyer_name : "Buyer",
- buyer_email : "buyer@iamport.kr"
- });
-```
-
-
-
-
-```javascript title="JavaScript"
-IMP.request_pay({
- pg : "html5_inicis.MID-b", // Call KG INICIS subscription payment window (merchant ID: MID-b)
- amount : 1000,
- name : "Sample order",
- buyer_name : "Buyer",
- buyer_email : "buyer@iamport.kr"
- });
-```
-
-
+
+ ```ts title="JavaScript"
+ IMP.request_pay({
+ pg: "html5_inicis.MID-a", // Call KG INICIS general payment window (merchant ID: MID-a)
+ amount: 1000,
+ name: "Sample order",
+ buyer_name: "Buyer",
+ buyer_email: "buyer@iamport.kr",
+ });
+ ```
+
+
+
+ ```ts title="JavaScript"
+ IMP.request_pay({
+ pg: "html5_inicis.MID-b", // Call KG INICIS subscription payment window (merchant ID: MID-b)
+ amount: 1000,
+ name: "Sample order",
+ buyer_name: "Buyer",
+ buyer_email: "buyer@iamport.kr",
+ });
+ ```
+
-**Matching priority for PG**
-
-[`IMP.request_pay`](https://docs.iamport.kr/en-US/sdk/javascript-sdk#request_pay) finds the setting that matches the `pg` value in the order the PG settings are shown in the **Admin console**. It opens the payment window for the first matching PG setting.
+ **Matching priority for PG**
+ [`IMP.request_pay`](https://docs.iamport.kr/en-US/sdk/javascript-sdk#request_pay) finds the setting that matches the `pg` value
+ in the order the PG settings are shown in the **Admin console**. It opens the payment window for the first matching PG setting.
diff --git a/src/content/docs/en/etc/all/get-verification-info.mdx b/src/content/docs/en/etc/all/get-verification-info.mdx
index b7be3f4e7..23fc50d9b 100644
--- a/src/content/docs/en/etc/all/get-verification-info.mdx
+++ b/src/content/docs/en/etc/all/get-verification-info.mdx
@@ -5,82 +5,80 @@ description: >-
purposes.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
Use the **`imp_uid`** obtained through integrated identity verification to get the customer's
verification information.
-### **STEP 01.** Get verification ID (imp_uid) on the server-side
+## **STEP 01.** Get verification ID (imp\_uid) on the server-side
The following server-side code fetches the data returned from identity verification.
-
-```javascript title="server-side"
-app.use(bodyParser.json());
- ...
- // controller that handles POST request to "/certifications"
- app.post("/certifications", async (request, response) => {
- // Get imp_uid from req.body
- const { imp_uid } = request.body;
-})
-```
-
-
+
+ ```ts title="server-side"
+ app.use(bodyParser.json());
+ // controller that handles POST request to "/certifications"
+ app.post("/certifications", async (request, response) => {
+ // Get imp_uid from req.body
+ const { imp_uid } = request.body;
+ });
+ ```
+
+
+
+ ```ts title="server-side"
+ app.use(bodyParser.json());
+ // controller that handles GET request to "/certifications/redirect"
+ app.get("/certifications/redirect", async (request, response) => {
+ const { imp_uid } = request.query; // Get imp_uid from req.query
+ });
+ ```
+
+
-
-```javascript title="server-side"
-app.use(bodyParser.json());
- ...
- // controller that handles GET request to "/certifications/redirect"
- app.get("/certifications/redirect", async (request, response) => {
- const { imp_uid } = request.query; // Get imp_uid from req.query
-})
-```
+## **STEP 02.** Get verification information
-
-
+To get verification information from the i'mport server,
+you must first get a [**REST API access token**](../../api/rest-api-access-token).
+Use the `access token` and `imp_uid` (verification ID)
+to call the **Get identity verification info REST API**
+that returns the verification information as follows:
-### **STEP 02.** Get verification information
-
-To get verification information from the i'mport server, you must first get a [**REST API access token**](../../api/rest-api-access-token). Use the `access token` and `imp_uid` (verification ID) to call the **Get identity verification info REST API** that returns the verification information as follows:
-
-```javascript title="sever-side(Node.js)"
- app.use(bodyParser.json());
- ...
- // controller that handles POST request to "/certifications"
- app.post("/certifications", async (request, response) => {
- const { imp_uid } = request.body; // Get imp_uid from request.body
- try {
- // Get access token
- const getToken = await axios({
- url: "https://api.iamport.kr/users/getToken",
- method: "post", // POST method
- headers: { "Content-Type": "application/json" }, // "Content-Type": "application/json"
- data: {
- imp_key: "imp_apikey", // REST API Key
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f" // REST API Secret
- }
- });
- const { access_token } = getToken.data.response; // Access token
- ...
- // Get verification info from i'mport server using imp_uid
- const getCertifications = await axios({
- url: \`https://api.iamport.kr/certifications/\${imp_uid}\`, // Pass imp_uid
- method: "get", // GET method
- headers: { "Authorization": access_token } // Add access token to Authorization header
- });
- const certificationsInfo = getCertifications.data.response; // Save verification info
- ...
- } catch(e) {
- console.error(e);
- }
- });
+```ts title="sever-side(Node.js)"
+app.use(bodyParser.json());
+// controller that handles POST request to "/certifications"
+app.post("/certifications", async (request, response) => {
+ const { imp_uid } = request.body; // Get imp_uid from request.body
+ try {
+ // Get access token
+ const getToken = await axios({
+ url: "https://api.iamport.kr/users/getToken",
+ method: "post", // POST method
+ headers: { "Content-Type": "application/json" }, // "Content-Type": "application/json"
+ data: {
+ imp_key: "imp_apikey", // REST API Key
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f", // REST API Secret
+ },
+ });
+ const { access_token } = getToken.data.response; // Access token
+ // Get verification info from i'mport server using imp_uid
+ const getCertifications = await axios({
+ url: `https://api.iamport.kr/certifications/${imp_uid}`, // Pass imp_uid
+ method: "get", // GET method
+ headers: { Authorization: access_token }, // Add access token to Authorization header
+ });
+ const certificationsInfo = getCertifications.data.response; // Save verification info
+ } catch (e) {
+ console.error(e);
+ }
+});
```
-### **STEP 03.** Using verification information
+## **STEP 03.** Using verification information
Retrieve the following user information from the verification information and add the necessary
service logic.
@@ -95,33 +93,32 @@ service logic.
such as online social security number.
-Besides what is listed above, other user information, such as foreigner status, is not provided. Kakao's policy prohibits the provision of the CI value when using the Kakao Certificate.
-
+ Besides what is listed above, other user information, such as foreigner status, is not provided.
+ Kakao's policy prohibits the provision of the CI value when using the Kakao Certificate.
Get the user information and use it as needed. For example, you can use it to check age restrictions
as follows:
-```javascript title="Node.js"
- // controller that handles POST request to "/certifications"
- app.post("/certifications", async (request, response) => {
- const { imp_uid } = request.body; // Get imp_uid from request.body
- try {
- // Get access token
- /* ...Omitted... */
- // Get verification info using imp_uid
- /* ...Omitted... */
- const certificationsInfo = getCertifications.data.response; // Save verification info
- const { name, birth } = certificationsInfo;
- ...
- // Check age restrictions
- if (new Date(birth).getFullYear() <= 1999) {
- // Check successful
- } else {
- // Check failed
- }
- } catch(e) {
- console.error(e);
+```ts title="Node.js"
+// controller that handles POST request to "/certifications"
+app.post("/certifications", async (request, response) => {
+ const { imp_uid } = request.body; // Get imp_uid from request.body
+ try {
+ // Get access token
+ /* ...Omitted... */
+ // Get verification info using imp_uid
+ /* ...Omitted... */
+ const certificationsInfo = getCertifications.data.response; // Save verification info
+ const { name, birth } = certificationsInfo;
+ // Check age restrictions
+ if (new Date(birth).getFullYear() <= 1999) {
+ // Check successful
+ } else {
+ // Check failed
}
- });
+ } catch (e) {
+ console.error(e);
+ }
+});
```
diff --git a/src/content/docs/en/etc/all/prepare-for-verification.mdx b/src/content/docs/en/etc/all/prepare-for-verification.mdx
index 20e917d50..4b2a756c7 100644
--- a/src/content/docs/en/etc/all/prepare-for-verification.mdx
+++ b/src/content/docs/en/etc/all/prepare-for-verification.mdx
@@ -3,51 +3,43 @@ title: Prepare for verification
description: Prepare for integrated identity verification integration.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### Add the **i'mport library** to the target page.
+## Add the **i'mport library** to the target page.
-Integrated identity verification is supported in **i'mport JavaScript v1.1.8 or later** versions.
-
+ Integrated identity verification is supported in **i'mport JavaScript v1.1.8 or later** versions.
-
-```html title="client-side"
-
-
-
-
-```
-
-
+
+ ```html title="client-side"
+
+
+
+
+ ```
+
-You **must install jQuery 1.0 or later version**.
-
+ You **must install jQuery 1.0 or later version**.
-### Initialize the `IMP` object using the **`Merchant ID`** on the identity verification page.
+## Initialize the `IMP` object using the **`Merchant ID`** on the identity verification page.
-
-```javascript title="client-side"
-var IMP = window.IMP; // Can be omitted
-IMP.init("{Merchant ID}"); // Example: imp00000000
-```
-
-
-
-
-```javascript
-client-side
-const IMP = window.IMP; // Can be omitted
-IMP.init("{Merchant ID}"); // Example: imp00000000
-```
-
-
+
+ ```ts title="client-side"
+ IMP.init("{Merchant ID}"); // Example: imp00000000
+ ```
+
+
+
+ ```ts title="client-side"
+ IMP.init("{Merchant ID}"); // Example: imp00000000
+ ```
+
diff --git a/src/content/docs/en/etc/all/readme.mdx b/src/content/docs/en/etc/all/readme.mdx
index 83400b300..ebabcc8a0 100644
--- a/src/content/docs/en/etc/all/readme.mdx
+++ b/src/content/docs/en/etc/all/readme.mdx
@@ -5,13 +5,15 @@ description: Learn how to integrate integrated identity verification service.
import Figure from "~/components/Figure.astro";
-### What is an integrated identity verification service?
+## What is an integrated identity verification service?
-This is a service that verifies the identity of the person and the accuracy of the information entered during the verification process through a private certificate, such as KakaoTalk and Naver Certificate. Integrated identity verification is provided through **KG Inicis** and processed by using a private certificate or by sending a verification request through the user's registered simple identity verification service.
+This is a service that verifies the identity of the person and the accuracy
+of the information entered during the verification process through a private certificate,
+such as KakaoTalk and Naver Certificate.
+Integrated identity verification is provided through **KG Inicis**
+and processed by using a private certificate or by sending a verification request
+through the user's registered simple identity verification service.
> **Supported providers: Naver / PASS / Payco / TOSS / Financial Certificate / Kakao**
-
+
diff --git a/src/content/docs/en/etc/all/request-verification.mdx b/src/content/docs/en/etc/all/request-verification.mdx
index 172ed832a..888f1ddcb 100644
--- a/src/content/docs/en/etc/all/request-verification.mdx
+++ b/src/content/docs/en/etc/all/request-verification.mdx
@@ -3,10 +3,10 @@ title: Request verification
description: Call the integrated identity verification window.
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-### The integrated identity verification window can be invoked in the following two modes:
+## The integrated identity verification window can be invoked in the following two modes:
> **Popup** (Default)
>
@@ -28,25 +28,25 @@ The following example calls the JavaScript SDK
to open the integrated identity verification window.
-
-```javascript title="client-side"
- // Call IMP.certification(param, callback)
- IMP.certification({ // param
- merchant_uid: "ORD20180131-0000011", // Order ID
- m_redirect_url : "{Redirect URL}", // Required when popup:false in mobile, Example: https://www.myservice.com/payments/complete/mobile
- popup : false // Always set to true in PC
- }, function (rsp) { // callback
- if (rsp.success) {
- ...,
- // When verification is successful,
- ...
- } else {
- ...,
- // When verification fails,
- ...
- }
- });
-```
-
-
+
+ ```ts title="client-side"
+ // Call IMP.certification(param, callback)
+ IMP.certification(
+ {
+ // param
+ merchant_uid: "ORD20180131-0000011", // Order ID
+ m_redirect_url: "{Redirect URL}", // Required when popup:false in mobile, Example: https://www.myservice.com/payments/complete/mobile
+ popup: false, // Always set to true in PC
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // When verification is successful,
+ } else {
+ // When verification fails,
+ }
+ },
+ );
+ ```
+
diff --git a/src/content/docs/en/etc/all/send-verification-result.mdx b/src/content/docs/en/etc/all/send-verification-result.mdx
index a91e2264a..459bd3e3f 100644
--- a/src/content/docs/en/etc/all/send-verification-result.mdx
+++ b/src/content/docs/en/etc/all/send-verification-result.mdx
@@ -3,62 +3,70 @@ title: Send verification result
description: Process the result obtained from integrated identity verification.
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
Based on the the verification result in the response object (**`rsp`**) returned after the verification process is completed, add the post-verification processing logic in the **`callback`** function. When the verification is successful, add the logic to **send the verification ID (`imp_uid`) to the server** as in the following example. Check the **value returned** when the verification is successful.
-### 1. Example of sending data via callback
+## 1. Example of sending data via callback
-
-```javascript title="client-side"
- IMP.certification({
- /* ...Omitted... */
- }, function (rsp) { // callback
- if (rsp.success) { // When verification is successful
- // jQuery HTTP request
- jQuery.ajax({
- url: "{server-side endpoint to receive verification info}",
- method: "POST",
- headers: { "Content-Type": "application/json" },
- data: { imp_uid: rsp.imp_uid }
- });
- } else {
- alert("Verification failed. Error: " + rsp.error_msg);
- }
- });Example of sending data via redirection
-```
-
-
+
+ ```ts title="client-side"
+ IMP.certification(
+ {
+ /* ...Omitted... */
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // When verification is successful
+ // jQuery HTTP request
+ jQuery.ajax({
+ url: "{server-side endpoint to receive verification info}",
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ data: { imp_uid: rsp.imp_uid },
+ });
+ } else {
+ alert("Verification failed. Error: " + rsp.error_msg);
+ }
+ },
+ );
+ ```
+
-
-```javascript title="client-side"
-IMP.certification({
- /* ...Omitted... */
- }, rsp => { // callback
- if (rsp.success) { // When verification is successful
- // axios HTTP request
- axios({
- url: "{server-side endpoint to receive verification info}",
- method: "post",
- headers: { "Content-Type": "application/json" },
- data: { imp_uid: rsp.imp_uid }
- });
- } else {
- alert(\`Verification failed. Error: \${rsp.error_msg}\`);
- }
- });
-```
-
-
+
+ ```ts title="client-side"
+ IMP.certification(
+ {
+ /* ...Omitted... */
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // When verification is successful
+ // axios HTTP request
+ axios({
+ url: "{server-side endpoint to receive verification info}",
+ method: "post",
+ headers: { "Content-Type": "application/json" },
+ data: { imp_uid: rsp.imp_uid },
+ });
+ } else {
+ alert(`Verification failed. Error: ${rsp.error_msg}`);
+ }
+ },
+ );
+ ```
+
### 2. Example of sending data via redirection
-The page is redirected to the URL specified in `param.`**`m_redirect_url`** of `IMP.`**`certification`** with the verification data as follows:
+The page is redirected to the URL specified in `param.`**`m_redirect_url`**
+of `IMP.`**`certification`** with the verification data as follows:
-```uri title="Query String"
+```http title="Query String"
GET {m_redirect_url}?imp_uid={}&merchant_uid={merchant_uid for verification}&success={true or false}
```
-
diff --git a/src/content/docs/en/etc/budget.mdx b/src/content/docs/en/etc/budget.mdx
index e1cb65ca9..a76c09f52 100644
--- a/src/content/docs/en/etc/budget.mdx
+++ b/src/content/docs/en/etc/budget.mdx
@@ -3,4 +3,4 @@ title: Integrate budget handler
description: Learn how to integrate credit card promotion service.
---
-### Refer to the [**Budget handler guide**](http://localhost:5000/o/nad6nqI7LNE1TGdY19Od/s/zzqz39hKDV7YEtDAeA1v/).
+###Refer to the [**Budget handler guide**](http://localhost:5000/o/nad6nqI7LNE1TGdY19Od/s/zzqz39hKDV7YEtDAeA1v/).
diff --git a/src/content/docs/en/etc/credit-auth/1-prepare-for-verification.mdx b/src/content/docs/en/etc/credit-auth/1-prepare-for-verification.mdx
index dabba663c..08923e011 100644
--- a/src/content/docs/en/etc/credit-auth/1-prepare-for-verification.mdx
+++ b/src/content/docs/en/etc/credit-auth/1-prepare-for-verification.mdx
@@ -3,42 +3,37 @@ title: 1. Prepare for verification
description: Prepare for credit card verification integration.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### Add the **i'mport library** to the target page.
+## Add the **i'mport library** to the target page.
-Credit card identity verification is supported in **i'mport JavaScript v1.1.7 or later** versions.
-
+ Credit card identity verification is supported in **i'mport JavaScript v1.1.7 or later** versions.
-
-```html title="client-side"
-
-
-
-
-```
-
-
+
+ ```html title="client-side"
+
+
+
+
+ ```
+
-You **must install jQuery 1.0 or later version.**
-
+ You **must install jQuery 1.0 or later version.**
### Initialize the `IMP` object using the **`Merchant ID`** on the identity verification page.
-
-```javascript title="client-side"
-var IMP = window.IMP; // Can be omitted
-IMP.init("{Merchant ID}"); // Example: imp00000000
-```
-
-
+
+ ```ts title="client-side"
+ IMP.init("{Merchant ID}"); // Example: imp00000000
+ ```
+
diff --git a/src/content/docs/en/etc/credit-auth/2-request-verification.mdx b/src/content/docs/en/etc/credit-auth/2-request-verification.mdx
index 5147713a9..cdec51491 100644
--- a/src/content/docs/en/etc/credit-auth/2-request-verification.mdx
+++ b/src/content/docs/en/etc/credit-auth/2-request-verification.mdx
@@ -3,10 +3,10 @@ title: 2. Request verification
description: Call the credit card identity verification window.
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-### The credit card identity verification window can be invoked in the following two modes:
+## The credit card identity verification window can be invoked in the following two modes:
> **Popup** (Default)
>
@@ -28,47 +28,47 @@ The following example calls the JavaScript SDK
to open the credit card identity verification window.
-
-```javascript title="client-side"
-// Call IMP.certification(param, callback)
-IMP.certification({ // param
- merchant_uid: "ORD20180131-0000011", // Order ID
- m_redirect_url : "{Redirect URL}", // Required when popup:false in mobile, Example: https://www.myservice.com/payments/complete/mobile
- popup : false // Always set to true in PC
- }, function (rsp) { // callback
- if (rsp.success) {
- ...,
- // When verification is successful,
- ...
- } else {
- ...,
- // When verification fails,
- ...
- }
- });
-```
-
-
-
-
-```javascript title="client-side"
- // Call IMP.certification(param, callback)
- IMP.certification({ // param
- merchant_uid: "ORD20180131-0000011", // Order ID
- m_redirect_url : "{Redirect URL}", // Required when popup:false in mobile, Example: https://www.myservice.com/payments/complete/mobile
- popup : false // Always set to true in PC
- }, rsp => { // callback
- if (rsp.success) {
- ...,
- // When verification is successful,
- ...
- } else {
- ...,
- // When verification fails,
- ...
- }
- });
-```
+
+ ```ts title="client-side"
+ // Call IMP.certification(param, callback)
+ IMP.certification(
+ {
+ // param
+ merchant_uid: "ORD20180131-0000011", // Order ID
+ m_redirect_url: "{Redirect URL}", // Required when popup:false in mobile, Example: https://www.myservice.com/payments/complete/mobile
+ popup: false, // Always set to true in PC
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // When verification is successful,
+ } else {
+ // When verification fails,
+ }
+ },
+ );
+ ```
+
-
+
+ ```ts title="client-side"
+ // Call IMP.certification(param, callback)
+ IMP.certification(
+ {
+ // param
+ merchant_uid: "ORD20180131-0000011", // Order ID
+ m_redirect_url: "{Redirect URL}", // Required when popup:false in mobile, Example: https://www.myservice.com/payments/complete/mobile
+ popup: false, // Always set to true in PC
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // When verification is successful,
+ } else {
+ // When verification fails,
+ }
+ },
+ );
+ ```
+
diff --git a/src/content/docs/en/etc/credit-auth/3-send-verification-result.mdx b/src/content/docs/en/etc/credit-auth/3-send-verification-result.mdx
index 68f1fab82..05ff06e16 100644
--- a/src/content/docs/en/etc/credit-auth/3-send-verification-result.mdx
+++ b/src/content/docs/en/etc/credit-auth/3-send-verification-result.mdx
@@ -3,64 +3,75 @@ title: 3. Send verification result
description: Process the result obtained from credit card identity verification.
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-Based on the the verification result in the response object ( **`rsp`** ) returned after the verification process is complete, add the post-verification processing logic in the **`callback`** function. When the verification is successful, add the logic to **send the verification ID (`imp_uid`) to the server** as in the following example. Check the **value returned** when the verification is successful.
+Based on the the verification result in the response object (**`rsp`**)
+returned after the verification process is complete,
+add the post-verification processing logic in the **`callback`** function.
+When the verification is successful, add the logic to **send the verification ID (`imp_uid`)
+to the server** as in the following example.
+Check the **value returned** when the verification is successful.
-### 1. Example of sending data via callback
+## 1. Example of sending data via callback
-
-```javascript
- IMP.certification({
- /* ...Omitted... */
- }, function (rsp) { // callback
- if (rsp.success) { // When verification is successful
- // jQuery HTTP request
- jQuery.ajax({
- url: "{server-side endpoint to receive verification info}",
- method: "POST",
- headers: { "Content-Type": "application/json" },
- data: { imp_uid: rsp.imp_uid }
- });
- } else {
- alert("Verification failed. Error: " + rsp.error_msg);
- }
- });
-```
-
-
-
-
+
+ ```ts
+ IMP.certification(
+ {
+ /* ...Omitted... */
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // When verification is successful
+ // jQuery HTTP request
+ jQuery.ajax({
+ url: "{server-side endpoint to receive verification info}",
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ data: { imp_uid: rsp.imp_uid },
+ });
+ } else {
+ alert("Verification failed. Error: " + rsp.error_msg);
+ }
+ },
+ );
+ ```
+
-```javascript title="client-side"
- IMP.certification({
- /* ...Omitted... */
- }, rsp => { // callback
- if (rsp.success) { // When verification is successful
- // axios HTTP request
- axios({
- url: "{server-side endpoint to receive verification info}",
- method: "post",
- headers: { "Content-Type": "application/json" },
- data: { imp_uid: rsp.imp_uid }
- });
- } else {
- alert(`Verification failed. Error: ${rsp.error_msg}`);
- }
- });
-
-```
-
-
+
+ ```ts title="client-side"
+ IMP.certification(
+ {
+ /* ...Omitted... */
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // When verification is successful
+ // axios HTTP request
+ axios({
+ url: "{server-side endpoint to receive verification info}",
+ method: "post",
+ headers: { "Content-Type": "application/json" },
+ data: { imp_uid: rsp.imp_uid },
+ });
+ } else {
+ alert(`Verification failed. Error: ${rsp.error_msg}`);
+ }
+ },
+ );
+ ```
+
-### 2. Example of sending data via redirection
+## 2. Example of sending data via redirection
-The page is redirected to the URL specified in `param.`**`m_redirect_url`** of `IMP.` **`certification`** with the verification data as follows:
+The page is redirected to the URL specified in `param.`**`m_redirect_url`**
+of `IMP.` **`certification`** with the verification data as follows:
-```uri title="Query String"
+```http title="Query String"
GET {m_redirect_url}?imp_uid={}&merchant_uid={merchant_uid for verification}&success
```
-
diff --git a/src/content/docs/en/etc/credit-auth/4-get-verification-info.mdx b/src/content/docs/en/etc/credit-auth/4-get-verification-info.mdx
index 05a8d93ec..5e7838589 100644
--- a/src/content/docs/en/etc/credit-auth/4-get-verification-info.mdx
+++ b/src/content/docs/en/etc/credit-auth/4-get-verification-info.mdx
@@ -5,79 +5,73 @@ description: >-
purposes.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
Use the **`imp_uid`** obtained through identity verification to get the customer's verification
information.
-### **STEP 01.** Get verification ID (imp_uid) on the server-side
+## **STEP 01.** Get verification ID (imp\_uid) on the server-side
The following server-side code fetches the data returned from identity verification.
-
-```javascript title="server-side"
-app.use(bodyParser.json());
- ...
- // controller that handles POST request to "/certifications"
- app.post("/certifications", async (request, response) => {
- // Get imp_uid from req.body
- const { imp_uid } = request.body;
-})
-```
-
-
-
-
-```javascript title="server-side"
-app.use(bodyParser.json());
- ...
- // controller that handles GET request to "/certifications/redirect"
- app.get("/certifications/redirect", async (request, response) => {
- const { imp_uid } = request.query; // Get imp_uid from req.query
-})
-```
-
-
+
+ ```ts title="server-side"
+ app.use(bodyParser.json());
+ // controller that handles POST request to "/certifications"
+ app.post("/certifications", async (request, response) => {
+ // Get imp_uid from req.body
+ const { imp_uid } = request.body;
+ });
+ ```
+
+
+
+ ```ts title="server-side"
+ app.use(bodyParser.json());
+ // controller that handles GET request to "/certifications/redirect"
+ app.get("/certifications/redirect", async (request, response) => {
+ const { imp_uid } = request.query; // Get imp_uid from req.query
+ });
+ ```
+
### **STEP 02.** Get verification information
To get verification information from the i'mport server, you must first get a [**REST API access token**](../../api/rest-api-access-token). Use the `access token` and `imp_uid` (verification ID) to call the **Get identity verification info REST API** that returns the verification information as follows:
-```javascript title="sever-side"
- app.use(bodyParser.json());
- ...
- // controller that handles POST request to "/certifications"
- app.post("/certifications", async (request, response) => {
- const { imp_uid } = request.body; // Get imp_uid from request.body
- try {
- // Get access token
- const getToken = await axios({
- url: "https://api.iamport.kr/users/getToken",
- method: "post", // POST method
- headers: { "Content-Type": "application/json" }, // "Content-Type": "application/json"
- data: {
- imp_key: "imp_apikey", // REST API Key
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f" // REST API Secret
- }
- });
- const { access_token } = getToken.data.response; // Access token
- ...
- // Get verification info from i'mport server using imp_uid
- const getCertifications = await axios({
- url: \`https://api.iamport.kr/certifications/\${imp_uid}\`, // Pass imp_uid
- method: "get", // GET method
- headers: { "Authorization": access_token } // Add access token to Authorization header
- });
- const certificationsInfo = getCertifications.data.response; // Save verification info
- ...
- } catch(e) {
- console.error(e);
- }
- });
+```ts title="sever-side"
+app.use(bodyParser.json());
+// controller that handles POST request to "/certifications"
+app.post("/certifications", async (request, response) => {
+ const { imp_uid } = request.body; // Get imp_uid from request.body
+ try {
+ // Get access token
+ const getToken = await axios({
+ url: "https://api.iamport.kr/users/getToken",
+ method: "post", // POST method
+ headers: { "Content-Type": "application/json" }, // "Content-Type": "application/json"
+ data: {
+ imp_key: "imp_apikey", // REST API Key
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f", // REST API Secret
+ },
+ });
+ const { access_token } = getToken.data.response; // Access token
+ // Get verification info from i'mport server using imp_uid
+ const getCertifications = await axios({
+ url: `https://api.iamport.kr/certifications/${imp_uid}`, // Pass imp_uid
+ method: "get", // GET method
+ headers: { Authorization: access_token }, // Add access token to Authorization header
+ });
+ const certificationsInfo = getCertifications.data.response; // Save verification info
+ } catch (e) {
+ console.error(e);
+ }
+});
```
### **STEP 03.** Using verification information
@@ -97,44 +91,43 @@ service logic.
- `unique_in_site`: same as DI value - unique key to identify the user per Merchant ID (website).
-**unique\_key and unique\_in\_site**
-
-Even if multiple credit cards are used to verify the same person, the same `unique_key` and `unique_in_site` values are returned for the cards under the same name.\
+ **unique\_key and unique\_in\_site**
+ Even if multiple credit cards are used to verify the same person,
+ the same `unique_key` and `unique_in_site` values are returned
+ for the cards under the same name.
-```javascript title="Node.js"
- // controller that handles POST request to "/certifications"
- app.post("/certifications", async (request, response) => {
- const { imp_uid } = request.body; // Get imp_uid from request.body
- try {
- // Get access token
- /* ...Omitted... */
- // Get verification info using imp_uid
- /* ...Omitted... */
- const certificationsInfo = getCertifications.data.response; // Save verification info
- // unique_key: Unique key for user, unique_in_site: Unique key for user per site
- const { unique_key, unique_in_site, name, gender, birth } = certificationsInfo;
- ...
- // Check age restrictions
- if (new Date(birth).getFullYear() <= 1999) {
- // Check successful
+```ts title="Node.js"
+// controller that handles POST request to "/certifications"
+app.post("/certifications", async (request, response) => {
+ const { imp_uid } = request.body; // Get imp_uid from request.body
+ try {
+ // Get access token
+ /* ...Omitted... */
+ // Get verification info using imp_uid
+ /* ...Omitted... */
+ const certificationsInfo = getCertifications.data.response; // Save verification info
+ // unique_key: Unique key for user, unique_in_site: Unique key for user per site
+ const { unique_key, unique_in_site, name, gender, birth } =
+ certificationsInfo;
+ // Check age restrictions
+ if (new Date(birth).getFullYear() <= 1999) {
+ // Check successful
+ } else {
+ // Check failed
+ }
+ // one account per person check
+ // Query database with unique_key to check for existing account
+ Users.find({ certificationKey: unique_key }).then((user) => {
+ if (!user) {
+ // New user
} else {
- // Check failed
+ // Existing user
}
- ...
- // one account per person check
- // Query database with unique_key to check for existing account
- Users.find({ certificationKey: unique_key })
- .then((user) => {
- if (!user) {
- // New user
- } else {
- // Existing user
- }
- });
- } catch(e) {
- console.error(e);
- }
- });
+ });
+ } catch (e) {
+ console.error(e);
+ }
+});
```
diff --git a/src/content/docs/en/etc/credit-auth/readme.mdx b/src/content/docs/en/etc/credit-auth/readme.mdx
index 7389f43fd..c60b7e77f 100644
--- a/src/content/docs/en/etc/credit-auth/readme.mdx
+++ b/src/content/docs/en/etc/credit-auth/readme.mdx
@@ -5,9 +5,8 @@ description: Learn how to integrate credit card identity verification service.
import Figure from "~/components/Figure.astro";
-The **credit card identity verification service** is used to confirm the accuracy of the identity information (name, date of birth, gender, foreigner status, and KISA ID) of the credit card holder.
+The **credit card identity verification service** is used to confirm
+the accuracy of the identity information (name, date of birth, gender,
+foreigner status, and KISA ID) of the credit card holder.
-
+
diff --git a/src/content/docs/en/etc/native-mobile-sdks.mdx b/src/content/docs/en/etc/native-mobile-sdks.mdx
index 8458ad551..25f5ee210 100644
--- a/src/content/docs/en/etc/native-mobile-sdks.mdx
+++ b/src/content/docs/en/etc/native-mobile-sdks.mdx
@@ -3,14 +3,14 @@ title: Native mobile SDKs
description: You can integrate i'mport services through our native mobile SDKs (plugins).
---
-### Refer to the SDK GitHub link for your development platform.
+## Refer to the SDK GitHub link for your development platform.
-#### iOS/Android
+### iOS/Android
- [iOS](https://github.com/iamport/iamport-ios)
- [Android](https://github.com/iamport/iamport-android)
-#### Cross-Platform Frameworks
+### Cross-Platform Frameworks
- [Flutter](https://github.com/iamport/iamport-flutter)
- [Ionic](https://github.com/iamport/iamport-ionic)
diff --git a/src/content/docs/en/etc/phone/1-prepare-for-verification.mdx b/src/content/docs/en/etc/phone/1-prepare-for-verification.mdx
index 84815bc4f..fb26050de 100644
--- a/src/content/docs/en/etc/phone/1-prepare-for-verification.mdx
+++ b/src/content/docs/en/etc/phone/1-prepare-for-verification.mdx
@@ -3,25 +3,21 @@ title: 1. Prepare for verification
description: Prepare for mobile identity verification integration.
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
Initialize the `IMP` object using the **`Merchant ID`**.
-
-```javascript title="client-side"
-var IMP = window.IMP; // Can be omitted
-IMP.init("{Merchant ID}"); // Example: imp00000000
-```
-
-
-
-
-```javascript title="client-side"
-const IMP = window.IMP; // Can be omitted
-IMP.init("{Merchant ID}"); // Example: imp00000000
-```
+
+ ```ts title="client-side"
+ IMP.init("{Merchant ID}"); // Example: imp00000000
+ ```
+
-
+
+ ```ts title="client-side"
+ IMP.init("{Merchant ID}"); // Example: imp00000000
+ ```
+
diff --git a/src/content/docs/en/etc/phone/2-request-verification.mdx b/src/content/docs/en/etc/phone/2-request-verification.mdx
index f8de42cd2..d855354e8 100644
--- a/src/content/docs/en/etc/phone/2-request-verification.mdx
+++ b/src/content/docs/en/etc/phone/2-request-verification.mdx
@@ -3,9 +3,9 @@ title: 2. Request verification
description: Call the mobile identity verification window.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
The mobile identity verification window can be invoked in the following two modes:
@@ -26,58 +26,58 @@ The mobile identity verification window can be invoked in the following two mode
> `false`.
-**Redirection mode**
-
-Redirection is supported in i'mport JavaScript **SDK 1.1.7** or later versions.
+ **Redirection mode**
+ Redirection is supported in i'mport JavaScript **SDK 1.1.7** or later versions.
The following example calls the mobile identity verification window.
-
-```javascript title="client-side"
- // Call IMP.certification(param, callback)
- IMP.certification({ // param
- merchant_uid: "ORD20180131-0000011", // Order ID
- m_redirect_url : "{Redirect URL}", // Required when popup:false in mobile, Example: https://www.myservice.com/payments/complete/mobile
- popup : false // Always set to true in PC
- }, function (rsp) { // callback
- if (rsp.success) {
- ...,
- // When verification is successful,
- ...
- } else {
- ...,
- // When verification fails,
- ...
- }
- });
-```
-
-Check the [**parameters list**](../../sdk/javascript-sdk/identity-verification-request-parameters) for requesting the mobile identity verification window.
-
-
+
+ ```ts title="client-side"
+ // Call IMP.certification(param, callback)
+ IMP.certification(
+ {
+ // param
+ merchant_uid: "ORD20180131-0000011", // Order ID
+ m_redirect_url: "{Redirect URL}", // Required when popup:false in mobile, Example: https://www.myservice.com/payments/complete/mobile
+ popup: false, // Always set to true in PC
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // When verification is successful,
+ } else {
+ // When verification fails,
+ }
+ },
+ );
+ ```
-
-```javascript title="client-side"
- // Call IMP.certification(param, callback)
- IMP.certification({ // param
- merchant_uid: "ORD20180131-0000011", // Order ID
- m_redirect_url : "{Redirect URL}", // Required when popup:false in mobile, Example: https://www.myservice.com/payments/complete/mobile
- popup : false // Always set to true in PC
- }, rsp => { // callback
- if (rsp.success) {
- ...,
- // When verification is successful,
- ...
- } else {
- ...,
- // When verification fails,
- ...
- }
- });
-```
+ Check the [**parameters list**](../../sdk/javascript-sdk/identity-verification-request-parameters)
+ for requesting the mobile identity verification window.
+
-
+
+ ```ts title="client-side"
+ // Call IMP.certification(param, callback)
+ IMP.certification(
+ {
+ // param
+ merchant_uid: "ORD20180131-0000011", // Order ID
+ m_redirect_url: "{Redirect URL}", // Required when popup:false in mobile, Example: https://www.myservice.com/payments/complete/mobile
+ popup: false, // Always set to true in PC
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // When verification is successful,
+ } else {
+ // When verification fails,
+ }
+ },
+ );
+ ```
+
diff --git a/src/content/docs/en/etc/phone/3-send-verification-result.mdx b/src/content/docs/en/etc/phone/3-send-verification-result.mdx
index cf6431765..6401b6201 100644
--- a/src/content/docs/en/etc/phone/3-send-verification-result.mdx
+++ b/src/content/docs/en/etc/phone/3-send-verification-result.mdx
@@ -3,62 +3,75 @@ title: 3. Send verification result
description: Process the result obtained from mobile identity verification.
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-Based on the the verification result in the response object (**`rsp`**) returned after the verification process is complete, add the post-verification processing logic in the **`callback`** function. When the verification is successful, add the logic to **send the verification ID (`imp_uid`) to the server** as in the following example. Check the **value returned** when the verification is successful. \
+Based on the the verification result in the response object (**`rsp`**)
+returned after the verification process is complete,
+add the post-verification processing logic in the **`callback`** function.
+When the verification is successful, add the logic to **send the verification ID (`imp_uid`)
+to the server** as in the following example.
+Check the **value returned** when the verification is successful.
-### 1. Example of sending data via callback
+## 1. Example of sending data via callback
-
-```javascript
-IMP.certification({
- /* ...Omitted... */
-}, function (rsp) { // callback
- if (rsp.success) { // When verification is successful
- // jQuery HTTP request
- jQuery.ajax({
- url: "{server-side endpoint to receive verification info}",
- method: "POST",
- headers: { "Content-Type": "application/json" },
- data: { imp_uid: rsp.imp_uid }
- });
- } else {
- alert("Verification failed. Error: " + rsp.error_msg);
- }
- });
-```
-
-
+
+ ```ts
+ IMP.certification(
+ {
+ /* ...Omitted... */
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // When verification is successful
+ // jQuery HTTP request
+ jQuery.ajax({
+ url: "{server-side endpoint to receive verification info}",
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ data: { imp_uid: rsp.imp_uid },
+ });
+ } else {
+ alert("Verification failed. Error: " + rsp.error_msg);
+ }
+ },
+ );
+ ```
+
-
-```javascript title="client-side"
- IMP.certification({
- /* ...Omitted... */
- }, rsp => { // callback
- if (rsp.success) { // When verification is successful
- // axios HTTP request
- axios({
- url: "{server-side endpoint to receive verification info}",
- method: "post",
- headers: { "Content-Type": "application/json" },
- data: { imp_uid: rsp.imp_uid }
- });
- } else {
- alert(\`Verification failed. Error: \${rsp.error_msg}\`);
- }
- });
-```
-
-
+
+ ```ts title="client-side"
+ IMP.certification(
+ {
+ /* ...Omitted... */
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // When verification is successful
+ // axios HTTP request
+ axios({
+ url: "{server-side endpoint to receive verification info}",
+ method: "post",
+ headers: { "Content-Type": "application/json" },
+ data: { imp_uid: rsp.imp_uid },
+ });
+ } else {
+ alert(`Verification failed. Error: ${rsp.error_msg}`);
+ }
+ },
+ );
+ ```
+
-### 2. Example of sending data via redirection
+## 2. Example of sending data via redirection
-The page is redirected to the URL specified in `param.`**`m_redirect_url`** of `IMP.`**`certification`** with the verification data as follows:
+The page is redirected to the URL specified in `param.`**`m_redirect_url`** of
+`IMP.`**`certification`** with the verification data as follows:
-```uri title="Query String"
+```http title="Query String"
GET {m_redirect_url}?imp_uid={}&merchant_uid={merchant_uid for verification}&success={true or false}
```
-
diff --git a/src/content/docs/en/etc/phone/4-get-verification-info.mdx b/src/content/docs/en/etc/phone/4-get-verification-info.mdx
index 77c91a1ba..92ef79b89 100644
--- a/src/content/docs/en/etc/phone/4-get-verification-info.mdx
+++ b/src/content/docs/en/etc/phone/4-get-verification-info.mdx
@@ -5,83 +5,75 @@ description: >-
purposes.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
Use the **`imp_uid`** obtained from mobile identity verification to get the customer's verification
information.
-### **STEP 01.** Get verification ID (imp_uid) on the server-side
+## **STEP 01.** Get verification ID (imp\_uid) on the server-side
The following server-side code fetches the data returned from mobile identity verification.
-
-
-```javascript title="server-side"
-app.use(bodyParser.json());
- ...
- // controller that handles POST request to "/certifications"
- app.post("/certifications", async (request, response) => {
- const { imp_uid } = request.body; // Get imp_uid from req.body
-})
-
-```
-
-
-
-
-```javascript
-app.use(bodyParser.json());
- ...
- // controller that handles GET request to "/certifications/redirect"
- app.get("/certifications/redirect", async (request, response) => {
- const { imp_uid } = request.query; // Get imp_uid from req.query
-})
-```
-
-
+
+ ```ts title="server-side"
+ app.use(bodyParser.json());
+ // controller that handles POST request to "/certifications"
+ app.post("/certifications", async (request, response) => {
+ const { imp_uid } = request.body; // Get imp_uid from req.body
+ });
+ ```
+
+
+
+ ```ts
+ app.use(bodyParser.json());
+ // controller that handles GET request to "/certifications/redirect"
+ app.get("/certifications/redirect", async (request, response) => {
+ const { imp_uid } = request.query; // Get imp_uid from req.query
+ });
+ ```
+
-### **STEP 02.** Get verification information
+## **STEP 02.** Get verification information
To get verification information from the i'mport server, you must first get a [**REST API access token**](../../api/rest-api-access-token). Use the `access token` and `imp_uid` (verification ID) to call the **Get identity verification info REST API** that returns the verification information as follows:
-```javascript title="sever-side"
+```ts title="sever-side"
app.use(bodyParser.json());
- ...
- // controller that handles POST request to "/certifications"
- app.post("/certifications", async (request, response) => {
- const { imp_uid } = request.body; // Get imp_uid from request.body
- try {
- // Get access token
- const getToken = await axios({
- url: "https://api.iamport.kr/users/getToken",
- method: "post", // POST method
- headers: { "Content-Type": "application/json" }, // "Content-Type": "application/json"
- data: {
- imp_key: "imp_apikey", // REST API Key
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f" // REST API Secret
- }
- });
- const { access_token } = getToken.data.response; // Access token
- ...
- // Get verification info from i'mport server using imp_uid
- const getCertifications = await axios({
- url: `https://api.iamport.kr/certifications/\${imp_uid}\`, // Pass imp_uid
- method: "get", // GET method
- headers: { "Authorization": access_token } // Add access token to Authorization header
- });
- const certificationsInfo = getCertifications.data.response; // Save verification info
- ...
- } catch(e) {
- console.error(e);
- }
- });
+// controller that handles POST request to "/certifications"
+app.post("/certifications", async (request, response) => {
+ const { imp_uid } = request.body; // Get imp_uid from request.body
+ try {
+ // Get access token
+ const getToken = await axios({
+ url: "https://api.iamport.kr/users/getToken",
+ method: "post", // POST method
+ headers: { "Content-Type": "application/json" }, // "Content-Type": "application/json"
+ data: {
+ imp_key: "imp_apikey", // REST API Key
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f", // REST API Secret
+ },
+ });
+ const { access_token } = getToken.data.response; // Access token
+ // Get verification info from i'mport server using imp_uid
+ const getCertifications = await axios({
+ url: `https://api.iamport.kr/certifications/${imp_uid}`, // Pass imp_uid
+ method: "get", // GET method
+ headers: { Authorization: access_token }, // Add access token to Authorization header
+ });
+ const certificationsInfo = getCertifications.data.response; // Save verification info
+ } catch (e) {
+ console.error(e);
+ }
+});
```
-### **STEP 03.** Using verification information
+## **STEP 03.** Using verification information
Retrieve the following user information from the verification information and add the necessary
service logic.
@@ -98,55 +90,52 @@ service logic.
- `unique_in_site`: same as DI value - unique key to identify the user per Merchant ID (website).
-In addition to the above information, if you need access to a user's mobile phone number (**`phone`**) and carrier (**`carrier`**) or foreigner status (**`foreigner`**), you must post a **Consent to Provision of Personal Information on your website** and send a **request to ****cs@iamport.kr**. Note that this service is available once it is requested to Danal PG and approved after contracting with i'mport.\
-
-**\**
+ In addition to the above information, if you need access to a user's mobile phone number (**`phone`**) and carrier (**`carrier`**) or foreigner status (**`foreigner`**), you must post a **Consent to Provision of Personal Information on your website** and send a **request to** **[cs@iamport.kr](mailto:cs@iamport.kr)**. Note that this service is available once it is requested to Danal PG and approved after contracting with i'mport.\\
-- Business name:
-- Business registration number:
-- Danal Merchant ID (CPID) for identity verification:
-- Privacy Policy URL: If unable to provide the URL when using an app service, capture and send the 'Privacy Policy' path.
+ **\**
-**\**
+ - Business name:
+ - Business registration number:
+ - Danal Merchant ID (CPID) for identity verification:
+ - Privacy Policy URL: If unable to provide the URL when using an app service, capture and send the 'Privacy Policy' path.
-- `Marpple Co., Ltd.: https://marpple.shop/kr/@/privacy`
-- `Brave Mobile Co., Ltd./Soomgo: https://soomgo.com/terms/privacy`
-- `Marketit Co., Ltd.: https://static.marketit.asia/static/privacy-terms.pdf`
+ **\**
+ - `Marpple Co., Ltd.: https://marpple.shop/kr/@/privacy`
+ - `Brave Mobile Co., Ltd./Soomgo: https://soomgo.com/terms/privacy`
+ - `Marketit Co., Ltd.: https://static.marketit.asia/static/privacy-terms.pdf`
-```javascript title="Node.js"
- // controller that handles POST request to "/certifications"
- app.post("/certifications", async (request, response) => {
- const { imp_uid } = request.body; // Get imp_uid from request.body
- try {
- // Get access token
- /* ...Omitted... */
- // Get verification info using imp_uid
- /* ...Omitted... */
- const certificationsInfo = getCertifications.data.response; // Save verification info
- // unique_key: Unique key for user, unique_in_site: Unique key for user per site
- const { unique_key, unique_in_site, name, gender, birth } = certificationsInfo;
- ...
- // Check age restrictions
- if (new Date(birth).getFullYear() <= 1999) {
- // Check successful
+```ts title="Node.js"
+// controller that handles POST request to "/certifications"
+app.post("/certifications", async (request, response) => {
+ const { imp_uid } = request.body; // Get imp_uid from request.body
+ try {
+ // Get access token
+ /* ...Omitted... */
+ // Get verification info using imp_uid
+ /* ...Omitted... */
+ const certificationsInfo = getCertifications.data.response; // Save verification info
+ // unique_key: Unique key for user, unique_in_site: Unique key for user per site
+ const { unique_key, unique_in_site, name, gender, birth } =
+ certificationsInfo;
+ // Check age restrictions
+ if (new Date(birth).getFullYear() <= 1999) {
+ // Check successful
+ } else {
+ // Check failed
+ }
+ // one account per person check
+ // Query database with unique_key to check for existing account
+ Users.find({ certificationKey: unique_key }).then((user) => {
+ if (!user) {
+ // New user
} else {
- // Check failed
+ // Existing user
}
- ...
- // one account per person check
- // Query database with unique_key to check for existing account
- Users.find({ certificationKey: unique_key })
- .then((user) => {
- if (!user) {
- // New user
- } else {
- // Existing user
- }
- });
- } catch(e) {
- console.error(e);
- }
- });
+ });
+ } catch (e) {
+ console.error(e);
+ }
+});
```
diff --git a/src/content/docs/en/etc/phone/readme.mdx b/src/content/docs/en/etc/phone/readme.mdx
index 803861e90..738649875 100644
--- a/src/content/docs/en/etc/phone/readme.mdx
+++ b/src/content/docs/en/etc/phone/readme.mdx
@@ -5,13 +5,18 @@ description: Learn how to integrate mobile identity verification service using i
import Figure from "~/components/Figure.astro";
-**Mobile phone identity verification service** is used to confirm the identity of the user and the accuracy of the user's identity information submitted through the mobile phone under the user's name.
+**Mobile phone identity verification service** is used to confirm
+the identity of the user and the accuracy of the user's identity information
+submitted through the mobile phone under the user's name.
-User's identity verification is needed to sign up for websites, make payments, or verify age. You can perform identity verification by using the identity verification app installed on a mobile device, or by submitting your identity information (**name, date of birth, mobile phone number**) through the verification request page and then confirming the verification number received via text message.
+User's identity verification is needed to sign up for websites, make payments, or verify age.
+You can perform identity verification by using the identity verification app
+installed on a mobile device, or by submitting your identity information
+(**name, date of birth, mobile phone number**) through the verification request page
+and then confirming the verification number received via text message.
-
+
-The flow of i'mport mobile identity verification involves performing verification using the JavaScript SDK and then the merchant server **retrieving the verification result** using the ChaiPort REST API.
+The flow of i'mport mobile identity verification involves performing verification
+using the JavaScript SDK and then the merchant server
+**retrieving the verification result** using the ChaiPort REST API.
diff --git a/src/content/docs/en/etc/url.mdx b/src/content/docs/en/etc/url.mdx
index 2d2ae58bf..02dddc9f6 100644
--- a/src/content/docs/en/etc/url.mdx
+++ b/src/content/docs/en/etc/url.mdx
@@ -4,19 +4,20 @@ description: Learn about the payment URL generation API.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
import Swagger from "~/components/gitbook/swagger/Swagger.astro";
import SwaggerDescription from "~/components/gitbook/swagger/SwaggerDescription.astro";
import SwaggerParameter from "~/components/gitbook/swagger/SwaggerParameter.astro";
import SwaggerResponse from "~/components/gitbook/swagger/SwaggerResponse.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Overview
+## 1. Overview
-This document describes i'mport payment URL generation API specification. i'mport Merchants can use the service without any restrictions.
+This document describes i'mport payment URL generation API specification.
+i'mport Merchants can use the service without any restrictions.
-### 2. API URI
+## 2. API URI
Payment API is exposed as REST web service.
@@ -25,230 +26,203 @@ Payment API is exposed as REST web service.
> **Content-Type : application/json;charset=UTF-8**
-
-
-```url title="URI"
-https://api.iamport-dev.co/api/supplements/v1/link/payment
-```
-
-
-
-
-
-```title="URI"
-https://api.iamport.co/api/supplements/v1/link/payment
-```
-
-
+
+ ```http title="URI"
+ POST https://api.iamport-dev.co/api/supplements/v1/link/payment
+ ```
+
+
+
+ ```http title="URI"
+ POST https://api.iamport.co/api/supplements/v1/link/payment
+ ```
+
-### 3. Description
+## 3. Description
-Customers can access the generated payment URL to make a payment. It supports all payment methods supported by the PG. When the link expires, payment is no longer available.
+Customers can access the generated payment URL to make a payment.
+It supports all payment methods supported by the PG.
+When the link expires, payment is no longer available.
-### 4. Request message specification
+## 4. Request message specification
-
-HTTP Method : POST
-
-Content-Type : Application.json;charset=UTF-8
-
-
-
-### Parameters
-
-#### Body
-
-
-
-
-Title of the bridge page
-
-
-
-
-
-
-
-Merchant ID
-
-
+
+ HTTP Method : POST
-
-
-
+ Content-Type : Application.json;charset=UTF-8
+
-Amount
+ ### Parameters
-
+ #### Body
-
-
-
+
+
+ Title of the bridge page
+
+
-Order ID
+
+
+ Merchant ID
+
+
-
+
+
+ Amount
+
+
-
-
-
+
+
+ Order ID
+
+
-Product name
+
+
+ Product name
+
+
-
+
+ Tax free amount
+
-
-
-Tax free amount
+
+
+ Currency code
+
+
-
-
-
+
+ Payment window language
-Currency code
+ -ko
-
+ -en
+
-
-
-Payment window language
+
+ Customer name
+
-\-ko
+
+
+ Customer phone
+
+
-\-en
+
+ Customer address
+
-
-
-Customer name
+
+ Customer email
+
-
-
-
+
+ Customer zip
+
-Customer phone
+
+ Custom data
+
-
+
+ Notification URL to receive payment result
+
-
-
-Customer address
+
+
+ Page expiration
+
+
-
-
-Customer email
+
+ Bridge page language
-
-
-Customer zip
+ -ko : Korean
-
-
-Custom data
+ -en : English
+
-
-
-Notification URL to receive payment result
+
+ **pg** **\*** **string**
-
-
-
+ PG code
-Page expiration
+ [#undefined](../sdk/javascript-sdk/rps#undefined "mention")
-
+ ---
-
-
-Bridge page language
+ **pay\_method** **\*** **string**
-\-ko : Korean
+ Payment method code
-\-en : English
+ [#undefined](../sdk/javascript-sdk/rps#undefined "mention")
-
-
-**pg** **\*** **string**
+ ---
-PG code
+ **label** **\*** **string**
-[#undefined](../sdk/javascript-sdk/rps#undefined "mention")
+ Payment method shown on bridge page
+
----
-
-**pay_method** **\*** **string**
-
-Payment method code
-
-[#undefined](../sdk/javascript-sdk/rps#undefined "mention")
-
----
-
-**label** **\*** **string**
-
-Payment method shown on bridge page
-
-
-
-### Responses
-
-
-```json title="json"
-{
- "shortenedUrl": "https://dev.impay.link/4bdf239e" //Create payment link
-}
-```
-
-
+ ### Responses
+
+ ```json title="json"
+ {
+ "shortenedUrl": "https://dev.impay.link/4bdf239e" //Create payment link
+ }
+ ```
+
**#Sample JSON request message**
-```title="json"
+```json title="json"
{
- "payment_info": "{\"title\":\"Test merchant\",\"user_code\":\"imp68124833\",\"amount\":10000,\"merchant_uid\":\"merchant_1630665784552\",\"name\":\"payment link test\",\"tax_free\":\"tax free amount\",\"currency\":\"KRW\",\"language\":\"ko\",\"buyer_name\":\"\",\"buyer_tel\":\"\",\"buyer_addr\":\"\",\"buyer_email\":\"\",\"buyer_postcode\":\"\",\"custom_data\":\"json_object\",\"notice_url\":\"notification url\",\"pay_methods\":[{\"pg\":\"INIpayTest\",\"pay_method\":\"card\",\"label\":\"credit/check card\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"naverpay\",\"label\":\"Naver Pay\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"kakaopay\",\"label\":\"Kakao Pay\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"phone\",\"label\":\"mobile micropayment\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"trans\",\"label\":\"account transfer\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"vbank\",\"label\":\"virtual account\"}]}",
- "expired_at": 1634324016
+ "payment_info": "{\"title\":\"Test merchant\",\"user_code\":\"imp68124833\",\"amount\":10000,\"merchant_uid\":\"merchant_1630665784552\",\"name\":\"payment link test\",\"tax_free\":\"tax free amount\",\"currency\":\"KRW\",\"language\":\"ko\",\"buyer_name\":\"\",\"buyer_tel\":\"\",\"buyer_addr\":\"\",\"buyer_email\":\"\",\"buyer_postcode\":\"\",\"custom_data\":\"json_object\",\"notice_url\":\"notification url\",\"pay_methods\":[{\"pg\":\"INIpayTest\",\"pay_method\":\"card\",\"label\":\"credit/check card\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"naverpay\",\"label\":\"Naver Pay\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"kakaopay\",\"label\":\"Kakao Pay\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"phone\",\"label\":\"mobile micropayment\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"trans\",\"label\":\"account transfer\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"vbank\",\"label\":\"virtual account\"}]}",
+ "expired_at": 1634324016
}
```
**#Sample payment (bridge) page**
-
-**Sample response URL page displayed when payment URL API request is successful.**
-
-
-
-
+
+ **Sample response URL page displayed when payment URL API request is successful.**
-
-**Sample page displayed for an expired payment URL page (expire\_at exceeded).**
+
+
-
+
+ **Sample page displayed for an expired payment URL page (expire\_at exceeded).**
-
+
+
-### 5. Disabling payment URL
+## 5. Disabling payment URL
-**Append the last part of the response** (**shortenedUrl**) **URL to the payment URI API address and call it.**
+**Append the last part of the response** (**shortenedUrl**)
+**URL to the payment URI API address and call it.**
> **HTTP Method :** **PUT**
-**For the following API response**
-
-```json
-{ "shortenedUrl": "https://dev.impay.link/4bdf239e" }
-```
+ **For the following API response**
-[https://api.iamport.co/api/supplements/v1/link/payment/](https://api.iamport.co/api/supplements/v1/link/payment/%7BGUID%7D) **4bdf239e**
+ ```json
+ { "shortenedUrl": "https://dev.impay.link/4bdf239e" }
+ ```
-Call the above payment URL to disable it.
+ [https://api.iamport.co/api/supplements/v1/link/payment/](https://api.iamport.co/api/supplements/v1/link/payment/%7BGUID%7D) **4bdf239e**
+ Call the above payment URL to disable it.
diff --git a/src/content/docs/en/faq/undefined.mdx b/src/content/docs/en/faq/undefined.mdx
index 888aa616e..2235bba15 100644
--- a/src/content/docs/en/faq/undefined.mdx
+++ b/src/content/docs/en/faq/undefined.mdx
@@ -7,50 +7,50 @@ import Details from "~/components/gitbook/Details.astro";
import Hint from "~/components/Hint.astro";
-
Webhook call rules
+
Webhook call rules
-- Webhook is only sent once by default.
-- You can set to resend (retry) the webhook up to 5 times in 1 minute increments. i'mport will stop sending the webhook once the merchant responds with HTTP STATUS 200.
-- You can also manually resend the webhook from the Admin console. (Payment approvals -> Webhook log -> Resend)
-- If you change the webhook address, webhooks for past transactions are sent to the previous webhook URL.
+ - Webhook is only sent once by default.
+ - You can set to resend (retry) the webhook up to 5 times in 1 minute increments.
+ i'mport will stop sending the webhook once the merchant responds with HTTP STATUS 200.
+
+ - You can also manually resend the webhook from the Admin console. (Payment approvals -> Webhook log -> Resend)
+
+ - If you change the webhook address, webhooks for past transactions are sent to the previous webhook URL.
-
Provision of comprehensive response code list
-
-The error code and message in the payment response are the same as those sent by the source (PG). There is no comprehensive error code list because the response codes and messages differ by each PG linked with i'mport.
+
Provision of comprehensive response code list
+ The error code and message in the payment response are the same as those sent by the source (PG).
+ There is no comprehensive error code list because the response codes and messages differ by each PG linked with i'mport.
-
How to distinguish between production account and developer account
+
How to distinguish between production account and developer account
-### **Single account for both production and test modes**
+ ## **Single account for both production and test modes**
-Enter the merchant information for testing by clicking 'Add PG' from existing settings.
+ Enter the merchant information for testing by clicking 'Add PG' from existing settings.
-- Pros: Can use the same Merchant ID and API key/secret for testing.
-- Cons: Care needs to be taken in setting/saving PGs because the settings are shared with the production account.
+ - Pros: Can use the same Merchant ID and API key/secret for testing.
+ - Cons: Care needs to be taken in setting/saving PGs because the settings are shared with the production account.
-**\[Checklist]**
+ **\[Checklist]**
-To request payment with a specific Merchant ID for the same PG, you must specify the `pg` parameter as **PG. Merchant ID**.
+ To request payment with a specific Merchant ID for the same PG,
+ you must specify the `pg` parameter as **PG. Merchant ID**.
-### **Create a separate test-only account**
+ ### **Create a separate test-only account**
-You can create a developer account by signing up in the i'mport Admin page ([https://admin.iamport.kr/](https://admin.iamport.kr/)).
-
-- Pros: Enables stable testing by using separate accounts for production and development.
-- Cons: Requires source code branching due to having different Merchant ID and API key/secret for each account.
+ You can create a developer account by signing up in the i'mport Admin page ([https://admin.iamport.kr/](https://admin.iamport.kr/)).
+ - Pros: Enables stable testing by using separate accounts for production and development.
+ - Cons: Requires source code branching due to having different Merchant ID and API key/secret for each account.
-**For additional FAQs, refer to:**
-
-[https://faq.iamport.kr/](https://faq.iamport.kr/)
+ **For additional FAQs, refer to:**
+ [https://faq.iamport.kr/](https://faq.iamport.kr/)
-
-
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/blue-walnut.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/blue-walnut.mdx
index 4556ac1e0..dfbd0f08a 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/blue-walnut.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/blue-walnut.mdx
@@ -5,88 +5,86 @@ description: Blue Walnut payment window integration guide
import Codepen from "~/components/gitbook/Codepen.astro";
import Details from "~/components/gitbook/Details.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-### 1. Configure Blue Walnut PG settings
+## 1. Configure Blue Walnut PG settings
-Refer to the [**Blue Walnut settings**](../../ready/2.-pg/payment-gateway-settings/undefined-7) page to configure the PG settings.
+Refer to the [**Blue Walnut settings**](../../ready/2.-pg/payment-gateway-settings/undefined-7)
+page to configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
-To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/) IMP.**request_pay**(param, callback).
+To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url**.
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url**.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'bluewalnut',
- pay_method : 'card',
- merchant_uid : '{Merchant created Order ID}', // Example: order_no_0001
- name : 'Order name: Test payment request',
- amount : 14000,
- buyer_email : 'iamport@siot.do', // required
- buyer_name : 'Jack Son', // Must include a space between Firstname Lastname
- buyer_tel : '010-1234-5678',
- buyer_addr : 'Shinsa-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456',
- m_redirect_url : '{Mobile only - URL to redirect to after payment approval}' // Example: https://www.my-service.com/payments/complete/mobile
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
-
-###
-
-### Key parameter description
-
-**`pg`** **\***\*\* ****s****tring\*\*
-
-**PG code**
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "bluewalnut",
+ pay_method: "card",
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14000,
+ buyer_email: "iamport@siot.do", // required
+ buyer_name: "Jack Son", // Must include a space between Firstname Lastname
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`bluewalnut`**.
+ ### Key parameter description
-**`pay_method`** **\***\*\* ****s****tring\*\*
+ **`pg`** **\*** **string**
-**Payment method code**
+ **PG code**
-
-
Payment method codes
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`bluewalnut`**.
-- `card` (credit card)
-- `trans`(instant account transfer)
-- `vbank`(virtual account)
-- `phone`(mobile micropayment)
+ **`pay_method`** **\*** **string**
-
+ **Payment method code**
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+
+
Payment method codes
-**Order ID**
+ - `card` (credit card)
+ - `trans`(instant account transfer)
+ - `vbank`(virtual account)
+ - `phone`(mobile micropayment)
+
-Must be unique for each request.
+ **`merchant_uid`** **\*** **string**
-**`amount`** **\***\*\* ****integer\*\*
+ **Order ID**
-**Payment amount**
+ Must be unique for each request.
-Must be an integer (not string)
+ **`amount`** **\*** **integer**
-
+ **Payment amount**
-
+ Must be an integer (not string)
-
-#### Not supported
+
+
-
+
+ Not supported
+
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/danal.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/danal.mdx
index 0a8f1c2bc..1fe8c2857 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/danal.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/danal.mdx
@@ -5,256 +5,254 @@ description: Danal payment window integration guide
import Codepen from "~/components/gitbook/Codepen.astro";
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure Danal PG settings
+## 1. Configure Danal PG settings
-Refer to the [**Danal settings**](../../ready/2.-pg/payment-gateway-settings/undefined-2) page to configure the PG settings.
+Refer to the [**Danal settings**](../../ready/2.-pg/payment-gateway-settings/undefined-2) page
+to configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
-To open the Danal TPay payment window, call [JavaScript SDK](../../sdk/javascript-sdk/) IMP.**request_pay**(param, callback).
+To open the Danal TPay payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
+IMP.**request\_pay**(param, callback).
In both PC and mobile browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
-
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "danal_tpay",
- pay_method: "card",
- merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
- name: "Order name: Test payment request",
- amount: 14000,
- buyer_email: "iamport@siot.do",
- buyer_name: "John Doe",
- buyer_tel: "010-1234-5678",
- buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
- buyer_postcode: "123-456",
- },
- function (rsp) {
- // callback logic
- //* ...Omitted... *//
- }
-);
-```
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "danal_tpay",
+ pay_method: "card",
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "John Doe",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-### Key parameter description
+ ### Key parameter description
-**`pg`** **\*** **s** **tring**
+ **`pg`** **\*** **string**
-**PG code**
+ **PG code**
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`danal_tpay`**.
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`danal_tpay`**.
-**`pay_method`** **\*** **s** **tring**
+ **`pay_method`** **\*** **string**
-**Payment method code**
+ **Payment method code**
-
-
Payment method codes
+
+
Payment method codes
-- `card` (credit card)
-- `trans`(instant account transfer)
-- `vbank`(virtual account)
-- `cultureland`(Cultureland)
-- `happymoney`(Happy Money)
-- `booknlife` (Book n culture gift card)
+ - `card` (credit card)
+ - `trans`(instant account transfer)
+ - `vbank`(virtual account)
+ - `cultureland`(Cultureland)
+ - `happymoney`(Happy Money)
+ - `booknlife` (Book n culture gift card)
+
-
+ **`merchant_uid`** **\*** **string**
-**`merchant_uid`** **\*** **s** **tring**
+ **Order ID**
-**Order ID**
+ Must be unique for each request.
-Must be unique for each request.
+ **`buyer_tel`** **\*** **`string`**
-**`buyer_tel`** **`*`** **`string`**
+ **Customer phone number**
-**Customer phone number**
+ Danal payment window may throw an error if omitted
-Danal payment window may throw an error if omitted
+ **`amount`** **\*** **integer**
-**`amount`** **\*** **integer**
+ **Payment amount**
-**Payment amount**
+ Must be an integer (not string)
-Must be an integer (not string)
+
+ #### Virtual account payment requirement
-
-#### Virtual account payment requirement
+ - **`biz_num`**: 10-digit business registration number (required)
+
-- **`biz_num`**: 10-digit business registration number (required)
+
+
-
+
+ To open non-authenticated payment window, specify the **customer\_uid** parameter.
-
-
+
+ #### **amount**
-
-To open non-authenticated payment window, specify the **customer\_uid** parameter.
+ - If requesting **both billing key and initial payment**, specify the payment amount.
-
-#### **amount**
-
-- If requesting **both billing key and initial payment**, specify the payment amount.
-- If only requesting for billing key, set to **0**.\
- (if amount is set to 0, Danal executes a test payment of 10 won which is automatically cancelled after 30 minutes.)
-
-
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "danal_tpay",
- pay_method: "card", // only 'card' supported.
- merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
- name: "Order name: Billing key request test",
- amount: 0, // For display purpose only (set actual amount to also request payment approval).
- customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
- buyer_email: "johndoe@gmail.com",
- buyer_name: "John Doe",
- buyer_tel: "02-1234-1234",
- buyer_addr: "Samseong-dong, Gangnam-gu, Seoul",
- period: {
- from: "20200101", //YYYYMMDD
- to: "20201231", //YYYYMMDD
- },
- },
- function (rsp) {
- if (rsp.success) {
- alert("Success");
- } else {
- alert("Failed");
- }
- }
-);
-```
+ - If only requesting for billing key, set to **0**.\
+ (if amount is set to 0, Danal executes a test payment of 10 won which is automatically cancelled after 30 minutes.)
+
-### Key parameter description
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "danal_tpay",
+ pay_method: "card", // only 'card' supported.
+ merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
+ name: "Order name: Billing key request test",
+ amount: 0, // For display purpose only (set actual amount to also request payment approval).
+ customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
+ buyer_email: "johndoe@gmail.com",
+ buyer_name: "John Doe",
+ buyer_tel: "02-1234-1234",
+ buyer_addr: "Samseong-dong, Gangnam-gu, Seoul",
+ period: {
+ from: "20200101", //YYYYMMDD
+ to: "20201231", //YYYYMMDD
+ },
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("Success");
+ } else {
+ alert("Failed");
+ }
+ },
+ );
+ ```
-**`pg`** **\***\*\* ****s****tring\*\*
+ ### Key parameter description
-**PG code**
+ **`pg`** **\*** **string**
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`danal_tpay`**.
+ **PG code**
-**`customer_uid`** **\*** **string**
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`danal_tpay`**.
-**Credit card billing key**
+ **`customer_uid`** **\*** **string**
-Billing key to be mapped 1:1 with the user-entered credit card information.
+ **Credit card billing key**
-**`amount`** **\*** **Integer**
+ Billing key to be mapped 1:1 with the user-entered credit card information.
-**Payment amount**
+ **`amount`** **\*** **Integer**
-0: only billing key, **> 0: billing key + initial payment**
+ **Payment amount**
-**` period`` `****`array`**
+ 0: only billing key, **> 0: billing key + initial payment**
-Product subscription payment for subscription payment. The date is displayed on the Danal payment window.
+ **`period`` `****`array`**
-**`from`****`: YYYYMMDD`**
+ Product subscription payment for subscription payment. The date is displayed on the Danal payment window.
-**`to`****`: YYYYMMDD`**\
+ **`from`****`: YYYYMMDD`**
-### Request payment with billing key (customer_uid)
+ **`to`****`: YYYYMMDD`**\\
-After successfully getting the billing key, the billing key is **stored on the i'mport server** mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the [**non-authenticated payment request REST API**](../../api/api/api) with the `customer_uid` as follows:
+ ### Request payment with billing key (customer\_uid)
-```title="sever-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ After successfully getting the billing key,
+ the billing key is **stored on the i'mport server** mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the [**non-authenticated payment request REST API**](../../api/api/api)
+ with the `customer_uid` as follows:
-
+ ```sh title="sever-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-### 3. Additional functions
+## 3. Additional functions
-
-```javascript title="javascript"
-display: {
- card_quota: [6] // Display up to 6 months installment plans
-}
-```
-
-**Parameters**
-
-- **card_quota :**
- - `[]`: Only immediate pay
- - `3,6`: immediate, 3, 6 month installment plans
-
-
-Installment plan option is available only for **KRW 50,000 or more**.
-
-
-
-
-
-
-
-
-```javascript title="javascript"
-card: {
- direct: {
- code: "367",
- quota: 3,
- usePoint : “Y”
+
+ ```json title="javascript"
+ {
+ "display": {
+ "card_quota": [6] // Display up to 6 months installment plans
+ }
}
-}
-```
-
-**Parameters**
-
-- **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
-- **quota**: Installment plan. For immediate, set to 0. (**integer**)
-- **usePoint**: Option to use points (post applied)
-
-
-**Danal setup required**
-
-- Direct module call requires pre-setup by Danal.
-
-
-
-
-
-
-```javascript title="javascript"
-card : {
- detail : [
- {card_code:"*", enabled:false}, // Disable all credit cards
- {card_code:'366', enabled:true} // Enable specific credit card
- ]
-}
-```
+ ```
+
+ **Parameters**
+
+ - **card\_quota :**
+ - `[]`: Only immediate pay
+ - `3,6`: immediate, 3, 6 month installment plans
+
+
+ Installment plan option is available only for **KRW 50,000 or more**.
+
+
+
+
+
+
+ ```json title="javascript"
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3,
+ "usePoint": "Y"
+ }
+ }
+ }
+ ```
+
+ **Parameters**
+
+ - **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
+ - **quota**: Installment plan. For immediate, set to 0. (**integer**)
+ - **usePoint**: Option to use points (post applied)
+
+
+ **Danal setup required**
+
+ - Direct module call requires pre-setup by Danal.
+
+
+
+
+ ```json title="javascript"
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, // Disable all credit cards
+ { "card_code": "366", "enabled": true }, // Enable specific credit card
+ ]
+ }
+ }
+ ```
-**Parameters**
+ **Parameters**
-- **card_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string)**
-- **enabled:** Option to enable the credit card (**boolean)**
+ - **card\_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630)
+ (**string)**
-
+ - **enabled:** Option to enable the credit card (**boolean)**
-
+
+
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/daou-payjoa/precautions-for-using-payjoa.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/daou-payjoa/precautions-for-using-payjoa.mdx
index be0c7aaf4..9a147afee 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/daou-payjoa/precautions-for-using-payjoa.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/daou-payjoa/precautions-for-using-payjoa.mdx
@@ -8,171 +8,169 @@ import Details from "~/components/gitbook/Details.astro";
## Things to note when integrating PAYJOA
-
Returns success in PC and imp_success in mobile
-
-The payment window call (`IMP.request_pay`) and post-payment processing differs for PC and mobile. In PC, the call is made using iframe and the callback function (the second argument of IMP.request_pay) is called after the payment process is completed. In mobile, the page is redirected (302) to the specified URL (`m_redirect_url`_)._ At this time, the payment result (success/failure) is returned using the `success` parameter for PC and `imp_success` parameter for mobile. To summarize the flow:
-
-- \[PC] iframe → callback → result delivered in response.`success` returned via callback
-
- ```jsx
- IMP.request_pay(
- {
- // Omitted
- },
- function (response) {
- const { success } = response; // payment successul or failed
- if (success) {
- // Success logic
- } else {
- // Failure logic
- }
- }
- );
- ```
-
-- \[Mobile] Redirect → redirct (302) to m_redirect_url → result delivered in `imp_success` query parameter
-
- ```jsx
- /**
- * Sample 302 redirect URL redirected to after payment process is completed
- * when m_redirect_url is set to 'https://myservice.com/payments/complete'
- */
- https://myservice.com/payments/complete?**imp_success=true**&imp_uid=imp1234567890&merchant_uid=mid_123467890
- ```
-
-#### **`imp_success` and `success` are deprecated**
-
-Regardless you should not determine the success/failure of a payment based on either of these parameters. It only indicates the failure/success of payment at the time of the response from i'mport → merchant client, and its value can only be finalized when notification of the result is sent from PAYJOA → i'mport and then it is updated in the i'mport DB.
-
-Since the **payment result is sent asynchronously in \[PAYJOA → i'mport → i'mport DB update] and \[i'mport → merchant client]**, **the `imp_success` or `success` parameter received by the merchant client can be false (failed) for a successful transaction if it has not been updated in the database yet**.
-
-Hence, only the i'mport order ID (`imp_uid`) and the merchant order ID (`merchant_uid`) of the result are accurate. You must send these values to the merchant server and use them to call the i'mport Get payment API ([GET /payments/\{imp_uid}](https://api.iamport.kr/#!/payments/getPaymentByImpUid)) to accurately determine whether the payment is successful (`status`=`paid`) or failed (`status`=`failed`).
-
+
Returns success in PC and imp\_success in mobile
+
+ The payment window call (`IMP.request_pay`) and post-payment processing differs for PC and mobile.
+ In PC, the call is made using iframe and the callback function
+ (the second argument of IMP.request\_pay) is called after the payment process is completed.
+ In mobile, the page is redirected (302) to the specified URL (`m_redirect_url`).
+ At this time, the payment result (success/failure) is returned using the `success` parameter for PC
+ and `imp_success` parameter for mobile. To summarize the flow:
+
+ - \[PC] iframe → callback → result delivered in response.`success` returned via callback
+
+ ```tsx
+ IMP.request_pay(
+ {
+ // Omitted
+ },
+ function (response) {
+ const { success } = response; // payment successul or failed
+ if (success) {
+ // Success logic
+ } else {
+ // Failure logic
+ }
+ },
+ );
+ ```
+
+ - \[Mobile] Redirect → redirct (302) to m\_redirect\_url → result delivered in `imp_success` query parameter
+
+ ```js
+ /**
+ * Sample 302 redirect URL redirected to after payment process is completed
+ * when m_redirect_url is set to 'https://myservice.com/payments/complete'
+ */
+ "https://myservice.com/payments/complete?imp_success=true&imp_uid=imp1234567890&merchant_uid=mid_123467890";
+ ```
+
+ ### **`imp_success` and `success` are deprecated**
+
+ Regardless you should not determine the success/failure of a payment based on either of these parameters.
+ It only indicates the failure/success of payment at the time of the response from i'mport → merchant client,
+ and its value can only be finalized when notification of the result is sent from PAYJOA → i'mport
+ and then it is updated in the i'mport DB.
+
+ Since the **payment result is sent asynchronously in \[PAYJOA → i'mport → i'mport DB update]
+ and \[i'mport → merchant client]**, **the `imp_success` or `success` parameter received
+ by the merchant client can be false (failed) for a successful transaction
+ if it has not been updated in the database yet**.
+
+ Hence, only the i'mport order ID (`imp_uid`) and the merchant order ID
+ (`merchant_uid`) of the result are accurate.
+ You must send these values to the merchant server and use them
+ to call the i'mport Get payment API ([GET /payments/\{imp\_uid}](https://api.iamport.kr/#!/payments/getPaymentByImpUid))
+ to accurately determine whether the payment is successful (`status`=`paid`) or failed (`status`=`failed`).
-
Session related issues when paying with Hana card/NH Apps Cache in Safari
-
-When paying with Hana card/NH Apps Cache (account transfer) in Safari, the message below (the session has expired and the connection with the card company has been terminated) is displayed and payment cannot be processed.
+
Session related issues when paying with Hana card/NH Apps Cache in Safari
-
+ When paying with Hana card/NH Apps Cache (account transfer) in Safari,
+ the message below (the session has expired and the connection with the card company has been terminated)
+ is displayed and payment cannot be processed.
-If you are experiencing this, make sure that the `Prevent cross-site tracking` and `Block all cookies` options are not checked in Safari Preferences as shown below, and then try again.
+
-
+ If you are experiencing this, make sure that the `Prevent cross-site tracking` and `Block all cookies` options
+ are not checked in Safari Preferences as shown below, and then try again.
+
-
Issues when paying with BC card in Safari/Firefox
-
-If you click the Next button after selecting BC Card in the credit card payment window, “Payment failed” alert message is displayed and you cannot proceed any further. In other browsers (Chrome, Opera, Edge, etc.) or when using other credit cards, the Facebook QR code for BC card payment is rendered without any problem.
+
Issues when paying with BC card in Safari/Firefox
-
+ If you click the Next button after selecting BC Card in the credit card payment window,
+ “Payment failed” alert message is displayed and you cannot proceed any further.
+ In other browsers (Chrome, Opera, Edge, etc.) or when using other credit cards,
+ the Facebook QR code for BC card payment is rendered without any problem.
-If you are experiencing this, make sure that pop-ups are allowed for the `*.payjoa.co.kr` domain in Safari Preferences as shown below, and then try again.
+
-
+ If you are experiencing this, make sure that pop-ups are allowed for the `*.payjoa.co.kr` domain
+ in Safari Preferences as shown below, and then try again.
+
-
Instant account transfer payment flow difference
+
Instant account transfer payment flow difference
-Since PAYJOA internally uses Toss Payments - account transfer, account transfer is available only through Toss Simple Payment, NH Apps Cache, and direct input of account information. Entering account information directly requires security card/OTP authentication → public certificate authentication.
+ Since PAYJOA internally uses Toss Payments - account transfer, account transfer is available
+ only through Toss Simple Payment, NH Apps Cache, and direct input of account information.
+ Entering account information directly requires security card/OTP authentication → public certificate authentication.
-For mobile payment, account transfer payment is available only through Toss Simple Payment and NH Apps Cache.
+ For mobile payment, account transfer payment is available only through Toss Simple Payment and NH Apps Cache.
-
-
-
+
+
-
Only depositor's name can be accessed after virtual account deposit
-
-When deposit is made to the (issued) virtual account, PAYJOA only reveals the name among the depositor's information (bank name, account number, sender). Therefore, when you retrieve the i'mport payment details ([**GET /payments/\{imp_uid}**](../../../api/payment-api/get-payment-api)), the depositor's bank code (`bank_code`) and bank name (`bank_name`) are both NULL. To get the depositor's name, you must set the query parameter (`extension`) to `true` as follows:
-
-```jsx
-GET http://api.iamport.kr/payments/{i'mport number}?extension=true
-
-{
- // ... Omitted
- bank_code: null, // Depositor's bank code not provided
- bank_name: null, // Depositor's bank name not provided
- extension: {
- // ... Omitted
- **"REMITTER": "John Doe" // Depositor's name**
- }
-}
-```
-
+
Only depositor's name can be accessed after virtual account deposit
+
+ When deposit is made to the (issued) virtual account,
+ PAYJOA only reveals the name among the depositor's information (bank name, account number, sender).
+ Therefore, when you retrieve the i'mport payment details ([**GET /payments/\{imp\_uid}**](../../../api/payment-api/get-payment-api)),
+ the depositor's bank code (`bank_code`) and bank name (`bank_name`) are both NULL.
+ To get the depositor's name, you must set the query parameter (`extension`) to `true` as follows:
+
+ ```json
+ // GET http://api.iamport.kr/payments/{i'mport number}?extension=true
+ {
+ // ... Omitted
+ "bank_code": null, // Depositor's bank code not provided
+ "bank_name": null, // Depositor's bank name not provided
+ "extension": {
+ // ... Omitted
+ "REMITTER": "John Doe" // Depositor's name
+ }
+ }
+ ```
-
Special contract with PAYJOA is required to cancel virtual account payment
-
-Cancellation (refund) of payment for completed virtual account deposit is available only through a special contract with PAYJOA due to virtual account issuance fee issues. Refunds for virtual account payments cannot be processed without this contract.
+
Special contract with PAYJOA is required to cancel virtual account payment
+ Cancellation (refund) of payment for completed virtual account deposit is available
+ only through a special contract with PAYJOA due to virtual account issuance fee issues.
+ Refunds for virtual account payments cannot be processed without this contract.
-
Cancellation of virtual account payment takes more than 7 business days to process
-
-Cancellation (refund) of PAYJOA virtual account payment is requested from the merchant → i'mport → PAYJOA. Since the refund is processed after a PAYJOA staff manually checks the request, it takes more than 7 business days for the refund amount to be deposited.
+
Cancellation of virtual account payment takes more than 7 business days to process
+ Cancellation (refund) of PAYJOA virtual account payment is requested from the merchant → i'mport → PAYJOA.
+ Since the refund is processed after a PAYJOA staff manually checks the request,
+ it takes more than 7 business days for the refund amount to be deposited.
-
Only one taxable/tax-free/combination CPID is issued for each case
-
-You need to request PAYJOA to issue the CPID on a `case-by-case` basis. In this way, all taxable/tax-free/combination transactions can be processed with one CPID.
+
Only one taxable/tax-free/combination CPID is issued for each case
+ You need to request PAYJOA to issue the CPID on a `case-by-case` basis.
+ In this way, all taxable/tax-free/combination transactions can be processed with one CPID.
-
Tax-free amount can be set only for card payment
-
-When calling the payment window (IMP.request_pay function), you can set the tax-free amount (`tax_free`) out of the total amount (`amount`). In the PAYJOA system, the tax-free amount is only available when paying by card (pay_method: `card`). Account transfer and virtual account payments are taxed in full.
+
Tax-free amount can be set only for card payment
+ When calling the payment window (IMP.request\_pay function),
+ you can set the tax-free amount (`tax_free`) out of the total amount (`amount`).
+ In the PAYJOA system, the tax-free amount is only available when paying by card (pay\_method: `card`).
+ Account transfer and virtual account payments are taxed in full.
-
PAYJOA bug
-
-#### Customer's phone number is not automatically filled in the escrow payment window
+
PAYJOA bug
-
+ ### Customer's phone number is not automatically filled in the escrow payment window
-- Unlike other payment windows, the customer's phone number (`buyer_tel`) passed into IMP.request_pay is not automatically filled in the escrow payment window. Note that PAYJOA does not support this function.
+
+ - Unlike other payment windows, the customer's phone number (`buyer_tel`) passed into IMP.request\_pay
+ is not automatically filled in the escrow payment window. Note that PAYJOA does not support this function.
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/daou-payjoa/readme.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/daou-payjoa/readme.mdx
index 9ecbf5181..e54c964d4 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/daou-payjoa/readme.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/daou-payjoa/readme.mdx
@@ -5,232 +5,232 @@ description: Daou payment window integration guide
import ContentRef from "~/components/gitbook/ContentRef.astro";
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure Daou PG settings
+## 1. Configure Daou PG settings
Refer to the [**Daou settings**](../../../ready/2.-pg/payment-gateway-settings/daou) page to
configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
To open the payment window, call [JavaScript SDK](../../../sdk/javascript-sdk/)
-IMP.**request_pay**(param, callback).
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url**.
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url**.
-**PAYJOA payment window integration requires ****JS SDK 1.2.0**** or later version.**
-
+ **PAYJOA payment window integration requires ****JS SDK 1.2.0**** or later version.**
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'daou',
- pay_method : 'card',
- merchant_uid: 'mid_1234567890',
- escrow: false,
- amount: 1004,
- name: 'NF long padding jacket M',
- buyer_name: 'John Doe',
- buyer_email: 'hello@world.com',
- buyer_tel: '01012345678',
- digital : false, // Set to true if contracted as digital
- m_redirect_url: 'https://allerts.com/payments/complete',
- bypass: {
- // PAYJOA (DaouData) specific parameters
- daou: {
- PRODUCTCODE: 'iamport',
- CASHRECEIPTFLAG: 2,
- },
- },
- app_scheme: 'iamportappscheme',
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
-
-###
-
-### Key parameter description
-
-**`pg`** **\*** **s** **tring**
-
-**PG code**
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "daou",
+ pay_method: "card",
+ merchant_uid: "mid_1234567890",
+ escrow: false,
+ amount: 1004,
+ name: "NF long padding jacket M",
+ buyer_name: "John Doe",
+ buyer_email: "hello@world.com",
+ buyer_tel: "01012345678",
+ digital: false, // Set to true if contracted as digital
+ m_redirect_url: "https://allerts.com/payments/complete",
+ bypass: {
+ // PAYJOA (DaouData) specific parameters
+ daou: {
+ PRODUCTCODE: "iamport",
+ CASHRECEIPTFLAG: 2,
+ },
+ },
+ app_scheme: "iamportappscheme",
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`daou`**.
+ ### Key parameter description
-**`pay_method`** **\*** **s** **tring**
+ **`pg`** **\*** **string**
-**Payment method code**
+ **PG code**
-
-
Payment method codes
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`daou`**.
-- `card` (credit card)
-- `trans`(instant account transfer)
-- `vbank`(virtual account)
+ **`pay_method`** **\*** **string**
-
+ **Payment method code**
-**`merchant_uid`** **\*** **s** **tring**
+
+
Payment method codes
-**Order ID**
+ - `card` (credit card)
+ - `trans`(instant account transfer)
+ - `vbank`(virtual account)
+
-Must be unique for each request.
+ **`merchant_uid`** **\*** **string**
-**`digital`** **`*`** **`string`**
+ **Order ID**
-**Digital contents option**
+ Must be unique for each request.
-Must specify the value based on the contract between merchant and PAYJOA. Otherwise, request will fail.
+ **`digital`** **`*`** **`string`**
-**`bypass.daou.PRODUCTCODE`** **`string`**
+ **Digital contents option**
-**Product code**
+ Must specify the value based on the contract between merchant and PAYJOA. Otherwise, request will fail.
-If there is no specification for the value and the value is not specified, i'mport sets it to the default value (iamport) and sends it to PAYJOA.
+ **`bypass.daou.PRODUCTCODE`** **`string`**
-**`bypass.daou.CASHRECEIPTFLAG`** **``** **`integer`**
+ **Product code**
-**Cash receipt issuance code**
+ If there is no specification for the value and the value is not specified, i'mport sets it to the default value (iamport) and sends it to PAYJOA.
-Auto cash receipt issuance code for cash payments (account transfer, virtual account)
+ **`bypass.daou.CASHRECEIPTFLAG`** **\`\`** **`integer`**
-**`1: Allow`**
+ **Cash receipt issuance code**
-**`2: Block`**
+ Auto cash receipt issuance code for cash payments (account transfer, virtual account)
-**`app_scheme`** **`string`**
+ **`1: Allow`**
-**Mobile app URL scheme**
+ **`2: Block`**
-Required in mobile app
+ **`app_scheme`** **`string`**
-**`amount`** **\*** **integer**
+ **Mobile app URL scheme**
-**Payment amount**
+ Required in mobile app
-Must be an integer (not string)
+ **`amount`** **\*** **integer**
-**`escrow`** **`boolean`**
+ **Payment amount**
-**Escrow option**
+ Must be an integer (not string)
-Only supports account transfer and virtual account payment.
+ **`escrow`** **`boolean`**
-
+ **Escrow option**
-
-#### **You can use i'mport REST API to request billing key, request payment, and schedule payment.**
+ Only supports account transfer and virtual account payment.
+
-### Request one-time payment
+
+ **You can use i'mport REST API to request billing key, request payment, and schedule payment.**
-To request a one-time payment, use the key-in REST[ **API POST /subscribe/payments/onetime**](../../../api/api/request-non-authenticated-payment-one-time-api). The card information is not saved during this process.
+ ### Request one-time payment
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ To request a one-time payment, use the key-in REST[**API POST /subscribe/payments/onetime**](../../../api/api/request-non-authenticated-payment-one-time-api).
+ The card information is not saved during this process.
-###
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-### Request billing key
+ ### Request billing key
-To request a billing key, use the billing key request REST [**API POST /subscribe/customers/\{customer_uid}**](../../../api/billing-key-api/api-1).
+ To request a billing key, use the billing key request REST [**API POST /subscribe/customers/\{customer\_uid}**](../../../api/billing-key-api/api-1).
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-### Request billing key + initial payment
+ ### Request billing key + initial payment
-To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../../api/api/request-non-authenticated-payment-one-time-api).
+ To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../../api/api/request-non-authenticated-payment-one-time-api).
-- **`customer_uid`** : required for saving the billing key.
+ - **`customer_uid`** : required for saving the billing key.
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-### Request payment with billing key
+ ### Request payment with billing key
-After successfully getting the billing key and making the initial payment, the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the repeat pay REST API ([**POST /subscribe/payments/again**](../../../api/api/api)) with the `customer_uid` as follows:
+ After successfully getting the billing key and making the initial payment, the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the repeat pay REST API ([**POST /subscribe/payments/again**](../../../api/api/api)) with the `customer_uid` as follows:
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-**For detailed information, refer to:**
+ **For detailed information, refer to:**
-
-
-
+
+
-### 3. Additional functions
+## 3. Additional functions
-
-```javascript title="javascript"
-display: {
- card_quota: [6] // Display up to 6 months installment plans
-}
-```
-
-**Parameters**
-
-- **card_quota :**
- - `[]`: Only immediate pay
- - `2,3,4,5,6`: immediate, 2, 3, 4, 5, 6 month installment plans\
+
+ ```json title="javascript"
+ {
+ "display": {
+ "card_quota": [6], // Display up to 6 months installment plans
+ }
+ }
+ ```
-
-Installment plan option is available only for **KRW 50,000 or more**.
+ **Parameters**
-
+ - **card\_quota :**
+ - `[]`: Only immediate pay
+ - `2,3,4,5,6`: immediate, 2, 3, 4, 5, 6 month installment plans\\
-
+
+ Installment plan option is available only for **KRW 50,000 or more**.
+
+
-
-For escrow payment, the **`escrow`** parameter must be set to **true** . When the escrow payment is completed, the merchant must register the shipping information for **settlement**. You can manage shipping information by using the [**Add delivery info**](../../../api/escrow-api/add-delivery-info-api) and [**Update delivery info**](../../../api/escrow-api/update-delivery-info-api) APIs.
+
+ For escrow payment, the **`escrow`** parameter must be set to **true** .
+ When the escrow payment is completed, the merchant must register the shipping information for **settlement**.
+ You can manage shipping information by using the [**Add delivery info**](../../../api/escrow-api/add-delivery-info-api)
+ and [**Update delivery info**](../../../api/escrow-api/update-delivery-info-api) APIs.
-```javascript title="API Body Example"
-{
- "logis": {
+ ```json title="API Body Example"
+ {
+ "logis": {
"invoice": "1728384716123",
"company": "CJGLS",
"receiving_at": "20220215",
"address": "16, Seongsui-ro 20-gil"
- },
- "receiver": {
+ },
+ "receiver": {
"name": "John DOe"
- },
- "sender": {
+ },
+ "sender": {
"relationship": "self"
+ }
}
-}
-```
-
-
-**Precaution**
+ ```
-- When adding/updating the escrow delivery information, PAYJOA does not validate the delivery information (tracking number, courier name, etc.) received from the merchant.
-
-
+
+ **Precaution**
-
+ - When adding/updating the escrow delivery information, PAYJOA does not validate the delivery information
+ (tracking number, courier name, etc.) received from the merchant.
+
+
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/eximbay.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/eximbay.mdx
index 7cad6f0e1..1f551a4d0 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/eximbay.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/eximbay.mdx
@@ -4,143 +4,147 @@ description: Eximbay payment window integration guide
---
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure Eximbay PG settings
+## 1. Configure Eximbay PG settings
Refer to the [**Eximbay settings**](../../ready/2.-pg/payment-gateway-settings/undefined-6) page to
configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
-IMP.**request_pay**(param, callback).
+IMP.**request\_pay**(param, callback).
In PC and mobile browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'eximbay',
- pay_method : 'card',
- merchant_uid : '{Merchant created Order ID}', // Example: order_no_0001
- name : 'Order name: Test payment request',
- amount : 14.20,
- currency : 'USD',
- buyer_email : 'iamport@siot.do',
- buyer_name : 'John Doe',
- buyer_tel : '010-1234-5678', // Required
- buyer_addr : 'Shinsa-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456'
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "eximbay",
+ pay_method: "card",
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14.2,
+ currency: "USD",
+ buyer_email: "iamport@siot.do",
+ buyer_name: "John Doe",
+ buyer_tel: "010-1234-5678", // Required
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-####
+ ### Key parameter description
-### Key parameter description
+ **`pg`** **\*** **string**
-**`pg`** **\***\*\* ****s****tring\*\*
+ **PG code**
-**PG code**
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`eximbay`**.
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`eximbay`**.
+ **`pay_method`** **\*** **string**
-**`pay_method`** **\***\*\* ****s****tring\*\*
+ **Payment method code**
-**Payment method code**
+
+
Payment method codes
-
-
Payment method codes
-
-- `card` (credit card)
-- `wechat`
-- `alipay`
-- `card` (foreign credit card)
-- `unionpay`
-- `tenpay`
-- `econtext` (payment via Japanese convenience store)
-
-
+ - `card` (credit card)
+ - `wechat`
+ - `alipay`
+ - `card` (foreign credit card)
+ - `unionpay`
+ - `tenpay`
+ - `econtext` (payment via Japanese convenience store)
+
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ **`merchant_uid`** **\*** **string**
-**Order ID**
+ **Order ID**
-Must be unique for each request.\
+ Must be unique for each request.
-**`buyer_tel`****`*`****`string`**
+ **`buyer_tel`****\*****`string`**
-**`Customer phone`**
+ **`Customer phone`**
-**`amount`** **\***\*\* ****integer\*\*
+ **`amount`** **\*** **integer**
-**Payment amount**
+ **Payment amount**
-Must be an integer (not string)
+ Must be an integer (not string)
-**`currency`****`string`**
+ **`currency`****`string`**
-**Currency**
+ **Currency**
-- KRW
-- USD
-- EUR
-- GBP
-- JPY
-- THB
-- SGD
-- RUB
-- HKD
-- CAD
-- AUD
+ - KRW
+ - USD
+ - EUR
+ - GBP
+ - JPY
+ - THB
+ - SGD
+ - RUB
+ - HKD
+ - CAD
+ - AUD
-**` language`` `****`string`**
+ **`language`` `****`string`**
-- Korean : ko
-- English : en
-- Chinese : zh
-- Japanese : jp
-
-
+ - Korean : ko
+ - English : en
+ - Chinese : zh
+ - Japanese : jp
+
-### Note
-
-i'mport does not support Eximbay subscription payment.
+ ### Note
+ i'mport does not support Eximbay subscription payment.
-
How to test convenience store payment
+
How to test convenience store payment
+
+ ### Convenience store payment method
+
+ As with virtual accounts in Korea, payment is processed at the convenience store counter using the message sent to the customer by e-mail or text message after requesting payment via the payment window.
+
+ - i'mport internally sets pay\_method : vbank
+ - Sends callback and webhook to notify that Econtext has been created (status: ready / vbank\_num is fixed as unknown)
+ - When Econtext confirms payment deposit, i'mport receives a response from Eximbay, changes status to `paid`, and sends a webhook for post-payment processing
+
+ ### **Convenience store payment test procedure**
+
+ As with the virtual account, you need to test the result of the customer's deposit and receive a notification upon deposit.
-### Convenience store payment method
+ 1. Set Eximbay test mode to `ON` and proceed with the payment window.
-As with virtual accounts in Korea, payment is processed at the convenience store counter using the message sent to the customer by e-mail or text message after requesting payment via the payment window.
+ 2. Write down the `pg_tid` value from the callback response (check the value from the PG approval number column in the i'mport Admin console)
-- i'mport internally sets pay_method : vbank
-- Sends callback and webhook to notify that Econtext has been created (status: ready / vbank_num is fixed as unknown)
-- When Econtext confirms payment deposit, i'mport receives a response from Eximbay, changes status to `paid`, and sends a webhook for post-payment processing
+ 3. Log in from [http://test.econ.ne.jp/site/tuchi\_2/tuchi\_menu\_2.html](http://test.econ.ne.jp/site/tuchi_2/tuchi_menu_2.html) \
+ (ID: ectest / password: #eg0810# )
-### **Convenience store payment test procedure**
+ 4. ShopID : 361301, orderID : `pg_tid` (from step 2)
-As with the virtual account, you need to test the result of the customer's deposit and receive a notification upon deposit.
+ 5. Click **登録** button at the bottom
-1. Set Eximbay test mode to `ON` and proceed with the payment window.
-2. Write down the `pg_tid` value from the callback response (check the value from the PG approval number column in the i'mport Admin console)
-3. Log in from [http://test.econ.ne.jp/site/tuchi_2/tuchi_menu_2.html](http://test.econ.ne.jp/site/tuchi_2/tuchi_menu_2.html) \
- (ID: ectest / password: #eg0810# )
-4. ShopID : 361301, orderID : `pg_tid` (from step 2)
-5. Click **登録** button at the bottom
-6. On the next page, click **登録** button
-7. Wait 10 minutes and then check that the status is changed to **paid** (at this point, webhook is sent to notify of the deposit)
+ 6. On the next page, click **登録** button
+ 7. Wait 10 minutes and then check that the status is changed to **paid** (at this point, webhook is sent to notify of the deposit)
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/inicis.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/inicis.mdx
index f7eede393..48b9ce626 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/inicis.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/inicis.mdx
@@ -6,294 +6,289 @@ description: KG INICIS payment window integration guide
import Codepen from "~/components/gitbook/Codepen.astro";
import ContentRef from "~/components/gitbook/ContentRef.astro";
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure KG INICIS settings
+## 1. Configure KG INICIS settings
-Refer to the [**KG INICIS settings**](../../ready/2.-pg/payment-gateway-settings/nhn-kcp-1) page to configure the PG settings.
+Refer to the [**KG INICIS settings**](../../ready/2.-pg/payment-gateway-settings/nhn-kcp-1) page
+to configure the PG settings.
![](/gitbook-assets/en/7043_14679_1310.jpeg)
-### 2. Request payment
+## 2. Request payment
-To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/) IMP.**request_pay**(param, callback).
+To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url** .
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url** .
-
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "html5_inicis",
+ pay_method: "card",
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "John Doe",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
+
+ ### Key parameter description
+
+ **`pg`** **\*** **string**
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "html5_inicis",
- pay_method: "card",
- merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
- name: "Order name: Test payment request",
- amount: 14000,
- buyer_email: "iamport@siot.do",
- buyer_name: "John Doe",
- buyer_tel: "010-1234-5678",
- buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
- buyer_postcode: "123-456",
- m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
- },
- function (rsp) {
- // callback logic
- //* ...Omitted... *//
- }
-);
-```
-
-####
-
-### Key parameter description
-
-**`pg`** **\*** **s** **tring**
-
-**PG code**
-
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`html5_inicis`**.
-
-**`pay_method`** **\*** **s** **tring**
-
-**Payment method code**
-
-
-
Payment method codes
-
-- `card` (credit card)
-- `trans`(instant account transfer)
-- `vbank`(virtual account)
-- `phone`(mobile micropayment)
-- `samsung`(Samsung Pay hub-type)
-- `kakaopay`(Kakao Pay)
-- `payco` ( PAYCO hub-type)
-- `tosspay` (Toss Simple Pay hub-type)
-- `ssgpay` (SSG Pay hub-type)
-- `chai` (CHAI Pay)
-- `lpay` (LPAY hub-type)
-- `naverpay` (Naver Pay)
-- `cultureland`(Cultureland)
-- `smartculture`(Smart Culture)
-- `happymoney`(Happy Money)
-
-
-
-**`merchant_uid`** **\*** **s** **tring**
-
-**Order ID**
-
-Must be unique for each request.
-
-**`amount`** **\*** **integer**
-
-**Payment amount**
-
-Must be an integer (not string)
-
-**`buyer_tel`** **`*`** **`string`**
-
-**Customer phone number**
-
-Required
-
-
-
-
-
-
-### You can request for a billing key through the KG INICIS payment window.
-
-- To open non-authenticated payment window, specify the **customer_uid** parameter.
-- After getting a billing key from the window, you can request payment using the billing key.
-- **`amount`** parameter is for display purpose only. Actual payment approval is not processed.
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "html5_inicis",
- pay_method: "card", // only 'card' supported.
- merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
- name: "Initial billing key request",
- amount: 0, // For display purpose only (no payment approval).
- customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
- buyer_email: "johndoe@gmail.com",
- buyer_name: "John Doe",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{redirect URL}", // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
- },
- function (rsp) {
- if (rsp.success) {
- alert("Success");
- } else {
- alert("Failed");
- }
- }
-);
-```
+ **PG code**
-### Key parameter description
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`html5_inicis`**.
-**`pg`** **\*** **s** **tring**
+ **`pay_method`** **\*** **string**
-**PG code**
+ **Payment method code**
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`html5_inicis`**.
+
+
Payment method codes
-> If you have multiple merchant IDs (each for general and subscription) issued by KG INCIS, set to `html5_inicis.{Merchant ID}` or `inicis.{Merchant ID}`(for ActiveX).
+ - `card` (credit card)
+ - `trans`(instant account transfer)
+ - `vbank`(virtual account)
+ - `phone`(mobile micropayment)
+ - `samsung`(Samsung Pay hub-type)
+ - `kakaopay`(Kakao Pay)
+ - `payco` ( PAYCO hub-type)
+ - `tosspay` (Toss Simple Pay hub-type)
+ - `ssgpay` (SSG Pay hub-type)
+ - `chai` (CHAI Pay)
+ - `lpay` (LPAY hub-type)
+ - `naverpay` (Naver Pay)
+ - `cultureland`(Cultureland)
+ - `smartculture`(Smart Culture)
+ - `happymoney`(Happy Money)
+
-**`customer_uid`** **\*** **string**
+ **`merchant_uid`** **\*** **string**
-**Credit card billing key**
+ **Order ID**
+
+ Must be unique for each request.
-Billing key to be mapped 1:1 with the user-entered credit card information.
+ **`amount`** **\*** **integer**
-**`amount`** **\*** **Integer**
+ **Payment amount**
-**Payment amount**
+ Must be an integer (not string)
-Amount to display in the payment window, but actual payment approval is not processed. (To request payment, use the **REST API with the customer_uid**.)\
+ **`buyer_tel`** **`*`** **`string`**
-### Request payment with billing key (customer_uid)
+ **Customer phone number**
-After successfully getting the billing key, the billing key is **stored on the i'mport server** mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the [**non-authenticated payment request REST API**](../../api/api/api) with the `customer_uid` as follows:
+ Required
-```title="sever-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+
+
-
+
+ ### You can request for a billing key through the KG INICIS payment window.
-
-#### **You can use i'mport REST API to request billing key, request payment, and schedule payment.**
+ - To open non-authenticated payment window, specify the **customer\_uid** parameter.
+ - After getting a billing key from the window, you can request payment using the billing key.
+ - **`amount`** parameter is for display purpose only. Actual payment approval is not processed.
-### Request one-time payment
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "html5_inicis",
+ pay_method: "card", // only 'card' supported.
+ merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
+ name: "Initial billing key request",
+ amount: 0, // For display purpose only (no payment approval).
+ customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
+ buyer_email: "johndoe@gmail.com",
+ buyer_name: "John Doe",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{redirect URL}", // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("Success");
+ } else {
+ alert("Failed");
+ }
+ },
+ );
+ ```
-To request a one-time payment, use the key-in REST[ **API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api). The card information is not saved during this process.
+ ### Key parameter description
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ **`pg`** **\*** **string**
-###
+ **PG code**
-### Request billing key
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`html5_inicis`**.
-To request a billing key, use the billing key request REST [**API POST /subscribe/customers/\{customer_uid}**](../../api/billing-key-api/api-1).
+ > If you have multiple merchant IDs (each for general and subscription) issued by KG INCIS, set to `html5_inicis.{Merchant ID}` or `inicis.{Merchant ID}`(for ActiveX).
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
+ **`customer_uid`** **\*** **string**
-### Request billing key + initial payment
+ **Credit card billing key**
-To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
+ Billing key to be mapped 1:1 with the user-entered credit card information.
-- **`customer_uid`** : required for saving the billing key.
+ **`amount`** **\*** **Integer**
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ **Payment amount**
-### Request payment with billing key
+ Amount to display in the payment window, but actual payment approval is not processed.
+ (To request payment, use the **REST API with the customer\_uid**.)
-After successfully getting the billing key and making the initial payment, the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the repeat pay REST API ([**POST /subscribe/payments/again**](../../api/api/api)) with the `customer_uid` as follows:
+ ### Request payment with billing key (customer\_uid)
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ After successfully getting the billing key, the billing key is **stored on the i'mport server** mapped 1:1
+ with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the [**non-authenticated payment request REST API**](../../api/api/api)
+ with the `customer_uid` as follows:
-**For detailed information, refer to:**
+ ```sh title="sever-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-
+
+ **You can use i'mport REST API to request billing key, request payment, and schedule payment.**
-
-
+ ### Request one-time payment
-### 3. Additional functions
+ To request a one-time payment, use the key-in [**REST API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
+ The card information is not saved during this process.
-
-
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-```javascript title="javascript"
-display: {
- card_quota: [6]; // Display up to 6 months installment plans
-}
-```
+ ### Request billing key
-**Parameters**
+ To request a billing key, use the billing key request [**REST API POST /subscribe/customers/\{customer\_uid}**](../../api/billing-key-api/api-1).
-- **card_quota :**
- - `[]`: Only immediate pay
- - `2,3,4,5,6`: immediate, 2, 3, 4, 5, 6 month installment plans\
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-
-Installment plan option is available only for **KRW 50,000 or more**.
+ ### Request billing key + initial payment
-
+ To request a billing key and initial payment, use the key-in [**REST API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
-
+ - **`customer_uid`** : required for saving the billing key.
-
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-
+ ### Request payment with billing key
-```javascript title="javascript"
-card: {
- direct: {
- code: "367",
- quota: 3
- }
-}
-```
+ After successfully getting the billing key and making the initial payment,
+ the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling the repeat pay
+ REST API ([**POST /subscribe/payments/again**](../../api/api/api)) with the `customer_uid` as follows:
-**Parameters**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-- **code**: [ **Credit card code** ](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
-- **quota**: Installment plan. For immediate, set to 0. (**integer**)
+ **For detailed information, refer to:**
-
+
+
+
-
+## 3. Additional functions
-
+
+
+ ```json title="javascript"
+ {
+ "display": {
+ "card_quota": [6] // Display up to 6 months installment plans
+ }
+ }
+ ```
+
+ **Parameters**
+
+ - **card\_quota :**
+ - `[]`: Only immediate pay
+ - `2,3,4,5,6`: immediate, 2, 3, 4, 5, 6 month installment plans\\
+
+
+ Installment plan option is available only for **KRW 50,000 or more**.
+
+
+
+
+
+
+ ```json title="javascript"
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3
+ }
+ }
+ }
+ ```
-```javascript title="javascript"
-card: {
- detail: [
- { card_code: "*", enabled: false }, // Disable all credit cards
- { card_code: "366", enabled: true }, // Enable specific credit card
- ];
-}
-```
+ **Parameters**
-**Parameters**
+ - **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
+ - **quota**: Installment plan. For immediate, set to 0. (**integer**)
+
+
+
+
+
+ ```json title="javascript"
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, // Disable all credit cards
+ { "card_code": "366", "enabled": true }, // Enable specific credit card
+ ]
+ }
+ }
+ ```
-- **card_code:** [ **Credit card code** ](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
-- **enabled:** Option to enable the credit card (**boolean**)
+ **Parameters**
-
+ - **card\_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
+ - **enabled:** Option to enable the credit card (**boolean**)
+
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/jtnet.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/jtnet.mdx
index b00d17780..2bf0cb160 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/jtnet.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/jtnet.mdx
@@ -6,231 +6,233 @@ description: JTNet payment window integration guide
import Codepen from "~/components/gitbook/Codepen.astro";
import ContentRef from "~/components/gitbook/ContentRef.astro";
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure JTNet settings
+## 1. Configure JTNet settings
Refer to the [**JTNET settings**](../../ready/2.-pg/payment-gateway-settings/jtnet) page to
configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
-IMP.**request_pay**(param, callback).
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url**.
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url**.
-
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "jtnet",
- pay_method: "card",
- merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
- name: "Order name: Test payment request",
- amount: 14000,
- buyer_email: "iamport@siot.do",
- buyer_name: "John Doe",
- buyer_tel: "010-1234-5678",
- buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
- buyer_postcode: "123-456",
- m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
- },
- function (rsp) {
- // callback logic
- //* ...Omitted... *//
- }
-);
-```
-
-####
-
-### Key parameter description
-
-**`pg`** **\***\*\* ****s****tring\*\*
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "jtnet",
+ pay_method: "card",
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "John Doe",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-**PG code**
+ ### Key parameter description
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`jtnet`**.
+ **`pg`** **\*** **string**
-**`pay_method`** **\***\*\* ****s****tring\*\*
+ **PG code**
-**Payment method code**
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`jtnet`**.
-
-
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ - `card` (credit card)
+ - `trans`(instant account transfer)
+ - `vbank`(virtual account)
+ - `phone`(mobile micropayment)
+
-**Order ID**
+ **`merchant_uid`** **\*** **string**
-Must be unique for each request.
+ **Order ID**
-**`amount`** **\***\*\* ****integer\*\*
+ Must be unique for each request.
-**Payment amount**
+ **`amount`** **\*** **integer**
-Must be an integer (not string)
+ **Payment amount**
-
+ Must be an integer (not string)
-
+
+
-
-To open non-authenticated payment window, specify the **customer\_uid** parameter.
+
+ To open non-authenticated payment window, specify the **customer\_uid** parameter.
-
-#### **amount**
+
+ #### **amount**
-- If requesting **both billing key and initial payment**, specify the payment amount.
-- If only requesting for billing key, set to **0**.
+ - If requesting **both billing key and initial payment**, specify the payment amount.
+ - If only requesting for billing key, set to **0**.
+
-
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "jtnet",
+ pay_method: "card", // only 'card' supported.
+ merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
+ name: "Initial billing key request",
+ amount: 0, // For display purpose only (no payment approval).
+ customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
+ buyer_email: "johndoe@gmail.com",
+ buyer_name: "John Doe",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{redirect URL}", // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("Success");
+ } else {
+ alert("Failed");
+ }
+ },
+ );
+ ```
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "jtnet",
- pay_method: "card", // only 'card' supported.
- merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
- name: "Initial billing key request",
- amount: 0, // For display purpose only (no payment approval).
- customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
- buyer_email: "johndoe@gmail.com",
- buyer_name: "John Doe",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{redirect URL}", // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
- },
- function (rsp) {
- if (rsp.success) {
- alert("Success");
- } else {
- alert("Failed");
- }
- }
-);
-```
-
-### Key parameter description
-
-**`pg`** **\***\*\* ****s****tring\*\*
-
-**PG code**
+ ### Key parameter description
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`jtnet`**.
+ **`pg`** **\*** **string**
->
+ **PG code**
-**`customer_uid`** **\***\*\* ****string\*\*
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`jtnet`**.
-**Credit card billing key**
+ >
-Billing key to be mapped 1:1 with the user-entered credit card information.
+ **`customer_uid`** **\*** **string**
-**`amount`** **\***\*\* ****Integer\*\*
+ **Credit card billing key**
-**Payment amount**
+ Billing key to be mapped 1:1 with the user-entered credit card information.
-0: only billing key, **> 0: billing key + initial payment**\
+ **`amount`** **\*** **Integer**
-### Request payment with billing key (customer_uid)
+ **Payment amount**
-After successfully getting the billing key, the billing key is **stored on the i'mport server** mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the [**non-authenticated payment request REST API**](../../api/api/api) with the `customer_uid` as follows:
+ 0: only billing key, **> 0: billing key + initial payment**\\
-```title="sever-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ ### Request payment with billing key (customer\_uid)
-
+ After successfully getting the billing key, the billing key is **stored on the i'mport server**
+ mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the [**non-authenticated payment request REST API**](../../api/api/api)
+ with the `customer_uid` as follows:
-
-#### **You can use i'mport REST API to request billing key, request payment, and schedule payment.**
+ ```sh title="sever-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-### Request one-time payment
+
+ **You can use i'mport REST API to request billing key, request payment, and schedule payment.**
-To request a one-time payment, use the key-in REST[ **API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api). The card information is not saved during this process.
+ ### Request one-time payment
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ To request a one-time payment, use the key-in [**REST API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api). The card information is not saved during this process.
-###
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-### Request billing key
+ ### Request billing key
-To request a billing key, use the billing key request REST [**API POST /subscribe/customers/\{customer_uid}**](../../api/billing-key-api/api-1).
+ To request a billing key, use the billing key request REST [**API POST /subscribe/customers/\{customer\_uid}**](../../api/billing-key-api/api-1).
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-### Request billing key + initial payment
+ ### Request billing key + initial payment
-To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
+ To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
-- **`customer_uid`** : required for saving the billing key.
+ - **`customer_uid`** : required for saving the billing key.
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-### Request payment with billing key
+ ### Request payment with billing key
-After successfully getting the billing key and making the initial payment, the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the repeat pay REST API ([**POST /subscribe/payments/again**](../../api/api/api)) with the `customer_uid` as follows:
+ After successfully getting the billing key and making the initial payment,
+ the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the repeat pay REST API ([**POST /subscribe/payments/again**](../../api/api/api))
+ with the `customer_uid` as follows:
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-**For detailed information, refer to:**
+ **For detailed information, refer to:**
-
-
-
+
+
-### 3. Additional functions
+## 3. Additional functions
-
-```javascript title="javascript"
-card : {
- detail : [
- {card_code:"*", enabled:false}, // Disable all credit cards
- {card_code:'366', enabled:true} // Enable specific credit card
- ]
-}
-```
-
-**Parameters**
-
-- **card_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string)**
-- **enabled:** Option to enable the credit card (**boolean)**
-
-
+
+ ```json title="javascript"
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, // Disable all credit cards
+ { "card_code": "366", "enabled": true }, // Enable specific credit card
+ ]
+ }
+ }
+ ```
+
+ **Parameters**
+
+ - **card\_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string)**
+ - **enabled:** Option to enable the credit card (**boolean)**
+
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/kg-mobilians.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/kg-mobilians.mdx
index a37496b30..9aac1b71d 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/kg-mobilians.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/kg-mobilians.mdx
@@ -5,161 +5,168 @@ description: KG Mobilians payment window integration guide
import Codepen from "~/components/gitbook/Codepen.astro";
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure KG Mobilians PG Settings
+## 1. Configure KG Mobilians PG Settings
Refer to the [**KG Mobilians settings**](../../ready/2.-pg/payment-gateway-settings/kg) page to
configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
-IMP.**request_pay**(param, callback).
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url**.
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url**.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'mobilians',
- pay_method : 'phone',
- merchant_uid : '{Merchant created Order ID}', // Example: order_no_0001
- name : 'Order name: Test payment request',
- amount : 14000,
- buyer_email : 'iamport@siot.do',
- buyer_name : 'John Doe',
- buyer_tel : '010-1234-5678', //required
- buyer_addr : 'Shinsa-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456',
- m_redirect_url : '{Mobile only - URL to redirect to after payment approval}' // Example: https://www.my-service.com/payments/complete/mobile
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
-
-###
-
-### Key parameter description
-
-**`pg`** **\***\*\* ****s****tring\*\*
-
-**PG code**
-
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`mobilians`**.
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "mobilians",
+ pay_method: "phone",
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "John Doe",
+ buyer_tel: "010-1234-5678", //required
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-**`pay_method`** **\***\*\* ****s****tring\*\*
+ ### Key parameter description
-**Payment method code**
+ **`pg`** **\*** **string**
-
-
Payment method codes
+ **PG code**
-- `card` (credit card)
-- `trans`(instant account transfer)
-- `phone`(mobile micropayment)
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`mobilians`**.
-
+ **`pay_method`** **\*** **string**
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ **Payment method code**
-**Order ID**
+
+
Payment method codes
-Must be unique for each request.
+ - `card` (credit card)
+ - `trans`(instant account transfer)
+ - `phone`(mobile micropayment)
+
-**`buyer_tel`****`*`****`string`**
+ **`merchant_uid`** **\*** **string**
-**Customer phone number**
+ **Order ID**
-Required
+ Must be unique for each request.
-**`amount`** **\***\*\* ****integer\*\*
+ **`buyer_tel`****`*`** **`string`**
-**Payment amount**
+ **Customer phone number**
-Must be an integer (not string)
+ Required
-
+ **`amount`** **\*** **integer**
-
+ **Payment amount**
-
-To open non-authenticated payment window, specify the **customer\_uid** parameter. After getting a billing key from this window, you can request payment using the billing key.
+ Must be an integer (not string)
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "mobilians",
- pay_method: "phone",
- merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
- name: "Initial billing key request",
- amount: 0, // For display purpose only (no payment approval).
- customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
- buyer_email: "johndoe@gmail.com",
- buyer_name: "John Doe",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{redirect URL}", // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
- },
- function (rsp) {
- if (rsp.success) {
- alert("Success");
- } else {
- alert("Failed");
- }
- }
-);
-```
+
+
-####
+
+ To open non-authenticated payment window, specify the **customer\_uid** parameter.
+ After getting a billing key from this window, you can request payment using the billing key.
-
-- To request non-authenticated payment, you must set the **MID info issued by KG Mobilians** in the Admin console.
-- KG Mobilians **does not process the payment** when issuing the billing key even if you specify an amount.
-- Subsequent payments using the billing key must be for the **same amount and on the same day** as the initial payment on monthly basis.
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "mobilians",
+ pay_method: "phone",
+ merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
+ name: "Initial billing key request",
+ amount: 0, // For display purpose only (no payment approval).
+ customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
+ buyer_email: "johndoe@gmail.com",
+ buyer_name: "John Doe",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{redirect URL}", // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("Success");
+ } else {
+ alert("Failed");
+ }
+ },
+ );
+ ```
-
+
+ - To request non-authenticated payment, you must set the **MID info issued by KG Mobilians** in the Admin console.
-### Key parameter description
+ - KG Mobilians **does not process the payment**
+ when issuing the billing key even if you specify an amount.
-**`pg`** **\***\*\* ****s****tring\*\*
+ - Subsequent payments using the billing key must be for
+ the **same amount and on the same day**
+ as the initial payment on monthly basis.
+
-**PG code**
+ ### Key parameter description
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`mobilians.[MID]`**.
+ **`pg`** **\*** **string**
-**`customer_uid`** **\***\*\* ****string\*\*
+ **PG code**
-**Credit card billing key**
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`mobilians.[MID]`**.
-Billing key to be mapped 1:1 with the user-entered credit card information.
+ **`customer_uid`** **\*** **string**
-**`amount`** **\***\*\* ****Integer\*\*
+ **Credit card billing key**
-**Payment amount**
+ Billing key to be mapped 1:1 with the user-entered credit card information.
-Amount to display in the payment window, but actual payment approval is not processed. (To request payment, use the **REST API with the customer_uid**.)\
+ **`amount`** **\*** **Integer**
-### Request payment with billing key (customer_uid)
+ **Payment amount**
-After successfully getting the billing key, the billing key is **stored on the i'mport server** mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the [**non-authenticated payment request REST API**](../../api/api/api) with the `customer_uid` as follows:
+ Amount to display in the payment window, but actual payment approval is not processed.
+ (To request payment, use the **REST API with the customer\_uid**.)\\
-```title="sever-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ ### Request payment with billing key (customer\_uid)
-
+ After successfully getting the billing key, the billing key is **stored on the i'mport server** mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling the
+ [**non-authenticated payment request REST API**](../../api/api/api)
+ with the `customer_uid` as follows:
-
-#### **Not supported.**
+ ```sh title="sever-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-
+
+ #### **Not supported.**
+
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/kicc.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/kicc.mdx
index 1ad8bf70a..838b3ef6b 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/kicc.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/kicc.mdx
@@ -5,265 +5,270 @@ description: KICC payment window integration guide
import Codepen from "~/components/gitbook/Codepen.astro";
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure KICC PG settings
+## 1. Configure KICC PG settings
Refer to the [**KICC settings**](../../ready/2.-pg/payment-gateway-settings/kicc) page to configure
the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
-IMP.**request_pay**(param, callback).
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url** .
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url** .
-
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "kicc",
- pay_method: "card",
- merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
- name: "Order name: Test payment request",
- amount: 14000,
- buyer_email: "iamport@siot.do",
- buyer_name: "John Doe",
- buyer_tel: "010-1234-5678",
- buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
- buyer_postcode: "123-456",
- m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
- },
- function (rsp) {
- // callback logic
- //* ...Omitted... *//
- }
-);
-```
-
-###
-
-### Key parameter description
-
-**`pg`** **\*** **s** **tring**
-
-**PG code**
-
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`kicc`**.
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "kicc",
+ pay_method: "card",
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "John Doe",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-**`pay_method`** **\*** **s** **tring**
+ ### Key parameter description
-**Payment method code**
+ **`pg`** **\*** **string**
-
-
Payment method codes
+ **PG code**
-- `card` (credit card)
-- `trans`(instant account transfer)
-- `vbank`(virtual account)
-- `phone`(mobile micropayment)
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`kicc`**.
-
+ **`pay_method`** **\*** **string**
-**`merchant_uid`** **\*** **s** **tring**
+ **Payment method code**
-**Order ID**
+
+
Payment method codes
-Must be unique for each request.
+ - `card` (credit card)
+ - `trans`(instant account transfer)
+ - `vbank`(virtual account)
+ - `phone`(mobile micropayment)
+
-**`buyer_tel`** **`*`** **`string`**
+ **`merchant_uid`** **\*** **string**
-**Customer phone number**
+ **Order ID**
-**`amount`** **\*** **integer**
+ Must be unique for each request.
-**Payment amount**
+ **`buyer_tel`** **`*`** **`string`**
-Must be an integer (not string)
+ **Customer phone number**
-**`escrow`** **`boolean`**
+ **`amount`** **\*** **integer**
-**Escrow option**
+ **Payment amount**
-Only supports account transfer and virtual account payment.
+ Must be an integer (not string)
-
-
+ **`escrow`** **`boolean`**
-
-To open non-authenticated payment window, specify the **customer\_uid** parameter. After getting a billing key from this window, you can request payment using the billing key.
+ **Escrow option**
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "kicc",
- pay_method: "card", // only 'card' supported.
- merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
- name: "Initial billing key request",
- amount: 0, // For display purpose only (no payment approval).
- customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
- buyer_email: "johndoe@gmail.com",
- buyer_name: "John Doe",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{redirect URL}", // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
- },
- function (rsp) {
- if (rsp.success) {
- alert("Success");
- } else {
- alert("Failed");
- }
- }
-);
-```
+ Only supports account transfer and virtual account payment.
-####
+
+
-
-- To request non-authenticated payment, you must set the **MID info issued by KICC** in the Admin console.
-- KICC **does not process the payment** when issuing the billing key even if you specify an amount.
+
+ To open non-authenticated payment window, specify the **customer\_uid** parameter. After getting a billing key from this window, you can request payment using the billing key.
-
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "kicc",
+ pay_method: "card", // only 'card' supported.
+ merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
+ name: "Initial billing key request",
+ amount: 0, // For display purpose only (no payment approval).
+ customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
+ buyer_email: "johndoe@gmail.com",
+ buyer_name: "John Doe",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{redirect URL}", // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("Success");
+ } else {
+ alert("Failed");
+ }
+ },
+ );
+ ```
-### Key parameter description
+ ####
-**`pg`** **\*** \*\* ** **s** **tring\*\*
+
+ - To request non-authenticated payment, you must set the **MID info issued by KICC** in the Admin console.
+ - KICC **does not process the payment** when issuing the billing key even if you specify an amount.
+
-**PG code**
+ ### Key parameter description
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`kicc.[billing MID]`**.
+ **`pg`** **\*** **string**
-**`customer_uid`** **\*** **string**
+ **PG code**
-**Credit card billing key**
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`kicc.[billing MID]`**.
-Billing key to be mapped 1:1 with the user-entered credit card information.
+ **`customer_uid`** **\*** **string**
-**`amount`** **\*** **Integer**
+ **Credit card billing key**
-**Payment amount**
+ Billing key to be mapped 1:1 with the user-entered credit card information.
-Amount to display in the payment window, but actual payment approval is not processed. (To request payment, use the **REST API with the customer_uid**.)\
+ **`amount`** **\*** **Integer**
-### Request payment with billing key (customer_uid)
+ **Payment amount**
-After successfully getting the billing key, the billing key is **stored on the i'mport server** mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the [**non-authenticated payment request REST API**](../../api/api/api) with the `customer_uid` as follows:
+ Amount to display in the payment window, but actual payment approval is not processed. (To request payment, use the **REST API with the customer\_uid**.)\\
-```title="sever-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ ### Request payment with billing key (customer\_uid)
-
+ After successfully getting the billing key, the billing key is **stored on the i'mport server**
+ mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the [**non-authenticated payment request REST API**](../../api/api/api)
+ with the `customer_uid` as follows:
-
-#### **Not supported.**
+ ```sh title="sever-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-
+
+ #### **Not supported.**
+
### 3. Additional functions
-
-KICC supports escrow payments only for **cash payment methods** (instant account transfer or virtual bank account).
-
-> To enable escrow payment, first set the following parameters and then configure additional parameters below.
->
-> - **escrow : true**
-
-### Additional parameters
-
-When making an escrow payment, you must enter the following required parameters:
-
-- `buyer_name` : Customer name
-- `buyer_email` : Customer email
-- `buyer_tel` : Customer phone number
-- `kiccProducts` : An array of objects consisting of the following 4 required properties. The `amount` value has no relation to the payment amount (`param.amount`) value and is not used for comparison.
- - `orderNumber` : Product order number
- - `name` : Product name
- - `quantity` : Quantity
- - `amount` : Product price
-
-```javascript title="JavaScript SDK"
-IMP.request_pay({
- ...
- escrow : true, // Required for escrow payment
- kiccProducts : [
- {
- "orderNumber" : "xxxx",
- "name" : "Product A",
- "quantity" : 3,
- "amount" : 1000
- },
- {
- "orderNumber" : "yyyy",
- "name" : "Product B",
- "quantity" : 2,
- "amount" : 3000
- }
- ]
- ...
-}, function(rsp) { // callback logic
- //* ...Omitted ... *//
-});
-```
-
-
-
-
-```javascript title="javascript"
-card: {
- direct: {
- code: "367",
- quota: 3
+
+ KICC supports escrow payments only for **cash payment methods** (instant account transfer or virtual bank account).
+
+ > To enable escrow payment, first set the following parameters and then configure additional parameters below.
+ >
+ > - **escrow : true**
+
+ ### Additional parameters
+
+ When making an escrow payment, you must enter the following required parameters:
+
+ - `buyer_name` : Customer name
+
+ - `buyer_email` : Customer email
+
+ - `buyer_tel` : Customer phone number
+
+ - `kiccProducts` : An array of objects consisting of the following 4 required properties. The `amount` value has no relation to the payment amount (`param.amount`) value and is not used for comparison.
+ - `orderNumber` : Product order number
+ - `name` : Product name
+ - `quantity` : Quantity
+ - `amount` : Product price
+
+ ```ts title="JavaScript SDK"
+ IMP.request_pay(
+ {
+ escrow: true, // Required for escrow payment
+ kiccProducts: [
+ {
+ orderNumber: "xxxx",
+ name: "Product A",
+ quantity: 3,
+ amount: 1000,
+ },
+ {
+ orderNumber: "yyyy",
+ name: "Product B",
+ quantity: 2,
+ amount: 3000,
+ },
+ ],
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted ... *//
+ },
+ );
+ ```
+
+
+
+ ```json title="javascript"
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3
+ }
+ }
}
-}
-```
-
-**Parameters**
-
-- **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
-- **quota**: Installment plan. For immediate, set to 0. (**integer**)
-
-
-**Precautions**
-
-- Some PGs do not support direct call to credit card company's payment windows for all Merchant IDs. You must check your Merchant ID with each PG for direct call support.
-
-
-
-
-
-
-```javascript title="javascript"
-card : {
- detail : [
- {card_code:"*", enabled:false}, // Disable all credit cards
- {card_code:'366', enabled:true} // Enable specific credit card
- ]
-}
-```
-
-**Parameters**
+ ```
+
+ **Parameters**
+
+ - **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
+ - **quota**: Installment plan. For immediate, set to 0. (**integer**)
+
+
+ **Precautions**
+
+ - Some PGs do not support direct call to credit card company's payment windows for all Merchant IDs.
+ You must check your Merchant ID with each PG for direct call support.
+
+
+
+
+ ```json title="javascript"
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, // Disable all credit cards
+ { "card_code": "366", "enabled": true }, // Enable specific credit card
+ ]
+ }
+ }
+ ```
-- **card_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string)**
-- **enabled:** Option to enable the credit card (**boolean)**
+ **Parameters**
-
+ - **card\_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string)**
+ - **enabled:** Option to enable the credit card (**boolean)**
-**Example of enabling only ****Shinhan Card**** payment
-window**" />
+
-
+ **Example of enabling only ****Shinhan Card**** payment
+ window**
+
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/nhh-kcp.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/nhh-kcp.mdx
index 0c50197fb..6ea521495 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/nhh-kcp.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/nhh-kcp.mdx
@@ -6,486 +6,519 @@ description: NHN KCP payment window integration guide
import Codepen from "~/components/gitbook/Codepen.astro";
import ContentRef from "~/components/gitbook/ContentRef.astro";
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure NHH KCP PG settings
+## 1. Configure NHH KCP PG settings
-Refer to the [**NHN KCP settings**](../../ready/2.-pg/payment-gateway-settings/nhn-kcp) page to configure the PG settings.
+Refer to the [**NHN KCP settings**](../../ready/2.-pg/payment-gateway-settings/nhn-kcp) page
+to configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
-To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/) IMP.**request_pay**(param, callback).
+To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url**.
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url**.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'kcp',
- pay_method : 'card',
- merchant_uid : '{Merchant created Order ID}', // Example: order_no_0001
- name : 'Order name: Test payment request',
- amount : 14000,
- buyer_email : 'iamport@siot.do',
- buyer_name : 'John Doe',
- buyer_tel : '010-1234-5678',
- buyer_addr : 'Shinsa-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456',
- language : 'ko', // default: ko (Korean)
- m_redirect_url : '{Mobile only - URL to redirect to after payment approval}' // Example: https://www.my-service.com/payments/complete/mobile
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
-
-####
-
-### Key parameter description
-
-**`pg`** **\***\*\* ****s****tring\*\*
-
-**PG code**
-
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to `kcp`.
-
-**`pay_method`** **\***\*\* ****s****tring\*\*
-
-**Payment method code**
-
-
-
Payment method codes
-
-- `card` (credit card)
-- `trans`(instant account transfer)
-- `vbank`(virtual account)
-- `phone`(mobile micropayment)
-- `samsung`(Samsung Pay)
-- `kakaopay`(Kakao Pay)
-- `payco` ( PAYCO hub-type)
-- `lpay` (LPAY hub-type)
-- `naverpay` (Naver Pay)
-- `cultureland`(Cultureland)
-- `smartculture`(Smart Culture)
-- `happymoney`(Happy Money)
-- `booknlife`(Book culture gift certificate)
-- `point`(Benepia)
-
-
-
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
-
-**Order ID**
-
-Must be unique for each request.
-
-**`amount`** **\***\*\* ****integer\*\*
-
-**Payment amount**
-
-Must be an integer (not string).
-
-
-**For Payco hub-type**, you must apply through KCP Admin page and configure the settings.
-
-How to apply: [https://sir.kr/main/service/p_payco_hub.php](https://sir.kr/main/service/p_payco_hub.php)
-
-
-
-
-
-
-
-To open non-authenticated payment window, specify the **customer\_uid** parameter. After getting a billing key from this window, you can request payment using the billing key.
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "kcp_billing",
- pay_method: "card", // only 'card' supported.
- merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
- name: "Initial billing key request",
- amount: 0, // For display purpose only (no payment approval).
- customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
- buyer_email: "johndoe@gmail.com",
- buyer_name: "John Doe",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{redirect URL}", // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
- },
- function (rsp) {
- if (rsp.success) {
- alert("Success");
- } else {
- alert("Failed");
- }
- }
-);
-```
-
-
-* To request non-authenticated payment, you must set the **site code issued by KCP** in the Admin console.
-* KCP **does not process the payment** when issuing the billing key even if you specify an amount.
-
-
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "kcp",
+ pay_method: "card",
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "John Doe",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ language: "ko", // default: ko (Korean)
+ m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
+
+ ### Key parameter description
+
+ **`pg`** **\*** **string**
+
+ **PG code**
+
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to `kcp`.
+
+ **`pay_method`** **\*** **string**
+
+ **Payment method code**
+
+
+
Payment method codes
+
+ - `card` (credit card)
+ - `trans`(instant account transfer)
+ - `vbank`(virtual account)
+ - `phone`(mobile micropayment)
+ - `samsung`(Samsung Pay)
+ - `kakaopay`(Kakao Pay)
+ - `payco` ( PAYCO hub-type)
+ - `lpay` (LPAY hub-type)
+ - `naverpay` (Naver Pay)
+ - `cultureland`(Cultureland)
+ - `smartculture`(Smart Culture)
+ - `happymoney`(Happy Money)
+ - `booknlife`(Book culture gift certificate)
+ - `point`(Benepia)
+
+
+ **`merchant_uid`** **\*** **string**
+
+ **Order ID**
+
+ Must be unique for each request.
+
+ **`amount`** **\*** **integer**
+
+ **Payment amount**
+
+ Must be an integer (not string).
+
+
+ **For Payco hub-type**, you must apply through KCP Admin page and configure the settings.
+
+ How to apply: [https://sir.kr/main/service/p\_payco\_hub.php](https://sir.kr/main/service/p_payco_hub.php)
+
+
+
+
+
+
+ To open non-authenticated payment window, specify the **customer\_uid** parameter.
+ After getting a billing key from this window, you can request payment using the billing key.
-### Key parameter description
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "kcp_billing",
+ pay_method: "card", // only 'card' supported.
+ merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
+ name: "Initial billing key request",
+ amount: 0, // For display purpose only (no payment approval).
+ customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
+ buyer_email: "johndoe@gmail.com",
+ buyer_name: "John Doe",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{redirect URL}", // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("Success");
+ } else {
+ alert("Failed");
+ }
+ },
+ );
+ ```
-**`pg`** **\***\*\* ****s****tring\*\*
+
+ - To request non-authenticated payment, you must set the **site code issued by KCP** in the Admin console.
-**PG code**
+ - KCP **does not process the payment**
+ when issuing the billing key even if you specify an amount.
+
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to `kcp_billing`.
+ ### Key parameter description
-**`customer_uid`** **\***\*\* ****string\*\*
+ **`pg`** **\*** **string**
-**Credit card billing key**
+ **PG code**
-Billing key to be mapped 1:1 with the user-entered credit card information.
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to `kcp_billing`.
-**`amount`** **\***\*\* ****Integer\*\*
+ **`customer_uid`** **\*** **string**
-**Payment amount**
+ **Credit card billing key**
-Amount to display in the payment window, but actual payment approval is not processed. (To request payment, use the **REST API with the customer_uid**.)\
+ Billing key to be mapped 1:1 with the user-entered credit card information.
-### Request payment with billing key (customer_uid)
+ **`amount`** **\*** **Integer**
-After successfully getting the billing key, the billing key is **stored on the i'mport server** mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the [**non-authenticated payment request REST API**](../../api/api/api) with the `customer_uid` as follows:
+ **Payment amount**
-```title="sever-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ Amount to display in the payment window, but actual payment approval is not processed.
+ (To request payment, use the **REST API with the customer\_uid**.)\\
-
+ ### Request payment with billing key (customer\_uid)
-
-#### **You can use i'mport REST API to request billing key, request payment, and schedule payment.**
+ After successfully getting the billing key, the billing key is **stored on the i'mport server**
+ mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the [**non-authenticated payment request REST API**](../../api/api/api)
+ with the `customer_uid` as follows:
-### Request one-time payment
+ ```sh title="sever-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-To request a one-time payment, use the key-in REST[ **API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api). The card information is not saved during this process.
+
+ **You can use i'mport REST API to request billing key, request payment, and schedule payment.**
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ ### Request one-time payment
-###
+ To request a one-time payment, use the key-in [**REST API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
+ The card information is not saved during this process.
-### Request billing key
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-To request a billing key, use the billing key request REST [**API POST /subscribe/customers/\{customer_uid}**](../../api/billing-key-api/api-1).
+ ### Request billing key
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
+ To request a billing key, use the billing key request REST [**API POST /subscribe/customers/\{customer\_uid}**](../../api/billing-key-api/api-1).
-### Request billing key + initial payment
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
+ ### Request billing key + initial payment
-- **`customer_uid`** : required for saving the billing key.
+ To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ - **`customer_uid`** : required for saving the billing key.
-### Request payment with billing key
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-After successfully getting the billing key and making the initial payment, the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the repeat pay REST API ([**POST /subscribe/payments/again**](../../api/api/api)) with the `customer_uid` as follows:
+ ### Request payment with billing key
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ After successfully getting the billing key and making the initial payment,
+ the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the repeat pay REST API ([**POST /subscribe/payments/again**](../../api/api/api))
+ with the `customer_uid` as follows:
-**For detailed information, refer to:**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-
+ **For detailed information, refer to:**
-
+
+
-### 3. Additional functions
+## 3. Additional functions
-
-```javascript title="javascript"
-display: {
- card_quota: [6] // Display up to 6 months installment plans
-}
-```
-
-**Parameters**
-
-- **card_quota :**
- - `[]`: Only immediate pay
- - `2,3,4,5,6`: immediate, 2, 3, 4, 5, 6 month installment plans\
-
-
-Installment plan option is available only for **KRW 50,000 or more**.
-
-
-
-
-Example of allowing up to **3 months****
-installment plans**" />
-
-
-
-
-```javascript title="javascript"
-card: {
- direct: {
- code: "367",
- quota: 3
- // When want to use points of credit card
- // quota: 80 = 80(Hyundai Card Point installment) + 0(pay all at once)
- // quota: 93 = 80(Hyundai Card Point installment) + 13(number of installments)
- // quota: 60 = 60(Other Card Point installment) + 0(pay all at once)
- // quota: 63 = 60(Other Card Point installment) + 3(number of installments)
+
+ ```json title="javascript"
+ {
+ "display": {
+ "card_quota": [6] // Display up to 6 months installment plans
+ }
}
-}
-```
-
-**Parameters**
-
-- **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
-- **quota**: Installment plan. For immediate, set to 0. If you want to use points of credit card, you need to add the point installment per credit card[1] to number of installments (**integer**)
-
- [1] point installment per credit card
-
-
-
-
-
-
Point of Credit Card
-
-
-
Point Installment
-
-
-
-
-
Hyundai M
-
-
-
+80
-
-
-
-
-
Kookmin
-
-
-
+60
-
-
-
-
-
BC
-
-
-
+60
-
-
-
-
-
Samsung
-
-
-
+60
-
-
-
-
-
Hana/KEB
-
-
-
+60
-
-
-
-
-
Lotte
-
-
-
+60
-
-
-
-
-
Shinhan
-
-
-
+60
-
-
-
-
-
NongHyup
-
-
-
+60
-
-
-
-
-
Citi
-
-
-
+60
-
-
-
-
-
Woori
-
-
-
+60
-
-
-
-
-
-
-
-**Precautions**
-
-- Currently, direct call to the credit card company's payment window is only supported by 6 PGs: **KG Inicis, KCP, Toss Payments, Nice Payments, KICC, and Danal**.
-- Some PGs do not support direct call to credit card company's payment windows for all Merchant IDs. You must check your Merchant ID with each PG for direct call support.
-
-
-
-
-
-
-
-
-```javascript title="javascript"
-card : {
- detail : [
- {card_code:"*", enabled:false}, // Disable all credit cards
- {card_code:'366', enabled:true} // Enable specific credit card
- ]
-}
-```
-
-**Parameters**
-
-- **card_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string)**
-- **enabled:** Option to enable the credit card (**boolean)**
-
-
-
-
-
-
-Set the following parameter to only expose app cards for authenticated payments.
-
-```javascript title="request_pay()"
-...
-appCard : true . // Set to true to only expose app cards.
-...
-```
-
-
-
+ ```
-### 4. Additional parameters
+ **Parameters**
-
-
-To use the **gift certificate payment method**, set the merchant assigned user ID as follows:
-
-```javascript title="javascript SDK "
-bypass : {
- shop_user_id : ‘ABCD123’ // Merchant user ID (20 bytes)
-}
-```
-
-
-**This parameter is required for gift certificate providers' RM action.**
-
-
-
-**Example of paying with Cultureland gift certificate**
-
-```javascript
-MP.request_pay({
- pg : 'kcp.{Site code for gift certificate use}',
- pay_method : 'cultureland', //Gift certificate
- merchant_uid: "A00021-TEST",
- name : 'Carrots 10kg',
- amount : 1004,
- buyer_email : 'iamport@chai.finance',
- buyer_name : 'iamport tech support',
- buyer_tel : '010-1234-5678',
- buyer_addr : 'Shinsa-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456',
- bypass : {
- shop_user_id : 'abaddd' // Merchant user ID
- }
-}
-```
+ - **card\_quota :**
+ - `[]`: Only immediate pay
+ - `2,3,4,5,6`: immediate, 2, 3, 4, 5, 6 month installment plans\\
-
+
+ Installment plan option is available only for **KRW 50,000 or more**.
+
-
-For escrow payment, set the **`escrow`** parameter to **true**. To bundle products in the shopping cart when making an escrow payment request, pass the item-related information as an additional parameter (**`kcpProducts`**).
+
-**`kcpProducts`** is an object array consisting of the following four required properties:
+ Example of allowing up to **3 months**
+ **installment plans**
+
-**`amount`** is not related or compared with the payment amount (`param.amount`).
+
+ ```json title="javascript"
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3
+ // When want to use points of credit card
+ // quota: 80 = 80(Hyundai Card Point installment) + 0(pay all at once)
+ // quota: 93 = 80(Hyundai Card Point installment) + 13(number of installments)
+ // quota: 60 = 60(Other Card Point installment) + 0(pay all at once)
+ // quota: 63 = 60(Other Card Point installment) + 3(number of installments)
+ }
+ }
+ }
+ ```
+
+ **Parameters**
+
+ - **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
+
+ - **quota**: Installment plan. For immediate, set to 0. If you want to use points of credit card, you need to add the point installment per credit card\[1] to number of installments (**integer**)
+
+
+ \[1] point installment per credit card
+
+
+
+
+
+
Point of Credit Card
+
+
+
+
Point Installment
+
+
+
+
+
+
Hyundai M
+
+
+
+
+80
+
+
+
+
+
+
Kookmin
+
+
+
+
+60
+
+
+
+
+
+
BC
+
+
+
+
+60
+
+
+
+
+
+
Samsung
+
+
+
+
+60
+
+
+
+
+
+
Hana/KEB
+
+
+
+
+60
+
+
+
+
+
+
Lotte
+
+
+
+
+60
+
+
+
+
+
+
Shinhan
+
+
+
+
+60
+
+
+
+
+
+
NongHyup
+
+
+
+
+60
+
+
+
+
+
+
Citi
+
+
+
+
+60
+
+
+
+
+
+
Woori
+
+
+
+
+60
+
+
+
+
+
+
+
+ **Precautions**
+
+ - Currently, direct call to the credit card company's payment window is only supported by 6 PGs:
+ **KG Inicis, KCP, Toss Payments, Nice Payments, KICC, and Danal**.
+
+ - Some PGs do not support direct call to credit card company's payment windows for all Merchant IDs.
+ You must check your Merchant ID with each PG for direct call support.
+
+
+
+
+
+
+ ```json title="javascript"
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, // Disable all credit cards
+ { "card_code": "366", "enabled": true }, // Enable specific credit card
+ ]
+ }
+ }
+ ```
+
+ **Parameters**
-- orderNumber : Order ID
-- name : Product name
-- quantity : Product quantity
-- amount : Product price
+ - **card\_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string)**
+ - **enabled:** Option to enable the credit card (**boolean)**
-```javascript title="JavaScript SDK"
-IMP.request_pay({
- pg: "kcp",
- escrow: true, // For escrow payment
- kcpProducts: [
+
+
+
+
+ Set the following parameter to only expose app cards for authenticated payments.
+
+ ```json title="request_pay()"
{
- orderNumber: "xxxx",
- name: "Product A",
- quantity: 3,
- amount: 1000,
- },
+ "appCard": true // Set to true to only expose app cards.
+ }
+ ```
+
+
+
+## 4. Additional parameters
+
+
+
+ To use the **gift certificate payment method**, set the merchant assigned user ID as follows:
+
+ ```json title="javascript SDK"
{
- orderNumber: "yyyy",
- name: "Product B",
- quantity: 2,
- amount: 3000,
- },
- ],
- //* ...Omitted... *//
-});
-```
-
-
+ "bypass": {
+ "shop_user_id": "ABCD123" // Merchant user ID (20 bytes)
+ }
+ }
+ ```
+
+
+ **This parameter is required for gift certificate providers' RM action.**
+
+
+ **Example of paying with Cultureland gift certificate**
+
+ ```ts
+ IMP.request_pay({
+ pg: "kcp.{Site code for gift certificate use}",
+ pay_method: "cultureland", //Gift certificate
+ merchant_uid: "A00021-TEST",
+ name: "Carrots 10kg",
+ amount: 1004,
+ buyer_email: "iamport@chai.finance",
+ buyer_name: "iamport tech support",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ bypass: {
+ shop_user_id: "abaddd", // Merchant user ID
+ },
+ });
+ ```
+
+
+
+ For escrow payment, set the **`escrow`** parameter to **true**.
+ To bundle products in the shopping cart when making an escrow payment request,
+ pass the item-related information as an additional parameter (**`kcpProducts`**).
+
+ **`kcpProducts`** is an object array consisting of the following four required properties:
+
+ **`amount`** is not related or compared with the payment amount (`param.amount`).
+
+ - orderNumber : Order ID
+ - name : Product name
+ - quantity : Product quantity
+ - amount : Product price
+
+ ```ts title="JavaScript SDK"
+ IMP.request_pay({
+ pg: "kcp",
+ escrow: true, // For escrow payment
+ kcpProducts: [
+ {
+ orderNumber: "xxxx",
+ name: "Product A",
+ quantity: 3,
+ amount: 1000,
+ },
+ {
+ orderNumber: "yyyy",
+ name: "Product B",
+ quantity: 2,
+ amount: 3000,
+ },
+ ],
+ //* ...Omitted... *//
+ });
+ ```
+
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/nice.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/nice.mdx
index 62178fb2d..a786c42e7 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/nice.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/nice.mdx
@@ -5,243 +5,228 @@ description: NICE Payments payment window integration guideNICE
import Codepen from "~/components/gitbook/Codepen.astro";
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure NICE Payments PG settings
+## 1. Configure NICE Payments PG settings
-Refer to the [**NICE Payments settings**](../../ready/2.-pg/payment-gateway-settings/nice-payments) page to configure the PG settings.
+Refer to the [**NICE Payments settings**](../../ready/2.-pg/payment-gateway-settings/nice-payments)
+page to configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
-To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/) IMP.**request_pay**(param, callback).
+To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url** .
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url** .
-
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "nice",
- pay_method: "card",
- merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
- name: "Order name: Test payment request",
- amount: 14000,
- buyer_email: "iamport@siot.do",
- buyer_name: "John Doe",
- buyer_tel: "010-1234-5678",
- buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
- buyer_postcode: "123-456",
- m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
- niceMobileV2: true, // Set to 'true' to enable new mobile version
- },
- function (rsp) {
- // callback logic
- //* ...Omitted... *//
- }
-);
-```
-
-####
-
-### Key parameter description
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "nice",
+ pay_method: "card",
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "John Doe",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
+ niceMobileV2: true, // Set to 'true' to enable new mobile version
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-**`pg`** **\*** **s** **tring**
+ ### Key parameter description
-**PG code**
+ **`pg`** **\*** **string**
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`nice`**.
+ **PG code**
-**`pay_method`** **\*** **s** **tring**
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`nice`**.
-**Payment method code**
+ **`pay_method`** **\*** **string**
-
-
-
+ - `card` (credit card)
+ - `trans`(instant account transfer)
+ - `vbank`(virtual account)
+ - `samsung`(Samsung Pay)
+ - `phone`(mobile micropayment)
+ - `kakaopay`(Kakao Pay)
+ - `payco` ( PAYCO hub-type)
+ - `naverpay` (Naver Pay)
+
-**`merchant_uid`** **\*** **s** **tring**
+ **`merchant_uid`** **\*** **string**
-**Order ID**
+ **Order ID**
-Must be unique for each request.
+ Must be unique for each request.
-**`amount`** **\*** **integer**
+ **`amount`** **\*** **integer**
-**Payment amount**
+ **Payment amount**
-Must be an integer (not string).
+ Must be an integer (not string).
-**`niceMobileV2`** **`boolean`**
+ **`niceMobileV2`** **`boolean`**
-Option to enable new NICE mobile version (default: false)
+ Option to enable new NICE mobile version (default: false)
-**`escrow`** **`boolean`**
+ **`escrow`** **`boolean`**
-**Ecrow option**
+ **Ecrow option**
-
+
+
-
+
+ **You can use i'mport REST API to request billing key, request payment, and schedule payment.**
-
-#### **You can use i'mport REST API to request billing key, request payment, and schedule payment.**
+ ### Request one-time payment
-### Request one-time payment
+ To request a one-time payment, use the key-in [**REST API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
+ The card information is not saved during this process.
-To request a one-time payment, use the key-in REST[ **API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api). The card information is not saved during this process.
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ ### Request billing key
-###
+ To request a billing key, use the billing key request REST [**API POST /subscribe/customers/\{customer\_uid}**](../../api/billing-key-api/api-1).
-### Request billing key
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-To request a billing key, use the billing key request REST [**API POST /subscribe/customers/\{customer_uid}**](../../api/billing-key-api/api-1).
+ ### Request billing key + initial payment
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
+ To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
-### Request billing key + initial payment
+ - **`customer_uid`** : required for saving the billing key.
-To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-- **`customer_uid`** : required for saving the billing key.
+ ### Request payment with billing key
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ After successfully getting the billing key and making the initial payment,
+ the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the repeat pay REST API ([**POST /subscribe/payments/again**](../../api/api/api))
+ with the `customer_uid` as follows:
-### Request payment with billing key
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-After successfully getting the billing key and making the initial payment, the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the repeat pay REST API ([**POST /subscribe/payments/again**](../../api/api/api)) with the `customer_uid` as follows:
+
+ **NICE Payments supports non-authenticated payments only through the API method.**
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
-
-
-**NICE Payments supports non-authenticated payments only through the API method.**
-
-To integrate non-authenticated payments, you need to provide a UI for accepting user's card information. For more information, refer to the [**REST API**](../../auth/guide-1/bill/rest-api) page.
-
-
-
-
+ To integrate non-authenticated payments, you need to provide a UI for accepting user's card information.
+ For more information, refer to the [**REST API**](../../auth/guide-1/bill/rest-api) page.
+
+
-### 3. Additional functions
+## 3. Additional functions
-
-
-```javascript title="javascript"
-display: {
- card_quota: [6]; // Display up to 6 months installment plans
-}
-```
-
-**Parameters**
-
-- **card_quota :**
- - `[]`: Only immediate pay
- - `2,3,4,5,6`: immediate, 2, 3, 4, 5, 6 month installment plans
-
-
-Installment plan option is available only for **KRW 50,000 or more**.
-
-
-
-
-
-
-
-
-
-```javascript title="javascript"
-card: {
- direct: {
- code: "367",
- quota: 3
+
+ ```json title="javascript"
+ {
+ "display": {
+ "card_quota": [6] // Display up to 6 months installment plans
+ }
}
-}
-```
-
-**Parameters**
-
-- **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
-- **quota**: Installment plan. For immediate, set to 0. (**integer**)
-
-
-**Precautions**
+ ```
+
+ **Parameters**
+
+ - **card\_quota :**
+ - `[]`: Only immediate pay
+ - `2,3,4,5,6`: immediate, 2, 3, 4, 5, 6 month installment plans
+
+
+ Installment plan option is available only for **KRW 50,000 or more**.
+
+
+
+
+
+
+ ```json title="javascript"
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3
+ }
+ }
+ }
+ ```
-- Some PGs do not support direct call to credit card company's payment windows for all Merchant IDs. You must check your Merchant ID with each PG for direct call support.
+ **Parameters**
-
+ - **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
+ - **quota**: Installment plan. For immediate, set to 0. (**integer**)
-
+
+ **Precautions**
-
+ - Some PGs do not support direct call to credit card company's payment windows for all Merchant IDs.
+ You must check your Merchant ID with each PG for direct call support.
+
-
-```javascript title="javascript"
-card : {
- detail : [
- {card_code:"*", enabled:false}, // Disable all credit cards
- {card_code:'366', enabled:true} // Enable specific credit card
- ]
-}
-```
+
+
-**Parameters**
+
+ ```json title="javascript"
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, // Disable all credit cards
+ { "card_code": "366", "enabled": true }, // Enable specific credit card
+ ]
+ }
+ }
+ ```
-- **card_code:** [ **Credit card code** ](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
-- **enabled:** Option to enable the credit card (**boolean**)
+ **Parameters**
-
+ - **card\_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
+ - **enabled:** Option to enable the credit card (**boolean**)
-
+
+
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/paymentwall.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/paymentwall.mdx
index 3163f5cce..42f92d079 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/paymentwall.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/paymentwall.mdx
@@ -3,106 +3,107 @@ title: Paymentwall
description: Paymentwall payment window integration guide
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-### 1. Configure Paymentwall PG settings
+## 1. Configure Paymentwall PG settings
Refer to the [**Paymentwall settings**](../../ready/2.-pg/payment-gateway-settings/undefined-1) page
to configure the PG settings.
![](/gitbook-assets/en/Paymentwall_logo_dark_latest.jpeg)
-### 2. Request payment
+## 2. Request payment
To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
-IMP.**request_pay**(param, callback).
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url**.
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url**.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'paymentwall',
- pay_method : 'card', // In Paymentwall, the payment method is activated based on the country IP. (Can be omitted)
- merchant_uid : '{Merchant created Order ID}', // Example: order_no_0001
- name : 'Order name: Test payment request',
- amount : 14000,
- currency : 'KRW' // required
- buyer_email : 'iamport@siot.do', // required
- buyer_name : 'Jack Son', // Must include a space between Firstname Lastname
- buyer_tel : '010-1234-5678',
- buyer_addr : 'Shinsa-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456',
- m_redirect_url : '{Mobile only - URL to redirect to after payment approval}', // Example: https://www.my-service.com/payments/complete/mobile
- bypass: {
- // Set this for Terminal 3 only, Defualt: general payment window opens
- widget_code: "t3_1",
- // Set to enable specific payment method, set to 'all'(default) to enable all methods supported by your country
- ps : "all",
- country_code:"DE" // Set this to enable all payment methods supported by the country
- },
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
-
-###
-
-### Key parameter description
-
-**`pg`** **\***\*\* ****s****tring\*\*
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "paymentwall",
+ pay_method: "card", // In Paymentwall, the payment method is activated based on the country IP. (Can be omitted)
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14000,
+ currency: "KRW", // required
+ buyer_email: "iamport@siot.do", // required
+ buyer_name: "Jack Son", // Must include a space between Firstname Lastname
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
+ bypass: {
+ // Set this for Terminal 3 only, Defualt: general payment window opens
+ widget_code: "t3_1",
+ // Set to enable specific payment method, set to 'all'(default) to enable all methods supported by your country
+ ps: "all",
+ country_code: "DE", // Set this to enable all payment methods supported by the country
+ },
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-**PG code**
+ ### Key parameter description
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`paymentwall`**.
+ **`pg`** **\*** **string**
-**`pay_method`** **s****tring**
+ **PG code**
-**Payment method code (Can be omitted)**
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`paymentwall`**.
-You can manage your payment methods by enabling Project from the [Paymentwall website](https://api.paymentwall.com/).
+ **`pay_method`** **string**
-(Payment methods are enabled based on your country IP by default)
+ **Payment method code (Can be omitted)**
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ You can manage your payment methods by enabling Project from the [Paymentwall website](https://api.paymentwall.com/).
-**Order ID**
+ (Payment methods are enabled based on your country IP by default)
-Must be unique for each request.
+ **`merchant_uid`** **\*** **string**
-**`amount`** **\***\*\* ****integer\*\*
+ **Order ID**
-**Payment amount**
+ Must be unique for each request.
-Must be an integer (not string)
+ **`amount`** **\*** **integer**
-**`buyer_name`****`*`****`string`**
+ **Payment amount**
-**`Customer name`**
+ Must be an integer (not string)
-**`buyer_email`****`*`****`string`**
+ **`buyer_name`****`*`****`string`**
-**`Customer email address`**
+ **`Customer name`**
-**`currency`****`*`****`string`**
+ **`buyer_email`****`*`****`string`**
-**`Currency`**
+ **`Customer email address`**
-**`bypass`**
+ **`currency`****`*`****`string`**
-**`Paymentwall specific parameter`**
+ **`Currency`**
-- **`widget_code` :** Set this to **t3_1** for Terminal 3 only, Defualt: general payment window
-- **`ps` :** Set to enable specific payment method. For available codes, refer to [**Payment system short codes**](https://docs.paymentwall.com/reference/payment-system-shortcodes). Example: `kakaopaykr` = Kakao Pay
-- **country_code** : Payment methods are shown based on this code. ([**Country codes**](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2))
+ **`bypass`**
-
+ **`Paymentwall specific parameter`**
-
-**Preparing for service**
+ - **`widget_code` :** Set this to **t3\_1** for Terminal 3 only, Defualt: general payment window
+ - **`ps` :** Set to enable specific payment method. For available codes, refer to [**Payment system short codes**](https://docs.paymentwall.com/reference/payment-system-shortcodes). Example: `kakaopaykr` = Kakao Pay
+ - **country\_code** : Payment methods are shown based on this code. ([**Country codes**](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2))
+
-
+
+ **Preparing for service**
+
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/paypal.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/paypal.mdx
index f19fd008e..ae507ae79 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/paypal.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/paypal.mdx
@@ -4,97 +4,96 @@ description: PayPal payment window integration guide
---
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure PayPal PG settings
+## 1. Configure PayPal PG settings
Refer to the [**PayPal settings**](../../ready/2.-pg/payment-gateway-settings/undefined-5) page to
configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
-IMP.**request_pay**(param, callback).
+IMP.**request\_pay**(param, callback).
-In PC and mobile browsers, the page is redirected to **m_redirect_url**.
+In PC and mobile browsers, the page is redirected to **m\_redirect\_url**.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'paypal',
- pay_method : 'card',
- merchant_uid : '{Merchant created Order ID}', // Example: order_no_0001
- name : 'Order name: Test payment request',
- amount : 14.20,
- currency : 'USD' // default: USD (KRW not supported)
- buyer_email : 'iamport@siot.do',
- buyer_name : 'John Doe',
- buyer_tel : '010-1234-5678', // Required
- buyer_addr : 'Shinsa-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456'
- m_redirect_url : '{URL to redirect to after payment approval}' // Example: https://www.my-service.com/payments/complete/mobile
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "paypal",
+ pay_method: "card",
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14.2,
+ currency: "USD", // default: USD (KRW not supported)
+ buyer_email: "iamport@siot.do",
+ buyer_name: "John Doe",
+ buyer_tel: "010-1234-5678", // Required
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-####
+ ### Key parameter description
-### Key parameter description
+ **`pg`** **\*** **string**
-**`pg`** **\***\*\* ****s****tring\*\*
+ **PG code**
-**PG code**
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`paypal`**.
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`paypal`**.
+ **`pay_method`** **\*** **string**
-**`pay_method`** **\***\*\* ****s****tring\*\*
+ **Payment method code**
-**Payment method code**
+
+
Payment method codes
-
-
Payment method codes
+ - `card` (credit card)
+
-- `card` (credit card)
+ **`merchant_uid`** **\*** **string**
-
+ **Order ID**
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ Must be unique for each request.
-**Order ID**
+ **`amount`** **\*** **integer**
-Must be unique for each request.
+ **Payment amount**
-**`amount`** **\***\*\* ****integer\*\*
+ Must be an integer (not string)\
+ \
+ **`currency`****`*`****`string`**
-**Payment amount**
+ **Currency**
-Must be an integer (not string)\
-\
-**`currency`****`*`****`string`**
+ For supported currencies, refer to [PayPal currency codes](https://developer.paypal.com/docs/api/reference/currency-codes/#paypal-account-payments).
-**Currency**
+ **`m_redirect_url`****`*`****`string`**
-For supported currencies, refer to [PayPal currency codes](https://developer.paypal.com/docs/api/reference/currency-codes/#paypal-account-payments).
+ **Redirect URL**
-**`m_redirect_url`****`*`****`string`**
-
-**Redirect URL**
-
-Required in both PC and mobile to receive payment result.
-
-
+ Required in both PC and mobile to receive payment result.
+
-### Note
-
-i'mport does not support PayPal subscription payment.
+ ### Note
+ i'mport does not support PayPal subscription payment.
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/readme.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/readme.mdx
index 36434112e..53b797357 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/readme.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/readme.mdx
@@ -3,4 +3,4 @@ title: Payment gateways
description: Learn how to integrate with each PG.
---
-### Learn how to integrate authenticated and non-authenticated payments by PG.
+Learn how to integrate authenticated and non-authenticated payments by PG.
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/settlebank.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/settlebank.mdx
index 72763a2f5..0bcc5b9e1 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/settlebank.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/settlebank.mdx
@@ -6,148 +6,150 @@ description: Settlebank payment window integration guide
import Codepen from "~/components/gitbook/Codepen.astro";
import ContentRef from "~/components/gitbook/ContentRef.astro";
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure **Settlebank** PG settings
+## 1. Configure **Settlebank** PG settings
-Refer to the [**Settlebank settings**](../../ready/2.-pg/payment-gateway-settings/undefined-3) page to configure the PG settings.
+Refer to the [**Settlebank settings**](../../ready/2.-pg/payment-gateway-settings/undefined-3) page
+to configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
-To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/) IMP.**request_pay**(param, callback).
+To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url**.
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url**.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'settle',
- pay_method : 'card',
- merchant_uid : '{Merchant created Order ID}', // Example: order_no_0001
- name : 'Order name: Test payment request',
- amount : 14000,
- buyer_email : 'iamport@siot.do',
- buyer_name : 'John Doe',
- buyer_tel : '010-1234-5678', // Required
- buyer_addr : 'Shinsa-dong, Gangnam-gu, Seoul',
- company : 'iamport', // Recommended for virtual account payment
- buyer_postcode : '123-456',
- m_redirect_url : '{Mobile only - URL to redirect to after payment approval}' // Example: https://www.my-service.com/payments/complete/mobile
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
-
-####
-
-### Key parameter description
-
-**`pg`** **\***\*\* ****s****tring\*\*
-
-**PG code**
-
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`settle`**.
-
-**`pay_method`** **\***\*\* ****s****tring\*\*
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "settle",
+ pay_method: "card",
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "John Doe",
+ buyer_tel: "010-1234-5678", // Required
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ company: "iamport", // Recommended for virtual account payment
+ buyer_postcode: "123-456",
+ m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-**Payment method code**
+ ### Key parameter description
-
-
Payment method codes
+ **`pg`** **\*** **string**
-- `card` (credit card)
-- `trans`(instant account transfer)
-- `vbank`(virtual account)
-- `phone`(mobile micropayment)
+ **PG code**
-
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`settle`**.
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ **`pay_method`** **\*** **string**
-**Order ID**
+ **Payment method code**
-Must be unique for each request.
+
+
Payment method codes
-**`amount`** **\***\*\* ****integer\*\*
+ - `card` (credit card)
+ - `trans`(instant account transfer)
+ - `vbank`(virtual account)
+ - `phone`(mobile micropayment)
+
-**Payment amount**
+ **`merchant_uid`** **\*** **string**
-Must be an integer (not string)
+ **Order ID**
-**`buyer_tel`****`*`****`string`**
+ Must be unique for each request.
-**Customer phone number**
+ **`amount`** **\*** **integer**
-Required
+ **Payment amount**
-**` company`` `****`string`**
+ Must be an integer (not string)
-**`Company name`**
+ **`buyer_tel`****`*`****`string`**
-Required for virtual account payment
+ **Customer phone number**
-
+ Required
-
+ **`company`` `****`string`**
-
-#### Not supported
+ **`Company name`**
-
+ Required for virtual account payment
-
-#### **You can use i'mport REST API to request payment and schedule payment.**
+
+
-### Request one-time payment
+
+ #### Not supported
+
-To request a one-time payment, use the key-in REST[ **API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api). The card information is not saved during this process.
+
+ #### **You can use i'mport REST API to request payment and schedule payment.**
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ ### Request one-time payment
-### Request billing key + initial payment
+ To request a one-time payment, use the key-in [**REST API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
+ The card information is not saved during this process.
-To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-- **`customer_uid`** : required for saving the billing key.
+ ### Request billing key + initial payment
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
-### Request payment with billing key
+ - **`customer_uid`** : required for saving the billing key.
-After successfully getting the billing key and making the initial payment, the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the repeat pay REST API ([**POST /subscribe/payments/again**](../../api/api/api)) with the `customer_uid` as follows:
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ ### Request payment with billing key
-
-**Settlebank does not support** [**Request billing key API**](../../api/billing-key-api/api-1)**.**
+ After successfully getting the billing key and making the initial payment,
+ the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the repeat pay REST API ([**POST /subscribe/payments/again**](../../api/api/api))
+ with the `customer_uid` as follows:
-
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-**For detailed information, refer to:**
+
+ **Settlebank does not support** [**Request billing key API**](../../api/billing-key-api/api-1)**.**
+
-
+ **For detailed information, refer to:**
-
+
+
diff --git a/src/content/docs/en/payment-integration-by-pg/payment-gateways/smartro.mdx b/src/content/docs/en/payment-integration-by-pg/payment-gateways/smartro.mdx
index e7659d1c7..1ca6e100e 100644
--- a/src/content/docs/en/payment-integration-by-pg/payment-gateways/smartro.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/payment-gateways/smartro.mdx
@@ -4,78 +4,79 @@ description: Smartro payment window integration guide
---
import Details from "~/components/gitbook/Details.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-### 1. Configure Smartro PG settings
+## 1. Configure Smartro PG settings
Refer to the [**Smartro settings**](../../ready/2.-pg/payment-gateway-settings/undefined-4) page to
configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
-IMP.**request_pay**(param, callback).
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url**.
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url**.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'smartro',
- pay_method : 'card',
- merchant_uid : '{Merchant created Order ID}', // Example: order_no_0001
- name : 'Order name: Test payment request',
- amount : 14000,
- buyer_email : 'iamport@siot.do',
- buyer_name : 'John Doe',
- buyer_tel : '010-1234-5678', // Required
- buyer_addr : 'Shinsa-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456',
- m_redirect_url : '{Mobile only - URL to redirect to after payment approval}' // Example: https://www.my-service.com/payments/complete/mobile
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
-
-####
-
-### Key parameter description
-
-**`pg`** **\***\*\* ****s****tring\*\*
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "smartro",
+ pay_method: "card",
+ merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001
+ name: "Order name: Test payment request",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "John Doe",
+ buyer_tel: "010-1234-5678", // Required
+ buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-**PG code**
+ ### Key parameter description
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`smartro`**.
+ **`pg`** **\*** **string**
-**`pay_method`** **\***\*\* ****s****tring\*\*
+ **PG code**
-**Payment method code**
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`smartro`**.
-
-
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ - `card` (credit card)
+ - `trans`(instant account transfer)
+ - `vbank`(virtual account)
+ - `phone`(mobile micropayment)
+
-**Order ID**
+ **`merchant_uid`** **\*** **string**
-Must be unique for each request.
+ **Order ID**
-**`amount`** **\***\*\* ****integer\*\*
+ Must be unique for each request.
-**Payment amount**
+ **`amount`** **\*** **integer**
-Must be an integer (not string).
+ **Payment amount**
-**` escrow`` `****`boolean`**
+ Must be an integer (not string).
-**Ecrow option**
+ **`escrow`` `****`boolean`**
-
+ **Ecrow option**
-
+
+
-
-To open non-authenticated payment window, specify the **customer\_uid** parameter. After getting a billing key from this window, you can request payment using the billing key.
+
+ To open non-authenticated payment window, specify the **customer\_uid** parameter.
+ After getting a billing key from this window, you can request payment using the billing key.
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "tosspayments",
- pay_method: "card", // only 'card' supported.
- merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
- name: "Initial billing key request",
- amount: 0, // For display purpose only (no payment approval).
- customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
- buyer_email: "johndoe@gmail.com",
- buyer_name: "John Doe",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{redirect URL}", // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
- customer_id: "matthew", // Merchant user ID
- },
- function (rsp) {
- // callback
- }
-);
-```
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "tosspayments",
+ pay_method: "card", // only 'card' supported.
+ merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
+ name: "Initial billing key request",
+ amount: 0, // For display purpose only (no payment approval).
+ customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
+ buyer_email: "johndoe@gmail.com",
+ buyer_name: "John Doe",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{redirect URL}", // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
+ customer_id: "matthew", // Merchant user ID
+ },
+ function (rsp) {
+ // callback
+ },
+ );
+ ```
-
-* To request non-authenticated payment, you must set the **MID issued by Toss Payments** in the Admin console.
-* Toss Payments **does not process the payment** when issuing the billing key even if you specify an amount.
-
-
-
-### Key parameter description
+
+ - To request non-authenticated payment, you must set the **MID issued by Toss Payments** in the Admin console.
-**`pg`** **\***\*\* ****s****tring\*\*
+ - Toss Payments **does not process the payment**
+ when issuing the billing key even if you specify an amount.
+
-**PG code**
+ ### Key parameter description
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`tosspayments`**.
+ **`pg`** **\*** **string**
-**`customer_uid`** **\***\*\* ****string\*\*
+ **PG code**
-**Credit card billing key**
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`tosspayments`**.
-Billing key to be mapped 1:1 with the user-entered credit card information.
+ **`customer_uid`** **\*** **string**
-**`amount`** **\***\*\* ****Integer\*\*
+ **Credit card billing key**
-**Payment amount**
+ Billing key to be mapped 1:1 with the user-entered credit card information.
-Amount to display in the payment window, but actual payment approval is not processed. (To request payment, use the **REST API with the customer_uid**.)
+ **`amount`** **\*** **Integer**
-**`customer_id`** **\***\*\* ****string\*\*
+ **Payment amount**
-**Customer ID**
+ Amount to display in the payment window, but actual payment approval is not processed. (To request payment, use the **REST API with the customer\_uid**.)
-Customer user ID that maps to billing key. If not specified, this is generated by i'mport.\
+ **`customer_id`** **\*** **string**
-### Request payment with billing key (customer_uid)
+ **Customer ID**
-After successfully getting the billing key, the billing key is **stored on the i'mport server** mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the [**non-authenticated payment request REST API**](../../api/api/api) with the `customer_uid` as follows:
+ Customer user ID that maps to billing key. If not specified, this is generated by i'mport.\\
-```title="sever-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ ### Request payment with billing key (customer\_uid)
-
+ After successfully getting the billing key, the billing key is **stored on the i'mport server**
+ mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the [**non-authenticated payment request REST API**](../../api/api/api)
+ with the `customer_uid` as follows:
-
-#### **You can use i'mport REST API to request billing key, request payment, and schedule payment.**
+ ```sh title="sever-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-
-**MID Issuance**
-
-When you get an MID from Toss Payments, the **API version** must be **1.4**.
-
-
+
+ #### **You can use i'mport REST API to request billing key, request payment, and schedule payment.**
-### Request one-time payment
+
+ **MID Issuance**
-To request a one-time payment, use the key-in REST[ **API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api). The card information is not saved during this process.
+ When you get an MID from Toss Payments, the **API version** must be **1.4**.
+
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ ### Request one-time payment
-###
+ To request a one-time payment, use the key-in [**REST API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
+ The card information is not saved during this process.
-### Request billing key
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-To request a billing key, use the billing key request REST [**API POST /subscribe/customers/\{customer_uid}**](../../api/billing-key-api/api-1).
+ ### Request billing key
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
+ To request a billing key, use the billing key request REST [**API POST /subscribe/customers/\{customer\_uid}**](../../api/billing-key-api/api-1).
-### Request billing key + initial payment
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
+ ### Request billing key + initial payment
-- **`customer_uid`** : required for saving the billing key.
+ To request a billing key and initial payment, use the key-in REST [**API POST /subscribe/payments/onetime**](../../api/api/request-non-authenticated-payment-one-time-api).
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ - **`customer_uid`** : required for saving the billing key.
-### Request payment with billing key
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-After successfully getting the billing key and making the initial payment, the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the repeat pay REST API ([**POST /subscribe/payments/again**](../../api/api/api)) with the `customer_uid` as follows:
+ ### Request payment with billing key
-```
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ After successfully getting the billing key and making the initial payment,
+ the billing key is stored on the i'mport server mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the repeat pay REST API ([**POST /subscribe/payments/again**](../../api/api/api))
+ with the `customer_uid` as follows:
-**For detailed information, refer to:**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-
+ **For detailed information, refer to:**
-
+
+
### 3. Additional functions
-
-```javascript title="javascript"
-display: {
- card_quota: [6], // Display up to 6 months installment plans
- only_installment: true // Disable immediate pay option
-}
-```
-
-**Parameters**
-
-- **card_quota :**
- - Enable only specified installment months
- - `[]`: Only immediate pay
- - `2,3,4,5,6`: immediate, 2, 3, 4, 5, 6 month installment plans
-- If **only_installment: `true`**, only shows specified months in **`card_quota`**.\
-
-
-Installment plan option is available only for **KRW 50,000 or more**.
-
-
-
-
-
-
-```javascript title="javascript"
-card: {
- direct: {
- code: "367",
- quota: 3
+
+ ```json title="javascript"
+ {
+ "display": {
+ "card_quota": [6], // Display up to 6 months installment plans
+ "only_installment": true // Disable immediate pay option
+ }
}
-}
-```
-
-**Parameters**
-
-- **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
-- **quota**: Installment plan. For immediate, set to 0. (**integer**)
-
-
-
-
-```javascript title="javascript"
-card : {
- detail : [
- {card_code:"*", enabled:false}, // Disable all credit cards
- {card_code:'366', enabled:true} // Enable specific credit card
- ]
-}
-```
-
-**Parameters**
+ ```
+
+ **Parameters**
+
+ - **card\_quota :**
+ - Enable only specified installment months
+ - `[]`: Only immediate pay
+ - `2,3,4,5,6`: immediate, 2, 3, 4, 5, 6 month installment plans
+
+ - If **only\_installment: `true`**, only shows specified months in **`card_quota`**.\\
+
+
+ Installment plan option is available only for **KRW 50,000 or more**.
+
+
+
+
+ ```json title="javascript"
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3
+ }
+ }
+ }
+ ```
+
+ **Parameters**
+
+ - **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
+ - **quota**: Installment plan. For immediate, set to 0. (**integer**)
+
+
+
+ ```json title="javascript"
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, // Disable all credit cards
+ { "card_code": "366", "enabled": true }, // Enable specific credit card
+ ]
+ }
+ }
+ ```
-- **card_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string)**
-- **enabled:** Option to enable the credit card (**boolean)**
+ **Parameters**
-
+ - **card\_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) **(string)**
+ - **enabled:** Option to enable the credit card (**boolean)**
+
-**Hub-type simple payment**
-
-Simple payments (Kakao Pay, Naver Pay, etc.) are not supported in Toss Payments payment window.
+ **Hub-type simple payment**
+ Simple payments (Kakao Pay, Naver Pay, etc.) are not supported in Toss Payments payment window.
diff --git a/src/content/docs/en/payment-integration-by-pg/simple/alipay.mdx b/src/content/docs/en/payment-integration-by-pg/simple/alipay.mdx
index 1a3c3fb89..b7efa1598 100644
--- a/src/content/docs/en/payment-integration-by-pg/simple/alipay.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/simple/alipay.mdx
@@ -3,71 +3,72 @@ title: Alipay
description: Alipay simple payment integration guide
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-### 1. Configure Alipay simple payment PG settings
+## 1. Configure Alipay simple payment PG settings
Refer to the [**Alipay settings**](../../ready/2.-pg/pg/undefined-5) page to configure the PG
settings.
![]()
-### 2. Request payment
+## 2. Request payment
To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
-IMP.**request_pay**(param, callback).
+IMP.**request\_pay**(param, callback).
-After calling `IMP.request_pay(param, callback)`, the page is redirected to **m_redirect_url**.
+After calling `IMP.request_pay(param, callback)`, the page is redirected to **m\_redirect\_url**.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'alipay',
- merchant_uid: '{Merchant created Order ID}', //Example: order_no_0001
- name : 'Order name: Test payment',
- amount : 1.20, // USD
- currency : 'USD' // Default: USD
- buyer_email : 'iamport@siot.do',
- buyer_name : 'Customer name',
- buyer_tel : '010-1234-5678',
- buyer_addr : 'Samseong-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456',
- m_redirect_url : "{URL to redirect to after payment approval}" //Example: http://yourservice.com/payments/complete
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
-
-####
-
-### Key parameter description
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "alipay",
+ merchant_uid: "{Merchant created Order ID}", //Example: order_no_0001
+ name: "Order name: Test payment",
+ amount: 1.2, // USD
+ currency: "USD", // Default: USD
+ buyer_email: "iamport@siot.do",
+ buyer_name: "Customer name",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Samseong-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{URL to redirect to after payment approval}", //Example: http://yourservice.com/payments/complete
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-**`pg`** **\***\*\* ****s****tring\*\*
+ ### Key parameter description
-**PG code**
+ **`pg`** **\*** **string**
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`alipay`**.
+ **PG code**
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`alipay`**.
-**Order ID**
+ **`merchant_uid`** **\*** **string**
-Must be unique for each request.
+ **Order ID**
-**` currency`` `****`string`**
+ Must be unique for each request.
-**Currency code**
+ **`currency`` `****`string`**
-Default: USD (KRW supported)
+ **Currency code**
-**`amount`** **\***\*\* ****integer\*\*
+ Default: USD (KRW supported)
-**Payment amount**
+ **`amount`** **\*** **integer**
-Must be an integer (not string)
+ **Payment amount**
-
+ Must be an integer (not string)
+
diff --git a/src/content/docs/en/payment-integration-by-pg/simple/kakao-pay.mdx b/src/content/docs/en/payment-integration-by-pg/simple/kakao-pay.mdx
index b2314d5e1..3834f5774 100644
--- a/src/content/docs/en/payment-integration-by-pg/simple/kakao-pay.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/simple/kakao-pay.mdx
@@ -4,150 +4,152 @@ description: Kakao Pay simple payment integration guide
---
import Codepen from "~/components/gitbook/Codepen.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure Kakao Pay simple payment PG settings
+## 1. Configure Kakao Pay simple payment PG settings
-Refer to the [**Kakao Pay settings**](../../ready/2.-pg/pg/undefined) page to configure the PG settings.
+Refer to the [**Kakao Pay settings**](../../ready/2.-pg/pg/undefined) page
+to configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
-To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/) IMP.**request_pay**(param, callback).
+To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url**.
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url**.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'kakaopay',
- pay_method : 'card', // Can be omitted
- merchant_uid: '{Merchant created Order ID}', //Example: order_no_0001
- name : 'Order name: Test payment',
- amount : 14000,
- buyer_email : 'iamport@siot.do',
- buyer_name : 'Customer name',
- buyer_tel : '010-1234-5678',
- buyer_addr : 'Samseong-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456',
- m_redirect_url : "{URL to redirect to after payment approval}" //Example: http://yourservice.com/payments/complete
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
-
-####
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "kakaopay",
+ pay_method: "card", // Can be omitted
+ merchant_uid: "{Merchant created Order ID}", //Example: order_no_0001
+ name: "Order name: Test payment",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "Customer name",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Samseong-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{URL to redirect to after payment approval}", //Example: http://yourservice.com/payments/complete
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-### Key parameter description
+ ### Key parameter description
-**`pg`** **\***\*\* ****s****tring\*\*
+ **`pg`** **\*** **string**
-**PG code**
+ **PG code**
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`kakaopay`**.
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`kakaopay`**.
-**`pay_method`** **s****tring**
+ **`pay_method`** **string**
-**Payment method code**
+ **Payment method code**
-Can be omitted
+ Can be omitted
-(Overwritten by the option(credit card or Kakao money) selected in Kakao Pay app)
+ (Overwritten by the option(credit card or Kakao money) selected in Kakao Pay app)
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ **`merchant_uid`** **\*** **string**
-**Order ID**
+ **Order ID**
-Must be unique for each request.
+ Must be unique for each request.
-**`amount`** **\***\*\* ****integer\*\*
+ **`amount`** **\*** **integer**
-**Payment amount**
+ **Payment amount**
-Must be an integer (not string)
+ Must be an integer (not string)
-
+
+
-
+
+ To open subscription payment window, specify the **customer\_uid** parameter.
-
-To open subscription payment window, specify the **customer\_uid** parameter.
+
+ **amount**
-
-**amount**
+ - If requesting **both billing key and initial payment**, specify the payment amount.
+ - If only requesting for billing key, set to **0**.
+
-- If requesting **both billing key and initial payment**, specify the payment amount.
-- If only requesting for billing key, set to **0**.
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "kakaopay",
+ merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
+ name: "Order name: Billing key request test",
+ amount: 0, // For display purpose only (set actual amount to also request payment approval).
+ customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
+ buyer_email: "johndoe@gmail.com",
+ buyer_name: "John Doe",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("Success");
+ } else {
+ alert("Failed");
+ }
+ },
+ );
+ ```
-
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "kakaopay",
- merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
- name: "Order name: Billing key request test",
- amount: 0, // For display purpose only (set actual amount to also request payment approval).
- customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
- buyer_email: "johndoe@gmail.com",
- buyer_name: "John Doe",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{Mobile only - URL to redirect to after payment approval}", // Example: https://www.my-service.com/payments/complete/mobile
- },
- function (rsp) {
- if (rsp.success) {
- alert("Success");
- } else {
- alert("Failed");
- }
- }
-);
-```
-
-### Key parameter description
+ ### Key parameter description
-**`pg`** **\***\*\* ****s****tring\*\*
+ **`pg`** **\*** **string**
-**PG code**
+ **PG code**
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`kakaopay`**.
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`kakaopay`**.
-**`customer_uid`** **\***\*\* ****string\*\*
+ **`customer_uid`** **\*** **string**
-**Credit card billing key**
+ **Credit card billing key**
-Billing key to be mapped 1:1 with the user-entered credit card information.
+ Billing key to be mapped 1:1 with the user-entered credit card information.
-**`amount`** **\***\*\* ****Integer\*\*
+ **`amount`** **\*** **Integer**
-**Payment amount**
+ **Payment amount**
-0: only billing key, **> 0: billing key + initial payment**\
+ 0: only billing key, **> 0: billing key + initial payment**\\
-### Request payment with billing key (customer_uid)
+ ### Request payment with billing key (customer\_uid)
-After successfully getting the billing key, the billing key is **stored on the i'mport server** mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the [**non-authenticated payment request REST API**](../../api/api/api) with the `customer_uid` as follows:
+ After successfully getting the billing key, the billing key is **stored on the i'mport server**
+ mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the [**non-authenticated payment request REST API**](../../api/api/api)
+ with the `customer_uid` as follows:
-```title="sever-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
-
-
+ ```sh title="sever-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-**Kakao Pay simple payment is processed in mobile Kakao App.**
-
+ **Kakao Pay simple payment is processed in mobile Kakao App.**
diff --git a/src/content/docs/en/payment-integration-by-pg/simple/naver-pay-standard.mdx b/src/content/docs/en/payment-integration-by-pg/simple/naver-pay-standard.mdx
index 7d9a3ccf9..8ccd4437a 100644
--- a/src/content/docs/en/payment-integration-by-pg/simple/naver-pay-standard.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/simple/naver-pay-standard.mdx
@@ -4,353 +4,376 @@ description: "\bNaver Pay simple payment integration guide"
---
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure Naver Pay simple payment PG settings
+## 1. Configure Naver Pay simple payment PG settings
Refer to the [**Naver Pay settings**](../../ready/2.-pg/pg/undefined-2) page to configure the PG
settings.
![]()
-### 2. Request payment
+## 2. Request payment
To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
-IMP.**request_pay**(param, callback).
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url**.
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url**.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'naverpay',
- merchant_uid: '{Merchant created Order ID}', //Example: order_no_0001
- name : 'Order name: Test payment',
- amount : 14000,
- buyer_email : 'iamport@siot.do',
- buyer_name : 'Customer name',
- buyer_tel : '010-1234-5678',
- buyer_addr : 'Samseong-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456',
- naverUseCfm : '20201001', //Expiration date
- naverPopupMode : true, //Enable popup mode
- m_redirect_url : "{URL to redirect to after payment approval}", //Example: http://yourservice.com/payments/complete
- naverPurchaserName: "Purchaser name",
- naverPurchaserBirthday: "20151201",
- naverProducts : [{
- "categoryType": "BOOK",
- "categoryId": "GENERAL",
- "uid": "107922211",
- "name": "History of the World",
- "payReferrer": "NAVER_BOOK",
- "count": 10
- },
- {
- "categoryType": "MUSIC",
- "categoryId": "CD",
- "uid": "299911002",
- "name": "BTS",
- "payReferrer": "NAVER_BOOK",
- "count": 1
- }]
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "naverpay",
+ merchant_uid: "{Merchant created Order ID}", //Example: order_no_0001
+ name: "Order name: Test payment",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "Customer name",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Samseong-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ naverUseCfm: "20201001", //Expiration date
+ naverPopupMode: true, //Enable popup mode
+ m_redirect_url: "{URL to redirect to after payment approval}", //Example: http://yourservice.com/payments/complete
+ naverPurchaserName: "Purchaser name",
+ naverPurchaserBirthday: "20151201",
+ naverProducts: [
+ {
+ categoryType: "BOOK",
+ categoryId: "GENERAL",
+ uid: "107922211",
+ name: "History of the World",
+ payReferrer: "NAVER_BOOK",
+ count: 10,
+ },
+ {
+ categoryType: "MUSIC",
+ categoryId: "CD",
+ uid: "299911002",
+ name: "BTS",
+ payReferrer: "NAVER_BOOK",
+ count: 1,
+ },
+ ],
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
+
+ ### Key parameter description
+
+ **`pg`** **\*** **string**
+
+ **PG code**
+
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`naverpay`**.
+
+ **`merchant_uid`** **\*** **string**
+
+ **Order ID**
+
+ Must be unique for each request.
+
+ **`amount`** **\*** **integer**
+
+ **Payment amount**
+
+ Must be an integer (not string)
+
+ **`naverUseCfm`` `****`string`**
+
+ **Expiration date** (string in yyyyMMdd format, **must be on or after the date of payment**).
-####
+ - Specify if contract between Naver Pay and merchant requires this value for the specified product type (such as music or performance tickets).
-### Key parameter description
+ **`name`****`*`****`string`**
-**`pg`** **\***\*\* ****s****tring\*\*
+ **`Product name`**
-**PG code**
+ If multiple products are defined in the `naverProducts` parameter, Naver Pay automatically appends `and 2 others`. Hence, set this to the name of the first product (`naverProducts[0].name`) in the array.
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`naverpay`**.
+ **`naverPopupMode`` `****`boolean`**
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ **Option to proceed via popup window**
-**Order ID**
+ - If `false`, payment process will proceed via page redirection and you must specify `m_redirect_url`.
-Must be unique for each request.
+ **`m_redirect_url`****`string`**
-**`amount`** **\***\*\* ****integer\*\*
+ **`Redirect URL`**
-**Payment amount**
+ - URL to redirect to after payment approval when using redirection method (`naverPopupMode`: **false**).
-Must be an integer (not string)
+ **`naverPurchaserName`****`string`**
-**` naverUseCfm`` `****`string`**
+ **`Name of the purchaser`**
-**Expiration date** (string in yyyyMMdd format, **must be on or after the date of payment**).
+ **Only required for merchants** who have been instructed
+ to enter this information at the time of the Naver Pay contract because the product
+ falls under a high-risk industry.
-- Specify if contract between Naver Pay and merchant requires this value for the specified product type (such as music or performance tickets).
+ **`naverPurchaserBirthday`` `****`string`**
-**`name`****`*`****`string`**
+ **`Purchaser's DOB (yyyyMMdd)`**
-**`Product name`**
+ **Only required for merchants** who have been instructed
+ to enter this information at the time of the Naver Pay contract because the product
+ falls under a high-risk industry.
-If multiple products are defined in the `naverProducts` parameter, Naver Pay automatically appends `and 2 others`. Hence, set this to the name of the first product (`naverProducts[0].name`) in the array.
+ **`naverChainId`** **`string`**
-**` naverPopupMode`` `****`boolean`**
+ Enter the value received from Naver Pay only for group-type merchants that operate two or more services with the same partner ID.
-**Option to proceed via popup window**
+ Non-target merchants are not entered.
-- If `false`, payment process will proceed via page redirection and you must specify `m_redirect_url`.
+ **`naverProducts`****`*`****`array`**
-**`m_redirect_url`****`string`**
+ **`Product information`**
-**`Redirect URL`**
+ Same as the **`productItems`** parameter defined in Naver Pay manual.
-- URL to redirect to after payment approval when using redirection method (`naverPopupMode`: **false**).
+ (If omitted, request will fail Naver Pay's inspection.)
-**`naverPurchaserName`****`string`**
+ **`naverProducts`** is an array of objects consisting of the following 6 properties:
-**`Name of the purchaser`**
+ - **`categoryType`** (Required): Refer to [NPay Developers](https://developer.pay.naver.com/docs/v2/api#etc-etc_product)
-**Only required for merchants** who have been instructed
-to enter this information at the time of the Naver Pay contract because the product
-falls under a high-risk industry.
+ - **`categoryId`** (Required): Refer to [NPay Developers](https://developer.pay.naver.com/docs/v2/api#etc-etc_product)
-**` naverPurchaserBirthday`` `****`string`**
+ - **`uid`** (Required) : Merchant created product ID in general. Refer to [NPay Developers](https://developer.pay.naver.com/docs/v2/api#etc-etc_product)
-**`Purchaser's DOB (yyyyMMdd)`**
+ - **`name`** (Required) : Product name
-**Only required for merchants** who have been instructed
-to enter this information at the time of the Naver Pay contract because the product
-falls under a high-risk industry.
+ - **`count`** (Required) : Selected quantity
-**`naverChainId`** **`string`**
+ - **`sellerId`** (Optional) : Unique ID used by merchants to identify sub-merchants (uppercase and lowercase letters and numbers allowed)
+ - Only required for mail order brokerage merchants who have been instructed to enter this information at the time of the Naver Pay contract.
+ - Not required for other merchants.
-Enter the value received from Naver Pay only for group-type merchants that operate two or more services with the same partner ID.
+ - **`payReferrer`** (Optional) : Funnel path to Naver Pay. Enter only when in partnership agreement with other services on the Naver platform.
+ Refer to [NPay Developers](https://developer.pay.naver.com/docs/v2/api#etc-etc_product_ref).
+
-Non-target merchants are not entered.
+
+ ## Request billing key
-\
-**`naverProducts`****`*`****`array`**
+ ```ts title="JavaScript SDK"
+ IMP.request_pay(
+ {
+ pg: "naverpay",
+ customer_uid: "gildong_0001_1234", //billing, required.
+ merchant_uid: "{Merchant created Order ID}", //Example: order_monthly_0001
+ name: "Slim plan (montly)",
+ amount: 14000, // For display only, no payment approval
+ buyer_email: "iamport@siot.do",
+ buyer_name: "Customer name",
+ buyer_tel: "010-1234-5678", //Required
+ buyer_addr: "Samseong-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ naverProductCode: "Recurring payment product code",
+ naverPopupMode: true, //Enable popup mode
+ m_redirect_url: "{URL to redirect to after registration}", //Example: http://yourservice.com/payments/complete
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-**`Product information`**
+ ### Key parameter description
-Same as the **`productItems`** parameter defined in Naver Pay manual.
+ **`pg`** **\*** **string**
-(If omitted, request will fail Naver Pay's inspection.)
+ **PG code**
-> **`naverProducts`** is an array of objects consisting of the following 6 properties:
->
-> - **`categoryType`** (Required): Refer to [NPay Developers](https://developer.pay.naver.com/docs/v2/api#etc-etc_product)
-> - **`categoryId`** (Required): Refer to [NPay Developers](https://developer.pay.naver.com/docs/v2/api#etc-etc_product)
-> - **`uid`** (Required) : Merchant created product ID in general. Refer to [NPay Developers](https://developer.pay.naver.com/docs/v2/api#etc-etc_product)
-> - **`name`** (Required) : Product name
-> - **`count`** (Required) : Selected quantity
-> - **`sellerId`** (Optional) : Unique ID used by merchants to identify sub-merchants (uppercase and lowercase letters and numbers allowed)
-> - Only required for mail order brokerage merchants who have been instructed to enter this information at the time of the Naver Pay contract.
-> - Not required for other merchants.
-> - **`payReferrer`** (Optional) : Funnel path to Naver Pay. Enter only when in partnership agreement with other services on the Naver platform. Refer to [NPay Developers](https://developer.pay.naver.com/docs/v2/api#etc-etc_product_ref).
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`naverpay`**.
-
+ **`customer_uid`****`*`****`string`**
-
-## Request billing key
+ **`Billing key`**
-```javascript title="JavaScript SDK"
-IMP.request_pay(
- {
- pg: "naverpay",
- customer_uid: "gildong_0001_1234", //billing, required.
- merchant_uid: "{Merchant created Order ID}", //Example: order_monthly_0001
- name: "Slim plan (montly)",
- amount: 14000, // For display only, no payment approval
- buyer_email: "iamport@siot.do",
- buyer_name: "Customer name",
- buyer_tel: "010-1234-5678", //Required
- buyer_addr: "Samseong-dong, Gangnam-gu, Seoul",
- buyer_postcode: "123-456",
- naverProductCode: "Recurring payment product code",
- naverPopupMode: true, //Enable popup mode
- m_redirect_url: "{URL to redirect to after registration}", //Example: http://yourservice.com/payments/complete
- },
- function (rsp) {
- // callback logic
- //* ...Omitted... *//
- }
-);
-```
+ - Must be specified for subscription/recurring payment registration. If omitted, processed as general payment.
+ - After registration, you can use the key to request recurring payment approval.
-###
+ **`merchant_uid`** **\*** **string**
-### Key parameter description
+ **Order ID**
-**`pg`** **\***\*\* ****s****tring\*\*
+ Must be unique for each request.
-**PG code**
+ **`amount`** **\*** **integer**
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`naverpay`**.
+ **Payment amount**
-**`customer_uid`****`*`****`string`**
+ Must be an integer (not string)
-**`Billing key`**
+ **Payment approval is not processed** **during
+ subscription/recurring payment registration**.
-- Must be specified for subscription/recurring payment registration. If omitted, processed as general payment.
-- After registration, you can use the key to request recurring payment approval.
+ **`naverProductCode`****`*`****`string`**
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ **Product code managed by the merchant**
-**Order ID**
+ - Used to prevent the same customer from registering duplicate payments for the same product.
+ - The default value is a randomly generated value allowing for duplicate payment registration. To avoid this, specify a value.
-Must be unique for each request.
+ **`name`****`*`****`string`**
-**`amount`** **\***\*\* ****integer\*\*
+ **`Product name`**
-**Payment amount**
+ If multiple products are defined in the `naverProducts` parameter, Naver Pay automatically appends `and 2 others`.
+ Hence, set this to the name of the first product (`naverProducts[0].name`) in the array.
-Must be an integer (not string)
+ **`naverPopupMode`` `****`boolean`**
-**Payment approval is not processed**** during
-subscription/recurring payment registration**.
+ **Option to proceed via popup window**
-**`naverProductCode`****`*`****`string`**
+ - If `false`, payment process will proceed via page redirection and you must specify `m_redirect_url`.
-**Product code managed by the merchant**
+ **`m_redirect_url`****`string`**
-- Used to prevent the same customer from registering duplicate payments for the same product.
-- The default value is a randomly generated value allowing for duplicate payment registration. To avoid this, specify a value.
+ **`Redirect URL`**
-**`name`****`*`****`string`**
+ - URL to redirect to after payment approval when using redirection method (`naverPopupMode`: **false**).
-**`Product name`**
+ ## **Request payment**
-If multiple products are defined in the `naverProducts` parameter, Naver Pay automatically appends `and 2 others`. Hence, set this to the name of the first product (`naverProducts[0].name`) in the array.
+ After getting a billing key, you can request the initial payment or schedule future payment
+ by calling the payment approval API using the registered **`customer_uid`**.
-**` naverPopupMode`` `****`boolean`**
+ ### **How to request payment**
-**Option to proceed via popup window**
+ To request a payment approval, call the REST API [**/subscribe/payments/again**](../../api/api/api).
-- If `false`, payment process will proceed via page redirection and you must specify `m_redirect_url`.
+ - `customer_uid` : `customer_uid` specified for subscription/recurring payment registration.
-**`m_redirect_url`****`string`**
+ - `merchant_uid` : Merchant managed order number.
-**`Redirect URL`**
+ - `amount` : Payment amount (can be different from the amount specified for subscription/recurring payment registration).
-- URL to redirect to after payment approval when using redirection method (`naverPopupMode`: **false**).
+ - `tax_free` : Tax-free amount (out of total `amount`). Default value is 0.
-## **Request payment**
+ - `name` : Order name.
-After getting a billing key, you can request the initial payment or schedule future payment by calling the payment approval API using the registered **`customer_uid`**.
+ - `extra.naverUseCfm` : Expiration date (string in yyyyMMdd format, must be same as the date of payment or later).
+ - Specify if contract between Naver Pay and merchant requires this value for the specified product type (such as music or performance tickets).
-### **How to request payment**
+ ```json title="sample json"
+ {
+ "customer_uid": "gildong_0001_1234",
+ "merchant_uid": "order_monthly_0002", // Cannot be reused
+ "amount": 10000,
+ "name": "Slim plan (initial payment)",
+ "extra": {
+ "naverUseCfm": "20201001"
+ }
+ }
+ ```
-To request a payment approval, call the REST API [**/subscribe/payments/again**](../../api/api/api).
+ ```txt title="form-urlencoded"
+ customer_uid={Unique key to identify the customer}&merchant_uid={Order number}&amount=10000&name=Slim plan (initial payment)&extra[naverUseCfm]=20201001
+ ```
-- `customer_uid` : `customer_uid` specified for subscription/recurring payment registration.
-- `merchant_uid` : Merchant managed order number.
-- `amount` : Payment amount (can be different from the amount specified for subscription/recurring payment registration).
-- `tax_free` : Tax-free amount (out of total `amount`). Default value is 0.
-- `name` : Order name.
-- `extra.naverUseCfm` : Expiration date (string in yyyyMMdd format, must be same as the date of payment or later).
- - Specify if contract between Naver Pay and merchant requires this value for the specified product type (such as music or performance tickets).
+ ### Schedule payments
-```json title="sample json"
-{
- "customer_uid": "gildong_0001_1234",
- "merchant_uid": "order_monthly_0002", // Cannot be reused
- "amount": 10000,
- "name": "Slim plan (initial payment)",
- "extra": {
- "naverUseCfm": "20201001"
- }
-}
-```
+ To schedule payments, call the REST API [**/subscribe/payments/schedule**](../../api/subscription-payment-api/schedule-payment-api).
-```title="form-urlencoded"
-customer_uid={Unique key to identify the customer}&merchant_uid={Order number}&amount=10000&name=Slim plan (initial payment)&extra[naverUseCfm]=20201001
-```
+ - `customer_uid` : `customer_uid` specified for subscription/recurring payment registration.
-###
+ - `schedules` : Payment schedule object array (one or more schedules).
+ - `merchant_uid` : Merchant managed order number.
-### Schedule payments
+ - `schedule_at` : Scheduled time of payment (UNIX timestamp)
-To schedule payments, call the REST API[ **/subscribe/payments/schedule**](../../api/subscription-payment-api/schedule-payment-api).
+ - `amount` : Payment amount (can be different from the amount specified for subscription/recurring payment registration).
-- `customer_uid` : `customer_uid` specified for subscription/recurring payment registration.
-- `schedules` : Payment schedule object array (one or more schedules).
- - `merchant_uid` : Merchant managed order number.
- - `schedule_at` : Scheduled time of payment (UNIX timestamp)
- - `amount` : Payment amount (can be different from the amount specified for subscription/recurring payment registration).
- - `extra.naverUseCfm` : Expiration date (string in yyyyMMdd format, must be same as the date of payment or later).
- - Specify if contract between Naver Pay and merchant requires this value for the specified product type (such as music or performance tickets).
+ - `extra.naverUseCfm` : Expiration date (string in yyyyMMdd format, must be same as the date of payment or later).
+ - Specify if contract between Naver Pay and merchant requires this value for the specified product type (such as music or performance tickets).
-```json title="sample json"
-{
- "customer_uid": "gildong_0001_1234",
- "schedules": [
+ ```json title="sample json"
{
- "merchant_uid": "order_monthly_0003", // Cannot be reused
- "schedule_at": 1519862400,
- "amount": 10000,
- "extra": {
- "naverUseCfm": "20201001"
- }
+ "customer_uid": "gildong_0001_1234",
+ "schedules": [
+ {
+ "merchant_uid": "order_monthly_0003", // Cannot be reused
+ "schedule_at": 1519862400,
+ "amount": 10000,
+ "extra": {
+ "naverUseCfm": "20201001"
+ }
+ }
+ ]
}
- ]
-}
-```
+ ```
-```title="form-urlencoded"
-customer_uid={Unique key to identify the customer}&schedules[0][merchant_uid]={Oder number}&schedules[0][schedule_at]={Scheduled time of payment UNIX timestamp}&schedules[0][amount]=10000&schedules[0][extra][naverUseCfm]=20201001
-```
-
-
+ ```txt title="form-urlencoded"
+ customer_uid={Unique key to identify the customer}&schedules[0][merchant_uid]={Oder number}&schedules[0][schedule_at]={Scheduled time of payment UNIX timestamp}&schedules[0][amount]=10000&schedules[0][extra][naverUseCfm]=20201001
+ ```
+
-### Note
-
-#### Must return error message as-is
+ ### Note
-After calling the payment window (IMP.request_pay), if the payment process is interrupted by clicking the “Cancel” button at the bottom of the payment window, or if payment fails due to reasons such as insufficient balance, exceeding the limit, or less than 100 won, the reason for failure (error_msg) is included in the payment result (response object/query parameter) returned via callback (popup mode) or m_redirect_url (redirect mode). This error message must be returned to the user as it is without processing. If you do not comply with this rule, Naver Pay will request for correction during inspection.
+ #### Must return error message as-is
-Example: Assuming that error_msg is “Insufficient balance”, it should not be returned to the user as “Payment failed. Reason for failure:" + "Insufficient balance".
+ After calling the payment window (IMP.request\_pay),
+ if the payment process is interrupted by clicking the “Cancel” button at the bottom of the payment window,
+ or if payment fails due to reasons such as insufficient balance, exceeding the limit,
+ or less than 100 won, the reason for failure (error\_msg) is included in the payment result (response object/query parameter)
+ returned via callback (popup mode) or m\_redirect\_url (redirect mode).
+ This error message must be returned to the user as it is without processing.
+ If you do not comply with this rule, Naver Pay will request for correction during inspection.
-**Must implement exception handling for payment amount under 100 won**
+ Example: Assuming that error\_msg is “Insufficient balance”,
+ it should not be returned to the user as “Payment failed. Reason for failure:" + "Insufficient balance".
-You must implement exception handling for payment amount less than 100 won, the minimum amount for Naver Pay.
+ **Must implement exception handling for payment amount under 100 won**
-Example: Must return a 'less than minimum amount (100 won)' error message to the user.
+ You must implement exception handling for payment amount less than 100 won,
+ the minimum amount for Naver Pay.
+ Example: Must return a 'less than minimum amount (100 won)' error message to the user.
-
Payment cancellation
+
Payment cancellation
-To call the i'mport cancel payment API `POST` [**`/payments/cancel`**](../../api/payment-api/cancel-payment-api) , you must specify the following parameters. (**If omitted, Naver Pay's inspection will fail**)
+ To call the i'mport cancel payment API `POST` [**`/payments/cancel`**](../../api/payment-api/cancel-payment-api) , you must specify the following parameters. (**If omitted, Naver Pay's inspection will fail**)
-- **`extra.requester`** : API requestor
- - **`customer`**
- - **`admin`**(default)
-- **`reason`**: reason for cancellation
+ - **`extra.requester`** : API requestor
+ - **`customer`**
+ - **`admin`**(default)
-**Example (json)**
+ - **`reason`**: reason for cancellation
-```javascript
-{
- "imp_uid" : "imp_123412341234", // i'mport transaction ID
- "amount" : 3000, // Refund amount
- "reason": "Reson for cancellation", // Must be the actual reason
- "extra" : {
- "requester" : "customer"
- }
-}
-```
+ **Example (json)**
-**Example (form-urlencoded)**
+ ```json
+ {
+ "imp_uid": "imp_123412341234", // i'mport transaction ID
+ "amount": 3000, // Refund amount
+ "reason": "Reson for cancellation", // Must be the actual reason
+ "extra": {
+ "requester": "customer"
+ }
+ }
+ ```
-```
-imp_uid=imp_123412341234&amount=3000&extra[requester]=customer
-```
+ **Example (form-urlencoded)**
+ ```txt
+ imp_uid=imp_123412341234&amount=3000&extra[requester]=customer
+ ```
diff --git a/src/content/docs/en/payment-integration-by-pg/simple/payco.mdx b/src/content/docs/en/payment-integration-by-pg/simple/payco.mdx
index 715a9a48f..6ebd63241 100644
--- a/src/content/docs/en/payment-integration-by-pg/simple/payco.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/simple/payco.mdx
@@ -5,157 +5,158 @@ description: PAYCO simple payment integration guide
import Codepen from "~/components/gitbook/Codepen.astro";
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure PAYCO simple payment PG settings
+## 1. Configure PAYCO simple payment PG settings
-Refer to the [**PAYCO settings**](../../ready/2.-pg/pg/undefined-3) page to configure the PG settings.
+Refer to the [**PAYCO settings**](../../ready/2.-pg/pg/undefined-3) page
+to configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
-To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/) IMP.**request_pay**(param, callback).
+To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url**.
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url**.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'payco',
- merchant_uid: '{Merchant created Order ID}', //Example: order_no_0001
- name : 'Order name: Test payment',
- amount : 14000,
- buyer_email : 'iamport@siot.do',
- buyer_name : 'Customer name',
- buyer_tel : '010-1234-5678',
- buyer_addr : 'Samseong-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456'
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
-
-####
-
-### Key parameter description
-
-**`pg`** **\***\*\* ****s****tring\*\*
-
-**PG code**
-
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`payco`**.
-
-**`pay_method`** **s****tring**
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "payco",
+ merchant_uid: "{Merchant created Order ID}", //Example: order_no_0001
+ name: "Order name: Test payment",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "Customer name",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Samseong-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-**Payment method code**
+ ### Key parameter description
-
-
Payment method codes
+ **`pg`** **\*** **string**
-- `card` (credit card)
-- `trans`(instant account transfer)
-- `vbank`(virtual account)
+ **PG code**
-
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`payco`**.
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ **`pay_method`** **string**
-**Order ID**
+ **Payment method code**
-Must be unique for each request.
+
+
Payment method codes
-**`buyer_tel`****`*`****`string`**
+ - `card` (credit card)
+ - `trans`(instant account transfer)
+ - `vbank`(virtual account)
+
-**Customer phone number**
+ **`merchant_uid`** **\*** **string**
-Required
+ **Order ID**
-**`amount`** **\***\*\* ****integer\*\*
+ Must be unique for each request.
-**Payment amount**
+ **`buyer_tel`****`*`****`string`**
-Must be an integer (not string)
+ **Customer phone number**
-
+ Required
-
+ **`amount`** **\*** **integer**
-
-To open subscription payment window, specify the **customer\_uid** parameter.
+ **Payment amount**
-
-**amount**
+ Must be an integer (not string)
-- For display purpose only. No payment approval.
+
+
-
+
+ To open subscription payment window, specify the **customer\_uid** parameter.
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "payco",
- merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
- name: "Order name: Billing key request test",
- amount: 0, // For display purpose only
- customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
- buyer_email: "johndoe@gmail.com",
- buyer_name: "John Doe",
- buyer_tel: "02-1234-1234",
- },
- function (rsp) {
- if (rsp.success) {
- alert("Success");
- } else {
- alert("Failed");
- }
- }
-);
-```
+
+ **amount**
-### Key parameter description
+ - For display purpose only. No payment approval.
+
-**`pg`** **\***\*\* ****s****tring\*\*
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "payco",
+ merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
+ name: "Order name: Billing key request test",
+ amount: 0, // For display purpose only
+ customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
+ buyer_email: "johndoe@gmail.com",
+ buyer_name: "John Doe",
+ buyer_tel: "02-1234-1234",
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("Success");
+ } else {
+ alert("Failed");
+ }
+ },
+ );
+ ```
-**PG code**
+ ### Key parameter description
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`payco`**.
+ **`pg`** **\*** **string**
-**`customer_uid`** **\***\*\* ****string\*\*
+ **PG code**
-**Credit card billing key**
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`payco`**.
-Billing key to be mapped 1:1 with the user-entered credit card information.
+ **`customer_uid`** **\*** **string**
-**`amount`** **\***\*\* ****Integer\*\*
+ **Credit card billing key**
-**Payment amount**
+ Billing key to be mapped 1:1 with the user-entered credit card information.
-For display purpose only. No payment approval.
+ **`amount`** **\*** **Integer**
-### Request payment with billing key (customer_uid)
+ **Payment amount**
-After successfully getting the billing key, the billing key is **stored on the i'mport server** mapped 1:1 with the specified `customer_uid`. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the [**non-authenticated payment request REST API**](../../api/api/api) with the `customer_uid` as follows:
+ For display purpose only. No payment approval.
-```title="sever-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ ### Request payment with billing key (customer\_uid)
-
+ After successfully getting the billing key, the billing key is **stored on the i'mport server**
+ mapped 1:1 with the specified `customer_uid`.
+ For security reasons, the server cannot directly access the billing key.
+ Subsequent payments can be requested by calling
+ the [**non-authenticated payment request REST API**](../../api/api/api)
+ with the `customer_uid` as follows:
-
-**Not supported.**
+ ```sh title="sever-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-
+
+ **Not supported.**
+
diff --git a/src/content/docs/en/payment-integration-by-pg/simple/readme.mdx b/src/content/docs/en/payment-integration-by-pg/simple/readme.mdx
index 873d7591f..09cc87ea4 100644
--- a/src/content/docs/en/payment-integration-by-pg/simple/readme.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/simple/readme.mdx
@@ -3,4 +3,4 @@ title: Simple payments
description: Learn how to integrate simple payments.
---
-### Learn how to integrate simple payments.
+Learn how to integrate simple payments.
diff --git a/src/content/docs/en/payment-integration-by-pg/simple/toss.mdx b/src/content/docs/en/payment-integration-by-pg/simple/toss.mdx
index d12e0814d..61a94bd2f 100644
--- a/src/content/docs/en/payment-integration-by-pg/simple/toss.mdx
+++ b/src/content/docs/en/payment-integration-by-pg/simple/toss.mdx
@@ -4,86 +4,85 @@ description: Toss simple payment integration guide
---
import Codepen from "~/components/gitbook/Codepen.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. Configure Toss simple payment PG settings
+## 1. Configure Toss simple payment PG settings
-Refer to the [**Toss simple pay settings**](../../ready/2.-pg/pg/undefined-1) page to configure the PG settings.
+Refer to the [**Toss simple pay settings**](../../ready/2.-pg/pg/undefined-1) page
+to configure the PG settings.
![]()
-### 2. Request payment
+## 2. Request payment
-To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/) IMP.**request_pay**(param, callback).
+To open the payment window, call [JavaScript SDK](../../sdk/javascript-sdk/)
+IMP.**request\_pay**(param, callback).
-In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`. In mobile browsers, the page is redirected to **m_redirect_url**.
+In PC browsers, **callback** is invoked after calling `IMP.request_pay(param, callback)`.
+In mobile browsers, the page is redirected to **m\_redirect\_url**.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'tosspay',
- pay_method : 'card',
- merchant_uid: '{Merchant created Order ID}', //Example: order_no_0001
- name : 'Order name: Test payment',
- amount : 14000,
- buyer_email : 'iamport@siot.do',
- buyer_name : 'Customer name',
- buyer_tel : '010-1234-5678',
- buyer_addr : 'Samseong-dong, Gangnam-gu, Seoul',
- buyer_postcode : '123-456',
- m_redirect_url : "{URL to redirect to after payment approval}" //Example: http://yourservice.com/payments/complete
-}, function(rsp) { // callback logic
- //* ...Omitted... *//
-});
-```
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "tosspay",
+ pay_method: "card",
+ merchant_uid: "{Merchant created Order ID}", //Example: order_no_0001
+ name: "Order name: Test payment",
+ amount: 14000,
+ buyer_email: "iamport@siot.do",
+ buyer_name: "Customer name",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "Samseong-dong, Gangnam-gu, Seoul",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{URL to redirect to after payment approval}", //Example: http://yourservice.com/payments/complete
+ },
+ function (rsp) {
+ // callback logic
+ //* ...Omitted... *//
+ },
+ );
+ ```
-####
+ ### Key parameter description
-### Key parameter description
+ **`pg`** **\*** **string**
-**`pg`** **\***\*\* ****s****tring\*\*
+ **PG code**
-**PG code**
+ - If not specified and this is the only PG setting that exists, `default PG` is automatically set.
+ - If there are multiple PG settings, set to **`tosspay`**.
-- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
-- If there are multiple PG settings, set to **`tosspay`**.
+ **`pay_method`** **string**
-**`pay_method`** **s****tring**
+ **Payment method code**
-**Payment method code**
+ - `card` (credit card)
+ - `trans` (instant account transfer)
-- `card` (credit card)
-- `trans` (instant account transfer)
+ **`name`** **\*** **string**
-**`name`** **\***\*\* ****s****tring\*\*
+ **Product name**
-**Product name**
+ **`merchant_uid`** **\*** **string**
-**`merchant_uid`** **\***\*\* ****s****tring\*\*
+ **Order ID**
-**Order ID**
+ Must be unique for each request.
-Must be unique for each request.
+ **`amount`** **\*** **integer**
-**`amount`** **\***\*\* ****integer\*\*
+ **Payment amount**
-**Payment amount**
+ Must be an integer (not string)
-Must be an integer (not string)
-
-
-
-
+
+
-**Toss simple payment is processed in mobile Toss App.**
-
+ **Toss simple payment is processed in mobile Toss App.**
diff --git a/src/content/docs/en/readme.mdx b/src/content/docs/en/readme.mdx
index e0af29e95..d0c269c5f 100644
--- a/src/content/docs/en/readme.mdx
+++ b/src/content/docs/en/readme.mdx
@@ -14,7 +14,7 @@ import Hint from "~/components/Hint.astro";
Read the [Setup](ready/) guide for payment integration guide before proceeding with payment integration.
-### Payment window integration
+## Payment window integration
You can easily integrate your payment window by following these guides.
@@ -24,13 +24,13 @@ You can easily integrate your payment window by following these guides.
-### Ensuring payment result notification
+## Ensuring payment result notification
Learn how to use i'mport webhook, a stable and reliable method for receiving payment results.
-### Other service integrations
+## Other service integrations
Learn how to integrate other useful services to your site.
@@ -44,7 +44,7 @@ Learn how to integrate other useful services to your site.
-### Tips
+## Tips
Make sure to check these useful tips about payment integration.
@@ -62,29 +62,29 @@ Make sure to check these useful tips about payment integration.
-### Admin console
+## Admin console
Learn how to use the Admin console.
-### API
+## API
i'mport API specification
-### SDK
+## SDK
Payment integration JS SDK specification
-### FAQ
+## FAQ
-### **Payment integration guides by PG**
+## **Payment integration guides by PG**
diff --git a/src/content/docs/en/readme/get-started.mdx b/src/content/docs/en/readme/get-started.mdx
index dc0739b90..920dbe61b 100644
--- a/src/content/docs/en/readme/get-started.mdx
+++ b/src/content/docs/en/readme/get-started.mdx
@@ -5,20 +5,23 @@ description: Learn about i'mport online payments.
import Figure from "~/components/Figure.astro";
-### i'mport provides payment window integration through JavaScript SDK so that anyone can easily implement complex PG payment integration specifications.
+## i'mport provides payment window integration through JavaScript SDK so that anyone can easily implement complex PG payment integration specifications.
- Simply add the library with 2 lines of code to complete the setup for payment window integration.
-- Easily integrate the payment window using the JavaScript SDK that most developers are familiar with.
+
+- Easily integrate the payment window using the JavaScript SDK
+ that most developers are familiar with.
-### Changes to PGs and payment methods are also processed simply by changing the relevant parameter values.
+## Changes to PGs and payment methods are also processed simply by changing the relevant parameter values.
-- You can easily add and change payment methods and PGs by modifying the JavaScript input parameters.
+- You can easily add and change payment methods and PGs
+ by modifying the JavaScript input parameters.
-### We provide all payment references and integration samples and guides for various programming languages in sync with the latest trends.
+## We provide all payment references and integration samples and guides for various programming languages in sync with the latest trends.
- JAVA
- PHP
@@ -28,12 +31,9 @@ import Figure from "~/components/Figure.astro";
- Golang
- ...
-
+
-### All payment data is protected in real time through monitoring so that you can use it with confidence.
+## All payment data is protected in real time through monitoring so that you can use it with confidence.
- Encryption of all payment data
- Blocking of any attempts to forge/falsify payment data
@@ -41,18 +41,22 @@ import Figure from "~/components/Figure.astro";
![]()
-### By storing payment progress cycles in real time, you can accurately analyze the reason and cause of payment failures.
+## By storing payment progress cycles in real time, you can accurately analyze the reason and cause of payment failures.
- When payment widow is active
- When payment window is closed by the user
- When payment is complete
-### You can easily cancel payments for any PG payment method.
+## You can easily cancel payments for any PG payment method.
+
+- Regardless of the payment method, you can use the same cancellation API
+ to cancel any PG payment transaction.
-- Regardless of the payment method, you can use the same cancellation API to cancel any PG payment transaction.
- We support full and partial cancellations.
-- You no longer have to waste development resources for implementing specific cancellation integration for each payment method.
-### i'mport offers three value propositions.
+- You no longer have to waste development resources
+ for implementing specific cancellation integration for each payment method.
+
+## i'mport offers three value propositions.
![](/gitbook-assets/en/spaces_hTv8JEzyM5h4cYcL5StH_uploads_Lpr4komSQxZ7IYGwpmqG_image.png)
diff --git a/src/content/docs/en/ready/1.mdx b/src/content/docs/en/ready/1.mdx
index 87ed30712..24df062d2 100644
--- a/src/content/docs/en/ready/1.mdx
+++ b/src/content/docs/en/ready/1.mdx
@@ -7,19 +7,17 @@ import Details from "~/components/gitbook/Details.astro";
import Hint from "~/components/Hint.astro";
-For payment integration, you must first create an account from the i'mport Admin [**Sign Up**](https://admin.iamport.kr) page.
-
-You can sign up for **free without a contract**.
+ For payment integration, you must first create an account from the i'mport Admin [**Sign Up**](https://admin.iamport.kr) page.
+ You can sign up for **free without a contract**.
-
Create an i'mport account now
-
-Just need to provide your "**email address"**.
+
Create an i'mport account now
-Use a “**strong password**" to protect it from unauthorized access.
+ Just need to provide your "**email address"**.
+ Use a “**strong password**" to protect it from unauthorized access.
Click **Sign up** from the pages below to create an account.
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/daou.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/daou.mdx
index eede8a162..979e5d012 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/daou.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/daou.mdx
@@ -4,141 +4,127 @@ description: Learn how to set up Daou.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## Authenticated payment
-
-### **Test environment setup**
+
+ ### **Test environment setup**
-1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**PAYJOA**) → **PAYJOA** -> **Add**
-2. Check the auto-generated Merchant ID/Key/MID values and click **Save**
+ 1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**PAYJOA**) → **PAYJOA** -> **Add**
+ 2. Check the auto-generated Merchant ID/Key/MID values and click **Save**
-
+
-
+
+
-
+
+ ### Live environment setup
-
-### Live environment setup
+ 1. **Payment integration -> Live settings**
+ 2. Select PG (**PAYJOA**) → **PAYJOA** -> **Add**
+ 3. Enter merchant info issued by Daou upon contract signing.
-1. **Payment integration -> Live settings**
-2. Select PG (**PAYJOA**) → **PAYJOA** -> **Add**
-3. Enter merchant info issued by Daou upon contract signing.
+
-
+
-
+
-
+
+ ### **Checklist**
-
-### **Checklist**
+ - Must request MID for the correct **product type** (physical/digital).
+ - **Payment integration key** is required for payment cancellation.
+
-- Must request MID for the correct **product type** (physical/digital).
-- **Payment integration key** is required for payment cancellation.
+ ### \[PAYJOA Admin console settings]
-
+ Configure the following settings to **successfully receive payment result**.
-###
+ 1. Log in to the [PAYJOA Admin page](https://agent.kiwoompay.co.kr/)
-### \[PAYJOA Admin console settings]
+ 2. At the top of the page, click **Customer support** > **Integration settings**
-Configure the following settings to **successfully receive payment result**.
+ ![]()
-1. Log in to the [PAYJOA Admin page](https://agent.kiwoompay.co.kr/)
-2. At the top of the page, click **Customer support** > **Integration settings**
+ 3. In the integration settings page, select the **CPID** at the bottom and then click **Edit**
-![]()
+
-3\. In the integration settings page, select the **CPID** at the bottom and then click **Edit**
+ 4. For each contracted payment method, set the **Notification URL**
-
+ > [https://service.iamport.kr/daou\_payments/result](https://service.iamport.kr/daou_payments/result)
-4\. For each contracted payment method, set the **Notification URL**
-
-> [https://service.iamport.kr/daou_payments/result](https://service.iamport.kr/daou_payments/result)
-
-![]()
-
-
+ ![]()
+
## Non-authenticated payment
-
-### Subscription test environment setup
-
-1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**PAYJOA**) → **PAYJOA API** -> **Add**
-2. **Select 'Subscription** test CTS17266' **Edit -> Save**
-
-
-
-
-
-###
-
-### Key-in (one-time) test environment setup
-
-1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**PAYJOA**) → **PAYJOA API** -> **Add**
-2. **Select 'Key-in** test CTS16629' **Edit -> Save**
-
-
-
-
+
+ ### Subscription test environment setup
-
-### **Test key-in payment with different required parameters**
+ 1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**PAYJOA**) → **PAYJOA API** -> **Add**
+ 2. **Select 'Subscription** test CTS17266' **Edit -> Save**
-You can test by setting different required parameters by CPID.
+
-- **Credit card number + password + expiration date + date of birth**
+
- \- CPID : **CTS16629**
+ ### Key-in (one-time) test environment setup
- \- Secret : 7f59ab6239259b191e2806111734c17c4650301ae0f241d2939c747176b4f6aa
+ 1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**PAYJOA**) → **PAYJOA API** -> **Add**
+ 2. **Select 'Key-in** test CTS16629' **Edit -> Save**
-- **Credit card number + expiration date**
+
- \- CPID : **CTS16628**
+
- \- Secret : 9e810e78e4d8ac765f8f04f1f3132da0c4891a2c04f6ee5a142bc333070b68a9
+
+ ### **Test key-in payment with different required parameters**
-
+ You can test by setting different required parameters by CPID.
-
-### **Checklist**
+ - **Credit card number + password + expiration date + date of birth**
-- PAYJOA's subscription payment supports only the REST API method.
-- In test mode, actual withdrawal occurs but is automatically cancelled daily between 23:00 and 23:50.
-- Note that the test Merchant ID for **key-in** (one-time) and **subscription** payments are different.
-- Must request MID for the correct **product type** (physical/digital).
+ - CPID : **CTS16629**
+ - Secret : 7f59ab6239259b191e2806111734c17c4650301ae0f241d2939c747176b4f6aa
-
+ - **Credit card number + expiration date**
-###
+ - CPID : **CTS16628**
+ - Secret : 9e810e78e4d8ac765f8f04f1f3132da0c4891a2c04f6ee5a142bc333070b68a9
+
-### Subscription/key-in payment production environment setup
+
+ ### **Checklist**
-1. **Payment integration -> Live settings**
-2. Select PG (**PAYJOA**) → **PAYJOA API** -> **Add**
-3. Enter merchant info issued by Daou upon contract signing
+ - PAYJOA's subscription payment supports only the REST API method.
+ - In test mode, actual withdrawal occurs but is automatically cancelled daily between 23:00 and 23:50.
+ - Note that the test Merchant ID for **key-in** (one-time) and **subscription** payments are different.
+ - Must request MID for the correct **product type** (physical/digital).
+
-
+ ### Subscription/key-in payment production environment setup
-
+ 1. **Payment integration -> Live settings**
+ 2. Select PG (**PAYJOA**) → **PAYJOA API** -> **Add**
+ 3. Enter merchant info issued by Daou upon contract signing
-
+
-
+
-
-**Not supported**
+
+
-
+
+ **Not supported**
+
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/jtnet.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/jtnet.mdx
index 687e58788..a9572c2a5 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/jtnet.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/jtnet.mdx
@@ -3,117 +3,108 @@ title: JTNET 설정
description: JTNET PG사 설정 방법을 확인합니다.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 인증결제
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 JTNet(tPay) 선택 → 테스트모드 \[ON] → \[전체 저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 JTNet(tPay) 선택 → 테스트모드 \[ON] → \[전체 저장] 클릭
-
-**테스트MID 정보**
+
+ **테스트MID 정보**
-- MID : tpaytest0m
-- Secret 키 : VXFVMIZGqUJx29I/k52vMM8XG4hizkNfiapAkHHFxq0RwFzPit55D3J3sAeFSrLuOnLNVCIsXXkcBfYK1wv8kQ==
-- 취소비밀번호 : 123456
+ - MID : tpaytest0m
+ - Secret 키 : VXFVMIZGqUJx29I/k52vMM8XG4hizkNfiapAkHHFxq0RwFzPit55D3J3sAeFSrLuOnLNVCIsXXkcBfYK1wv8kQ==
+ - 취소비밀번호 : 123456
+
-
+ ![]()
+
-![]()
+
+ ### **실** 환경 구성방법
-
+ 카드사 심사 완료 후 JTNet에서 발급받은 실상점 정보를 \*\*테스트모드 \*\***OFF** 처리 이후 설정합니다.
-
-### **실** 환경 구성방법
-
-카드사 심사 완료 후 JTNet에서 발급받은 실상점 정보를 **테스트모드 ****OFF** 처리 이후 설정합니다.
-
-![]()
-
-
+ ![]()
+
## 비 인증 결제
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 JTNet(tPay) 선택 → **테스트모드 \[OFF]** → 아래의 상점정보 직접 입력 → \[전체 저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 JTNet(tPay) 선택 → **테스트모드 \[OFF]** → 아래의 상점정보 직접 입력 → \[전체 저장] 클릭
-
-**테스트MID 정보**
+
+ **테스트MID 정보**
-- PG상점아이디(MID) : tpaytest2m
-- PG상점 Secret : coqTx/Taxu9W6dlKPhFuciagoVXr/14ezgoK9+qJCf4bBuo23iRGGWHS4rHIuOSgZ6I/uizX39W/NygDplUYOA==
-- 결제취소 비밀번호 : 1234
+ - PG상점아이디(MID) : tpaytest2m
+ - PG상점 Secret : coqTx/Taxu9W6dlKPhFuciagoVXr/14ezgoK9+qJCf4bBuo23iRGGWHS4rHIuOSgZ6I/uizX39W/NygDplUYOA==
+ - 결제취소 비밀번호 : 1234
+
-
+ ![]()
-![]()
+ ### **실** 환경 구성방법
-### **실** 환경 구성방법
+ 카드사 심사 완료 후 JTNet에서 발급받은 실상점 정보를 **설정합니다.**
-카드사 심사 완료 후 JTNet에서 발급받은 실상점 정보를 **설정합니다.**
+ ![]()
+
-![]()
+
+ ### 테스트 환경 구성방법(키인결제)
-
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**정기결제 및 키인결제**) → PG사 JTNet(tPay) 선택 → **카드사 심사 전 개발용 계정 설정** 선택-> \[전체 저장] 클릭
-
-### 테스트 환경 구성방법(키인결제)
+
+ **테스트MID 정보(키인결제용도)**
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**정기결제 및 키인결제**) → PG사 JTNet(tPay) 선택 → **카드사 심사 전 개발용 계정 설정** 선택-> \[전체 저장] 클릭
+ - MID : tpaytest1m
+ - Secret 키 : hgEY70BdDgoJYVOwj5CHsRDQt5a6IieQLQv+Q2rA6nnW+wXP57fH2ZkvUBJW0c9/eF1Rp5QRZ+qjzJ+Knc8r1A==
+ - 취소비밀번호 : 123456
+
-
-**테스트MID 정보(키인결제용도)**
-
-- MID : tpaytest1m
-- Secret 키 : hgEY70BdDgoJYVOwj5CHsRDQt5a6IieQLQv+Q2rA6nnW+wXP57fH2ZkvUBJW0c9/eF1Rp5QRZ+qjzJ+Knc8r1A==
-- 취소비밀번호 : 123456
-
-
-
-![]()
+ ![]()
-### 실 환경 구성방법(키인결제)
+ ### 실 환경 구성방법(키인결제)
-카드사 심사 완료 후 JTNet 에서 발급받은 실상점 정보를 설정합니다.
+ 카드사 심사 완료 후 JTNet 에서 발급받은 실상점 정보를 설정합니다.
-![]()
+ ![]()
-### 테스트 환경 구성방법(**정기결제**)
+ ### 테스트 환경 구성방법(**정기결제**)
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**정기결제 및 키인결제**) → PG사 JTNet(tPay키인결제) 선택 → 아래의 상점정보 직접 입력 → \[저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**정기결제 및 키인결제**) → PG사 JTNet(tPay키인결제) 선택 → 아래의 상점정보 직접 입력 → \[저장] 클릭
-
-**테스트MID 정보(정기결)**
-
-- PG상점아이디 : tpaytest2m
-- PG상점 Secret : coqTx/Taxu9W6dlKPhFuciagoVXr/14ezgoK9+qJCf4bBuo23iRGGWHS4rHIuOSgZ6I/uizX39W/NygDplUYOA==
-- 결제취소비밀번호 : 1234
+
+ **테스트MID 정보(정기결)**
-
+ - PG상점아이디 : tpaytest2m
+ - PG상점 Secret : coqTx/Taxu9W6dlKPhFuciagoVXr/14ezgoK9+qJCf4bBuo23iRGGWHS4rHIuOSgZ6I/uizX39W/NygDplUYOA==
+ - 결제취소비밀번호 : 1234
+
-![]()
+ ![]()
-### 실 환경 구성방법(정기결제)
+ ### 실 환경 구성방법(정기결제)
-카드사 심사 완료 후 JTNet 에서 발급받은 실상점 정보를 설정합니다.
+ 카드사 심사 완료 후 JTNet 에서 발급받은 실상점 정보를 설정합니다.
-![]()
-
-
+ ![]()
+
-### **체크사항**
-
-JTNet 테스트 모드의 경우 실제 출금 되지만 매일 23:00\~23:50분 사이 자동 취소됩니다.
+ ### **체크사항**
+ JTNet 테스트 모드의 경우 실제 출금 되지만 매일 23:00\~23:50분 사이 자동 취소됩니다.
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/kg.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/kg.mdx
index 4485d09ef..7d452bd4f 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/kg.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/kg.mdx
@@ -4,30 +4,28 @@ description: KG모빌리언스 설정방법을 안내합니다.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 인증결제
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-[아임포트 관리자 콘솔](https://admin.iamport.kr/) → 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 모빌리언스 선택 → **테스트모드 \[ON]** → **서비스 ID** 에 **170622040674** 입력 → \[전체 저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/) → 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 모빌리언스 선택 → **테스트모드 \[ON]** → **서비스 ID** 에 **170622040674** 입력 → \[전체 저장] 클릭
-
+
+
-
+
+ ### **실** 환경 구성방법
-
-### **실** 환경 구성방법
+ PG사 심사 완료 후 KG모빌리언스에서 발급받은 실상점 정보를 **테스트모드 OFF** 이후 설정합니다.
-PG사 심사 완료 후 KG모빌리언스에서 발급받은 실상점 정보를 **테스트모드 OFF** 이후 설정합니다.
-
-
-
-
+
+
## 비 인증 결제
@@ -35,17 +33,15 @@ PG사 심사 완료 후 KG모빌리언스에서 발급받은 실상점 정보를
> **KG모빌리언스 비 인증 결제는 휴대폰 결제만 지원합니다.**
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 모빌리언스 선택 → **테스트모드 \[ON]** → **서비스 ID** 에 '**170622040674**' 입력 → \[전체 저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 모빌리언스 선택 → **테스트모드 \[ON]** → **서비스 ID** 에 '**170622040674**' 입력 → \[전체 저장] 클릭
-
-
-
+
+
-**KG모빌리언스 테스트 모드의 경우 실제 출금 되지만 매일 23:00\~23:50분 사이 자동 취소됩니다.**
-
+ **KG모빌리언스 테스트 모드의 경우 실제 출금 되지만 매일 23:00\~23:50분 사이 자동 취소됩니다.**
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/kicc.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/kicc.mdx
index aaa226e0f..78d156d69 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/kicc.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/kicc.mdx
@@ -4,77 +4,72 @@ description: Learn how to set up KICC.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## Authenticated payment
-
-### **Test environment setup**
-
-1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**KICC**) → **KICC** -> **Add**
-2. Check the auto-generated test MID value and click **Save**
+
+ ### **Test environment setup**
-
+ 1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**KICC**) → **KICC** -> **Add**
+ 2. Check the auto-generated test MID value and click **Save**
-
+
-
+
+
-
-### Live environment setup
+
+ ### Live environment setup
-1. **Payment integration -> Live settings**
-2. Select PG (**KICC**) → **KICC** -> **Add**
-3. Enter merchant info issued by KICC upon approval by the credit card company.
+ 1. **Payment integration -> Live settings**
+ 2. Select PG (**KICC**) → **KICC** -> **Add**
+ 3. Enter merchant info issued by KICC upon approval by the credit card company.
-
+
-
+
-
-
-
+
+
## Non-authenticated payment
-
-### Test environment setup
-
-1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**KICC**) → **KICC** -> **Add**
-2. Check the auto-generated MID value and then click **Save**.
+
+ ### Test environment setup
-
+ 1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**KICC**) → **KICC** -> **Add**
+ 2. Check the auto-generated MID value and then click **Save**.
-
+
-### Live environment setup
+
-1. **Payment integration -> Live settings**
-2. **KICC -> KICC -> Add**
-3. Enter **MID** issued at contract signing -> **Save**
+ ### Live environment setup
-
+ 1. **Payment integration -> Live settings**
+ 2. **KICC -> KICC -> Add**
+ 3. Enter **MID** issued at contract signing -> **Save**
-
+
-
+
-
+
+
-
-**Not supported.**
-
-
+
+ **Not supported.**
+
-**Note**
-
-In KICC test mode, no money is actually withdrawn.
+ **Note**
+ In KICC test mode, no money is actually withdrawn.
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/nhn-kcp-1.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/nhn-kcp-1.mdx
index 45a63ca2a..3cd706083 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/nhn-kcp-1.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/nhn-kcp-1.mdx
@@ -4,101 +4,93 @@ description: Learn how to set up KG INICIS.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## Authenticated payment
-
-### **Test environment setup**
+
+ ### **Test environment setup**
-1. [i'mport Admin console](https://admin.iamport.kr) → **Payment integration** → **Test settings** → Select PG (**KG INICIS**) → **KG INICIS** -> **Add**
-2. Select **General payment test INIpayTest Settings** -> **Save**
+ 1. [i'mport Admin console](https://admin.iamport.kr) → **Payment integration** → **Test settings** → Select PG (**KG INICIS**) → **KG INICIS** -> **Add**
+ 2. Select **General payment test INIpayTest Settings** -> **Save**
-> A payment is made on the i'mport test account.
+ > A payment is made on the i'mport test account.
-
+
-
+
-
-**KG INICIS PG Merchant ID (MID) : INIpayTest**
-
-
+
+ **KG INICIS PG Merchant ID (MID) : INIpayTest**
+
+
-
+
+ ### Live environment setup
-
-### Live environment setup
+ 1. **Payment integration -> Live settings**
+ 2. **KG INICIS -> KG INICIS -> Add**
+ 3. Enter **MID** issued at contract signing.
-1. **Payment integration -> Live settings**
-2. **KG INICIS -> KG INICIS -> Add**
-3. Enter **MID** issued at contract signing.
+
-
+
-
-
-
-
-
+
+
## Non-authenticated payment
-- To get a KG INICIS **API billing key**, you must first check service entry possibility through the PG. In most cases, **'payment window method'** is supported but '**API method**' service entry conditions are stringent due to PG's policy.
-- **Foreign credit cards are not supported.**
-
+ - To get a KG INICIS **API billing key**, you must first check service entry possibility through the PG. In most cases, **'payment window method'** is supported but '**API method**' service entry conditions are stringent due to PG's policy.
+ - **Foreign credit cards are not supported.**
-
-### Test environment setup
-
-1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**KG INICIS**) → **KG INICIS** -> **Add**
-2. **Subscription payment test `INIBillTst` Settings ->** **Save**
-
-
-
-
+
+ ### Test environment setup
-### Live environment setup
+ 1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**KG INICIS**) → **KG INICIS** -> **Add**
+ 2. **Subscription payment test `INIBillTst` Settings -> Save**
-1. **Payment integration -> Live settings**
-2. **KG INICIS -> KG INICIS -> Add**
-3. Enter **MID** issued at contract signing. (**MID for billing is required)**
+
-
+
-
+ ### Live environment setup
-
+ 1. **Payment integration -> Live settings**
+ 2. **KG INICIS -> KG INICIS -> Add**
+ 3. Enter **MID** issued at contract signing. (**MID for billing is required)**
-
+
-
-### Test environment setup
+
-[i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**KG INICIS**) → **KG INICIS API** -> **Add**
+
+
-
+
+ ### Test environment setup
-###
+ [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**KG INICIS**) → **KG INICIS API** -> **Add**
-### Live environment setup
+
-1. **Payment integration -> Live settings**
-2. **KG INICIS -> ****KG INICIS API**** -> Add**
-3. Enter **MID** issued at contract signing.
+ ### Live environment setup
-
+ 1. **Payment integration -> Live settings**
+ 2. **KG INICIS -> ****KG INICIS API**** -> Add**
+ 3. Enter **MID** issued at contract signing.
-
+
-
+
-
+
+
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/nhn-kcp.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/nhn-kcp.mdx
index 91a7b17a7..022eb2cae 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/nhn-kcp.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/nhn-kcp.mdx
@@ -4,35 +4,35 @@ description: Learn how to set up NHN KCP.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## Authenticated payment
-
-### **Test environment setup**
+
+ ### **Test environment setup**
-1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**NHN KCP**) → **NHN KCP** -> **Add**
-2. Select **General payment test T0000 Settings** -> **Save**
+ 1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**NHN KCP**) → **NHN KCP** -> **Add**
+ 2. Select **General payment test T0000 Settings** -> **Save**
-> A payment is made on the i'mport test account.
+ > A payment is made on the i'mport test account.
-
+
-
+
+
-
+
+ ### Live environment setup
-
-### Live environment setup
+ Enter the **Site Code** and **Site Key** issued by KCP using the **Add** button and then click **Save**.
-Enter the **Site Code** and **Site Key** issued by KCP using the **Add** button and then click **Save**.
+
-
-
-
+
+
## Non-authenticated payment
@@ -41,84 +41,78 @@ Since non-authenticated payment has more stringent conditions for service entry
payment, you must first check service entry possibility with KCP.
-
-### Test environment setup
+
+ ### Test environment setup
-1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**NHN KCP**) → **NHN KCP (Subscription)** -> **Add**
-2. Check the auto-generated MID value and then click **Save**.
+ 1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**NHN KCP**) → **NHN KCP (Subscription)** -> **Add**
+ 2. Check the auto-generated MID value and then click **Save**.
-
+
-
+
-### Live environment setup
+ ### Live environment setup
-Enter the live **Site Code** issued by KCP at contract signing as follows:
+ Enter the live **Site Code** issued by KCP at contract signing as follows:
-1. **Payment integration -> Live settings**
-2. **NHN KCP -> NHN KCP(Subscription) -> Add**
-3. **Enter Site Code, Site Key, and Batch Payment Group ID -> Save**
+ 1. **Payment integration -> Live settings**
+ 2. **NHN KCP -> NHN KCP(Subscription) -> Add**
+ 3. **Enter Site Code, Site Key, and Batch Payment Group ID -> Save**
-
-**How to get a Batch Payment Group ID** \
-Log in to the KCP merchant admin page with the **site code issued by KCP for subscription payments**, enter a desired user name and a password to get a private certificate.\
- \- To get a certificate: [https://admin8.kcp.co.kr](https://admin8.kcp.co.kr/) > Log in with subscription payment ID > Customer service > Certificate issuance > KCP private certificate > Click Request NHN KCP certificate > Confirm Username (random input)\
- \- To get a group ID: [https://admin8.kcp.co.kr](https://admin8.kcp.co.kr/) > Log in with subscription payment ID > Payments > **General payment > Credit card** **> Batch payment ID >** Get group ID
+
+ **How to get a Batch Payment Group ID** \
+ Log in to the KCP merchant admin page with the **site code issued by KCP for subscription payments**, enter a desired user name and a password to get a private certificate.\
+ \- To get a certificate: [https://admin8.kcp.co.kr](https://admin8.kcp.co.kr/) > Log in with subscription payment ID > Customer service > Certificate issuance > KCP private certificate > Click Request NHN KCP certificate > Confirm Username (random input)\
+ \- To get a group ID: [https://admin8.kcp.co.kr](https://admin8.kcp.co.kr/) > Log in with subscription payment ID > Payments > **General payment > Credit card > Batch payment ID >** Get group ID
+
-
+
-
+
-
+
+
-
+
+ ### Test environment setup
-
+ 1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**NHN KCP**) → **NHN KCP API** -> **Add**
+ 2. Check the auto-generated MID value and then click **Save**.
-
-### Test environment setup
+
-1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**NHN KCP**) → **NHN KCP API** -> **Add**
-2. Check the auto-generated MID value and then click **Save**.
+
-
+ ### Live environment setup
-
+ Enter the **Site Code** and **Site Key** issued by KCP at contract signing as follows:
-### Live environment setup
+ 1. **Payment integration -> Live settings**
+ 2. **NHN KCP -> NHN KCP API -> Add**
+ 3. **Enter Site Code (PG Merchant ID) and Site Key (PG Merchant Secret), and then enter Batch Payment Group ID -> Save**
-Enter the **Site Code** and **Site Key** issued by KCP at contract signing as follows:
+
+ **How to get a Batch Payment Group ID** \
+ Log in to the KCP merchant admin page with the **site code issued by KCP for recurring payments**, and then enter a desired user name and a password to get a private certificate.\
+ \- To get a certificate: [https://admin8.kcp.co.kr](https://admin8.kcp.co.kr/) > Log in with recurring payment ID > Customer service > Certificate issuance > KCP private certificate > Click Request NHN KCP certificate > Confirm Username (random input)\
+ \- To get a group ID: [https://admin8.kcp.co.kr](https://admin8.kcp.co.kr/) > Log in with recurring payment ID > Payments > **General payment > Credit card > Batch payment ID >** Get group ID
+
-1. **Payment integration -> Live settings**
-2. **NHN KCP -> NHN KCP API -> Add**
-3. **Enter Site Code (PG Merchant ID) and Site Key (PG Merchant Secret), and then enter Batch Payment Group ID -> Save**
+
-
-**How to get a Batch Payment Group ID** \
-Log in to the KCP merchant admin page with the **site code issued by KCP for recurring payments**, and then enter a desired user name and a password to get a private certificate.\
- \- To get a certificate: [https://admin8.kcp.co.kr](https://admin8.kcp.co.kr/) > Log in with recurring payment ID > Customer service > Certificate issuance > KCP private certificate > Click Request NHN KCP certificate > Confirm Username (random input)\
- \- To get a group ID: [https://admin8.kcp.co.kr](https://admin8.kcp.co.kr/) > Log in with recurring payment ID > Payments > **General payment > Credit card** **> Batch payment ID >** Get group ID
+
-
-
-
-
-
-
-
-
-
+
+
-**Since non-authenticated payment has more stringent conditions for service entry than general payment, you must first check service entry possibility with KCP.**
-
+ **Since non-authenticated payment has more stringent conditions for service entry than general payment, you must first check service entry possibility with KCP.**
-## Checklist
-
-- In test mode, no money withdrawl occurs for a payment.
-- Hub-type Kakao Pay and Naver Pay do not support test mode. (Service is available after contract signing with KCP)
+ ## Checklist
+ - In test mode, no money withdrawl occurs for a payment.
+ - Hub-type Kakao Pay and Naver Pay do not support test mode. (Service is available after contract signing with KCP)
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/nice-payments.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/nice-payments.mdx
index 9f97c19ae..92e33e997 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/nice-payments.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/nice-payments.mdx
@@ -4,60 +4,56 @@ description: Learn how to set up NICE Payments.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## Authenticated payment
-
-### **Test environment setup**
-
-1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**NICE Payments**) → **NICE Payments** -> **Add**
-2. Check the auto-generated test MID value and click **Save**
-
-> A payment is made on the i'mport test MID account.
+
+ ### **Test environment setup**
-
+ 1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**NICE Payments**) → **NICE Payments** -> **Add**
+ 2. Check the auto-generated test MID value and click **Save**
-
+ > A payment is made on the i'mport test MID account.
-In NICE Payments test mode, the following payment methods are **not supported**.
+
-- Credit card: NH card, KB Kookmin card
-- Mobile micropayments: KT
+
-
-**Payments made in NICE Payments test mode are cancelled daily between 23:00\~23:50.**
+ In NICE Payments test mode, the following payment methods are **not supported**.
-Since cancelled transactions are not automatically reflected in i'mport, it is recommended that you submit a cancellation request after testing.
+ - Credit card: NH card, KB Kookmin card
+ - Mobile micropayments: KT
-
+
+ **Payments made in NICE Payments test mode are cancelled daily between 23:00\~23:50.**
-
+ Since cancelled transactions are not automatically reflected in i'mport, it is recommended that you submit a cancellation request after testing.
+
+
-
-### Live environment setup
+
+ ### Live environment setup
-1. **Payment integration -> Live settings**
-2. Select PG (**NICE Payments**) → **NICE Payments** -> **Add**
-3. Enter merchant info issued by NICE Payments upon approval by the credit card company.
+ 1. **Payment integration -> Live settings**
+ 2. Select PG (**NICE Payments**) → **NICE Payments** -> **Add**
+ 3. Enter merchant info issued by NICE Payments upon approval by the credit card company.
-
+
-
+
-
+
-
-**Precautions when using virtual accounts**
+
+ **Precautions when using virtual accounts**
-You must log in to the NICE Payments Admin page and set the **virtual account deposit notification URL**. (If omitted, deposit will not be applied.)
-
-
-
-
+ You must log in to the NICE Payments Admin page and set the **virtual account deposit notification URL**. (If omitted, deposit will not be applied.)
+
+
## Non-authenticated payment
@@ -65,30 +61,26 @@ You must log in to the NICE Payments Admin page and set the **virtual account de
i'mport currently **only supports API method** for NICE Payments non-authenticated payments.
-
-### **Test environment setup**
-
-1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**NICE Payments**) → **NICE Payments API** -> **Add**
-2. Check the auto-generated test MID value and click **Save**
+
+ ### **Test environment setup**
-
+ 1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**NICE Payments**) → **NICE Payments API** -> **Add**
+ 2. Check the auto-generated test MID value and click **Save**
-
+
-###
+
-### Live environment setup
+ ### Live environment setup
-- **Payment integration -> Live settings**
-- Select PG (**NICE Payments**) → **NICE Payments API** -> **Add**
-- Enter merchant info issued by NICE Payments upon approval by the credit card company
+ - **Payment integration -> Live settings**
+ - Select PG (**NICE Payments**) → **NICE Payments API** -> **Add**
+ - Enter merchant info issued by NICE Payments upon approval by the credit card company
-
+
-
+
-
-
-
+
+
-
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/readme.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/readme.mdx
index 674272698..04babc744 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/readme.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/readme.mdx
@@ -5,7 +5,7 @@ description: Learn how to configure settings for each PG supported by i'mport.
import ContentRef from "~/components/gitbook/ContentRef.astro";
-### Use the following instructions to set up each PG for payment integration from the i'mport Admin page.
+## Use the following instructions to set up each PG for payment integration from the i'mport Admin page.
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-1.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-1.mdx
index ff4a3663b..159881e02 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-1.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-1.mdx
@@ -4,9 +4,9 @@ description: Learn how to set up Paymentwall.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
import image3 from "./_assets/paymentwall/paymentwall.pingback.country_code.png";
import image1 from "./_assets/paymentwall/paymentwall.tab.widget.png";
@@ -101,7 +101,7 @@ as a pingback parameter.
You can check this result by adding the `extension=true` query parameter when querying payment.
-```jsx
+```http
GET http://api.iamport.kr/payments/{imp_uid}?extension=true
```
@@ -111,8 +111,8 @@ GET http://api.iamport.kr/payments/{imp_uid}?extension=true
"vbank_name": null,
"vbank_num": null,
"extension": {
- "country_code": "KR", // User Country Code(alpha-2)
- // ...
+ "country_code": "KR", // User Country Code(alpha-2)
+ // ...
}
}
```
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-2.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-2.mdx
index dc88c3621..ae278f08f 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-2.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-2.mdx
@@ -4,217 +4,146 @@ description: 다날 PG사 설정 방법을 안내합니다.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 인증**결제**
-
-**테스트 환경 구성방법**
-
-1. [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동** → **테스트 연동 관리** → **다날** → **다날** 선택 → **추가**
-2. 자동으로 기재되는 CPID 정보 확인 후 **저장**
+
+ **테스트 환경 구성방법**
-
+ 1. [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동** → **테스트 연동 관리** → **다날** → **다날** 선택 → **추가**
+ 2. 자동으로 기재되는 CPID 정보 확인 후 **저장**
-
+
-
+
+
-
-**실 환경 구성방법**
+
+ **실 환경 구성방법**
-1. [포트원 관리자 콘솔](https://admin.portone.io/)→ **결제 연동 → 실 연동 관리 선택**
-2. **다날 → ****다날**** 선택 → 추가**
-3. 카드사 심사 완료 후 다날에서 발급받은 실상점 정보 기재 후 저장
+ 1. [포트원 관리자 콘솔](https://admin.portone.io/)→ **결제 연동 → 실 연동 관리 선택**
+ 2. **다날 → ****다날**** 선택 → 추가**
+ 3. 카드사 심사 완료 후 다날에서 발급받은 실상점 정보 기재 후 저장
-
+
-
+
-
-
-
+
+
## 비 인증 결제
-
-**테스트 환경 구성방법**
-
-1. [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동** → **테스트 연동 관리** → **다날** → **다날** 선택 → **추가**
-2. 자동으로 기재되는 CPID 정보 확인 후 **저장**
+
+ **테스트 환경 구성방법**
-
+ 1. [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동** → **테스트 연동 관리** → **다날** → **다날** 선택 → **추가**
+ 2. 자동으로 기재되는 CPID 정보 확인 후 **저장**
-
+
-**실 환경 구성방법**
+
-1. [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동 → 실 연동 관리 선택**
-2. **다날 → ****다날**** 선택 → 추가**
-3. 카드사 심사 완료 후 다날에서 발급받은 실상점 정보 기재 후 저장
+ **실 환경 구성방법**
-
+ 1. [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동 → 실 연동 관리 선택**
+ 2. **다날 → ****다날**** 선택 → 추가**
+ 3. 카드사 심사 완료 후 다날에서 발급받은 실상점 정보 기재 후 저장
-
+
-
+
-
+
+
-
-**다날은 ****API**** 를 통한 비인증 결제를 지원하지 않습니다.** :cry:
-
-
+
+ **다날은 ****API**** 를 통한 비인증 결제를 지원하지 않습니다.** :cry:
+
## 휴대폰 소액결제
-
-**테스트 환경 구성방법**
-
-- [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동** → **테스트 연동 관리** → **다날** → **다날** **휴대폰결제** 선택 → **추가**
-- 자동으로 기재되는 CPID 정보 확인 후 **저장**
+
+ **테스트 환경 구성방법**
-
-**다날 휴대폰결제 테스트용 CPID : A010002002**
+ - [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동** → **테스트 연동 관리** → **다날** → **다날** **휴대폰결제** 선택 → **추가**
+ - 자동으로 기재되는 CPID 정보 확인 후 **저장**
-
-
-
-
-
+
+ **다날 휴대폰결제 테스트용 CPID : A010002002**
+
-
+
-
-**실 환경 구성방법**
+
+
-1. [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동 → 실 연동 관리 선택**
-2. **다날** → **다날** **휴대폰결제** 선택 → **추가**
-3. 카드사 심사 완료 후 다날에서 발급받은 실상점 정보로 기재후 저장
+
+ **실 환경 구성방법**
-
+ 1. [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동 → 실 연동 관리 선택**
+ 2. **다날** → **다날** **휴대폰결제** 선택 → **추가**
+ 3. 카드사 심사 완료 후 다날에서 발급받은 실상점 정보로 기재후 저장
-
+
-
+
-
+
+
## SMS 본인인증
-
-**테스트 환경 구성방법**
+
+ **테스트 환경 구성방법**
-- [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동** → **테스트 연동 관리** → **다날** → **다날** **SMS 본인인증** 선택 → **추가**
-- 다날 계약 후 발급받은 CPID 정보를 기재 후 **저장**
+ - [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동** → **테스트 연동 관리** → **다날** → **다날** **SMS 본인인증** 선택 → **추가**
+ - 다날 계약 후 발급받은 CPID 정보를 기재 후 **저장**
-
-**다날 SMS 본인인증**
+
+ **다날 SMS 본인인증**
-휴대폰 SMS 본인인증은 테스트는 별도의 테스트 전용 CPID 정보를 제공하지 않습니다.
+ 휴대폰 SMS 본인인증은 테스트는 별도의 테스트 전용 CPID 정보를 제공하지 않습니다.
-테스트 진행을 위해서는 다날 계약이후 발급받은 정보로만 가능합니다.
+ 테스트 진행을 위해서는 다날 계약이후 발급받은 정보로만 가능합니다.
+
-
+
-
+
+
-
+
+ **실 환경 구성방법**
-
+ 1. [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동 → 실 연동 관리 선택**
+ 2. **다날** → **다날** **휴대폰결제** 선택 → **추가**
+ 3. 카드사 심사 완료 후 다날에서 발급받은 실상점 정보로 기재후 저장
-
-**실 환경 구성방법**
+
-1. [포트원 관리자 콘솔](https://admin.portone.io/) → **결제 연동 → 실 연동 관리 선택**
-2. **다날** → **다날** **휴대폰결제** 선택 → **추가**
-3. 카드사 심사 완료 후 다날에서 발급받은 실상점 정보로 기재후 저장
+
-
-
-
-
-
-
-
+
+
-**특이사항**
-
-- 다날은 하나의 상점ID(CPID)에 인증/비 인증 결제 셋팅이 가능합니다.
-- 테스트 모드의 경우 실제로 결제승인이 이루어지지만, PG사에서 일괄적으로 매일 자정이전 자동 취소가 이루어집니다.
-- 다날 정책상 계좌이체/가상계좌는 테스트 결제가 제공되지 않습니다. 계약 후 실제 상점아이디로 테스트를 해야 합니다
-- SMS 본인인증은 통신사 정책으로 인하여 테스트 모드 이용이 불가합니다. (실 계약 후 이용가능)
-- 테스트 모드에서 부분취소 테스트는 불가합니다.
+ **특이사항**
+ - 다날은 하나의 상점ID(CPID)에 인증/비 인증 결제 셋팅이 가능합니다.
+ - 테스트 모드의 경우 실제로 결제승인이 이루어지지만, PG사에서 일괄적으로 매일 자정이전 자동 취소가 이루어집니다.
+ - 다날 정책상 계좌이체/가상계좌는 테스트 결제가 제공되지 않습니다. 계약 후 실제 상점아이디로 테스트를 해야 합니다
+ - SMS 본인인증은 통신사 정책으로 인하여 테스트 모드 이용이 불가합니다. (실 계약 후 이용가능)
+ - 테스트 모드에서 부분취소 테스트는 불가합니다.
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-3.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-3.mdx
index 1ca542ff9..3d5947e70 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-3.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-3.mdx
@@ -3,66 +3,61 @@ title: 세틀뱅크 설정
description: 세틀뱅크 설정방법을 안내합니다.
---
-import ContentRef from "~/components/gitbook/ContentRef.astro";
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import ContentRef from "~/components/gitbook/ContentRef.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 인증결제
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 세틀뱅크 선택 → **테스트모드 \[ON]** → \[전체 저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 세틀뱅크 선택 → **테스트모드 \[ON]** → \[전체 저장] 클릭
-
+
+
-
+
+ ### **실** 환경 구성방법
-
-### **실** 환경 구성방법
+ 카드사 심사 완료 후 세틀뱅크에서 발급받은 실상점 정보를 **테스트모드 OFF** 처리 이후 설정합니다.
-카드사 심사 완료 후 세틀뱅크에서 발급받은 실상점 정보를 **테스트모드 OFF** 처리 이후 설정합니다.
-
-
-
-
+
+
## 비 인증 결제
-
-#### **세틀뱅크의 정기결제는 ****REST API 방식****만 지원합니다.**
-
-
+
+ 세틀뱅크의 정기결제는 **REST API 방식**만 지원합니다.
+
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**정기결제 및 키인결제**) → PG사 세틀뱅크 선택 → \[**카드사 심사 전 개발용 계정 설정**] 클릭 → \[저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**정기결제 및 키인결제**) → PG사 세틀뱅크 선택 → \[**카드사 심사 전 개발용 계정 설정**] 클릭 → \[저장] 클릭
-
+
-### **실** 환경 구성방법
+ ### **실** 환경 구성방법
-카드사 심사 완료 후 세틀뱅크에서 발급받은 실상점 정보를 설정합니다.
+ 카드사 심사 완료 후 세틀뱅크에서 발급받은 실상점 정보를 설정합니다.
-### 가상계좌 연동 방법
+ ### 가상계좌 연동 방법
-아래 링크를 참조하여 가상계좌 발급 및 취소 API 를 연동합니다.
+ 아래 링크를 참조하여 가상계좌 발급 및 취소 API 를 연동합니다.
-
-
-
+
+
-### **체크사항**
-
-- 세틀뱅크 테스트 모드의 경우 실제 출금 되지만 매일 23:00\~23:50분 사이 자동 취소됩니다.
-- 세틀뱅크는 가상계좌 발급을 API방식으로 지원합니다.
+ ### **체크사항**
+ - 세틀뱅크 테스트 모드의 경우 실제 출금 되지만 매일 23:00\~23:50분 사이 자동 취소됩니다.
+ - 세틀뱅크는 가상계좌 발급을 API방식으로 지원합니다.
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-4.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-4.mdx
index 4789aa1d2..ed24baf62 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-4.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-4.mdx
@@ -4,35 +4,32 @@ description: 스마트로 설정 방법을 안내합니다.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 인증결제
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 스마트로 선택 → **테스트모드 \[ON]** → \[전체 저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 스마트로 선택 → **테스트모드 \[ON]** → \[전체 저장] 클릭
-
+
+
-
+
+ ### **실** 환경 구성방법
-
-### **실** 환경 구성방법
+ 카드사 심사 완료 후 스마트로에서 발급받은 실상점 정보를 설정 합니다.
-카드사 심사 완료 후 스마트로에서 발급받은 실상점 정보를 설정 합니다.
-
-
-
-
+
+
-**비 인증 결제**
-
-아임포트는 스마트로 비 인증 결제를 지원하지 않습니다.
+ **비 인증 결제**
+ 아임포트는 스마트로 비 인증 결제를 지원하지 않습니다.
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-5.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-5.mdx
index e4b07129b..a7387af17 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-5.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-5.mdx
@@ -4,98 +4,94 @@ description: 페이팔 설정 방법을 안내합니다.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 인증결제
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-> - 페이팔 테스트 환경 구성을 위해서는 **아임포트 관리자 페이지 설정**과 **페이팔 관리자페이지 설정**이 각각 적용되어야 합니다.
-> - 페이팔은 별도의 계약없이 판매자 계정만 생성하면 바로 서비스 이용이 가능합니다.
+ > - 페이팔 테스트 환경 구성을 위해서는 **아임포트 관리자 페이지 설정**과 **페이팔 관리자페이지 설정**이 각각 적용되어야 합니다.
+ > - 페이팔은 별도의 계약없이 판매자 계정만 생성하면 바로 서비스 이용이 가능합니다.
-### **아임포트 관리자 콘솔 설정**
+ ### **아임포트 관리자 콘솔 설정**
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 페이팔-Express Checkout 선택 → **테스트모드 \[ON]** → API 사용자 정보 입력 → \[전체 저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 페이팔-Express Checkout 선택 → **테스트모드 \[ON]** → API 사용자 정보 입력 → \[전체 저장] 클릭
-![]()
+ ![]()
-
-**Email 계정주소 설정시 주의사항**
+
+ **Email 계정주소 설정시 주의사항**
-자동완성된 Email 주소가 **실제 페이팔 계정 ID와 상이한 경우** **실 계정 ID 로 수정**하여 저장해야 합니다.
+ 자동완성된 Email 주소가 **실제 페이팔 계정 ID와 상이한 경우** **실 계정 ID 로 수정**하여 저장해야 합니다.
+
-
+ ### **페이팔 관리자 콘솔 설정**
-### **페이팔 관리자 콘솔 설정**
+ #### **판매자 Sandbox 계정 설정**
-#### **판매자 Sandbox 계정 설정**
+ 1. [https://developer.paypal.com/developer/accounts/](https://developer.paypal.com/developer/accounts/) 로그인 > **SANDBOX** > **Accounts** > DEFAULT Business 계정의 \[**View/edit account**] 클릭
-1. [https://developer.paypal.com/developer/accounts/](https://developer.paypal.com/developer/accounts/) 로그인 > **SANDBOX** > **Accounts** > DEFAULT Business 계정의 \[**View/edit account**] 클릭
+
-
+ **2. Account details 팝업창**
-**2. Account details 팝업창**
+ API Credentials 탭의 Username, Password, 및 Signature 값을 아임포트 관리자 콘솔 페이팔 설정 항목에 아래와 같이 맵핑합니다.
-API Credentials 탭의 Username, Password, 및 Signature 값을 아임포트 관리자 콘솔 페이팔 설정 항목에 아래와 같이 맵핑합니다.
+ - Username = API 사용자 이름
+ - Password = API 암호
+ - Signature = 서명
-- Username = API 사용자 이름
-- Password = API 암호
-- Signature = 서명
+
-
+ **구매자 Sandbox 계정 설정**
-**구매자 Sandbox 계정 설정**
+ 1. [https://developer.paypal.com/developer/accounts/](https://developer.paypal.com/developer/accounts/) 로그인 > **SANDBOX** > **Accounts** > DEFAULT Personal 계정의 \[**View/edit account**] 클릭
-1. [https://developer.paypal.com/developer/accounts/](https://developer.paypal.com/developer/accounts/) 로그인 > **SANDBOX** > **Accounts** > DEFAULT Personal 계정의 \[**View/edit account**] 클릭
+
-
+ **2. Account details 팝업창**
-**2. Account details 팝업창**
+ Profile 탭의 **Email ID** 및 **Password** 값을 페이팔 결제시 구매자 로그인 계정정보로 사용합니다.
-Profile 탭의 **Email ID** 및 **Password** 값을 페이팔 결제시 구매자 로그인 계정정보로 사용합니다.
+ ![]()
+
-![]()
+
+ ### **실** 환경 구성방법
-
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 페이팔-Express Checkout 선택 → **테스트모드 \[OFF]** → API 사용자 정보 입력 → \[전체 저장] 클릭
-
-### **실** 환경 구성방법
+ ![]()
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 페이팔-Express Checkout 선택 → **테스트모드 \[OFF]** → API 사용자 정보 입력 → \[전체 저장] 클릭
+ > **각 항목별 실 운영 정보 값은 페이팔 관리자 페이지에서 아래 절차를 통해 확인합니다.**
-![]()
+ 1. [https://www.paypal.com/](https://www.paypal.com/) 로그인 > 계정 클릭 > 계정 설정 클릭 > "계정 엑세스" 클릭 > "**API 엑세스**"의 업데이트 클릭
-> **각 항목별 실 운영 정보 값은 페이팔 관리자 페이지에서 아래 절차를 통해 확인합니다.**
+ ![]()
-1. [https://www.paypal.com/](https://www.paypal.com/) 로그인 > 계정 클릭 > 계정 설정 클릭 > "계정 엑세스" 클릭 > "**API 엑세스**"의 업데이트 클릭
+ **2) NVP/SOAP API 통합(클래식) 의 API 자격증명 관리 클릭**
-![]()
+ \- 참고 : 휴대폰본인인증 절차 필요
-**2) NVP/SOAP API 통합(클래식) 의 API 자격증명 관리 클릭**
+ ![]()
-\- 참고 : 휴대폰본인인증 절차 필요
+ **3) API 서명보기 "표시" 클릭**
-![]()
-
-**3) API 서명보기 "표시" 클릭**
-
-- API 사용자 이름
-- API 비밀번호
-- 서명
-
-
+ - API 사용자 이름
+ - API 비밀번호
+ - 서명
+
-### **참고사항**
-
-- Business 계정이 Sandbox이면 구매자 계정도 Sandbox Accounts 목록에 존재하는 Personal 계정으로 결제(사용)해야 합니다.
-- Sandbox Accounts 의 Country 가 "US"인 Personal 계정으로 테스트해야 합니다. **판매자와 구매자 계정 국가가 "한국"인 경우 페이팔 정책상 결제가 불가**하며, **판매자는 한국이고 구매자가 미국인 경우는 가능**합니다.
-- 판매자와 구매자 계정 국가가 "한국"인 경우 페이팔 정책상 결제가 불가합니다. 판매자와 구매자 중 최소 한사람의 국가가 해외여야 합니다
-- 아임포트는 페이팔 정기결제를 지원하지 않습니다.
+ ### **참고사항**
+ - Business 계정이 Sandbox이면 구매자 계정도 Sandbox Accounts 목록에 존재하는 Personal 계정으로 결제(사용)해야 합니다.
+ - Sandbox Accounts 의 Country 가 "US"인 Personal 계정으로 테스트해야 합니다. **판매자와 구매자 계정 국가가 "한국"인 경우 페이팔 정책상 결제가 불가**하며, **판매자는 한국이고 구매자가 미국인 경우는 가능**합니다.
+ - 판매자와 구매자 계정 국가가 "한국"인 경우 페이팔 정책상 결제가 불가합니다. 판매자와 구매자 중 최소 한사람의 국가가 해외여야 합니다
+ - 아임포트는 페이팔 정기결제를 지원하지 않습니다.
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-6.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-6.mdx
index cdb092c0d..d84f82dee 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-6.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-6.mdx
@@ -4,39 +4,36 @@ description: 엑심베이 설정 방법을 안내합니다.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 인증결제
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 엑심베이 선택 → **테스트모드 \[ON]** → \[전체 저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 엑심베이 선택 → **테스트모드 \[ON]** → \[전체 저장] 클릭
-> - 엑심베이 테스트 모드의 경우 결제시 실제 출금이 이루어지지 않습니다.
-> - 테스트모드의 경우 테스트용 카드를 사용해주셔야 하며 해외에서 발급받으신 실제 카드를 사용하실 경우 오류가 발생됩니다.
-> - [엑심베이에서 제공하는 해외결제용 테스트 카드 확인하기](https://support.eximbay.com/hc/ko/articles/360059014854-%EA%B2%B0%EC%A0%9C%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%A5%BC-%EC%A7%84%ED%96%89%ED%95%B4%EB%B3%B4%EA%B3%A0-%EC%8B%B6%EC%9D%80%EB%8D%B0-%ED%95%B4%EC%99%B8%EC%B9%B4%EB%93%9C%EA%B0%80-%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%A0-%EC%88%98-%EC%9E%88%EB%82%98%EC%9A%94-)
+ > - 엑심베이 테스트 모드의 경우 결제시 실제 출금이 이루어지지 않습니다.
+ > - 테스트모드의 경우 테스트용 카드를 사용해주셔야 하며 해외에서 발급받으신 실제 카드를 사용하실 경우 오류가 발생됩니다.
+ > - [엑심베이에서 제공하는 해외결제용 테스트 카드 확인하기](https://support.eximbay.com/hc/ko/articles/360059014854-%EA%B2%B0%EC%A0%9C%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%A5%BC-%EC%A7%84%ED%96%89%ED%95%B4%EB%B3%B4%EA%B3%A0-%EC%8B%B6%EC%9D%80%EB%8D%B0-%ED%95%B4%EC%99%B8%EC%B9%B4%EB%93%9C%EA%B0%80-%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%A0-%EC%88%98-%EC%9E%88%EB%82%98%EC%9A%94-)
-
+
+
-
+
+ ### **실** 환경 구성방법
-
-### **실** 환경 구성방법
+ 카드사 심사 완료 후 엑심베이에서 발급받은 실 상점 정보를 **테스트 모드 OFF** 설정후 해당 값을 입력합니다.
-카드사 심사 완료 후 엑심베이에서 발급받은 실 상점 정보를 **테스트 모드 OFF** 설정후 해당 값을 입력합니다.
-
-![]()
-
-
+ ![]()
+
-### **참고사항**
-
-아임포트는 엑심베이 비 인증 결제 방식을 지원하지 않습니다.
+ ### **참고사항**
+ 아임포트는 엑심베이 비 인증 결제 방식을 지원하지 않습니다.
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-7.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-7.mdx
index 493962b0d..ab61c3943 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-7.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined-7.mdx
@@ -4,35 +4,32 @@ description: 블루월넛 설정방법을 확인합니다.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 인증결제
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 블루월넛 선택 → **테스트모드 \[ON]** → \[전체 저장] 클릭\
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 블루월넛 선택 → **테스트모드 \[ON]** → \[전체 저장] 클릭\\
-
+
+
-
+
+ ### **실** 환경 구성방법
-
-### **실** 환경 구성방법
+ 카드사 심사 완료 후 블루월넛에서 발급받은 실 상점 정보를 **테스트 모드 OFF** 설정후 해당 값을 입력합니다.
-카드사 심사 완료 후 블루월넛에서 발급받은 실 상점 정보를 **테스트 모드 OFF** 설정후 해당 값을 입력합니다.
-
-
-
-
+
+
-### 참고사항
-
-아임포트는 블루월넛 비 인증 결제를 지원하지 않습니다.
+ ### 참고사항
+ 아임포트는 블루월넛 비 인증 결제를 지원하지 않습니다.
diff --git a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined.mdx b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined.mdx
index c2548d2d1..6a89dd00d 100644
--- a/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined.mdx
+++ b/src/content/docs/en/ready/2-pg/payment-gateway-settings/undefined.mdx
@@ -4,58 +4,53 @@ description: Learn how to set up Toss Payments.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## Authenticated payment
-
-### **Test environment setup**
-
-1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**Toss Payments**) → **(Prev) Toss Payments** -> **Add**
-2. Check the auto-generated test MID value and click **Save**
-
-
+
+ ### **Test environment setup**
-
+ 1. [i'mport Admin console](https://admin.iamport.kr)→ **Payment integration** → **Test settings** → Select PG (**Toss Payments**) → **(Prev) Toss Payments** -> **Add**
+ 2. Check the auto-generated test MID value and click **Save**
-
-**Note - Authenticated payment module information**
-
-The Toss Payments authenticated payment method provided by i'mport uses the **previous module** integration method and is planned for upgrade to the new module. From merchants' perspective, there is no difference in terms of service between the old and new modules.
-
-
+
-
+
-
-### Live environment setup
+
+ **Note - Authenticated payment module information**
-- **Payment integration -> Live settings**
-- Select PG (**Toss Payments**) → **Toss Payments** -> **Add**
-- Enter merchant info (MID/MertKey) issued by Toss Payments upon contract signing.
+ The Toss Payments authenticated payment method provided by i'mport uses the **previous module** integration method and is planned for upgrade to the new module. From merchants' perspective, there is no difference in terms of service between the old and new modules.
+
+
-
-Request MID for the previous module
+
+ ### Live environment setup
-For Toss Payments authenticated payment through i'mport, you must request for the **previous authenticated payment module method** when requesting for authenticated payment MID to obtain the correct MID.
+ - **Payment integration -> Live settings**
+ - Select PG (**Toss Payments**) → **Toss Payments** -> **Add**
+ - Enter merchant info (MID/MertKey) issued by Toss Payments upon contract signing.
-
+
+ Request MID for the previous module
-
+ For Toss Payments authenticated payment through i'mport, you must request for the **previous authenticated payment module method** when requesting for authenticated payment MID to obtain the correct MID.
+
-
+
-
+
-
+
+
-**Note - How to apply for non-authenticated payment**
-
-To use Toss Payments non-authenticated payment, [**sing up from the i'mport Admin**](https://admin.iamport.kr) and request for the service by sending your **account ID** (email address) to cs@iamport.kr.
+ **Note - How to apply for non-authenticated payment**
+ To use Toss Payments non-authenticated payment, [**sing up from the i'mport Admin**](https://admin.iamport.kr) and request for the service by sending your **account ID** (email address) to [cs@iamport.kr](mailto:cs@iamport.kr).
diff --git a/src/content/docs/en/ready/2-pg/pg/undefined-1.mdx b/src/content/docs/en/ready/2-pg/pg/undefined-1.mdx
index ba5b15edb..92920b448 100644
--- a/src/content/docs/en/ready/2-pg/pg/undefined-1.mdx
+++ b/src/content/docs/en/ready/2-pg/pg/undefined-1.mdx
@@ -4,36 +4,33 @@ description: 토스 간편결제 설정 방법을 안내합니다.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 일반**결제**
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제]토스 선택 → **테스트모드 \[ON]** → 테스트 apikey 입력 > \[전체 저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제]토스 선택 → **테스트모드 \[ON]** → 테스트 apikey 입력 > \[전체 저장] 클릭
-> - 테스트 상점아이디 : **tosstest**
-> - 테스트 apiKey : **sk\_test\_w5lNQylNqa5lNQe013Nq**
+ > - 테스트 상점아이디 : **tosstest**
+ > - 테스트 apiKey : **sk\_test\_w5lNQylNqa5lNQe013Nq**
-
+
+
-
+
+ ### **실** 환경 구성방법
-
-### **실** 환경 구성방법
+ \*\*테스트모드 \*\***OFF** 처리 이후 카드사 심사 완료 후 토스페이에서 발급받은 실상점 정보로 설정 해야 합니다.
-**테스트모드 ****OFF** 처리 이후 카드사 심사 완료 후 토스페이에서 발급받은 실상점 정보로 설정 해야 합니다.
-
-
-
-
+
+
-**아임포트는 토스 간편결제 정기결제를 지원하지 않습니다.**
-
+ **아임포트는 토스 간편결제 정기결제를 지원하지 않습니다.**
diff --git a/src/content/docs/en/ready/2-pg/pg/undefined-2.mdx b/src/content/docs/en/ready/2-pg/pg/undefined-2.mdx
index fcab7667d..55f31d9be 100644
--- a/src/content/docs/en/ready/2-pg/pg/undefined-2.mdx
+++ b/src/content/docs/en/ready/2-pg/pg/undefined-2.mdx
@@ -4,37 +4,34 @@ description: 네이버페이(결제형) PG설정 방법을 안내합니다.
---
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-**네이버페이는 테스트 연동정보를 별도로 제공하지 않습니다. 가입신청 후 연동정보를 받아서 테스트 모드로 연동/개발 할 수 있습니다.**
-
+ **네이버페이는 테스트 연동정보를 별도로 제공하지 않습니다. 가입신청 후 연동정보를 받아서 테스트 모드로 연동/개발 할 수 있습니다.**
## 일반**결제**
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제네이버페이(결제) 선택 → 테스트모드 \[ON] → **발급받은 상점정보 입력** → \[전체 저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제네이버페이(결제) 선택 → 테스트모드 \[ON] → **발급받은 상점정보 입력** → \[전체 저장] 클릭
-- **파트너아이디** : 네이버페이 결제형 파트너ID 입력
-- **클라이언트 ID** : 네이버페이측에서 카드사 심사 완료시 고객사로 직접 안내됨
-- **클라이언트 SECRET** : 네이버페이측에서 카드사 심사 완료시 고객사로 직접 안내됨
+ - **파트너아이디** : 네이버페이 결제형 파트너ID 입력
+ - **클라이언트 ID** : 네이버페이측에서 카드사 심사 완료시 고객사로 직접 안내됨
+ - **클라이언트 SECRET** : 네이버페이측에서 카드사 심사 완료시 고객사로 직접 안내됨
-![]()
+ ![]()
+
-
+
+ ### **실** 환경 구성방법
-
-### **실** 환경 구성방법
-
-**테스트모드 OFF** 설정(네이버페이 실 검수가 시작되면 OFF 설정)
-
-
+ **테스트모드 OFF** 설정(네이버페이 실 검수가 시작되면 OFF 설정)
+
## 정기결제
@@ -42,71 +39,68 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
### 네이버페 정기결제는 결제창 방식만 지원합니다.
-
-### 테스트 환경 구성방법
-
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제네이버페이(결제) 선택 → 테스트모드 \[ON] → **발급받은 상점정보 입력** → \[전체 저장] 클릭
+
+ ### 테스트 환경 구성방법
-- **파트너아이디** : 네이버페이 결제형 파트너ID 입력
-- **클라이언트 ID** : 네이버페이측에서 카드사 심사 완료시 고객사로 직접 안내됨
-- **클라이언트 SECRET** : 네이버페이측에서 카드사 심사 완료시 고객사로 직접 안내됨
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제네이버페이(결제) 선택 → 테스트모드 \[ON] → **발급받은 상점정보 입력** → \[전체 저장] 클릭
-![]()
+ - **파트너아이디** : 네이버페이 결제형 파트너ID 입력
+ - **클라이언트 ID** : 네이버페이측에서 카드사 심사 완료시 고객사로 직접 안내됨
+ - **클라이언트 SECRET** : 네이버페이측에서 카드사 심사 완료시 고객사로 직접 안내됨
-### 실 환경 구성방법
+ ![]()
-**테스트모드 OFF** 설정(네이버페이 실 검수가 시작되면 OFF 설정)
+ ### 실 환경 구성방법
-
+ **테스트모드 OFF** 설정(네이버페이 실 검수가 시작되면 OFF 설정)
+
-#### **네이버페이 검수란?**
-
-네이버페이 결제형 오픈을 위해서는 네이버페이 검수팀으로 부터 기술검수 통과가 진행되어야 합니다. 해당 검수는 **필수**적으로 진행되어야 하며 해당 검수는 모든 연동이 완료된 이후 당사로 검수요청을 주시면 아임포트 1차 검토 이후 이상이 없는 경우 네이버페이로 실 검수 요청하는 프로세스로 진행됩니다.
+ #### **네이버페이 검수란?**
+ 네이버페이 결제형 오픈을 위해서는 네이버페이 검수팀으로 부터 기술검수 통과가 진행되어야 합니다. 해당 검수는 **필수**적으로 진행되어야 하며 해당 검수는 모든 연동이 완료된 이후 당사로 검수요청을 주시면 아임포트 1차 검토 이후 이상이 없는 경우 네이버페이로 실 검수 요청하는 프로세스로 진행됩니다.
-
네이버페이 기술검수 요청 방법
-
-네이버페이 기술검수를 위해서는 아래 질문리스트를 작성하여 아래 이메일 주소로 검수요청을 주시면 됩니다.
-
-```
-<사업자 및 계약정보>
- - 상호명 :
- - 사업자번호 :
- - 아임포트계정 :
- - 네이버페이 결제형 파트너ID : 단건/반복(정기) 이용하실 방식 구분하여 전달 주시기 바랍니다.
- - 검수 진행가능한 URL :
- - 테스트 가능한 로그인계정 :
- - 네이버페이 결제형 연동 개발자 정보(이름/이메일/전화번호):
+
네이버페이 기술검수 요청 방법
+
+ 네이버페이 기술검수를 위해서는 아래 질문리스트를 작성하여 아래 이메일 주소로 검수요청을 주시면 됩니다.
+
+ ```md
+ <사업자 및 계약정보>
+ - 상호명 :
+ - 사업자번호 :
+ - 아임포트계정 :
+ - 네이버페이 결제형 파트너ID : 단건/반복(정기) 이용하실 방식 구분하여 전달 주시기 바랍니다.
+ - 검수 진행가능한 URL :
+ - 테스트 가능한 로그인계정 :
+ - 네이버페이 결제형 연동 개발자 정보(이름/이메일/전화번호):
- 네이버페이 결제형 연동 검수 담당자 정보(이름/이메일/전화번호):
- - 판매상품 과/면세 여부:
- - 에스크로 사용여부:
- - 모바일앱 보유 여부:
- - 부분취소 제공여부:
+ - 판매상품 과/면세 여부:
+ - 에스크로 사용여부:
+ - 모바일앱 보유 여부:
+ - 부분취소 제공여부:
- IMP.request_pay 함수 호출 시 naverProducts 파라미터 설정여부 및 셋팅 예시:
-<질의사항>
-1. 일반결제만 연동하는 경우
- 1) 지원하는 PC 웹 브라우저 종류와 최소 버전:
- 2) 지원하는 모바일 웹 브라우저 종류와 최소 버전:
- (앱으로만 연동하시는 경우, 지원하는 모바일 OS 종류와 최소 버전: (ex. iOS 12.0.1, Android 8.0))
- 3) 네이버페이 계약 시, 현금영수증 발급을 누가 하도록 결정하셨나요?
- 4) 네이버페이 계약 시, 포인트 적립 방식은 자동지급방식으로 계약하셨나요? 직접 건별로 지급하기로 계약하셨나요?
-
-2. 일반 + 정기결제 모두 연동하는 경우
- 1) 지원하는 PC 웹 브라우저 종류와 최소 버전:
- 2) 지원하는 모바일 웹 브라우저 종류와 최소 버전:
- (앱으로만 연동하시는 경우, 지원하는 모바일 OS 종류와 최소 버전: (ex. iOS 12.0.1, Android 8.0))
- 3) 네이버페이 계약 시, 현금영수증 발급을 누가 하도록 결정하셨나요?
- 4) 네이버페이 계약 시, 포인트 적립 방식은 자동지급방식으로 계약하셨나요? 직접 건별로 지급하기로 계약하셨나요?
- 5) 정기결제 등록 내역 조회를 어떤 방식으로 구현하시고 계신가요? 예) 관리자페이지 반복결제내역 조회 시 / 자체주문 생성 시 정보조회
- 6) 결제 내역 조회를 어떤 방식으로 구현하시고 계신가요? 예) 관리자페이지 결제내역 조회 시 / 자체주문 생성 시 정보조회 / 정산 대사 작업 배치
- 7) 어떤 경우에 정기결제가 해제되나요? 예) 등록생성 실패 시 / 등록된 반복결제항목 해제 시 / 관리자 반복결제 등록항목 해제
-```
-
-**email : support@iamport.kr**
-
+ <질의사항>
+ 1. 일반결제만 연동하는 경우
+ 1) 지원하는 PC 웹 브라우저 종류와 최소 버전:
+ 2) 지원하는 모바일 웹 브라우저 종류와 최소 버전:
+ (앱으로만 연동하시는 경우, 지원하는 모바일 OS 종류와 최소 버전: (ex. iOS 12.0.1, Android 8.0))
+ 3) 네이버페이 계약 시, 현금영수증 발급을 누가 하도록 결정하셨나요?
+ 4) 네이버페이 계약 시, 포인트 적립 방식은 자동지급방식으로 계약하셨나요? 직접 건별로 지급하기로 계약하셨나요?
+
+ 2. 일반 + 정기결제 모두 연동하는 경우
+ 1) 지원하는 PC 웹 브라우저 종류와 최소 버전:
+ 2) 지원하는 모바일 웹 브라우저 종류와 최소 버전:
+ (앱으로만 연동하시는 경우, 지원하는 모바일 OS 종류와 최소 버전: (ex. iOS 12.0.1, Android 8.0))
+ 3) 네이버페이 계약 시, 현금영수증 발급을 누가 하도록 결정하셨나요?
+ 4) 네이버페이 계약 시, 포인트 적립 방식은 자동지급방식으로 계약하셨나요? 직접 건별로 지급하기로 계약하셨나요?
+ 5) 정기결제 등록 내역 조회를 어떤 방식으로 구현하시고 계신가요? 예) 관리자페이지 반복결제내역 조회 시 / 자체주문 생성 시 정보조회
+ 6) 결제 내역 조회를 어떤 방식으로 구현하시고 계신가요? 예) 관리자페이지 결제내역 조회 시 / 자체주문 생성 시 정보조회 / 정산 대사 작업 배치
+ 7) 어떤 경우에 정기결제가 해제되나요? 예) 등록생성 실패 시 / 등록된 반복결제항목 해제 시 / 관리자 반복결제 등록항목 해제
+ ```
+
+ **email : [support@iamport.kr](mailto:support@iamport.kr)**
diff --git a/src/content/docs/en/ready/2-pg/pg/undefined-3.mdx b/src/content/docs/en/ready/2-pg/pg/undefined-3.mdx
index 6469daffc..7690ba2f3 100644
--- a/src/content/docs/en/ready/2-pg/pg/undefined-3.mdx
+++ b/src/content/docs/en/ready/2-pg/pg/undefined-3.mdx
@@ -4,11 +4,11 @@ description: 페이코 설정 방법을 안내합니다.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-#### 페이코 결제 테스트를 위해서는 아래 애플리케이션을 다운로드 받으셔야 합니다.
+**페이코 결제 테스트를 위해서는 아래 애플리케이션을 다운로드 받으셔야 합니다.**
> - URL : [https://devcenter.payco.com](https://devcenter.payco.com/)
> - 로그인(ID/PW) : payco / payco1234
@@ -17,54 +17,49 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
## 인증결제
-
-### 테스트 환경 구성방법
-
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제]페이코 선택 → **테스트모드\[ON]** 클릭 → \[전체 저장] 클릭
+
+ ### 테스트 환경 구성방법
-
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제]페이코 선택 → **테스트모드\[ON]** 클릭 → \[전체 저장] 클릭
-
+
+
-
-### **실** 환경 구성방법
+
+ ### **실** 환경 구성방법
-카드사 심사 완료 후 페이코에서 발급받은 실상점 정보를 설정합니다.
+ 카드사 심사 완료 후 페이코에서 발급받은 실상점 정보를 설정합니다.
-
-
-
+
+
## 정기 결제
-
-### 테스트 환경 구성방법
-
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제]페이코 선택 → 테스트모드 \[ON] → '**PAYCO정기결제(자동결제) 테스트용도인가요?**' 체크박스 선택 > \[전체 저장] 클릭
+
+ ### 테스트 환경 구성방법
-
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제]페이코 선택 → 테스트모드 \[ON] → '**PAYCO정기결제(자동결제) 테스트용도인가요?**' 체크박스 선택 > \[전체 저장] 클릭
-### **실** 환경 구성방법
+
-카드사 심사 완료 후 페이코에서 발급받은 실상점 정보를 **테스트모드 OFF** 처리후 설정합니다.
+ ### **실** 환경 구성방법
-
+ 카드사 심사 완료 후 페이코에서 발급받은 실상점 정보를 **테스트모드 OFF** 처리후 설정합니다.
-
+
+
-
-#### **페이코 정기결제는 ****결제창 방식****만 지원합니다.**
-
-
+
+ #### 페이코 정기결제는 **결제창 방식**만 지원합니다.
+
-### **확인사항**
-
-- 페이코 테스트 모드의 경우 실 결제가 이루어지지 않습니다.
-- 테스트 환경에서는 결제한도 등의 테스트는 불가합니다.
-- 페이코 테스트는 상용앱을 지운 후 테스트 앱으로 진행해야 합니다.
+ ### **확인사항**
+ - 페이코 테스트 모드의 경우 실 결제가 이루어지지 않습니다.
+ - 테스트 환경에서는 결제한도 등의 테스트는 불가합니다.
+ - 페이코 테스트는 상용앱을 지운 후 테스트 앱으로 진행해야 합니다.
diff --git a/src/content/docs/en/ready/2-pg/pg/undefined-4.mdx b/src/content/docs/en/ready/2-pg/pg/undefined-4.mdx
index ab2b64e7a..b031fbbf6 100644
--- a/src/content/docs/en/ready/2-pg/pg/undefined-4.mdx
+++ b/src/content/docs/en/ready/2-pg/pg/undefined-4.mdx
@@ -4,15 +4,15 @@ description: 차이 간편결제 설정 방법을 안내합니다.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-#### 차이 결제 테스트를 위해서는 아래 애플리케이션을 다운로드 받으셔야 합니다.
+차이 결제 테스트를 위해서는 아래 애플리케이션을 다운로드 받으셔야 합니다.
> - Android : [https://appdistribution.firebase.dev/i/8fef29de1f667252](https://appdistribution.firebase.dev/i/8fef29de1f667252)◦
>
-> \- **staging 앱**을 설치
+> \- **staging 앱**을 설치
>
> - iOS : [https://testflight.apple.com/join/ZgQIFce5](https://testflight.apple.com/join/ZgQIFce5)
>
@@ -21,73 +21,67 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
> \- 앱의 오른쪽 엣지에서 왼쪽으로 swipe 후 **staging 설정**
-**테스트 계좌 안내**
-
-**정상 응답 계좌**
+ **테스트 계좌 안내**
-- 국민은행 : 201602181111
-- 우리은행 : 201602182222
-- 경남은행 : 201602183333
+ **정상 응답 계좌**
-**잔액 부족 계좌**
+ - 국민은행 : 201602181111
+ - 우리은행 : 201602182222
+ - 경남은행 : 201602183333
-- 국민은행 : 772210258507
-- 신한은행 : 110438106449
-- 경남은행 : 629220095451
+ **잔액 부족 계좌**
+ - 국민은행 : 772210258507
+ - 신한은행 : 110438106449
+ - 경남은행 : 629220095451
## 일반 결제
-
-### 테스트 환경 구성방법
+
+ ### 테스트 환경 구성방법
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제] 차이 선택 → **테스트모드 \[ON]** → public_api_key 및 private_api_key에 발급받은 키 정보 입력 > \[전체 저장] 클릭
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제] 차이 선택 → **테스트모드 \[ON]** → public\_api\_key 및 private\_api\_key에 발급받은 키 정보 입력 > \[전체 저장] 클릭
-> **차이간편결제 테스트를 진행하기 위해서는 차이 가입 이후 발급된 정보로만 테스트가 가능합니다.**
+ > **차이간편결제 테스트를 진행하기 위해서는 차이 가입 이후 발급된 정보로만 테스트가 가능합니다.**
-
+
+
-
+
+ ### **실** 환경 구성방법
-
-### **실** 환경 구성방법
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제] 차이 선택 → **테스트모드 \[OFF]** → public\_api\_key 및 private\_api\_key 에 발급받은 키 정보 입력 > \[전체 저장] 클릭
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제] 차이 선택 → **테스트모드 \[OFF]** → public_api_key 및 private_api_key 에 발급받은 키 정보 입력 > \[전체 저장] 클릭
-
-
-
-
+
+
## 정기 결제
-
-### 테스트 환경 구성방법
-
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제] 차이 선택 → **테스트모드 \[ON]** → public_api_key 및 private_api_key 에 발급받은 키 정보 입력 > \[전체 저장] 클릭
+
+ ### 테스트 환경 구성방법
-
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제] 차이 선택 → **테스트모드 \[ON]** → public\_api\_key 및 private\_api\_key 에 발급받은 키 정보 입력 > \[전체 저장] 클릭
-### **실** 환경 구성방법
+
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제] 차이 선택 → **테스트모드 \[OFF]** → public_api_key 및 private_api_key 에 발급받은 키 정보 입력 > \[전체 저장] 클릭
+ ### **실** 환경 구성방법
-
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제] 차이 선택 → **테스트모드 \[OFF]** → public\_api\_key 및 private\_api\_key 에 발급받은 키 정보 입력 > \[전체 저장] 클릭
-
+
+
-
-**차이 간편결제는 API 방식을 통한 정기결제는 지원하지 않습니다.**
-
-
+
+ **차이 간편결제는 API 방식을 통한 정기결제는 지원하지 않습니다.**
+
-#### **확인사항**
-
-차이 테스트 모드의 경우 실제 출금 되지만 매일 23:00\~23:50분 사이 자동 취소됩니다.
+ #### **확인사항**
+ 차이 테스트 모드의 경우 실제 출금 되지만 매일 23:00\~23:50분 사이 자동 취소됩니다.
diff --git a/src/content/docs/en/ready/2-pg/pg/undefined-5.mdx b/src/content/docs/en/ready/2-pg/pg/undefined-5.mdx
index 7976b2f8b..639f8a229 100644
--- a/src/content/docs/en/ready/2-pg/pg/undefined-5.mdx
+++ b/src/content/docs/en/ready/2-pg/pg/undefined-5.mdx
@@ -4,27 +4,25 @@ description: 알리페이 설정 방법을 안내합니다.
---
import Figure from "~/components/Figure.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-### 아임포트를 통한 알리페이 결제는 나이스페이먼츠 서비스를 이용합니다.
+아임포트를 통한 알리페이 결제는 나이스페이먼츠 서비스를 이용합니다.
-
-### 테스트 환경 구성방법
-
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 알리페이(Alipay) 선택 → **테스트모드 \[ON]** → \[전체 저장] 클릭\
-
-
+
+ ## 테스트 환경 구성방법
-
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 알리페이(Alipay) 선택 → **테스트모드 \[ON]** → \[전체 저장] 클릭\\
-
-### **실** 환경 구성방법
+
+
-카드사 심사 완료 후 NICE페이먼츠 에서 발급받은 실상점 정보를 **테스트 모드 OFF** 이후 설정합니다.
+
+ ## **실** 환경 구성방법
-
+ 카드사 심사 완료 후 NICE페이먼츠 에서 발급받은 실상점 정보를 **테스트 모드 OFF** 이후 설정합니다.
-
+
+
diff --git a/src/content/docs/en/ready/2-pg/pg/undefined.mdx b/src/content/docs/en/ready/2-pg/pg/undefined.mdx
index e1354f2d6..4a411c5ca 100644
--- a/src/content/docs/en/ready/2-pg/pg/undefined.mdx
+++ b/src/content/docs/en/ready/2-pg/pg/undefined.mdx
@@ -3,29 +3,27 @@ title: 카카오페이 설정
description: 카카오페이 간편결제 설정 방법을 확인합니다.
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
## 일반**결제**
-
-### 테스트 환경 구성방법
-
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제]카카오페이 선택 → 테스트모드 \[ON] → 고객사코드(CID)에 **TC0ONETIME** 입력 > \[전체 저장] 클릭
+
+ ### 테스트 환경 구성방법
-![]()
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제]카카오페이 선택 → 테스트모드 \[ON] → 고객사코드(CID)에 **TC0ONETIME** 입력 > \[전체 저장] 클릭
-
+ ![]()
+
-
-### **실** 환경 구성방법
+
+ ### **실** 환경 구성방법
-**테스트모드 OFF** 처리 이후 카드사 심사 완료 후 카카오페이에서 발급받은 실상점 정보를 설정합니다.
+ **테스트모드 OFF** 처리 이후 카드사 심사 완료 후 카카오페이에서 발급받은 실상점 정보를 설정합니다.
-![]()
-
-
+ ![]()
+
## 정기결제
@@ -33,17 +31,15 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
### 카카오페이의 정기결제는 결제창 방식만 지원합니다.
-
-### 테스트 환경 구성방법
-
-[아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제]카카오페이 선택 → 테스트모드 \[ON] → 고객사코드(CID)에 '**TCSUBSCRIP**' 입력 > \[전체 저장] 클릭
+
+ ### 테스트 환경 구성방법
-![]()
+ [아임포트 관리자 콘솔](https://admin.iamport.kr/)→ 시스템설정 → PG설정(**일반결제 및 정기결제**) → PG사 \[간편결제]카카오페이 선택 → 테스트모드 \[ON] → 고객사코드(CID)에 '**TCSUBSCRIP**' 입력 > \[전체 저장] 클릭
-### 실 환경 구성방법
+ ![]()
-**테스트모드 OFF** 처리 이후 카드사 심사 완료 후 카카오페이에서 발급받은 실상점 정보를 설정합니다.
+ ### 실 환경 구성방법
-
+ **테스트모드 OFF** 처리 이후 카드사 심사 완료 후 카카오페이에서 발급받은 실상점 정보를 설정합니다.
+
-
diff --git a/src/content/docs/en/ready/2-pg/readme.mdx b/src/content/docs/en/ready/2-pg/readme.mdx
index 8ee2848fe..66f91702f 100644
--- a/src/content/docs/en/ready/2-pg/readme.mdx
+++ b/src/content/docs/en/ready/2-pg/readme.mdx
@@ -7,7 +7,7 @@ description: >-
import Figure from "~/components/Figure.astro";
-After creating an i'mport account, go to the Admin page and click **Payment integration** **->**
+After creating an i'mport account, go to the Admin page and click **Payment integration ->**
**Test settings** tab and select the target PG.
You can configure PG-specific test settings from the **Test settings** tab.
diff --git a/src/content/docs/en/ready/3.mdx b/src/content/docs/en/ready/3.mdx
index 0c0846de4..8219b24a7 100644
--- a/src/content/docs/en/ready/3.mdx
+++ b/src/content/docs/en/ready/3.mdx
@@ -4,9 +4,9 @@ description: Learn how to check information needed to integrate your payment win
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
Check information required for payment window integration and API call as follows:
@@ -16,8 +16,7 @@ Check information required for payment window integration and API call as follow
2. Check your **Merchant ID/REST API Key/ REST API Secret**
-Since this is **sensitive information** that can be used to **manipulate payment details**, take caution to protect it from unauthorized access.
-
+ Since this is **sensitive information** that can be used to **manipulate payment details**, take caution to protect it from unauthorized access.
@@ -25,23 +24,20 @@ Since this is **sensitive information** that can be used to **manipulate payment
-
-- A **unique value assigned to each ChaiPort admin console account**.
-- A unique code used to **initialize the object** when calling the payment window.
-- Provide this ID when making a **technical inquiry** for a faster response.
-
-
-
-
-- A value required to request an **access token** for an API call.
-- Take **special care to protect it from unauthorized access**.
-
-
-
-
-- A value required to request an **access token** for an API call.
-- The value can be reissued, and periodic reissuance is recommended for enhanced security.
-- Take **special care to protect it from unauthorized access**.
-
-
+
+ - A **unique value assigned to each ChaiPort admin console account**.
+ - A unique code used to **initialize the object** when calling the payment window.
+ - Provide this ID when making a **technical inquiry** for a faster response.
+
+
+
+ - A value required to request an **access token** for an API call.
+ - Take **special care to protect it from unauthorized access**.
+
+
+
+ - A value required to request an **access token** for an API call.
+ - The value can be reissued, and periodic reissuance is recommended for enhanced security.
+ - Take **special care to protect it from unauthorized access**.
+
diff --git a/src/content/docs/en/ready/readme.mdx b/src/content/docs/en/ready/readme.mdx
index 125ecc0a3..f8bab3a5d 100644
--- a/src/content/docs/en/ready/readme.mdx
+++ b/src/content/docs/en/ready/readme.mdx
@@ -5,28 +5,26 @@ description: >-
i'mport.
---
-import Details from "~/components/gitbook/Details.astro";
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Details from "~/components/gitbook/Details.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 1. Create an i'mport account
-For payment integration, you must first create an account from the i'mport Admin [**Sign Up**](https://admin.iamport.kr) page.
-
-You can sign up for **free without a contract**.
+ For payment integration, you must first create an account from the i'mport Admin [**Sign Up**](https://admin.iamport.kr) page.
+ You can sign up for **free without a contract**.
-
Create an i'mport account now
-
-Just need to provide your "**email address"**.
+
Create an i'mport account now
-Use a “**strong password**" to protect it from unauthorized access.
+ Just need to provide your "**email address"**.
+ Use a “**strong password**" to protect it from unauthorized access.
Click **Sign up** from the pages below to create an account.
@@ -35,7 +33,7 @@ Click **Sign up** from the pages below to create an account.
## 2. Set up PG
-After creating an i'mport account, go to the Admin page and click **Payment integration** **->**
+After creating an i'mport account, go to the Admin page and click **Payment integration ->**
**Test settings** tab and select the target PG.
You can configure PG-specific test settings from the **Test settings** tab.
@@ -43,8 +41,7 @@ You can configure PG-specific test settings from the **Test settings** tab.
-**Test settings and live account settings** for each PG are **different.** For detailed information about each PG settings, go to [**Set up PG**](2.-pg/).
-
+ **Test settings and live account settings** for each PG are **different.** For detailed information about each PG settings, go to [**Set up PG**](2.-pg/).
## 3. Check integration settings
@@ -52,13 +49,12 @@ You can configure PG-specific test settings from the **Test settings** tab.
You can check the integration settings required for payment window integration and API calls.
1. Log in to [**i'mport Admin Console**](https://admin.iamport.kr) -> **Merchant account**
- -> Select **My ID - API Keys**
+ -> Select **My ID - API Keys**
2. Check your **Merchant ID/REST API Key/REST API Secret**.
-Since this is **sensitive data** that can be used to **manipulate payment details**, be sure to protect it from unauthorized access.
-
+ Since this is **sensitive data** that can be used to **manipulate payment details**, be sure to protect it from unauthorized access.
@@ -66,23 +62,20 @@ Since this is **sensitive data** that can be used to **manipulate payment detail
-
-- A **unique value assigned to each ChaiPort Admin console account**.
-- A unique code used to **initialize the object** when calling the payment window.
-- Provide this ID when making a **technical inquiry** for a faster response.
-
-
-
-
-- A value required to request an **access token** for an API call.
-- Take **special care to protect it from unauthorized access**.
-
-
-
-
-- A value required to request an **access token** for an API call.
-- The value can be reissued, and periodic reissuance is recommended for enhanced security.
-- Take **special care to protect it from unauthorized access**.
-
-
+
+ - A **unique value assigned to each ChaiPort Admin console account**.
+ - A unique code used to **initialize the object** when calling the payment window.
+ - Provide this ID when making a **technical inquiry** for a faster response.
+
+
+
+ - A value required to request an **access token** for an API call.
+ - Take **special care to protect it from unauthorized access**.
+
+
+
+ - A value required to request an **access token** for an API call.
+ - The value can be reissued, and periodic reissuance is recommended for enhanced security.
+ - Take **special care to protect it from unauthorized access**.
+
diff --git a/src/content/docs/en/result/webhook.mdx b/src/content/docs/en/result/webhook.mdx
index 0843aa4bc..4988c82d7 100644
--- a/src/content/docs/en/result/webhook.mdx
+++ b/src/content/docs/en/result/webhook.mdx
@@ -3,32 +3,31 @@ title: Set up a webhook
description: Set up a webhook to handle the payment result in a reliable way.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-#### Use the i'mport webhook to synchronize payment information on the i'mport server with the merchant server to compensate for data loss due to device or network instability.
+**Use the i'mport webhook to synchronize payment information on the i'mport server
+with the merchant server to compensate for data loss due to device or network instability.**
-![]()
+![](/gitbook-assets/en/webhook-service.png)
-**What is a webhook?**
-
-A webhook is a mechanism for sending notifications to other services or applications when a specific event occurs.
-The webhook provider sends event information to the callback URL (endpoint) by creating an `HTTP POST` request
-when the event occurs. Webhooks are much more efficient in terms of resources and communication
-as they can only receive information related to desired events without polling data periodically.
-Using webhooks, you can extend functionality by integrating with custom functions or other applications.
+ **What is a webhook?**
+ A webhook is a mechanism for sending notifications to other services or applications when a specific event occurs.
+ The webhook provider sends event information to the callback URL (endpoint) by creating an `HTTP POST` request
+ when the event occurs. Webhooks are much more efficient in terms of resources and communication
+ as they can only receive information related to desired events without polling data periodically.
+ Using webhooks, you can extend functionality by integrating with custom functions or other applications.
-**Is webhook integration required?**
-
-When the i'mport server sends a response to the client, the client may not receive the response
-after the payment process is complete for reasons, such as Wi-Fi disconnection or automatic browser reload.
-In this case, the i'mport server sends a webhook event to the server so that the payment information can be synchronized.
+ **Is webhook integration required?**
+ When the i'mport server sends a response to the client, the client may not receive the response
+ after the payment process is complete for reasons, such as Wi-Fi disconnection or automatic browser reload.
+ In this case, the i'mport server sends a webhook event to the server so that the payment information can be synchronized.
i'mport webhook is called when:
@@ -40,60 +39,60 @@ i'mport webhook is called when:
> - **Refund is processed from Admin console** (status : `cancelled`)
-**A webhook is not invoked when payment fails!**
-
+ **A webhook is not invoked when payment fails!**
Webhook URL can be set in the following two ways:
-
-![]()
-
-To set the webhook's notification URL to send the payment information to, log in to the **Admin console** and then go to [**Payments->Live Settings**](https://admin.iamport.kr/integration?tab=production) tab and set the URL in the **Endpoint URL** field to receive the webhook data.
-
-**Content-Type** can be specified as `application/json` or `application/x-www-form-urlencoded`. To test the URL, click the **Test Webhook** button to the right of the Notification URL field.
-
-
-
-
-Set the **notice\_url** parameter when calling the JavaScript SDK **request\_pay** function to receive a webhook notification. Use this method to specify a different webhook URL for each payment request.
-
-(If this parameter is specified, the Admin console's **webhook setting is ignored**.)
-
-```javascript title="client-side"
-function requestPay() {
- // IMP.request_pay(param, callback) call payment window
- IMP.request_pay({
- ... // Omitted
- notice_url : 'https://Webhook URL', // Set Webhook URL
- ... // Omitted
- }, function (rsp) { // callback
- if (rsp.success) {
+
+ ![]()
+
+ To set the webhook's notification URL to send the payment information to, log in to the **Admin console** and then go to [**Payments->Live Settings**](https://admin.iamport.kr/integration?tab=production) tab and set the URL in the **Endpoint URL** field to receive the webhook data.
+
+ **Content-Type** can be specified as `application/json` or `application/x-www-form-urlencoded`. To test the URL, click the **Test Webhook** button to the right of the Notification URL field.
+
+
+
+ Set the **notice\_url** parameter when calling the JavaScript SDK **request\_pay** function to receive a webhook notification. Use this method to specify a different webhook URL for each payment request.
+
+ (If this parameter is specified, the Admin console's **webhook setting is ignored**.)
+
+ ```ts title="client-side"
+ function requestPay() {
+ // IMP.request_pay(param, callback) call payment window
+ IMP.request_pay(
+ {
+ // ...Omitted
+ notice_url: "https://Webhook URL", // Set Webhook URL
+ // ...Omitted
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
console.log(rsp);
- } else {
+ } else {
console.log(rsp);
- }
- });
-}
-```
-
-
+ }
+ },
+ );
+ }
+ ```
+
-**About webhooks**
-
-**You cannot set multiple webhook URLs.**
+ **About webhooks**
-Webhooks can be sent via initial or resend, each with different timeouts.
+ **You cannot set multiple webhook URLs.**
-1. For the initial webhook, the **Connection TimeOut is set to 10 seconds** and the **Read TimeOut waiting for the response is 30 seconds**.
-2. For the Resend Webhook, the **Overall TimeOut for the request is 15 seconds**.
+ Webhooks can be sent via initial or resend, each with different timeouts.
+ 1. For the initial webhook, the **Connection TimeOut is set to 10 seconds** and the **Read TimeOut waiting for the response is 30 seconds**.
+ 2. For the Resend Webhook, the **Overall TimeOut for the request is 15 seconds**.
-### Verify webhook request
+## Verify webhook request
When a Webhook event is triggered, a `POST` request is generated to the configured URL endpoint as
follows.
@@ -115,12 +114,11 @@ have set up the webhook retry feature. It is recommended to handle potential mul
the same webhook content without issues.
-
-```url
-curl -H "Content-Type: application/json" -X POST -d '{ "imp_uid": "imp_1234567890", "merchant_uid": "order_id_8237352", "status": "paid" }' { NotificationURL }
-```
-
-
+
+ ```url
+ curl -H "Content-Type: application/json" -X POST -d '{ "imp_uid": "imp_1234567890", "merchant_uid": "order_id_8237352", "status": "paid" }' { NotificationURL }
+ ```
+
> The body of the webhook `POST` request contains the following information. The server can get the
@@ -134,65 +132,73 @@ curl -H "Content-Type: application/json" -X POST -d '{ "imp_uid": "imp_123456789
Sample code of receiving a POST request to webhook endpoint URL
-
-Create an endpoint to receive the webhook event's `POST` request as follows and then parse, verify, and save the payment information.
-
-```javascript title="server-side"
-app.use(bodyParser.json());
- ...
- // Route POST request to "/iamport-webhook"
- app.post("/iamport-webhook", async (req, res) => {
- try {
+
+ Create an endpoint to receive the webhook event's `POST` request as follows and then parse, verify, and save the payment information.
+
+ ```ts title="server-side"
+ app.use(bodyParser.json());
+ // Route POST request to "/iamport-webhook"
+ app.post("/iamport-webhook", async (req, res) => {
+ try {
const { imp_uid, merchant_uid } = req.body; // Get imp_uid and merchant_uid from req.body
// Get access token
/* ...Omitted... */
// Get payment info from i'mport server using imp_uid
/* ...Omitted... */
const paymentData = getPaymentData.data.response; // Save payment info
- ...
+ // ...
// Query for original requested amount from the database
const order = await Orders.findById(paymentData.merchant_uid);
const amountToBePaid = order.amount; // Original requested amount
- ...
+ // ...
// Verify payment amount
const { amount, status } = paymentData;
- if (amount === amountToBePaid) { // Amounts match. Processed amount === Original requested amount
+ if (amount === amountToBePaid) {
+ // Amounts match. Processed amount === Original requested amount
await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData }); // Save payment info in DB
switch (status) {
case "ready": // Issue virtual account
// Save virtual account info in DB
const { vbank_num, vbank_date, vbank_name } = paymentData;
- await Users.findByIdAndUpdate("/* customer id */", { $set: { vbank_num, vbank_date, vbank_name }});
+ await Users.findByIdAndUpdate("/* customer id */", {
+ $set: { vbank_num, vbank_date, vbank_name },
+ });
// Send virtual account issuance text message
- SMS.send({ text: \`Virtual account has been issued. Account information \${vbank_num} \${vbank_date} \${vbank_name}\`});
- res.send({ status: "vbankIssued", message: "Virtual account issued successfully" });
+ SMS.send({
+ text: `Virtual account has been issued. Account information ${vbank_num} ${vbank_date} ${vbank_name}`,
+ });
+ res.send({
+ status: "vbankIssued",
+ message: "Virtual account issued successfully",
+ });
break;
case "paid": // Payment complete
res.send({ status: "success", message: "Payment successful." });
break;
}
- } else { // Amount mismatch. Forged/falsified payment.
- throw { status: "forgery", message: "Forged/falsified payment attempted" };
+ } else {
+ // Amount mismatch. Forged/falsified payment.
+ throw {
+ status: "forgery",
+ message: "Forged/falsified payment attempted",
+ };
}
- } catch (e) {
- res.status(400).send(e);
- }
- });
-```
-
-
+ } catch (e) {
+ res.status(400).send(e);
+ }
+ });
+ ```
+
-**i'mport does not guarantee the order of payment information delivery**
-
-In general, after i'mport server calls webhook, it does not guarantee the order in which the payment information arrives at the server. This is because i'mport sends a 302 redirect response to the client without waiting for a webhook response from the server. However, you can submit a special request to configure i'mport to wait for a webhook response before sending a 302 redirect or callback response to the client so that the server always receives payment information from i'mport first. To make a request to guarantee the prioritized delivery of webhooks, contact [support@iamport.kr](mailto:support@iamport.kr) with the merchant ID.
+ **i'mport does not guarantee the order of payment information delivery**
+ In general, after i'mport server calls webhook, it does not guarantee the order in which the payment information arrives at the server. This is because i'mport sends a 302 redirect response to the client without waiting for a webhook response from the server. However, you can submit a special request to configure i'mport to wait for a webhook response before sending a 302 redirect or callback response to the client so that the server always receives payment information from i'mport first. To make a request to guarantee the prioritized delivery of webhooks, contact [support@iamport.kr](mailto:support@iamport.kr) with the merchant ID.
-**Can you re-send a webhook?**
-
-By default, a webhook can only be sent once. However, it can be re-sent up to 5 times as per merchant's request. Webhooks are re-sent every 1 minute until a successful response is received from the merchant (**up to 5 times**).
+ **Can you re-send a webhook?**
+ By default, a webhook can only be sent once. However, it can be re-sent up to 5 times as per merchant's request. Webhooks are re-sent every 1 minute until a successful response is received from the merchant (**up to 5 times**).
diff --git a/src/content/docs/en/sdk/javascript-sdk/identity-verification-request-parameters.mdx b/src/content/docs/en/sdk/javascript-sdk/identity-verification-request-parameters.mdx
index e62b6b4dd..6c09e5d7e 100644
--- a/src/content/docs/en/sdk/javascript-sdk/identity-verification-request-parameters.mdx
+++ b/src/content/docs/en/sdk/javascript-sdk/identity-verification-request-parameters.mdx
@@ -3,7 +3,7 @@ title: Identity verification request parameters
description: ''
---
-### certification(param, callback)
+## certification(param, callback)
> **`merchant_uid`** **\*** **string**
>
@@ -13,7 +13,7 @@ description: ''
> **`min_age`** ******integer**
>
-> **Minimum age allowed** **for verification**
+> **Minimum age allowed for verification**
>
> Only supported by Danal PG verification
diff --git a/src/content/docs/en/sdk/javascript-sdk/identity-verification-response-parameters.mdx b/src/content/docs/en/sdk/javascript-sdk/identity-verification-response-parameters.mdx
index c64ec29ea..28557edef 100644
--- a/src/content/docs/en/sdk/javascript-sdk/identity-verification-response-parameters.mdx
+++ b/src/content/docs/en/sdk/javascript-sdk/identity-verification-response-parameters.mdx
@@ -3,7 +3,7 @@ title: Identity verification response parameters
description: ''
---
-### rsp (Object)
+## rsp (Object)
> **`success`** **\*** **boolean**
>
diff --git a/src/content/docs/en/sdk/javascript-sdk/readme.mdx b/src/content/docs/en/sdk/javascript-sdk/readme.mdx
index 5e11d96d5..b2c982f41 100644
--- a/src/content/docs/en/sdk/javascript-sdk/readme.mdx
+++ b/src/content/docs/en/sdk/javascript-sdk/readme.mdx
@@ -7,11 +7,11 @@ import Hint from "~/components/Hint.astro";
You can use the **i'mport JavaScript SDK** to open the payment or identity verification window from
your website or app. For **version history** and notable changes in each version, refer to the
-[**Release Notes**](sdk-release-note).\
+[**Release Notes**](sdk-release-note).
-### Loading SDK Library
+## Loading SDK Library
-To use the **i'mport JavaScript SDK**, you must first load the library on the page as shown below. It is recommended to load it from the CDN (**https://cdn.iamport.kr/js/iamport.payment-{SDK-latest-version}.js**). When the library is loaded, you can call **IMP** functions by accessing the **IMP** global object as a property of the **window** object.
+To use the **i'mport JavaScript SDK**, you must first load the library on the page as shown below. It is recommended to load it from the CDN (**[https://cdn.iamport.kr/js/iamport.payment-\{SDK-latest-version}.js](https://cdn.iamport.kr/js/iamport.payment-\{SDK-latest-version}.js)**). When the library is loaded, you can call **IMP** functions by accessing the **IMP** global object as a property of the **window** object.
```html title="HTML"
@@ -27,8 +27,7 @@ To use the **i'mport JavaScript SDK**, you must first load the library on the pa
```
-You **must install jQuery 1.0 or later version**.
-
+ You **must install jQuery 1.0 or later version**.
-> #### **If you cannot use CDN**, use the following: [https://service.iamport.kr/js/iamport.payment-](https://service.iamport.kr/js/iamport.payment-1.2.0.js)\{SDK-latest-version}[.js](https://service.iamport.kr/js/iamport.payment-1.2.0.js)
+> **If you cannot use CDN**, use the following: [https://service.iamport.kr/js/iamport.payment-](https://service.iamport.kr/js/iamport.payment-1.2.0.js)\{SDK-latest-version}[.js](https://service.iamport.kr/js/iamport.payment-1.2.0.js)
diff --git a/src/content/docs/en/sdk/javascript-sdk/rps.mdx b/src/content/docs/en/sdk/javascript-sdk/rps.mdx
index 4b38f190f..3aece5d8c 100644
--- a/src/content/docs/en/sdk/javascript-sdk/rps.mdx
+++ b/src/content/docs/en/sdk/javascript-sdk/rps.mdx
@@ -5,13 +5,13 @@ description: ""
import Codepen from "~/components/gitbook/Codepen.astro";
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## Parameters
-> **`pg`** **\***\*\* ****string\*\*
+> **`pg`** **\*** **string**
>
> **PG code**
>
@@ -19,7 +19,7 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
>
> [**PG codes**](../../tips/pg-codes)
-> **`pay_method`** **\***\*\* ****string\*\*
+> **`pay_method`** **\*** **string**
>
> **Payment method code**
>
@@ -28,29 +28,28 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
> [**Payment integration by PG**](../../payment-integration-by-pg/payment-gateways/readme)
-
+ 1. KRW
+ 2. USD
+ 3. EUR
+ 4. JPY
> **`language`** **string**
@@ -117,11 +115,10 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
> **Language for payment window** (Supported by only some PGs.)
-
Language codes
-
-- en (English)
-- ko (Korean)
+
Language codes
+ - en (English)
+ - ko (Korean)
> **`buyer_name`** **\*** **string**
@@ -150,9 +147,9 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
> **`confirm_url`** **string**
>
-> **Merchant endpoint url when using** [**confirm_process**](../../tips/confirm-process)
+> **Merchant endpoint url when using** [**confirm\_process**](../../tips/confirm-process)
>
-> - Must request for use to support@iamport.kr.
+> - Must request for use to [support@iamport.kr](mailto:support@iamport.kr).
> **`notice_url`** **string**
>
@@ -208,78 +205,78 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
## Additional functions
-
-```javascript title="javascript"
-display: {
- card_quota: [6] // Display up to 6 months installment plans
-}
-```
-
-**Parameters**
-
-- **card_quota :**
- - `[]`: Only immediate pay
- - `2,3,4,5,6`: immediate, 2, 3, 4, 5, 6 month installment plans\
+
+ ```json title="javascript"
+ {
+ "display": {
+ "card_quota": [6] // Display up to 6 months installment plans
+ }
+ }
+ ```
-
-Installment plan option is available only for **KRW 50,000 or more**.
+ **Parameters**
-
+ - **card\_quota :**
+ - `[]`: Only immediate pay
+ - `2,3,4,5,6`: immediate, 2, 3, 4, 5, 6 month installment plans
-Example of allowing up to **3 months**** installment plans**
+
+ Installment plan option is available only for **KRW 50,000 or more**.
+
-
+ Example of allowing up to **3 months** installment plans
-
+
+
-
-```javascript title="javascript"
-card: {
- direct: {
- code: "367",
- quota: 3
+
+ ```json title="javascript"
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3
+ }
+ }
}
-}
-```
-
-**Parameters**
+ ```
-- **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
-- **quota**: Installment plan. For immediate, set to 0. (**integer**)
+ **Parameters**
-
-**Precautions**
+ - **code**: [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
+ - **quota**: Installment plan. For immediate, set to 0. (**integer**)
-- Currently, direct call to the credit card company's payment window is only supported by 6 PGs: **KG Inicis, KCP, Toss Payments, Nice Payments, KICC, and Danal**.
-- Some PGs do not support direct call to credit card company's payment windows for all Merchant IDs. You must check your Merchant ID with each PG for direct call support.
+
+ **Precautions**
-
+ - Currently, direct call to the credit card company's payment window is only supported by 6 PGs: **KG Inicis, KCP, Toss Payments, Nice Payments, KICC, and Danal**.
+ - Some PGs do not support direct call to credit card company's payment windows for all Merchant IDs. You must check your Merchant ID with each PG for direct call support.
+
-\
-Example of direct call to **Hyundai Card** module
+ Example of direct call to **Hyundai Card** module
-
+
+
-
-
-
-```javascript title="javascript"
-card : {
- detail : [
- {card_code:"*", enabled:false}, // Disable all credit cards
- {card_code:'366', enabled:true} // Enable specific credit card
- ]
-}
-```
-
-**Parameters**
+
+ ```json title="javascript"
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, // Disable all credit cards
+ { "card_code": "366", "enabled": true } // Enable specific credit card
+ ]
+ }
+ }
+ ```
-- **card_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string)**
-- **enabled:** Option to enable the credit card (**boolean)**
+ **Parameters**
-**Example of enabling only ****Shinhan Card**** payment window**
+ - **card\_code:** [**Credit card code**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string)**
+ - **enabled:** Option to enable the credit card (**boolean)**
-
+ **Example of enabling only ****Shinhan Card**** payment window**
-
+
+
diff --git a/src/content/docs/en/sdk/javascript-sdk/sdk-release-note.mdx b/src/content/docs/en/sdk/javascript-sdk/sdk-release-note.mdx
index f37723511..a994b18e1 100644
--- a/src/content/docs/en/sdk/javascript-sdk/sdk-release-note.mdx
+++ b/src/content/docs/en/sdk/javascript-sdk/sdk-release-note.mdx
@@ -7,240 +7,243 @@ description: >-
import Details from "~/components/gitbook/Details.astro";
-### Version 1.2.0
+## Version 1.2.0
-
TBU
-
+
TBU
-### Version 1.1.8
+## Version 1.1.8
-
Details
+
Details
-**Changed Kakao Pay mobile payment to use redirection mode**
+ **Changed Kakao Pay mobile payment to use redirection mode**
-In compliance with the iframe non-support policy of Kakao Pay SDK, Kakao Pay mobile payment is processed now via page redirection instead of iframe.In the previous version, when the Kakao Pay mobile payment process is completed after calling `IMP.request_pay`, the specified callback is invoked as in PC web. In mobile, Kakao Pay is now processed via redirection mode.\
+ In compliance with the iframe non-support policy of Kakao Pay SDK, Kakao Pay mobile payment is processed now via page redirection instead of iframe.In the previous version, when the Kakao Pay mobile payment process is completed after calling `IMP.request_pay`, the specified callback is invoked as in PC web. In mobile, Kakao Pay is now processed via redirection mode.\\
-**Added Naver Pay (Checkout) pop-up mode (redirection as default mode)**
+ **Added Naver Pay (Checkout) pop-up mode (redirection as default mode)**
-To open the Naver Pay (Checkout) window as pop-up, set `popup: true` when calling `IMP.request_pay`. The callback mode is used by default.To avoid issues, such as browser pop-up blocking, Naver Pay recommends page redirection in both PC and mobile.
+ To open the Naver Pay (Checkout) window as pop-up, set `popup: true` when calling `IMP.request_pay`. The callback mode is used by default.To avoid issues, such as browser pop-up blocking, Naver Pay recommends page redirection in both PC and mobile.
-- **1.1.8 and later versions**
- - PC/mobile: redirection is default, set to `popup : true` to enable popup mode.
-- **1.1.7 and earlier versions (`popup` not supported)**
- - PC: pop-up (new tab) mode
- - Mobile: redirection mode
+ - **1.1.8 and later versions**
+ - PC/mobile: redirection is default, set to `popup : true` to enable popup mode.
-**Added redirection mode for Eximbay**
+ - **1.1.7 and earlier versions (`popup` not supported)**
+ - PC: pop-up (new tab) mode
+ - Mobile: redirection mode
-To redirect to a page after payment process is completed, set `popup : false` when calling `IMP.request_pay`. To avoid pop-up blocking issues in mobile app WebView, use the redirection mode.
+ **Added redirection mode for Eximbay**
-- **1.1.8 and later versions**
- - PC/mobile: popup is default, set to `popup : false` to enable redirection mode.
-- **1.1.7 and earlier versions (`popup` not supported)**
- - PC/mobile: popup mode
+ To redirect to a page after payment process is completed, set `popup : false` when calling `IMP.request_pay`. To avoid pop-up blocking issues in mobile app WebView, use the redirection mode.
-**Multiple PG support for identity verification**
+ - **1.1.8 and later versions**
+ - PC/mobile: popup is default, set to `popup : false` to enable redirection mode.
-Added support for multiple PG modules in identity verification due to the addition of the `INICIS-Credit card identity verification` method to the existing `Danal-Mobile identity verification` method. You can also get multiple CPIDs, one for each website, for 'Danal-Mobile identity verification', and specify a module via `pg: danal.{Danal CPID}`.
+ - **1.1.7 and earlier versions (`popup` not supported)**
+ - PC/mobile: popup mode
-```javascript title="Danal-mobile identity verification"
- IMP.certification({
- pg: "danal", // danal or danal.{Danal CPID}, other parameters omitted
- ...
- ...
- }, function(rsp) {
- if ( rsp.success ) {
- // Verification successful, return imp_uid, merchant_uid (rsp.imp_uid, rsp.merchant_uid)
- } else {
- // Verification failed, terminate
- }
- });
-```
+ **Multiple PG support for identity verification**
+
+ Added support for multiple PG modules in identity verification due to the addition of the `INICIS-Credit card identity verification` method to the existing `Danal-Mobile identity verification` method. You can also get multiple CPIDs, one for each website, for 'Danal-Mobile identity verification', and specify a module via `pg: danal.{Danal CPID}`.
+
+ ```ts title="Danal-mobile identity verification"
+ IMP.certification(
+ {
+ pg: "danal", // danal or danal.{Danal CPID}, other parameters omitted
+ // ...
+ },
+ function (rsp) {
+ if (rsp.success) {
+ // Verification successful, return imp_uid, merchant_uid (rsp.imp_uid, rsp.merchant_uid)
+ } else {
+ // Verification failed, terminate
+ }
+ },
+ );
+ ```
-```javascript title="Inicis-credit card identity verification"
-// popup : true by default in both PC/mobile
-// PC : applies popup mode regardless of popup parameter setting (INICIS policy)
-// Mobile : for redirection mode, set popup : false and m_redirect_url is required
-IMP.certification({
+ ```ts title="Inicis-credit card identity verification"
+ // popup : true by default in both PC/mobile
+ // PC : applies popup mode regardless of popup parameter setting (INICIS policy)
+ // Mobile : for redirection mode, set popup : false and m_redirect_url is required
+ IMP.certification({
pg: "inicis", //inicis or inicis.{Inicis MID}, other parameters omitted
m_redirect_url: "https://shop.yourservice.com/user-certificates/complete",
- ...
- ...
-});
-```
-
-#### Bug Fixes
+ // ...
+ });
+ ```
-**The issue of white screen being displayed when the browser's Back button is pressed while processing payment in redirection mode in Safari on iPhone**
+ ### Bug Fixes
-This is caused by the page being rendered by restoring the DOM element in the state before the page redirection when you return to the previous page with the Back button of the Safari browser (applicable to all PGs that use the redirection mode). The white screen issue is now resolved.
+ **The issue of white screen being displayed when the browser's Back button is pressed while processing payment in redirection mode in Safari on iPhone**
+ This is caused by the page being rendered by restoring the DOM element in the state before the page redirection when you return to the previous page with the Back button of the Safari browser (applicable to all PGs that use the redirection mode). The white screen issue is now resolved.
-### Version 1.1.7
+## Version 1.1.7
-
Details
+
Details
-**Added popup mode for PayPal**
+ **Added popup mode for PayPal**
-To open the payment window as pop-up, set `popup: true` when calling `IMP.request_pay(param, callback)`. The `callback` function is called after the payment process is completed. Previous versions only support the page redirection mode.
+ To open the payment window as pop-up, set `popup: true` when calling `IMP.request_pay(param, callback)`. The `callback` function is called after the payment process is completed. Previous versions only support the page redirection mode.
-```javascript title="javascript popup mode"
+ ```ts title="javascript popup mode"
// Set popup : true and callback, other parameters omitted
- IMP.request_pay({
- pg: "paypal",
- popup: true,
- ...
- ...
- }, function(rsp) {
- if ( rsp.success ) {
- //Paypal payment successful, execute validation logic
- } else {
- //Paypal payment terminated or failed
- }
- });
-```
-
-```javascript title="javascript redirect mode"
- // Set m_redirect_url (popup : false by default, not set explicitly)
+ IMP.request_pay(
+ {
+ pg: "paypal",
+ popup: true,
+ // ...
+ },
+ function (rsp) {
+ if (rsp.success) {
+ //Paypal payment successful, execute validation logic
+ } else {
+ //Paypal payment terminated or failed
+ }
+ },
+ );
+ ```
+
+ ```ts title="javascript redirect mode"
+ // Set m_redirect_url (popup : false by default, not set explicitly)
IMP.request_pay({
pg: "paypal",
m_redirect_url: "https://shop.yourservice.com/payments/complete",
- ...
- ...
+ // ...
});
-```
+ ```
-**Added redirection mode for Danal identity verification**
+ **Added redirection mode for Danal identity verification**
-To redirect to a page after identity verification, set the target page's URL in `m_redirect_url` when calling `IMP.certification`. Previous versions only support the callback mode. For more information about using the redirection mode, refer to the [Mobile identity verification](../../etc/phone/) page.
+ To redirect to a page after identity verification, set the target page's URL in `m_redirect_url` when calling `IMP.certification`. Previous versions only support the callback mode. For more information about using the redirection mode, refer to the [Mobile identity verification](../../etc/phone/) page.
-```javascript title="javascript (popup mode)"
+ ```ts title="javascript (popup mode)"
// Set popup : true
- IMP.certification({
- merchant_uid : "verification transaction ID",
- popup: true
- }, function(rsp) {
- if ( rsp.success ) {
- // Verification successful
- } else {
- // Verification failed or terminated (popup closed or Cancel button clicked)
- }
- });
-```
-
-```javascript title="javascript redirect mode"
+ IMP.certification(
+ {
+ merchant_uid: "verification transaction ID",
+ popup: true,
+ },
+ function (rsp) {
+ if (rsp.success) {
+ // Verification successful
+ } else {
+ // Verification failed or terminated (popup closed or Cancel button clicked)
+ }
+ },
+ );
+ ```
+
+ ```ts title="javascript redirect mode"
// Set m_redirect_url (popup : false by default, not set explicitly)
IMP.certification({
- merchant_uid : "verification transaction ID"
+ merchant_uid: "verification transaction ID",
m_redirect_url: "https://shop.yourservice.com/payments/complete",
});
-```
+ ```
-#### Bug Fixes
+ ### Bug Fixes
-**The issue of callback not being invoked when you click the close button (X button) in the identity verification (Danal) pop-up**
+ **The issue of callback not being invoked when you click the close button (X button) in the identity verification (Danal) pop-up**
-When you close the identity verification pop-up window or click the Cancel button on the page in the pop-up mode, the callback (handler) of `IMP.certification(param, handler)` is invoked. This fix implements the same behavior for when the X button is clicked.
-
-
+ When you close the identity verification pop-up window or click the Cancel button on the page in the pop-up mode, the callback (handler) of `IMP.certification(param, handler)` is invoked. This fix implements the same behavior for when the X button is clicked.
+
-### Version 1.1.5 and earlier versions
+## Version 1.1.5 and earlier versions
-
Details
-
-#### iamport.payment-1.1.5.js
+
Details
-```html
-
-```
+ ### iamport.payment-1.1.5.js
-**Deployed on 2017-04-03**
+ ```html
+
+ ```
-- Added function to redirect to `m_redirect_url` when error occurs before starting the payment process after calling `IMP.request_pay(param)` in mobile.
+ **Deployed on 2017-04-03**
-**Reasons for failure before starting payment process**
+ - Added function to redirect to `m_redirect_url` when error occurs before starting the payment process after calling `IMP.request_pay(param)` in mobile.
-- Reusing an already used `merchant_uid` (Order ID) for payment.
-- Invalid payment request parameter.
+ **Reasons for failure before starting payment process**
-**Reasons for failure after starting payment process**
+ - Reusing an already used `merchant_uid` (Order ID) for payment.
+ - Invalid payment request parameter.
-- Credit card suspended or limit exceeded.
-- Exceeded number of password errors.
+ **Reasons for failure after starting payment process**
-#### iamport.payment-1.1.4.js
+ - Credit card suspended or limit exceeded.
+ - Exceeded number of password errors.
-```html
-
-```
+ ### iamport.payment-1.1.4.js
-**Deployed on 2016-11-14**
+ ```html
+
+ ```
-- Added Agency-tier feature: `IMP.agency(Merchant ID, Tier Code)` function
-- Added SMS mobile identity verification feature: `IMP.certification()` function
+ **Deployed on 2016-11-14**
-#### iamport.payment-1.1.3.js
+ - Added Agency-tier feature: `IMP.agency(Merchant ID, Tier Code)` function
+ - Added SMS mobile identity verification feature: `IMP.certification()` function
-```html
-
-```
+ ### iamport.payment-1.1.3.js
-**Deployed on 2016-07-13**
+ ```html
+
+ ```
-- Code refactored and performance enhanced version of 1.1.2 version.
+ **Deployed on 2016-07-13**
-#### iamport.payment-1.1.2.js
+ - Code refactored and performance enhanced version of 1.1.2 version.
-```html
-
-```
+ ### iamport.payment-1.1.2.js
-**Deployed on 2016-03-09**
+ ```html
+
+ ```
-- Enhanced method of calling multiple PG settings.
+ **Deployed on 2016-03-09**
-#### iamport.payment-1.1.1.js
+ - Enhanced method of calling multiple PG settings.
-```html
-
-```
+ ### iamport.payment-1.1.1.js
-**Deployed on 2016-02-19**
+ ```html
+
+ ```
-- Extended PG parameter value to allow for PG + MID combination (`pg : '{PG}.{MID}'`).
+ **Deployed on 2016-02-19**
-#### iamport.payment-1.1.0.js
+ - Extended PG parameter value to allow for PG + MID combination (`pg : '{PG}.{MID}'`).
-```html
-
-```
+ ### iamport.payment-1.1.0.js
-**Deployed on 2016-01-19**
+ ```html
+
+ ```
-- Added `pg` parameter to allow an account to use multiple PG modules (`pg : '{PG}'`)
+ **Deployed on 2016-01-19**
-#### iamport.payment-1.0.0.js
+ - Added `pg` parameter to allow an account to use multiple PG modules (`pg : '{PG}'`)
-```html
-
-```
+ ### iamport.payment-1.0.0.js
-**Deployed on 2014-10-24**
+ ```html
+
+ ```
-- Initial stable release (Unversioned release, same as iamport.payment-1.0.0.js)
+ **Deployed on 2014-10-24**
-#### iamport.payment.js
+ - Initial stable release (Unversioned release, same as iamport.payment-1.0.0.js)
-```html
-
-```
+ ### iamport.payment.js
+ ```html
+
+ ```
diff --git a/src/content/docs/en/sdk/javascript-sdk/undefined-1.mdx b/src/content/docs/en/sdk/javascript-sdk/undefined-1.mdx
index 9c50589f5..54ee89ccc 100644
--- a/src/content/docs/en/sdk/javascript-sdk/undefined-1.mdx
+++ b/src/content/docs/en/sdk/javascript-sdk/undefined-1.mdx
@@ -9,8 +9,7 @@ import Hint from "~/components/Hint.astro";
## Callback response data for payment request
-Properties that are returned vary by PG or payment method.
-
+ Properties that are returned vary by PG or payment method.
> **`success`** **\*** **boolean**
@@ -19,9 +18,7 @@ Properties that are returned vary by PG or payment method.
>
> True when payment is approved or virtual account is issued
>
->
-> (returned as`imp_success` for some PG/payment method)
->
+> (returned as`imp_success` for some PG/payment method)
> **`error_code`** **\*** **string**
>
@@ -50,29 +47,28 @@ Properties that are returned vary by PG or payment method.
> **Payment method code**
-
+
+ - naverpay
+ - kakopay
+ - payco
+ - samsungpay
+ - ssgpay
+ - lpay
+ - kpay
> **`pg_tid`** **\*** **string**
@@ -150,13 +148,12 @@ Properties that are returned vary by PG or payment method.
> **`paid_at`** **\*** **string**
>
-> **Payment approved at** **(UNIX timestamp)**
+> **Payment approved at (UNIX timestamp)**
-**What is UNIX timestamp?**
-
-**Unix time** is a way of representing time. It is also called POSIX time or **Epoch time**. The time elapsed from 00:00:00 Coordinated Universal Time (UTC) on January 1, 1970 is converted into seconds and expressed as an integer. In Unix time, leap seconds are ignored. It is used by Unix-like operating systems and several other operating systems and file formats. Because of the leap second processing method, time cannot be expressed linearly, and leap seconds cannot be expressed in Coordinated Universal Time.
+ **What is UNIX timestamp?**
+ **Unix time** is a way of representing time. It is also called POSIX time or **Epoch time**. The time elapsed from 00:00:00 Coordinated Universal Time (UTC) on January 1, 1970 is converted into seconds and expressed as an integer. In Unix time, leap seconds are ignored. It is used by Unix-like operating systems and several other operating systems and file formats. Because of the leap second processing method, time cannot be expressed linearly, and leap seconds cannot be expressed in Coordinated Universal Time.
> **`receipt_url`** **string**
@@ -176,8 +173,7 @@ Properties that are returned vary by PG or payment method.
> **Virtual account number**
-As received from PG, may contain special characters (-).
-
+ As received from PG, may contain special characters (-).
> **`vbank_name`** **string**
@@ -189,13 +185,12 @@ As received from PG, may contain special characters (-).
> **Virtual account holder**
-Shows business name on the contract. Some PGs may return null and requires additional processing.
-
+ Shows business name on the contract. Some PGs may return null and requires additional processing.
> **`vbank_date`** **string**
>
-> **Virtual account expiration** **(UNIX timestamp)**
+> **Virtual account expiration (UNIX timestamp)**
```json title="Sample response object"
{
diff --git a/src/content/docs/en/tips/agency-and-tier.mdx b/src/content/docs/en/tips/agency-and-tier.mdx
index c278e9aba..838c73ef1 100644
--- a/src/content/docs/en/tips/agency-and-tier.mdx
+++ b/src/content/docs/en/tips/agency-and-tier.mdx
@@ -6,7 +6,7 @@ description: Learn how to set up a main merchant and its sub-merchants.
import Figure from "~/components/Figure.astro";
import Hint from "~/components/Hint.astro";
-### You can use the i'mport Agent service to set up PGs for sub-merchants (manage sub-merchants) with a single account.
+## You can use the i'mport Agent service to set up PGs for sub-merchants (manage sub-merchants) with a single account.
**If you apply for and register multiple sub-merchant codes (Tier codes) with the master account,
you can register merchant information and view (cancel) payment details for each sub-merchant.**
@@ -14,13 +14,12 @@ you can register merchant information and view (cancel) payment details for each
(You can assign a 3-digit ID and a name for each sub-merchant)
-To get access to this service, send your ChaiPort email account to the following:
-
-[**cs@iamport.kr**](mailto:cs@iamport.kr)
+ To get access to this service, send your ChaiPort email account to the following:
+ [**cs@iamport.kr**](mailto:cs@iamport.kr)
-### Using Agent service
+## Using Agent service
Through i'mport Agent service, you can manage merchants more conveniently and efficiently.
@@ -49,23 +48,21 @@ You can try out the sub-merchant settings and look up payment history with the d
-**Calling sub-merchant's payment window**
-
-When requesting payment for each sub-merchant, you can specify the target **Tier** with the **JavaScript SDK.**
+ **Calling sub-merchant's payment window**
-**IMP.agency(Merchant ID, 3-digit Tier (unique) code)**
+ When requesting payment for each sub-merchant, you can specify the target **Tier** with the **JavaScript SDK.**
-`Example: IMP.agency('imp12345678', '001')`
+ **IMP.agency(Merchant ID, 3-digit Tier (unique) code)**
+ `Example: IMP.agency('imp12345678', '001')`
-**Calling REST API**
-
-When calling the REST API, you must include the Tier information in the header to request payment for the corresponding sub-merchant.
+ **Calling REST API**
-Include the following parameter in the HTTP header.
+ When calling the REST API, you must include the Tier information in the header to request payment for the corresponding sub-merchant.
-`"Tier" : "3-digit Tier code"`
+ Include the following parameter in the HTTP header.
+ `"Tier" : "3-digit Tier code"`
diff --git a/src/content/docs/en/tips/bank-codes-by-pg.mdx b/src/content/docs/en/tips/bank-codes-by-pg.mdx
index a777fc1bf..fcb95a853 100644
--- a/src/content/docs/en/tips/bank-codes-by-pg.mdx
+++ b/src/content/docs/en/tips/bank-codes-by-pg.mdx
@@ -6,118 +6,113 @@ description: ''
import Details from "~/components/gitbook/Details.astro";
-
+ - KB Kookmin Bank: 004
+ - SC First Bank: 023
+ - Kyongnam Bank: 039
+ - Gwangju Bank: 034
+ - Industrial Bank of Korea: 003
+ - Nonghyup: 011
+ - Daegu Bank: 031
+ - Busan Bank: 032
+ - Korea Development Bank: 002
+ - Saemaul Geumgo: 045
+ - Suhyup: 007
+ - Shinhan Bank: 088
+ - Credit union: 048
+ - Korea Exchange Bank: 081
+ - Woori Bank: 020
+ - Post Office: 071
+ - Jeonbuk Bank: 037
+ - Cooperative: 012
+ - Kakao Bank: 090
+ - K-Bank: 089
+ - Hana Bank: 081
+ - Citibank Korea: 027
+ - Toss Bank: 092
-
diff --git a/src/content/docs/en/tips/billing-key-issuance-by-pg.mdx b/src/content/docs/en/tips/billing-key-issuance-by-pg.mdx
index 7eabd03ce..9cda9015f 100644
--- a/src/content/docs/en/tips/billing-key-issuance-by-pg.mdx
+++ b/src/content/docs/en/tips/billing-key-issuance-by-pg.mdx
@@ -3,19 +3,19 @@ title: Billing key issuance by PG
description: ''
---
-|PG |Payment window support|API support|Supports issuance + payment in a single request (payment window only)|
+| PG |Payment window support|API support|Supports issuance + payment in a single request (payment window only)|
|:-----------:|:--------------------:|:---------:|:-------------------------------------------------------------------:|
-|KCP |O |O |X |
-|KG Inicis |O |O |X |
-|Danal |O |O |O |
-|Danal Mobile |O |O |O |
-|Kakao Pay |O |X |O |
-|Naver Pay |O |X |X |
-|NICE Payments|X |O |X |
-|JTNET |O |O |O |
-|Settlebank |X |O |X |
-|CHAI |O |X |X |
-|KICC |O |X |X |
-|Daou Data |X |O |X |
-|KG Mobilians |O |X |O |
-|Payco |O |X |X |
+| KCP | O | O | X |
+| KG Inicis | O | O | X |
+| Danal | O | O | O |
+| Danal Mobile| O | O | O |
+| Kakao Pay | O | X | O |
+| Naver Pay | O | X | X |
+|NICE Payments| X | O | X |
+| JTNET | O | O | O |
+| Settlebank | X | O | X |
+| CHAI | O | X | X |
+| KICC | O | X | X |
+| Daou Data | X | O | X |
+| KG Mobilians| O | X | O |
+| Payco | O | X | X |
diff --git a/src/content/docs/en/tips/chk.mdx b/src/content/docs/en/tips/chk.mdx
index 741c43d9e..eb05f833a 100644
--- a/src/content/docs/en/tips/chk.mdx
+++ b/src/content/docs/en/tips/chk.mdx
@@ -77,11 +77,9 @@ production failures.
## 📱Mobile phone
-- [ ] Pass all phone carrier reviews and complete approval and full/partial cancellation tests.
+- [ ] Pass all phone carrier reviews and complete approval and full/partial cancellation tests.
+ (Partial cancellation is not supported except for Inicis and KCP (separate agreement required))
- ```
- (Partial cancellation is not supported except for Inicis and KCP (separate agreement required))
- ```
- [ ] Approved transactions can only be cancelled during the month when the transaction occurred.
## 🙋 Identity verification
diff --git a/src/content/docs/en/tips/code.mdx b/src/content/docs/en/tips/code.mdx
index e951a5aae..0528b9be7 100644
--- a/src/content/docs/en/tips/code.mdx
+++ b/src/content/docs/en/tips/code.mdx
@@ -3,7 +3,7 @@ title: Courier codes
description: Courier codes required for escrow delivery registration.
---
-### The following codes apply to all PGs.
+## The following codes apply to all PGs.
|Courier code|Courier name |
|------------|---------------------------------------------------------|
@@ -25,4 +25,3 @@ description: Courier codes required for escrow delivery registration.
|HONAM |Woori Logis (Honam Logis) |
|HDEXP |Hapdong Express |
|ETC |Other (Code specified other than the above is set to ETC)|
-
diff --git a/src/content/docs/en/tips/confirm-process.mdx b/src/content/docs/en/tips/confirm-process.mdx
index ad866b825..2ac3ce494 100644
--- a/src/content/docs/en/tips/confirm-process.mdx
+++ b/src/content/docs/en/tips/confirm-process.mdx
@@ -8,19 +8,18 @@ description: >-
import Figure from "~/components/Figure.astro";
import Hint from "~/components/Hint.astro";
-### This service allows the merchant to confirm its intention to process a payment request before making the request.
+## This service allows the merchant to confirm its intention to process a payment request before making the request.
-![]()
+![]()
-**A merchant must use this service:**
-
-- When there is a small quantity of the product in stock
-- When payment is processed first-come-first-served
-- When there is business logic that the merchant wants to execute just before making the payment request
+ **A merchant must use this service:**
+ - When there is a small quantity of the product in stock
+ - When payment is processed first-come-first-served
+ - When there is business logic that the merchant wants to execute just before making the payment request
@@ -33,7 +32,7 @@ on the inventory. If the confirm process is not configured, the purchased order
scheduled due to lack of inventory or may be cancelled leading to poor customer satisfaction and
experience.
-![]()
+![]()
### When payment is processed first-come-first-served
@@ -42,20 +41,19 @@ marathon, ticketing for popular concerts, and special discount events such as OO
a rush of concurrent payment requests at the scheduled time. In such a case, the merchant needs to
perform a final inventory check on the server just before making the payment request.
-![]()
+![](/gitbook-assets/en/fcfs.png)
### When there is business logic that the merchant wants to execute just before making the payment request
The service can also be used when the merchant needs to process some business logic just before
payment for reasons, such as checking the health of the merchant server.
-![]()
+![](/gitbook-assets/en/server_health_check.png)
-**How to request for Confirm Process**
-
-Send a technical support request email ([support@iamport.kr](mailto:support@iamport.kr)) with your **Merchant ID**.
+ **How to request for Confirm Process**
+ Send a technical support request email ([support@iamport.kr](mailto:support@iamport.kr)) with your **Merchant ID**.
@@ -65,10 +63,10 @@ Send a technical support request email ([support@iamport.kr](mailto:support@iamp
To use Confirm Process, you must define the **confirm\_url** parameter and set it to the merchant
endpoint URL when calling the request\_pay() function.
-```jsx title="JavaScript SDK"
-...
-confirm_url : ‘Merchant EndPoint URL’,
-...
+```json title="JavaScript SDK"
+{
+ "confirm_url": "Merchant EndPoint URL",
+}
```
If the confirm URL is set, the final confirm page before payment request is loaded via **HTTP** with
diff --git a/src/content/docs/en/tips/flow.mdx b/src/content/docs/en/tips/flow.mdx
index 1a029e8fe..937ddfcc6 100644
--- a/src/content/docs/en/tips/flow.mdx
+++ b/src/content/docs/en/tips/flow.mdx
@@ -9,23 +9,20 @@ import Figure from "~/components/Figure.astro";
## 1. Direct PG integration payment flow
-
+
> For direct PG integration, payment request processing generally involves **2 transactions**.
>
> 1. **Get authentication key** for payment request.
> 2. **Request payment**.
->
-> This requires covering several backend development points, and facing a **triple challenge** of complex integration modules and sample pages and comprehending complex and inconvenient integration manuals.
+
+> This requires covering several backend development points,
+> and facing a **triple challenge** of complex integration modules
+> and sample pages and comprehending complex and inconvenient integration manuals.
## 2. i'mport payment flow
-
+
-> For i'mport payment integration, the complex PG integration module part is handled by i'mport so that you can easily process payment without additional effort.
+> For i'mport payment integration, the complex PG integration module part is handled by i'mport
+> so that you can easily process payment without additional effort.
diff --git a/src/content/docs/en/tips/pg-codes.mdx b/src/content/docs/en/tips/pg-codes.mdx
index ca107f243..f211f06f0 100644
--- a/src/content/docs/en/tips/pg-codes.mdx
+++ b/src/content/docs/en/tips/pg-codes.mdx
@@ -31,4 +31,3 @@ description: JavaScript SDK PG codes
| Toss Simple Pay | `tosspay` |
| Smartro | `smartro` |
| Settlebank | `settle` |
-
diff --git a/src/content/docs/en/tips/redirect.mdx b/src/content/docs/en/tips/redirect.mdx
index d5470f6a5..6fb5b9f36 100644
--- a/src/content/docs/en/tips/redirect.mdx
+++ b/src/content/docs/en/tips/redirect.mdx
@@ -3,22 +3,22 @@ title: What is redirection?
description: Learn about page redirection.
---
-### Redirecting the current page to a new page.
+## Redirecting the current page to a new page.
![]()
-### Why do you need redirection?
+## Why do you need redirection?
- To redirect to the new URL when a page's URL changes
- To redirect an invalid subdomain to another domain
- To redirect to another page for log-in or authentication purposes
-### There are two types of redirections as follows:
+## There are two types of redirections as follows:
- **Redirection 301**
- \- Redirect immediately without processing any server-side or client-side code
+ \- Redirect immediately without processing any server-side or client-side code
- **Redirection 302**
- \- Redirect temporarily using a script or html tag
+ \- Redirect temporarily using a script or html tag
diff --git a/src/content/docs/en/tips/tax.mdx b/src/content/docs/en/tips/tax.mdx
index 4ade80d7b..6f2e11c3d 100644
--- a/src/content/docs/en/tips/tax.mdx
+++ b/src/content/docs/en/tips/tax.mdx
@@ -5,13 +5,13 @@ description: Learn how to set the tax-free amount when requesting a payment.
import Hint from "~/components/Hint.astro";
-This guide is intended for businesses who sell tax-free products and services as stipulated in [**Article 26 of the VAT Act (Supply of Tax-Free Goods or Services)**](https://txsi.hometax.go.kr/docs/customer/comment/comment_jomun_main_internet.jsp?node_id=null&lawid=001571&jomunkey=0026005&lawnm=%EB%B6%80%EA%B0%80%EA%B0%80%EC%B9%98%EC%84%B8%EB%B2%95&jomun_nm=%EC%A0%9C26%EC%A1%B0%E3%80%90%EC%9E%AC%ED%99%94%20%EB%98%90%EB%8A%94%20%EC%9A%A9%EC%97%AD%EC%9D%98%20%EA%B3%B5%EA%B8%89%EC%97%90%20%EB%8C%80%ED%95%9C%20%EB%A9%B4%EC%84%B8%E3%80%91&public_ilja=20161220&public_no=14387).
+This guide is intended for businesses who sell tax-free products and services as stipulated in [**Article 26 of the VAT Act (Supply of Tax-Free Goods or Services)**](https://txsi.hometax.go.kr/docs/customer/comment/comment_jomun_main_internet.jsp?node_id=null\&lawid=001571\&jomunkey=0026005\&lawnm=%EB%B6%80%EA%B0%80%EA%B0%80%EC%B9%98%EC%84%B8%EB%B2%95\&jomun_nm=%EC%A0%9C26%EC%A1%B0%E3%80%90%EC%9E%AC%ED%99%94%20%EB%98%90%EB%8A%94%20%EC%9A%A9%EC%97%AD%EC%9D%98%20%EA%B3%B5%EA%B8%89%EC%97%90%20%EB%8C%80%ED%95%9C%20%EB%A9%B4%EC%84%B8%E3%80%91\&public_ilja=20161220\&public_no=14387).
If you are a general business that does not sell the goods or services specified in this article,
you may skip this guide. A 10% VAT is automatically applied through the PG or credit card company
for such businesses.
-### Getting Tax-free Merchant ID through PG Contract
+## Getting Tax-free Merchant ID through PG Contract
If you are a **tax-free business**, you can submit a business registration card to prove your tax-exempt status when signing a PG contract. You will receive a merchant ID that allows you to set the following tax-free related properties when requesting a payment using `IMP.`**`request_pay`**.
@@ -23,13 +23,12 @@ and tax-free amounts. They set the `tax_free` property to indicate the tax-free
order.
-**Merchant ID**
-
-The name of the merchant ID issued after applying for and signing a PG contract varies by PG. For example, the merchant ID for KG INICIS is `Merchant ID (MID)`, Kakao Pay is `Member Code (CID)`, and Naver Pay is `Partner ID`.
+ **Merchant ID**
+ The name of the merchant ID issued after applying for and signing a PG contract varies by PG. For example, the merchant ID for KG INICIS is `Merchant ID (MID)`, Kakao Pay is `Member Code (CID)`, and Naver Pay is `Partner ID`.
-#### Three types of merchant IDs can be issued according to your business's tax-exempt status.
+### Three types of merchant IDs can be issued according to your business's tax-exempt status.
> **Tax-free merchant ID**
>
@@ -54,15 +53,14 @@ The name of the merchant ID issued after applying for and signing a PG contract
> property.
-**`tax_free` is required**
-
-For transactions using combination merchant ID, you must set **both the `amount` and `tax_free` properties**. If the `tax_free` value is missing, an error may occur when you attempt to open the payment page for some PGs.
+ **`tax_free` is required**
-Note that KG Inicis **processes all payments as tax-free**; if you change to a combination merchant ID while using a taxable merchant ID, all previous taxed payments are converted to tax-free payments.
+ For transactions using combination merchant ID, you must set **both the `amount` and `tax_free` properties**. If the `tax_free` value is missing, an error may occur when you attempt to open the payment page for some PGs.
+ Note that KG Inicis **processes all payments as tax-free**; if you change to a combination merchant ID while using a taxable merchant ID, all previous taxed payments are converted to tax-free payments.
-### Applying tax_free setting
+## Applying tax\_free setting
The scenarios in this section show how to set the `amount` and `tax_free` properties when purchasing
tax-free and/or taxable items.
@@ -73,20 +71,22 @@ as follows:
- Plant seedlings: **tax-free**, 11,000 won each
- Vase: **subject to VAT**, 22,000 won each
-### CASE 01. Purchasing only tax-free items
+## CASE 01. Purchasing only tax-free items
For a purchase of one seedling, set the total payment amount to 11,000 won, and the total tax-free
amount to 11,000 won as follows:
-```javascript title="JavaScript"
- IMP.request_pay({
- amount: 11000, // total payment amount
- tax_free: 11000, // total tax-free amount
- ...
- }, function (rsp) {
- ...
- });
-
+```ts title="JavaScript"
+IMP.request_pay(
+ {
+ amount: 11000, // total payment amount
+ tax_free: 11000, // total tax-free amount
+ // ...
+ },
+ function (rsp) {
+ // ...
+ },
+);
```
In this case, the total amount of 11,000 won is tax-free, and the final payment is calculated as
@@ -95,20 +95,22 @@ follows (terminology may vary by PG):
- Total tax-free amount: 11,000 won
- VAT: 0 won
-### CASE 02. Purchasing only taxable items
+## CASE 02. Purchasing only taxable items
For a purchase of one vase, set the total payment amount to 22,000 won, and the total tax-free
amount to 0 won as follows:
-```javascript title="JavaScript"
- IMP.request_pay({
- amount: 22000, // total payment amount
- tax_free: 0, // total tax-free amount
- ...
- }, function (rsp) {
- ...
- });
-
+```ts title="JavaScript"
+IMP.request_pay(
+ {
+ amount: 22000, // total payment amount
+ tax_free: 0, // total tax-free amount
+ // ...
+ },
+ function (rsp) {
+ // ...
+ },
+);
```
In this case, a 10% VAT is applied to the total amount of 22,000 won, and the final payment is
@@ -117,19 +119,22 @@ calculated as follows:
- Total item price: 20,000 won
- VAT: 2,000 won
-### CASE 03. Purchasing both tax-free and taxable items
+## CASE 03. Purchasing both tax-free and taxable items
For a purchase of 3 seedlings and 1 vase, set the total payment amount to 55,000 (33,000 + 22,000)
won, and the total tax-free amount to 33,000 won (for seedlings) as follows:
-```javascript title="JavaScript"
- IMP.request_pay({
- amount: 55000, // total payment amount
- tax_free: 33000, // total tax-free amount
- ...
- }, function (rsp) {
- ...
- });
+```ts title="JavaScript"
+IMP.request_pay(
+ {
+ amount: 55000, // total payment amount
+ tax_free: 33000, // total tax-free amount
+ // ...
+ },
+ function (rsp) {
+ // ...
+ },
+);
```
In this case, a 10% VAT is applied to the total taxable amount of 22,000 won, and the final payment
diff --git a/src/content/docs/ko/api-v2/applications.mdx b/src/content/docs/ko/api-v2/applications.mdx
index 7a420562c..b3a588ff1 100644
--- a/src/content/docs/ko/api-v2/applications.mdx
+++ b/src/content/docs/ko/api-v2/applications.mdx
@@ -8,1022 +8,952 @@ import Swagger from "~/components/gitbook/swagger/Swagger.astro";
import SwaggerDescription from "~/components/gitbook/swagger/SwaggerDescription.astro";
import SwaggerParameter from "~/components/gitbook/swagger/SwaggerParameter.astro";
import SwaggerResponse from "~/components/gitbook/swagger/SwaggerResponse.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
## ⌨ 하위상점의 전자결제 신청 정보를 가져오기 (호스팅사 > 포트원)
-
-하위상점 등록 API를 통해서 호스팅사의 사업자 정보를 포트원에 전달하면 전자결제 신청을 위해 하위상점의 전자결제 신청 정보, 계약 진행 상태 정보를 가져옵니다.
-
-
-
-### Parameters
-
-#### Header
-
-
-jwt 토큰 헤더
-
-
-
-#### Path
-
-
-store의 id
-
-
-
-### Responses
-
-
-
-
-**`applications`** **\*** **Array\[ApplicationPublic]**
-
-전자결제 신청내역
-
-
-
ApplicationPublic
-
-**`id`** **\*** **string**
-
-전자결제 신청 id
-
----
-
-**`store_id`** **string**
-
-전자결제 신청한 store id
-
----
-
-**`pg_company`** **\*** **PgCompany**
-
-PG사
-
-`"UNIDENTIFIED"`, `"NICE"`, `"KCP"`, `"KICC"`, `"DANAL"`, `"SETTLE"`, `"JTNET"`, `"INICIS"`, `"SMARTRO"`, `"BLUEWALNUT"`, `"TOSSPAYMENTS"`, `"DAOU"`, `"KSNET"`, `"MOBILIANS"`, `"ALIPAY"`, `"EXIMBAY"`, `"PAYPAL"`, `"PAYMENTWALL"`, `"NAVERPAY"`, `"NAVERCO"`, `"KAKAOPAY"`, `"TOSSPAY"`, `"CHAI"`, `"PAYCO"`, `"SMILEPAY"`
+
+ 하위상점 등록 API를 통해서 호스팅사의 사업자 정보를 포트원에 전달하면 전자결제 신청을 위해 하위상점의 전자결제 신청 정보, 계약 진행 상태 정보를 가져옵니다.
+
----
+ ### Parameters
-**`methods`** **\*** **Array\[MethodAndType]**
+ #### Header
-해당 PG사로 신청한 결제수단 및 방식
+
+ jwt 토큰 헤더
+
-`"CARD_GENERAL"`, `"CARD_SUBSCRIBE"`, `"CARD_KEYIN"`, `"TRANS_GENERAL"`, `"VBANK_GENERAL"`, `"PHONE_GENERAL"`, `"PHONE_SUBSCRIBE"`, `"GIFT_CARD_GENERAL"`, `"ABROAD_GENERAL"`, `"MY_ACCOUNT_GENERAL"`, `"NAVERPAY_GENERAL"`, `"NAVERCO_GENERAL"`, `"KAKAOPAY_GENERAL"`, `"TOSSPAY_GENERAL"`, `"PAYCO_GENERAL"`, `"SMILEPAY_GENERAL"`, `"CERTIFICATION_PHONE"`, `"CERTIFICATION_UNIFIED"`
+ #### Path
----
+
+ store의 id
+
-**`status`** **\*** **ApplicationStatusClass**
+ ### Responses
-신청 상태 대분류
+
+
+
+ **`applications`** **\*** **Array\[ApplicationPublic]**
-`"RECEPTION_SCHEDULED"`, `"TRANSFER"`, `"RECEPTION_PENDING"`, `"RECEPTION_COMPLETED"`, `"APPLICATION_CANCELED"`, `"MERCHANT_REVIEWING"`, `"CONTRACT_PROCESSING"`, `"CONTRACT_COMPLETED"`, `"CONTRACT_CANCELED"`, `"CONTRACT_PENDING"`, `"CONTRACT_REJECTED"`, `"SERVICE_CLOSED"`, `"SERVICE_OPEN"`
+ 전자결제 신청내역
----
+
+
+
+ **`cavv`** **\*** **string**
+
+ ---
+
+ **`xid`** **\*** **string**
+
+ ---
+
+ **`eci`** **\*** **string**
+
+ ---
+
+
+ ---
+
+
+
+
+
+ **`card`** **InstantBillingKeyCardForm**
+
+ 빌링키 발급 시에 필요한 카드 관련 정보
+
+
+
InstantBillingKeyCardForm
+
+ **`card_credential`** **\*** **CardCredential**
+
+ 카드를 이용한 결제 및 빌링키 발급에 필요한 인증 관련 정보
+
+ ---
+
+ **`cvc`** **string**
+
+ ---
+
+ **`vbv`** **VBV**
+
+ 3DS 인증 결과를 담는 객체 (Verified by Visa)
+
+ ---
+
+
+ ---
+
+ **`mobile_phone`** **MobileForm**
+
+ 휴대폰을 이용한 소액결제와 정기결제를 위한 빌링키 발급 시에 사용하는 휴대폰 관련 정보
+
+
+
-
-**`cavv`** **\*** **string**
-
----
-
-**`xid`** **\*** **string**
-
----
-
-**`eci`** **\*** **string**
-
----
-
-
-
----
-
-
-
-
-
-
-**`card`** **InstantBillingKeyCardForm**
-
-빌링키 발급 시에 필요한 카드 관련 정보
-
-
-
InstantBillingKeyCardForm
-
-**`card_credential`** **\*** **CardCredential**
-
-카드를 이용한 결제 및 빌링키 발급에 필요한 인증 관련 정보
-
----
-
-**`cvc`** **string**
-
----
-
-**`vbv`** **VBV**
-
-3DS 인증 결과를 담는 객체 (Verified by Visa)
-
----
-
-
-
----
-
-**`mobile_phone`** **MobileForm**
-
-휴대폰을 이용한 소액결제와 정기결제를 위한 빌링키 발급 시에 사용하는 휴대폰 관련 정보
-
-
-
+ **`params`** **object**
-**`code`** **\*** **string**
+ 에러 세부사항
-웹훅 응답 http 코드
+ ---
+
+
+
+
----
+## ⌨ 결제내역 다건조회
-**`header`** **\*** **object**
+
+
+ 결제내역들을 조회할 수 있는 API입니다. 실제 결제 발생 이후 조회되기까지 지연이 있으니 검증을 위해서는
-응답 header
+ [결제내역 단건조회](payment#getPayment)
----
+ 를 이용해주세요. 현재 page \* limit이 50000 이상이 되는 쿼리를 허용하지 않는 제약을 갖고있습니다. 많은 양의 데이터를 받아올 경우 날짜범위를 좁혀서 사용해주세요. 추후 50000개 이상 대량의 데이터를 한번에 편리하게 쿼리할 수 있도록 하는 수정이 예정되어있습니다.
+
-**`body`** **\*** **string**
+ ### Parameters
-응답 body
+ #### Query
----
+
+ 하위 상점 ID - Merchant 사용자만 사용가능하며, 지정되지 않은 경우 고객사 전체 결제건을 조회합니다.
+
-**`responded_at`** **\*** **string**
+
+ 어떤 시각을 기준으로 조회를 할 것인지 선택합니다.
-응답 시각
+ - `REQUESTED_AT`: 결제 요청 시각을 기준으로 조회합니다.
----
+ - `STATUS_UPDATED_AT`: 상태 승인 시각을 기준으로 조회합니다. 결제 건의 최종 상태에 따라 검색 기준이 다르게 적용됩니다.
+ - `ready` -> 결제 요청 시각 기준
+ - `paid` -> 결제 완료 시각 기준
+ - `cancelled` -> 결제 취소 시각 기준
+ - `failed` -> 결제 실패 시각 기준
-
+ 값을 넣지 않으면 `STATUS_UPDATED_AT` 으로 자동 적용됩니다.
+
----
+
+ 결제 요청/상태 승인 시각 범위의 시작 - 값을 넣지 않으면 `end`의 90일 전으로 설정됩니다.
+
-**`triggered_at`** **string**
+
+ 결제 요청/상태 승인 시각 범위의 끝 - 값을 넣지 않으면 현재 시각으로 설정됩니다.
+
-웹훅 처리 시작 시각
+
+ 결제상태 리스트 - 값을 넣지 않으면 결제상태 필터링이 적용되지 않습니다.
+
----
+
+ 결제수단 리스트 - 값을 넣지 않으면 결제수단 필터링이 적용되지 않습니다.
+
-
-
+
+ 결제대행사 리스트 - 값을 넣지 않으면 결제대행사 필터링이 적용되지 않습니다.
+
-
+
+ 테스트결제 필터링
+
-
-
-
-**`code`** **\*** **string**
+
+ 정기결제 필터링
+
-`"UNAUTHORIZED"`
+
+ 통합검색 항목
+
----
+
+ 통합검색 입력값
+
-**`params`** **object**
+
+ 페이지 - 0부터 시작합니다.
+
-에러 세부사항
+
+ 페이지 크기 (최대 1000까지 허용)
+
----
+
+ 정렬 기준
-
-
+ `REQUESTED_AT`
-
+ : 결제요청시각
-
-
-
-**`code`** **\*** **string**
+ `STATUS_UPDATED_AT`
-`"PAYMENT_NOT_FOUND"`
+ : 상태변경시각
+
----
+
+ 정렬 방향
-**`params`** **object**
+ `DESCENDING`
-에러 세부사항
+ : 내림차순
----
+ `ASCENDING`
-
-
+ : 오름차순
+
-
+ ### Responses
-
-
-
-**`code`** **\*** **string**
+
+
+
+ **`current_page`** **\*** **integer**
-`"PORTONE_ERROR"`
+ ---
----
+ **`total_page`** **\*** **integer**
-**`params`** **object**
+ ---
-에러 세부사항
+ **`total_count`** **\*** **integer**
----
+ ---
-
-
+ **`payments`** **\*** **Array\[Payment]**
-
+ 결제내역
-
+
+
Payment
-## ⌨ 결제내역 다건조회
+ **`id`** **\*** **string**
-
-
-결제내역들을 조회할 수 있는 API입니다. 실제 결제 발생 이후 조회되기까지 지연이 있으니 검증을 위해서는
+ 고객사에서 입력한 결제 ID
-[결제내역 단건조회](payment#getPayment)
+ ---
-를 이용해주세요. 현재 page \* limit이 50000 이상이 되는 쿼리를 허용하지 않는 제약을 갖고있습니다. 많은 양의 데이터를 받아올 경우 날짜범위를 좁혀서 사용해주세요. 추후 50000개 이상 대량의 데이터를 한번에 편리하게 쿼리할 수 있도록 하는 수정이 예정되어있습니다.
+ **`merchant_id`** **\*** **string**
-
+ 고객사 ID
-### Parameters
+ ---
-#### Query
+ **`store_id`** **\*** **string**
-
-하위 상점 ID - Merchant 사용자만 사용가능하며, 지정되지 않은 경우 고객사 전체 결제건을 조회합니다.
+ 하위 상점 ID
-
-
-어떤 시각을 기준으로 조회를 할 것인지 선택합니다.
+ ---
-- `REQUESTED_AT`: 결제 요청 시각을 기준으로 조회합니다.
-- `STATUS_UPDATED_AT`: 상태 승인 시각을 기준으로 조회합니다. 결제 건의 최종 상태에 따라 검색 기준이 다르게 적용됩니다.
- - `ready` -> 결제 요청 시각 기준
- - `paid` -> 결제 완료 시각 기준
- - `cancelled` -> 결제 취소 시각 기준
- - `failed` -> 결제 실패 시각 기준
+ **`transactions`** **\*** **Array\[Transaction]**
-값을 넣지 않으면 `STATUS_UPDATED_AT` 으로 자동 적용됩니다.
+ 동일한 `payment_id`로 결제시도된 결제내역들
-
-
-결제 요청/상태 승인 시각 범위의 시작 - 값을 넣지 않으면 `end`의 90일 전으로 설정됩니다.
+ ---
+
-
-
-결제 요청/상태 승인 시각 범위의 끝 - 값을 넣지 않으면 현재 시각으로 설정됩니다.
+ ---
+
-
-
-결제상태 리스트 - 값을 넣지 않으면 결제상태 필터링이 적용되지 않습니다.
+
+ **`detail`** **CardDetail**
-
-
-결제수단 리스트 - 값을 넣지 않으면 결제수단 필터링이 적용되지 않습니다.
+ 카드 정보
-
-
-결제대행사 리스트 - 값을 넣지 않으면 결제대행사 필터링이 적용되지 않습니다.
+
+
+ **`status`** **\*** **TransactionStatus**
-**`detail`** **CardDetail**
+ 결제 건의 상태를 나타내는 enum string
-카드 정보
+ `"READY"`, `"PENDING"`, `"VIRTUAL_ACCOUNT_ISSUED"`, `"PAID"`, `"FAILED"`, `"PARTIAL_CANCELLED"`, `"CANCELLED"`
----
+ ---
-**`number`** **string**
+ **`amount`** **\*** **TransactionAmount**
-마스킹된 카드 번호
+ 결제 금액 및 통화 관련 세부 정보
----
+
+
-`"NORMAL"`, `"FIXED"`
+ **`cavv`** **\*** **string**
----
+ ---
-**`pg_account_id`** **string**
+ **`xid`** **\*** **string**
-고정식 가상계좌 방식에서, 고객사가 가상계좌 번호를 관리하지 않고 PG사가 pg_account_id에 매핑되는 가상계좌 번호를 내려줄 때 사용하는 필드입니다. 동일한 pg_account_id로 가상계좌 발급 요청시에는 항상 같은 가상계좌 번호가 내려옵니다. account_type이 FIXED일 때만 유효하며, account_number 필드와 함께 사용할 수 없습니다.
+ ---
----
+ **`eci`** **\*** **string**
-**`account_number`** **string**
+ ---
+
-고정식 가상계좌 방식에서, PG사로부터 일정 갯수의 가상계좌 번호를 미리 전달받았을 때 사용하는 필드입니다. 고객사로부터 전달받은 가상계좌 번호를 직접 입력하면 됩니다. account_type이 FIXED일 때만 유효하며, pg_account_id 필드와 함께 사용할 수 없습니다.
+ ---
----
+ **`card_installment_plan`** **integer**
-**`cash_receipt_form`** **object**
+ 카드 할부 개월 수
-현금영수증 발급을 위해 필요한 정보
+ ---
----
+ **`use_free_installment_plan`** **boolean**
-**`remittee_name`** **string**
+ 무이자 할부 적용 여부
-예금주명
+ ---
----
+ **`use_free_interest_from_mall`** **boolean**
-
+ ---
+
----
+
+ **`card`** **InstantCardForm**
-
+ 카드를 이용한 결제 & 빌링키 발급 시에 필요한 카드 관련 정보
-
-**`bank`** **\*** **Bank**
+
+
+ **`vbv`** **VBV**
-**`valid_hours`** **integer**
+ 3DS 인증 결과를 담는 객체 (Verified by Visa)
----
+ ---
-**`due_date`** **string**
+ **`card_installment_plan`** **integer**
----
+ 카드 할부 개월 수
-
+ ---
----
+ **`use_free_installment_plan`** **boolean**
-**`account_type`** **\*** **virtual_account_type_VirtualAccountType**
+ 무이자 할부 적용 여부
-가상계좌 유형(일반 or 고정)
+ ---
-`"NORMAL"`, `"FIXED"`
+ **`use_free_interest_from_mall`** **boolean**
----
+ ---
+
-**`pg_account_id`** **string**
+ ---
-고정식 가상계좌 방식에서, 고객사가 가상계좌 번호를 관리하지 않고 PG사가 pg_account_id에 매핑되는 가상계좌 번호를 내려줄 때 사용하는 필드입니다. 동일한 pg_account_id로 가상계좌 발급 요청시에는 항상 같은 가상계좌 번호가 내려옵니다. account_type이 FIXED일 때만 유효하며, account_number 필드와 함께 사용할 수 없습니다.
+ **`virtual_account`** **InstantVirtualAccountForm**
----
+ 가상계좌 발급을 위해 필요한 가상계좌 발급 관련 정보
-**`account_number`** **string**
+
+
InstantVirtualAccountForm
-고정식 가상계좌 방식에서, PG사로부터 일정 갯수의 가상계좌 번호를 미리 전달받았을 때 사용하는 필드입니다. 고객사로부터 전달받은 가상계좌 번호를 직접 입력하면 됩니다. account_type이 FIXED일 때만 유효하며, pg_account_id 필드와 함께 사용할 수 없습니다.
+ **`bank`** **\*** **Bank**
----
+ 은행
-**`cash_receipt_form`** **object**
+ `"BANK_OF_KOREA"`, `"KOREA_DEVELOPMENT_BANK"`, `"INDUSTRIAL_BANK_OF_KOREA"`, `"KOOKMIN_BANK"`, `"SUHYUP_BANK"`, `"EXPORT_IMPORT_BANK_OF_KOREA"`, `"NH_NONGHYUP_BANK"`, `"LOCAL_NONGHYUP"`, `"WOORI_BANK"`, `"SC_BANK_KOREA"`, `"CITI_BANK_KOREA"`, `"DAEGU_BANK"`, `"BUSAN_BANK"`, `"GWANGJU_BANK"`, `"JEJU_BANK"`, `"JEONBUK_BANK"`, `"KYONGNAM_BANK"`, `"KFCC"`, `"SHINHYUP"`, `"SAVINGS_BANK_KOREA"`, `"MORGAN_STANLEY_BANK"`, `"HSBC_BANK"`, `"DEUTSCHE_BANK"`, `"JP_MORGAN_CHASE_BANK"`, `"MIZUHO_BANK"`, `"MUFG_BANK"`, `"BANK_OF_AMERICA_BANK"`, `"BNP_PARIBAS_BANK"`, `"ICBC"`, `"BANK_OF_CHINA"`, `"NATIONAL_FORESTRY_COOPERATIVE_FEDERATION"`, `"UNITED_OVERSEAS_BANK"`, `"BANK_OF_COMMUNICATIONS"`, `"CHINA_CONSTRUCTION_BANK"`, `"EPOST"`, `"KODIT"`, `"KIBO"`, `"HANA_BANK"`, `"SHINHAN_BANK"`, `"K_BANK"`, `"KAKAO_BANK"`, `"TOSS_BANK"`, `"KCIS"`, `"DAISHIN_SAVINGS_BANK"`, `"SBI_SAVINGS_BANK"`, `"HK_SAVINGS_BANK"`, `"WELCOME_SAVINGS_BANK"`, `"SHINHAN_SAVINGS_BANK"`, `"KYOBO_SECURITIES"`, `"DAISHIN_SECURITIES"`, `"MERITZ_SECURITIES"`, `"MIRAE_ASSET_SECURITIES"`, `"BOOKOOK_SECURITIES"`, `"SAMSUNG_SECURITIES"`, `"SHINYOUNG_SECURITIES"`, `"SHINHAN_FINANCIAL_INVESTMENT"`, `"YUANTA_SECURITIES"`, `"EUGENE_INVESTMENT_SECURITIES"`, `"KAKAO_PAY_SECURITIES"`, `"TOSS_SECURITIES"`, `"KOREA_FOSS_SECURITIES"`, `"HANA_FINANCIAL_INVESTMENT"`, `"HI_INVESTMENT_SECURITIES"`, `"KOREA_INVESTMENT_SECURITIES"`, `"HANWHA_INVESTMENT_SECURITIES"`, `"HYUNDAI_MOTOR_SECURITIES"`, `"DB_FINANCIAL_INVESTMENT"`, `"KB_SECURITIES"`, `"KTB_INVESTMENT_SECURITIES"`, `"NH_INVESTMENT_SECURITIES"`, `"SK_SECURITIES"`, `"SGI"`, `"KIWOOM_SECURITIES"`, `"EBEST_INVESTMENT_SECURITIES"`, `"CAPE_INVESTMENT_CERTIFICATE"`
-현금영수증 발급을 위해 필요한 정보
+ ---
-
-
cash_receipt_form
+ **`account_expiry`** **\*** **object**
-**`receipt_type`** **\*** **cash_receipt_type_CashReceiptType**
+ valid\_hours와 due\_date 둘 중 하나의 값만 채워야 함
-현금영수증 용도. personal = 소득공제용, corporate = 지출증빙용, anonymous = 국세청번호 자동발급 케이스
+ ---
-`"PERSONAL"`, `"CORPORATE"`, `"ANONYMOUS"`
+ **`account_type`** **\*** **virtual\_account\_type\_VirtualAccountType**
----
+ 가상계좌 유형(일반 or 고정)
-**`registration_number`** **\*** **string**
+ `"NORMAL"`, `"FIXED"`
-현금영수증 신청 번호
+ ---
----
+ **`pg_account_id`** **string**
-**`business_number`** **string**
+ 고정식 가상계좌 방식에서, 고객사가 가상계좌 번호를 관리하지 않고 PG사가 pg\_account\_id에 매핑되는 가상계좌 번호를 내려줄 때 사용하는 필드입니다. 동일한 pg\_account\_id로 가상계좌 발급 요청시에는 항상 같은 가상계좌 번호가 내려옵니다. account\_type이 FIXED일 때만 유효하며, account\_number 필드와 함께 사용할 수 없습니다.
-현금영수증을 발급할 사업자등록번호
+ ---
----
+ **`account_number`** **string**
-
+ 고정식 가상계좌 방식에서, PG사로부터 일정 갯수의 가상계좌 번호를 미리 전달받았을 때 사용하는 필드입니다. 고객사로부터 전달받은 가상계좌 번호를 직접 입력하면 됩니다. account\_type이 FIXED일 때만 유효하며, pg\_account\_id 필드와 함께 사용할 수 없습니다.
----
+ ---
-**`remittee_name`** **string**
+ **`cash_receipt_form`** **object**
-예금주명
+ 현금영수증 발급을 위해 필요한 정보
----
+ ---
-
-
+ **`remittee_name`** **string**
-
-
-**`id`** **\*** **string**
+ 예금주명
----
+ ---
+
-**`name`** **\*** **string**
+ ---
+
----
+
+ **`bank`** **\*** **Bank**
-**`tag`** **string**
+ 은행
----
+ `"BANK_OF_KOREA"`, `"KOREA_DEVELOPMENT_BANK"`, `"INDUSTRIAL_BANK_OF_KOREA"`, `"KOOKMIN_BANK"`, `"SUHYUP_BANK"`, `"EXPORT_IMPORT_BANK_OF_KOREA"`, `"NH_NONGHYUP_BANK"`, `"LOCAL_NONGHYUP"`, `"WOORI_BANK"`, `"SC_BANK_KOREA"`, `"CITI_BANK_KOREA"`, `"DAEGU_BANK"`, `"BUSAN_BANK"`, `"GWANGJU_BANK"`, `"JEJU_BANK"`, `"JEONBUK_BANK"`, `"KYONGNAM_BANK"`, `"KFCC"`, `"SHINHYUP"`, `"SAVINGS_BANK_KOREA"`, `"MORGAN_STANLEY_BANK"`, `"HSBC_BANK"`, `"DEUTSCHE_BANK"`, `"JP_MORGAN_CHASE_BANK"`, `"MIZUHO_BANK"`, `"MUFG_BANK"`, `"BANK_OF_AMERICA_BANK"`, `"BNP_PARIBAS_BANK"`, `"ICBC"`, `"BANK_OF_CHINA"`, `"NATIONAL_FORESTRY_COOPERATIVE_FEDERATION"`, `"UNITED_OVERSEAS_BANK"`, `"BANK_OF_COMMUNICATIONS"`, `"CHINA_CONSTRUCTION_BANK"`, `"EPOST"`, `"KODIT"`, `"KIBO"`, `"HANA_BANK"`, `"SHINHAN_BANK"`, `"K_BANK"`, `"KAKAO_BANK"`, `"TOSS_BANK"`, `"KCIS"`, `"DAISHIN_SAVINGS_BANK"`, `"SBI_SAVINGS_BANK"`, `"HK_SAVINGS_BANK"`, `"WELCOME_SAVINGS_BANK"`, `"SHINHAN_SAVINGS_BANK"`, `"KYOBO_SECURITIES"`, `"DAISHIN_SECURITIES"`, `"MERITZ_SECURITIES"`, `"MIRAE_ASSET_SECURITIES"`, `"BOOKOOK_SECURITIES"`, `"SAMSUNG_SECURITIES"`, `"SHINYOUNG_SECURITIES"`, `"SHINHAN_FINANCIAL_INVESTMENT"`, `"YUANTA_SECURITIES"`, `"EUGENE_INVESTMENT_SECURITIES"`, `"KAKAO_PAY_SECURITIES"`, `"TOSS_SECURITIES"`, `"KOREA_FOSS_SECURITIES"`, `"HANA_FINANCIAL_INVESTMENT"`, `"HI_INVESTMENT_SECURITIES"`, `"KOREA_INVESTMENT_SECURITIES"`, `"HANWHA_INVESTMENT_SECURITIES"`, `"HYUNDAI_MOTOR_SECURITIES"`, `"DB_FINANCIAL_INVESTMENT"`, `"KB_SECURITIES"`, `"KTB_INVESTMENT_SECURITIES"`, `"NH_INVESTMENT_SECURITIES"`, `"SK_SECURITIES"`, `"SGI"`, `"KIWOOM_SECURITIES"`, `"EBEST_INVESTMENT_SECURITIES"`, `"CAPE_INVESTMENT_CERTIFICATE"`
-**`code`** **string**
+ ---
----
+ **`account_expiry`** **\*** **object**
-**`quantity`** **\*** **integer**
+ valid\_hours와 due\_date 둘 중 하나의 값만 채워야 함
----
+
+
----
+ **`address_line_1`** **\*** **string**
-
-
+ 주소1
-## ⌨ 에스크로 구매완료
+ ---
-
-
+ **`address_line_2`** **\*** **string**
-
+ 주소2
-### Parameters
+ ---
-#### Path
+ **`city`** **string**
-
-결제 ID
+ 도시
-
+ ---
-#### Body
+ **`province`** **string**
-
+ 주, 도, 시
-
-
+ ---
-
+ **`country`** **country\_Country**
-### Responses
+ 국가
-
-
-
-**`completed_at`** **\*** **string**
+ `"AF"`, `"AX"`, `"AL"`, `"DZ"`, `"AS"`, `"AD"`, `"AO"`, `"AI"`, `"AQ"`, `"AG"`, `"AR"`, `"AM"`, `"AW"`, `"AU"`, `"AT"`, `"AZ"`, `"BH"`, `"BS"`, `"BD"`, `"BB"`, `"BY"`, `"BE"`, `"BZ"`, `"BJ"`, `"BM"`, `"BT"`, `"BO"`, `"BQ"`, `"BA"`, `"BW"`, `"BV"`, `"BR"`, `"IO"`, `"BN"`, `"BG"`, `"BF"`, `"BI"`, `"KH"`, `"CM"`, `"CA"`, `"CV"`, `"KY"`, `"CF"`, `"TD"`, `"CL"`, `"CN"`, `"CX"`, `"CC"`, `"CO"`, `"KM"`, `"CG"`, `"CD"`, `"CK"`, `"CR"`, `"CI"`, `"HR"`, `"CU"`, `"CW"`, `"CY"`, `"CZ"`, `"DK"`, `"DJ"`, `"DM"`, `"DO"`, `"EC"`, `"EG"`, `"SV"`, `"GQ"`, `"ER"`, `"EE"`, `"ET"`, `"FK"`, `"FO"`, `"FJ"`, `"FI"`, `"FR"`, `"GF"`, `"PF"`, `"TF"`, `"GA"`, `"GM"`, `"GE"`, `"DE"`, `"GH"`, `"GI"`, `"GR"`, `"GL"`, `"GD"`, `"GP"`, `"GU"`, `"GT"`, `"GG"`, `"GN"`, `"GW"`, `"GY"`, `"HT"`, `"HM"`, `"VA"`, `"HN"`, `"HK"`, `"HU"`, `"IS"`, `"IN"`, `"ID"`, `"IR"`, `"IQ"`, `"IE"`, `"IM"`, `"IL"`, `"IT"`, `"JM"`, `"JP"`, `"JE"`, `"JO"`, `"KZ"`, `"KE"`, `"KI"`, `"KP"`, `"KR"`, `"KW"`, `"KG"`, `"LA"`, `"LV"`, `"LB"`, `"LS"`, `"LR"`, `"LY"`, `"LI"`, `"LT"`, `"LU"`, `"MO"`, `"MK"`, `"MG"`, `"MW"`, `"MY"`, `"MV"`, `"ML"`, `"MT"`, `"MH"`, `"MQ"`, `"MR"`, `"MU"`, `"YT"`, `"MX"`, `"FM"`, `"MD"`, `"MC"`, `"MN"`, `"ME"`, `"MS"`, `"MA"`, `"MZ"`, `"MM"`, `"NA"`, `"NR"`, `"NP"`, `"NL"`, `"NC"`, `"NZ"`, `"NI"`, `"NE"`, `"NG"`, `"NU"`, `"NF"`, `"MP"`, `"NO"`, `"OM"`, `"PK"`, `"PW"`, `"PS"`, `"PA"`, `"PG"`, `"PY"`, `"PE"`, `"PH"`, `"PN"`, `"PL"`, `"PT"`, `"PR"`, `"QA"`, `"RE"`, `"RO"`, `"RU"`, `"RW"`, `"BL"`, `"SH"`, `"KN"`, `"LC"`, `"MF"`, `"PM"`, `"VC"`, `"WS"`, `"SM"`, `"ST"`, `"SA"`, `"SN"`, `"RS"`, `"SC"`, `"SL"`, `"SG"`, `"SX"`, `"SK"`, `"SI"`, `"SB"`, `"SO"`, `"ZA"`, `"GS"`, `"SS"`, `"ES"`, `"LK"`, `"SD"`, `"SR"`, `"SJ"`, `"SZ"`, `"SE"`, `"CH"`, `"SY"`, `"TW"`, `"TJ"`, `"TZ"`, `"TH"`, `"TL"`, `"TG"`, `"TK"`, `"TO"`, `"TT"`, `"TN"`, `"TR"`, `"TM"`, `"TC"`, `"TV"`, `"UG"`, `"UA"`, `"AE"`, `"GB"`, `"US"`, `"UM"`, `"UY"`, `"UZ"`, `"VU"`, `"VE"`, `"VN"`, `"VG"`, `"VI"`, `"WF"`, `"EH"`, `"YE"`, `"ZM"`, `"ZW"`
----
+ ---
+
-
+ ---
+
-
-
-
-
-
-**`code`** **\*** **string**
+## ⌨ 에스크로 구매완료
-`INVALID_REQUEST`: 파라미터를 포함한 요청을 처리하는 데에 실패했습니다. 올바른 형식의 파라미터를 전송했는지 확인해주세요.\
-`NOT_PAID`: 지불되지 않은 결제 건입니다.\
+
+
-`"INVALID_REQUEST"`, `"NOT_PAID"`
+ ### Parameters
----
+ #### Path
-**`params`** **object**
+
+ 결제 ID
+
-에러 상세 정보를 담은 파라미터 모음
+ #### Body
----
+
-
-
+
-
+ ### Responses
-
-
-
-**`code`** **\*** **string**
+
+
+
+ **`completed_at`** **\*** **string**
-`UNAUTHORIZED`: 권한이 없습니다. 올바른 API Key를 헤더에 제공했는지 확인해주세요.\
+ ---
+
+
+
-`"UNAUTHORIZED"`
+
+
+
+ **`code`** **\*** **string**
----
+ `INVALID_REQUEST`: 파라미터를 포함한 요청을 처리하는 데에 실패했습니다. 올바른 형식의 파라미터를 전송했는지 확인해주세요.\
+ `NOT_PAID`: 지불되지 않은 결제 건입니다.\\
-**`params`** **object**
+ `"INVALID_REQUEST"`, `"NOT_PAID"`
-에러 상세 정보를 담은 파라미터 모음
+ ---
----
+ **`params`** **object**
-
-
+ 에러 상세 정보를 담은 파라미터 모음
-
+ ---
+
+
+
-
-
-
-**`code`** **\*** **string**
+
+
+
+ **`code`** **\*** **string**
-`PERMISSION_DENIED`: 해당 요청을 수행하기 위한 권한이 없습니다.\
+ `UNAUTHORIZED`: 권한이 없습니다. 올바른 API Key를 헤더에 제공했는지 확인해주세요.\\
-`"PERMISSION_DENIED"`
+ `"UNAUTHORIZED"`
----
+ ---
-**`params`** **object**
+ **`params`** **object**
-에러 상세 정보를 담은 파라미터 모음
+ 에러 상세 정보를 담은 파라미터 모음
----
+ ---
+
+
+
-
-
+
+
+
+ **`code`** **\*** **string**
-
+ `PERMISSION_DENIED`: 해당 요청을 수행하기 위한 권한이 없습니다.\\
-
-
-
-**`code`** **\*** **string**
+ `"PERMISSION_DENIED"`
-`STORE_NOT_FOUND`: 하위 상점을 찾을 수 없습니다.\
-`PAYMENT_NOT_FOUND`: 해당하는 결제를 찾을 수 없습니다.\
+ ---
-`"STORE_NOT_FOUND"`, `"PAYMENT_NOT_FOUND"`
+ **`params`** **object**
----
+ 에러 상세 정보를 담은 파라미터 모음
-**`params`** **object**
+ ---
+
+
+
-에러 상세 정보를 담은 파라미터 모음
+
+
+
+ **`code`** **\*** **string**
----
+ `STORE_NOT_FOUND`: 하위 상점을 찾을 수 없습니다.\
+ `PAYMENT_NOT_FOUND`: 해당하는 결제를 찾을 수 없습니다.\\
-
-
+ `"STORE_NOT_FOUND"`, `"PAYMENT_NOT_FOUND"`
-
+ ---
-
-
-
-**`code`** **\*** **string**
+ **`params`** **object**
-`"PORTONE_ERROR"`, `"PG_PROVIDER_ERROR"`
+ 에러 상세 정보를 담은 파라미터 모음
----
+ ---
+
+
+
-**`params`** **object**
+
+
+
+ **`code`** **\*** **string**
-에러 상세 정보를 담은 파라미터 모음
+ `"PORTONE_ERROR"`, `"PG_PROVIDER_ERROR"`
----
+ ---
-
-
+ **`params`** **object**
-
+ 에러 상세 정보를 담은 파라미터 모음
+ ---
+
+
+
## - 가상계좌 말소
-
-
-
+
-### Parameters
+ ### Parameters
-#### Path
+ #### Path
결제 ID
-
+
#### Query
-{" "}
+ {" "}
-
- 하위 상점 ID - 값을 넣지 않으면 Merchant 유저의 기본값으로 설정된 상점의 id가
- 입력됩니다.
-
+
+ 하위 상점 ID - 값을 넣지 않으면 Merchant 유저의 기본값으로 설정된 상점의 id가
+ 입력됩니다.
+
@@ -10548,11 +10147,9 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
동일한 `payment_id`로 결제시도된 결제내역들
---
-
---
-
@@ -10610,7 +10207,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
카드전표인자명
---
-
---
@@ -10645,7 +10241,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
무이자할부 여부
---
-
---
@@ -10655,7 +10250,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
카드 포인트 사용여부
---
-
@@ -10706,7 +10300,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
카드전표인자명
---
-
@@ -10754,7 +10347,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
카드 포인트 사용여부
---
-
---
@@ -10771,7 +10363,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
표준 은행 코드 (계좌 이체시 입력됨)
---
-
---
@@ -10788,11 +10379,9 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
표준 은행 코드
---
-
---
-
@@ -10809,7 +10398,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
상품권 승인번호
---
-
@@ -10824,7 +10412,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
무이자할부 여부
---
-
@@ -10841,7 +10428,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
휴대전화번호
---
-
@@ -10876,7 +10462,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
상세 주소
---
-
@@ -10956,7 +10541,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
PG사에 등록된 고객사 ID
---
-
---
@@ -10973,19 +10557,18 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
---
- **`notifications`** **Array\[notification_Notification]**
+ **`notifications`** **Array\[notification\_Notification]**
웹훅 발송 내역
-
notification_Notification
+
notification\_Notification
**`webhook`** **Webhook**
웹훅 정보
---
-
---
@@ -11078,7 +10661,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
취소 금액 중 면세 금액
---
-
---
@@ -11143,7 +10725,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
구매자 우편번호
---
-
---
@@ -11180,7 +10761,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
결제근원의 IP 주소
---
-
---
@@ -11235,7 +10815,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
배송등록 처리 일자
---
-
---
@@ -11282,7 +10861,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
주문 수량
---
-
---
@@ -11335,7 +10913,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
PG사 전달 에러 메세지
---
-
---
@@ -11402,7 +10979,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
간편결제 정보 (충전식 간편결제일 경우 card와 transfer 값이 null임)
---
-
---
@@ -11479,7 +11055,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
영수증 url
---
-
---
@@ -11546,7 +11121,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
`"REQUESTED"`, `"FAILED"`, `"SUCCEEDED"`
---
-
---
@@ -11556,7 +11130,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
결제취소시각 - `status`가 `CANCELLED`인 경우 제공됩니다.
---
-
@@ -11565,7 +11138,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
표준 은행 코드
---
-
@@ -11620,7 +11192,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
`"PENDING"`, `"PARTIAL_FAILED"`, `"FAILED"`, `"COMPLETED"`
---
-
@@ -11702,7 +11273,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
요청 시각
---
-
---
@@ -11737,7 +11307,6 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
응답 시각
---
-
---
@@ -11747,10 +11316,8 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
웹훅 처리 시작 시각
---
-
-
@@ -11759,7 +11326,7 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
**`code`** **\*** **string**
`INVALID_REQUEST`: 파라미터를 포함한 요청을 처리하는 데에 실패했습니다. 올바른 형식의 파라미터를 전송했는지 확인해주세요.\
- `NOT_PAID`: 지불되지 않은 결제 건입니다.\
+ `NOT_PAID`: 지불되지 않은 결제 건입니다.\\
`"INVALID_REQUEST"`, `"NOT_PAID"`
@@ -11770,10 +11337,8 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
에러 상세 정보를 담은 파라미터 모음
---
-
-
@@ -11781,7 +11346,7 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
**`code`** **\*** **string**
- `UNAUTHORIZED`: 권한이 없습니다. 올바른 API Key를 헤더에 제공했는지 확인해주세요.\
+ `UNAUTHORIZED`: 권한이 없습니다. 올바른 API Key를 헤더에 제공했는지 확인해주세요.\\
`"UNAUTHORIZED"`
@@ -11792,10 +11357,8 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
에러 상세 정보를 담은 파라미터 모음
---
-
-
@@ -11803,7 +11366,7 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
**`code`** **\*** **string**
- `PERMISSION_DENIED`: 해당 요청을 수행하기 위한 권한이 없습니다.\
+ `PERMISSION_DENIED`: 해당 요청을 수행하기 위한 권한이 없습니다.\\
`"PERMISSION_DENIED"`
@@ -11814,10 +11377,8 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
에러 상세 정보를 담은 파라미터 모음
---
-
-
@@ -11826,7 +11387,7 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
**`code`** **\*** **string**
`STORE_NOT_FOUND`: 하위 상점을 찾을 수 없습니다.\
- `PAYMENT_NOT_FOUND`: 해당하는 결제를 찾을 수 없습니다.\
+ `PAYMENT_NOT_FOUND`: 해당하는 결제를 찾을 수 없습니다.\\
`"STORE_NOT_FOUND"`, `"PAYMENT_NOT_FOUND"`
@@ -11837,10 +11398,8 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
에러 상세 정보를 담은 파라미터 모음
---
-
-
@@ -11857,9 +11416,7 @@ valid_hours와 due_date 둘 중 하나의 값만 채워야 함
에러 상세 정보를 담은 파라미터 모음
---
-
-
diff --git a/src/content/docs/ko/api-v2/schedule.mdx b/src/content/docs/ko/api-v2/schedule.mdx
index de639f2dc..11130c12e 100644
--- a/src/content/docs/ko/api-v2/schedule.mdx
+++ b/src/content/docs/ko/api-v2/schedule.mdx
@@ -8,929 +8,885 @@ import Swagger from "~/components/gitbook/swagger/Swagger.astro";
import SwaggerDescription from "~/components/gitbook/swagger/SwaggerDescription.astro";
import SwaggerParameter from "~/components/gitbook/swagger/SwaggerParameter.astro";
import SwaggerResponse from "~/components/gitbook/swagger/SwaggerResponse.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
## ⌨ 정기결제예약 다건 조회
-
+
-
+ ### Parameters
-### Parameters
+ #### Query
-#### Query
+
+ 하위 상점 ID - 값을 넣지 않으면 Merchant 유저의 기본값으로 설정된 상점의 id가 입력됩니다.
+
-
-하위 상점 ID - 값을 넣지 않으면 Merchant 유저의 기본값으로 설정된 상점의 id가 입력됩니다.
+
+ 결제예약시각(
-
-
-결제예약시각(
+ `scheduled_at`
-`scheduled_at`
+ ) 범위의 시작 - 값을 넣지 않으면 파라미터 end의 90일 전으로 설정됩니다.
+
-) 범위의 시작 - 값을 넣지 않으면 파라미터 end의 90일 전으로 설정됩니다.
+
+ 결제예약시각(
-
-
-결제예약시각(
+ `scheduled_at`
-`scheduled_at`
+ ) 범위의 끝 - 값을 넣지 않으면 현재 시각으로 설정됩니다.
+
-) 범위의 끝 - 값을 넣지 않으면 현재 시각으로 설정됩니다.
+
+ 결제예약 상태 리스트
+
-
-
-결제예약 상태 리스트
+
+ 페이지 - 0부터 시작합니다.
+
-
-
-페이지 - 0부터 시작합니다.
+
+ 페이지 크기 (최대 1000까지 허용)
+
-
-
-페이지 크기 (최대 1000까지 허용)
+ ### Responses
-
+
+
+
+ **`current_page`** **\*** **integer**
-### Responses
+ ---
-
-
-
-**`current_page`** **\*** **integer**
+ **`total_page`** **\*** **integer**
----
+ ---
-**`total_page`** **\*** **integer**
+ **`total_count`** **\*** **integer**
----
+ ---
-**`total_count`** **\*** **integer**
+ **`schedules`** **\*** **Array\[Schedule]**
----
+ 결제예약정보
-**`schedules`** **\*** **Array\[Schedule]**
+
+
+
+ - 나이스페이
+ - NHN KCP
+ - 세틀뱅크
+ - 키움페이(구 다우, 페이조아)
+ - KSNET
+ - 토스페이먼츠 (신 모듈)
키인결제는 [**비인증 결제(1회성) API**](../../api/api-4/api-1) 또는 PG창을 이용하여 결제를 요청할 수 있습니다.
diff --git a/src/content/docs/ko/auth/guide-1/undefined.mdx b/src/content/docs/ko/auth/guide-1/undefined.mdx
index 976971db0..71e776693 100644
--- a/src/content/docs/ko/auth/guide-1/undefined.mdx
+++ b/src/content/docs/ko/auth/guide-1/undefined.mdx
@@ -3,61 +3,62 @@ title: 빌링키를 이용한 정기결제
description: customer_uid 로 정기(예약)결제 구현방법을 안내합니다.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-#### [빌링키 발급](../../api/api-2/api-1) 또는 [비 인증 결제(일회성)](../../api/api-4/api-1) API를 이용하여 customer_uid 를 획득했다면 원하는 형태의 정기 또는 예약결제를 이용할 수 있습니다.
+**[빌링키 발급](../../api/api-2/api-1) 또는 [비 인증 결제(일회성)](../../api/api-4/api-1) API를 이용하여
+customer\_uid를 획득했다면, 원하는 형태의 정기 또는 예약결제를 이용할 수 있습니다.**
-### **STEP 01.** 결제 예약하기
+## **STEP 01.** 결제 예약하기
-미래 특정 시점에 결제가 진행되도록 결제를 예약할 수 있습니다. 포트원 **결제 예약 API**를 이용하여 원하시는 시점에 결제 예약을 손쉽게 등록 할 수 있습니다.
+미래 특정 시점에 결제가 진행되도록 결제를 예약할 수 있습니다.
+포트원 **결제 예약 API**를 이용하여
+원하시는 시점에 결제 예약을 손쉽게 등록 할 수 있습니다.
-
-```javascript title="Node.js"
-// 결제 예약
- axios({
- url: `https://api.iamport.kr/subscribe/payments/schedule`,
- method: "post",
- headers: { "Authorization": access_token },
- data: {
- customer_uid: "gildong_0001_1234", // 카드(빌링키)와 1:1로 대응하는 값
- schedules: [
- {
- merchant_uid: "order_monthly_0001", // 주문 번호
- schedule_at: 1519862400, // 결제 시도 시각 in Unix Time Stamp. 예: 다음 달 1일
- amount: 8900,
- name: "월간 이용권 정기결제",
- buyer_name: "홍길동",
- buyer_tel: "01012345678",
- buyer_email: "gildong@gmail.com"
- }
- ]
- }
- });
-```
-
-
+
+ ```ts title="Node.js"
+ // 결제 예약
+ axios({
+ url: `https://api.iamport.kr/subscribe/payments/schedule`,
+ method: "post",
+ headers: { Authorization: access_token },
+ data: {
+ customer_uid: "gildong_0001_1234", // 카드(빌링키)와 1:1로 대응하는 값
+ schedules: [
+ {
+ merchant_uid: "order_monthly_0001", // 주문 번호
+ schedule_at: 1519862400, // 결제 시도 시각 in Unix Time Stamp. 예: 다음 달 1일
+ amount: 8900,
+ name: "월간 이용권 정기결제",
+ buyer_name: "홍길동",
+ buyer_tel: "01012345678",
+ buyer_email: "gildong@gmail.com",
+ },
+ ],
+ },
+ });
+ ```
+
-### **STEP 02.** 결제 결과 수신받기
+## **STEP 02.** 결제 결과 수신받기
예약한 시간에 결제가 시도되면 Webhook 이벤트가 발생하여 지정한 서버의 callback URL로 결제
번호(`imp_uid`)와 주문 번호(`merchant_uid`)가 전달됩니다. 웹훅으로 예약결제에 대한 결과를 수신으면
결제결과 완료 로직 처리를 진행하시면 됩니다.
-**포트원 Webhook**
-
-포트원 Webhook의 개념과 URL 설정 방법은 [**포트원 Webhook**](../../result/webhook) 문서를 참고하세요.
+ **포트원 Webhook**
+ 포트원 Webhook의 개념과 URL 설정 방법은 [**포트원 Webhook**](../../result/webhook) 문서를 참고하세요.
-
-```javascript title="server-side"
-// "/iamport-callback/schedule"에 대한 POST 요청을 처리
+
+ ```ts title="server-side"
+ // "/iamport-callback/schedule"에 대한 POST 요청을 처리
app.post("/iamport-callback/schedule", async (req, res) => {
try {
const { imp_uid, merchant_uid } = req.body;
@@ -65,25 +66,27 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
const getToken = await axios({
url: "https://api.iamport.kr/users/getToken",
method: "post", // POST method
- headers: { "Content-Type": "application/json" },
+ headers: { "Content-Type": "application/json" },
data: {
imp_key: "imp_apikey", // REST API 키
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f"
- }
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f",
+ },
});
const { access_token } = getToken.data; // 인증 토큰
// imp_uid로 포트원 서버에서 결제 정보 조회
const getPaymentData = await axios({
url: `https://api.iamport.kr/payments/${imp_uid}`, // imp_uid 전달
method: "get", // GET method
- headers: { "Authorization": access_token }
+ headers: { Authorization: access_token },
});
const paymentData = getPaymentData.data; // 조회한 결제 정보
const { status } = paymentData;
- if (status === "paid") { // 결제 성공적으로 완료
+ if (status === "paid") {
+ // 결제 성공적으로 완료
// DB에 결제 정보 저장
await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData }); // Mongoose
- ...
+ // ...
} else {
// 재결제 시도
}
@@ -91,21 +94,21 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
res.status(400).send(e);
}
});
-```
-
-
+ ```
+
### 반복결제 구현하기
-포트원 서버에 결제 예약 요청을 하고 예약한 시간에 결제가 시도되면 지정된 웹훅 URL을 통해서 서버에 알리는 과정을 반복적으로 수행하여 반복 결제를 구현할 수 있습니다.
+포트원 서버에 결제 예약 요청을 하고 예약한 시간에 결제가 시도되면 지정된 웹훅 URL을 통해서
+서버에 알리는 과정을 반복적으로 수행하여 반복 결제를 구현할 수 있습니다.
![]()
-
-```javascript title="server-side"
-// "/iamport-callback/schedule"에 대한 POST 요청을 처리
+
+ ```ts title="server-side"
+ // "/iamport-callback/schedule"에 대한 POST 요청을 처리
app.post("/iamport-callback/schedule", async (req, res) => {
try {
const { imp_uid, merchant_uid } = req.body;
@@ -115,30 +118,31 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
/* ...중략 ... */
const paymentData = getPaymentData.data; // 조회한 결제 정보
const { status } = paymentData;
- if (status === "paid") { // 결제 성공적으로 완료
+ if (status === "paid") {
+ // 결제 성공적으로 완료
// DB에 결제 정보 저장
- await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData });
- ...
+ await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData });
+ // ...
// 새로운 결제 예약
axios({
- url: "{결제예약을 받을 서비스 URL}",
+ url: "{결제예약을 받을 서비스 URL}",
method: "post",
// 인증 토큰 Authorization header에 추가
- headers: { "Authorization": access_token },
+ headers: { Authorization: access_token },
data: {
customer_uid: "gildong_0001_1234", // 카드(빌링키)와 1:1로 대응하는 값
schedules: [
{
// 주문 번호
- merchant_uid: "order_monthly_0001",
+ merchant_uid: "order_monthly_0001",
// 결제 시도 시각 in Unix Time Stamp. 예: 다음 달 1일
- schedule_at: 1519516800,
+ schedule_at: 1519516800,
amount: 8900,
name: "월간 이용권 정기결제",
- ...
- }
- ]
- }
+ // ...
+ },
+ ],
+ },
});
} else {
// 재결제 시도
@@ -147,9 +151,8 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
res.status(400).send(e);
}
});
-```
-
-예약된 결제가 시도되었을 때 발생하는 webhook 이벤트를 처리하는 로직에서 예약된 결제가 정상적으로 완료되고 결제 내역이 저장되면 다음 결제를 예약하는 예제입니다.
+ ```
-
+ 예약된 결제가 시도되었을 때 발생하는 webhook 이벤트를 처리하는 로직에서 예약된 결제가 정상적으로 완료되고 결제 내역이 저장되면 다음 결제를 예약하는 예제입니다.
+
diff --git a/src/content/docs/ko/auth/guide-2/readme.mdx b/src/content/docs/ko/auth/guide-2/readme.mdx
index 79a95ecb1..5b486087e 100644
--- a/src/content/docs/ko/auth/guide-2/readme.mdx
+++ b/src/content/docs/ko/auth/guide-2/readme.mdx
@@ -4,141 +4,135 @@ description: 포트원 결제취소 API를 이용한 결제취소 방법을 안
---
import Codepen from "~/components/gitbook/Codepen.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### **STEP 01.** 취소 요청하기
+## **STEP 01.** 취소 요청하기
필요한 취소 정보를 서버로 전달하여 취소 요청을 진행합니다. 가상계좌 환불의 경우 환불수령 계좌 정보를
추가 파라미터로 전달해야 합니다. 다음은 환불요청을 하기 위해 서버로 해당 정보를 전달하는 예제입니다.
-
-```html title="client-side"
-
-
-
-```
-
-
-
-
-
-
-```jsx title="client-side"
-class CancelPay extends React.Component {
- cancelPay = () => {
- axios({
- url: "{환불요청을 받을 서비스 URL}", // 예: http://www.myservice.com/payments/cancel
- method: "POST",
- headers: {
- "Content-Type": "application/json,
- },
- data: {
- merchant_uid: "{결제건의 주문번호}", // 주문번호
- cancel_request_amount: 2000, // 환불금액
- reason: "테스트 결제 환불" // 환불사유
- refund_holder: "홍길동", // [가상계좌 환불시 필수입력] 환불 수령계좌 예금주
- refund_bank: "88" // [가상계좌 환불시 필수입력] 환불 수령계좌 은행코드(예: KG이니시스의 경우 신한은행은 88번)
- refund_account: "56211105948400" // [가상계좌 환불시 필수입력] 환불 수령계좌 번호
+
+ ```html title="client-side"
+
+
+
+ ```
+
+
+
+
+
+ ```tsx title="client-side"
+ class CancelPay extends React.Component {
+ cancelPay = () => {
+ axios({
+ url: "{환불요청을 받을 서비스 URL}", // 예: http://www.myservice.com/payments/cancel
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ data: {
+ merchant_uid: "{결제건의 주문번호}", // 주문번호
+ cancel_request_amount: 2000, // 환불금액
+ reason: "테스트 결제 환불", // 환불사유
+ refund_holder: "홍길동", // [가상계좌 환불시 필수입력] 환불 수령계좌 예금주
+ refund_bank: "88", // [가상계좌 환불시 필수입력] 환불 수령계좌 은행코드(예: KG이니시스의 경우 신한은행은 88번)
+ refund_account: "56211105948400", // [가상계좌 환불시 필수입력] 환불 수령계좌 번호
+ },
+ });
+ };
+ render() {
+ return ;
+ }
+ }
+ ```
+
-### **STEP 02.** 결제정보 조회하기
+## **STEP 02.** 결제정보 조회하기
-아래와 같이 결제정보를 저장하는 **`Payments`**라는 테이블을 생성했다고 가정합니다.
+아래와 같이 결제정보를 저장하는 \*\*`Payments`\*\*라는 테이블을 생성했다고 가정합니다.
-```javascript title="server-side"
+```js title="server-side"
/* ... model/payments.js ... */
- var mongoose = require('mongoose');
- var Schema = mongoose.Schema;
- ...
- var PaymentsSchema = new Schema({
- imp_uid: String, // 포트원 `unique key`(환불 요청시 `unique key`로 사용)
- merchant_uid: String, // 주문번호(결제정보 조회시 사용)
- amount: { type: Number, default: 0 }, // 결제 금액(환불 가능 금액 계산시 사용)
- // 환불 된 총 금액(환불 가능 금액 계산시 사용)
- cancel_amount: { type: Number, default: 0 },
- ...
- });
- ...
- module.exports = mongoose.model('Payments', PaymentsSchema);
+const mongoose = require("mongoose");
+const Schema = mongoose.Schema;
+const PaymentsSchema = new Schema({
+ imp_uid: String, // 포트원 `unique key`(환불 요청시 `unique key`로 사용)
+ merchant_uid: String, // 주문번호(결제정보 조회시 사용)
+ amount: { type: Number, default: 0 }, // 결제 금액(환불 가능 금액 계산시 사용)
+ // 환불 된 총 금액(환불 가능 금액 계산시 사용)
+ cancel_amount: { type: Number, default: 0 },
+});
+module.exports = mongoose.model("Payments", PaymentsSchema);
```
클라이언트에서 받은 주문번호(**`merchant_uid`**)를 사용해서 해당 주문의 결제정보를 **`Payments`** 테이블에서 조회합니다.
-```javascript title="server-side"
+```js title="server-side"
/* ... 중략 ... */
- var Payments = require('./models/payments');
- app.post('/payments/cancel', async (req, res, next) => {
- try {
- /* 액세스 토큰(access token) 발급 */
- /* ... 중략 ... */
- /* 결제정보 조회 */
- const { body } = req;
- const { merchant_uid } = body; // 클라이언트로부터 전달받은 주문번호
- Payments.find({ merchant_uid }, async function(err, payment) {
- if (err) {
- return res.json(err);
- }
- const paymentData = payment[0]; // 조회된 결제정보
- /* 포트원 REST API로 결제환불 요청 */
- ...
- });
- } catch (error) {
- res.status(400).send(error);
- }
- });
-
+const Payments = require("./models/payments");
+app.post("/payments/cancel", async (req, res, next) => {
+ try {
+ /* 액세스 토큰(access token) 발급 */
+ /* ... 중략 ... */
+ /* 결제정보 조회 */
+ const { body } = req;
+ const { merchant_uid } = body; // 클라이언트로부터 전달받은 주문번호
+ Payments.find({ merchant_uid }, async function (err, payment) {
+ if (err) {
+ return res.json(err);
+ }
+ const paymentData = payment[0]; // 조회된 결제정보
+ /* 포트원 REST API로 결제환불 요청 */
+ // ...
+ });
+ } catch (error) {
+ res.status(400).send(error);
+ }
+});
```
-### **STEP 03.** 아임**포트 서버에 취소 요청하기**
+## **STEP 03.** 아임**포트 서버에 취소 요청하기**
-취소 요청을 하기 위해서 먼저 [**REST API access token**](../../api/rest-api-access-token) 을 발급받습니다. 발급받은 액세스 토큰(**`access token`**)을 이용하여[ **아임****포트 취소 API**](../../api/api-1/api) 를 호출하여 결제 취소를 요청합니다.
+취소 요청을 하기 위해서 먼저 [**REST API access token**](../../api/rest-api-access-token)을
+발급받습니다. 발급받은 액세스 토큰(**`access token`**)을 이용하여
+[**포트원 취소 API**](../../api/api-1/api)를 호출하여 결제 취소를 요청합니다.
-**휴대폰 소액결제 환불 시 유의사항**
-
-- **결제가 이루어진 월과 환불을 요청하는 월이 다를 경우, 전액환불도 불가능**합니다. 예를 들어, 1월 31일 결제건은 2월 1일에 환불할 수 없습니다.
+ **휴대폰 소액결제 환불 시 유의사항**
+ - **결제가 이루어진 월과 환불을 요청하는 월이 다를 경우, 전액환불도 불가능**합니다. 예를 들어, 1월 31일 결제건은 2월 1일에 환불할 수 없습니다.
-#### 아래는 환불요청 시 유의해야 하는 파라미터들입니다.
+아래는 환불요청 시 유의해야 하는 파라미터들입니다.
> **환불 `unique key`**
>
@@ -152,75 +146,74 @@ class CancelPay extends React.Component {
> **환불 가능 금액**(`checksum`)
>
-> 환불이 가능한 금액을 입력합니다. 예를 들어, 10**,**000원짜리 제품의 `checksum`은 10,000입니다.
+> 환불이 가능한 금액을 입력합니다. 예를 들어, 10\*\*,\*\*000원짜리 제품의 `checksum`은 10,000입니다.
> 만약 10,000원짜리 제품이 과거 1,000원 부분환불 되었다면, 이후 환불시 `checksum`은
> 9,000입니다.입력된 `checksum`을 사용해서 서버와 포트원 서버간에 환불 가능 금액이 일치하는지
> 확인합니다. 만약 일치하지 않으면 환불 요청은 실패하며 미 입력시 검증은 실행되지 않습니다.
-**checksum을 입력해야 하는 이유**
+ **checksum을 입력해야 하는 이유**
-`checksum`은 필수입력은 아니지만 **서버와 포트원 서버간에 환불 가능 금액을 검증하기** 위해서 입력을 권장합니다.
+ `checksum`은 필수입력은 아니지만 **서버와 포트원 서버간에 환불 가능 금액을 검증하기** 위해서 입력을 권장합니다.
-예를 들어, 10**,**000원짜리 제품에 대한 1,000원 부분환불 요청이 포트원 서버에서 완료하였으나 고객사가 서버 혹은 DB오류로 이를 반영하지 못했다면? 포트원 서버의 checksum은 9,000이 되고, 고객사 서버의 checksum은 그대로 10,000이 됩니다.
-
-이후 남은 금액을 환불하려고 할때 `checksum(10,000)`을 입력하면, 해당 값이 포트원 서버의 `checksum(9,000)`과 일치하지 않으므로 요청은 실패합니다.
+ 예를 들어, 10,000원짜리 제품에 대한 1,000원 부분환불 요청이 포트원 서버에서 완료하였으나 고객사가 서버 혹은 DB오류로 이를 반영하지 못했다면? 포트원 서버의 checksum은 9,000이 되고, 고객사 서버의 checksum은 그대로 10,000이 됩니다.
+ 이후 남은 금액을 환불하려고 할때 `checksum(10,000)`을 입력하면, 해당 값이 포트원 서버의 `checksum(9,000)`과 일치하지 않으므로 요청은 실패합니다.
-#### 아래는 환불 요청을 하는 예제입니다.
+아래는 환불 요청을 하는 예제입니다.
-```javascript title="Node.js"
+```ts title="Node.js"
/* ... 중략 ... */
- app.post('/payments/cancel', async (req, res, next) => {
- try {
- /* 액세스 토큰(access token) 발급 */
+app.post("/payments/cancel", async (req, res, next) => {
+ try {
+ /* 액세스 토큰(access token) 발급 */
+ /* ... 중략 ... */
+ /* 결제정보 조회 */
+ const { body } = req;
+ // 클라이언트로부터 전달받은 주문번호, 환불사유, 환불금액
+ const { merchant_uid, reason, cancel_request_amount } = body;
+ Payments.find({ merchant_uid }, async function (err, payment) {
/* ... 중략 ... */
- /* 결제정보 조회 */
- const { body } = req;
- // 클라이언트로부터 전달받은 주문번호, 환불사유, 환불금액
- const { merchant_uid, reason, cancel_request_amount } = body;
- Payments.find({ merchant_uid }, async function(err, payment) {
- /* ... 중략 ... */
- const paymentData = payment[0]; // 조회된 결제정보
- // 조회한 결제정보로부터 imp_uid, amount(결제금액), cancel_amount(환불된 총 금액) 추출
- const { imp_uid, amount, cancel_amount } = paymentData;
- // 환불 가능 금액(= 결제금액 - 환불 된 총 금액) 계산
- const cancelableAmount = amount - cancel_amount;
- if (cancelableAmount <= 0) { // 이미 전액 환불된 경우
- return res.status(400).json({ message: "이미 전액환불된 주문입니다." });
- }
- ...
- /* 포트원 REST API로 결제환불 요청 */
- const getCancelData = await axios({
- url: "https://api.iamport.kr/payments/cancel",
- method: "post",
- headers: {
- "Content-Type": "application/json",
- "Authorization": access_token // 포트원 서버로부터 발급받은 엑세스 토큰
- },
- data: {
- reason, // 고객사 클라이언트로부터 받은 환불사유
- imp_uid, // imp_uid를 환불 `unique key`로 입력
- amount: cancel_request_amount, // 고객사 클라이언트로부터 받은 환불금액
- checksum: cancelableAmount // [권장] 환불 가능 금액 입력
- }
- });
- const { response } = getCancelData.data; // 환불 결과
- /* 환불 결과 동기화 */
- ...
+ const paymentData = payment[0]; // 조회된 결제정보
+ // 조회한 결제정보로부터 imp_uid, amount(결제금액), cancel_amount(환불된 총 금액) 추출
+ const { imp_uid, amount, cancel_amount } = paymentData;
+ // 환불 가능 금액(= 결제금액 - 환불 된 총 금액) 계산
+ const cancelableAmount = amount - cancel_amount;
+ if (cancelableAmount <= 0) {
+ // 이미 전액 환불된 경우
+ return res.status(400).json({ message: "이미 전액환불된 주문입니다." });
+ }
+ /* 포트원 REST API로 결제환불 요청 */
+ const getCancelData = await axios({
+ url: "https://api.iamport.kr/payments/cancel",
+ method: "post",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: access_token, // 포트원 서버로부터 발급받은 엑세스 토큰
+ },
+ data: {
+ reason, // 고객사 클라이언트로부터 받은 환불사유
+ imp_uid, // imp_uid를 환불 `unique key`로 입력
+ amount: cancel_request_amount, // 고객사 클라이언트로부터 받은 환불금액
+ checksum: cancelableAmount, // [권장] 환불 가능 금액 입력
+ },
});
- } catch (error) {
- res.status(400).send(error);
- }
- })
+ const { response } = getCancelData.data; // 환불 결과
+ /* 환불 결과 동기화 */
+ // ...
+ });
+ } catch (error) {
+ res.status(400).send(error);
+ }
+});
```
### **STEP 04.** 환불 결과 저장하기
#### 결제 취소가 완료되면 그 결과를 데이터베이스에 다음과 같이 저장합니다.
-```javascript title="Node.js"
+```ts title="Node.js"
/* ... 중략 ... */
app.post("/payments/cancel", async (req, res, next) => {
try {
@@ -244,7 +237,7 @@ app.post("/payments/cancel", async (req, res, next) => {
return res.json(err);
}
res.json(payment); // 고객사 클라이언트로 환불 결과 반환
- }
+ },
);
});
} catch (error) {
@@ -254,10 +247,9 @@ app.post("/payments/cancel", async (req, res, next) => {
```
-**취소 시 유의할 점**
-
-REST API[**(POST https://api.iamport.kr/payments/cancel)**](../../api/api-1/api) 요청에 대한 **응답 코드가 200**이라도 응답 body의 code가 0이 아니면 **환불에 실패했다는 의미**입니다. 실패 사유는 body의 message를 통해 확인하셔야 합니다.
+ **취소 시 유의할 점**
+ REST API[**(POST https://api.iamport.kr/payments/cancel)**](../../api/api-1/api) 요청에 대한 **응답 코드가 200**이라도 응답 body의 code가 0이 아니면 **환불에 실패했다는 의미**입니다. 실패 사유는 body의 message를 통해 확인하셔야 합니다.
### **STEP 04.** 환불 응답 처리하기
@@ -265,46 +257,45 @@ REST API[**(POST https://api.iamport.kr/payments/cancel)**](../../api/api-1/api)
취소요청에 대한 응답을 클라이언트에게 처리하는 로직을 아래와 같이 작성합니다.
-
-```html title="client-side"
-
-
-
-```
-
-
-
-
-```jsx title="client-side"
-class CancelPay extends React.Component {
- cancelPay = () => {
- axios({
- /* ... 중략 ... */
- }).then(response => { // 환불 성공시 로직
- alert("환불 성공");
- }).catch(error => { // 환불 실패시 로직
- alert("환불 실패");
- });
- }
- ...
- render() {
- return ;
- }
-}
-```
-
-
+
+ ```html title="client-side"
+
+
+
+ ```
+
+
+
+ ```tsx title="client-side"
+ class CancelPay extends React.Component {
+ cancelPay = () => {
+ axios(/* ... 중략 ... */)
+ .then((response) => {
+ // 환불 성공시 로직
+ alert("환불 성공");
+ })
+ .catch((error) => {
+ // 환불 실패시 로직
+ alert("환불 실패");
+ });
+ };
+ render() {
+ return ;
+ }
+ }
+ ```
+
diff --git a/src/content/docs/ko/auth/guide-2/refund.mdx b/src/content/docs/ko/auth/guide-2/refund.mdx
index 9c1d8baf1..eb9743aea 100644
--- a/src/content/docs/ko/auth/guide-2/refund.mdx
+++ b/src/content/docs/ko/auth/guide-2/refund.mdx
@@ -6,18 +6,17 @@ description: 가상계좌 입금내역을 환불하는 방법을 확인합니다
import Figure from "~/components/Figure.astro";
import Hint from "~/components/Hint.astro";
-### 가상계좌 환불을 위해서는 PG사 **가상계좌 특약서비스**에 가입되어 있어야 합니다.
+**가상계좌 환불을 위해서는 PG사 **가상계좌 특약서비스**에 가입되어 있어야 합니다.**
-**가상계좌 특약서비스에 가입해야 하는 이유**
+ **가상계좌 특약서비스에 가입해야 하는 이유**
-신용카드와는 달리 가상계좌의 경우 결제/환불에 대한 수수료는 환불대상에서 제외됩니다.예를 들어 10,000원 결제건에 대해서 고객사는
+ 신용카드와는 달리 가상계좌의 경우 결제/환불에 대한 수수료는 환불대상에서 제외됩니다.예를 들어 10,000원 결제건에 대해서 고객사는
-- 결제 시, 9,700원(10,000원 - 가상계좌 발행 수수료 300원)을 PG사로부터 정산받습니다.
-- 환불 시, 10,300원(환불되어야할 10,000원 + 환불 계좌로의 송금 수수료 300원)을 PG사로 지불합니다.
-
-PG사는 이런 과정에서 발생할 수 있는 혼란을 미연에 방지하고자 **가상계좌 특약서비스에 가입한 고객사에 한해서만 가상계좌 환불을 제공**하고 있습니다.
+ - 결제 시, 9,700원(10,000원 - 가상계좌 발행 수수료 300원)을 PG사로부터 정산받습니다.
+ - 환불 시, 10,300원(환불되어야할 10,000원 + 환불 계좌로의 송금 수수료 300원)을 PG사로 지불합니다.
+ PG사는 이런 과정에서 발생할 수 있는 혼란을 미연에 방지하고자 **가상계좌 특약서비스에 가입한 고객사에 한해서만 가상계좌 환불을 제공**하고 있습니다.
가상계좌의 경우 단방향 결제수단이여서 환불 대상을 알 수 없으므로 환불 금액 외에 다음의 환불 수령계좌 정보를 입력해야 합니다.
@@ -27,66 +26,69 @@ PG사는 이런 과정에서 발생할 수 있는 혼란을 미연에 방지하
- `refund_bank`: 환불 수령계좌 은행코드
-**가상계좌 은행코드는 PG사에 따라 다릅니다**
-
-`은행코드는`같은 은행이더라도 PG사에 따라 상이하므로 [**은행코드**](../../tip/pg-1)표에서 은행코드를 확인해 주세요
+ **가상계좌 은행코드는 PG사에 따라 다릅니다**
+ `은행코드는`같은 은행이더라도 PG사에 따라 상이하므로 [**은행코드**](../../tip/pg-1)표에서 은행코드를 확인해 주세요
-#### 아래는 가상계좌 환불을 요청하는 예제입니다.
+아래는 가상계좌 환불을 요청하는 예제입니다.
-```javascript title="Node.js"
+```ts title="Node.js"
/* ... 중략 ... */
- app.post('/payments/cancel', async (req, res, next) => {
- try {
- /* 액세스 토큰(access token) 발급 */
+app.post("/payments/cancel", async (req, res, next) => {
+ try {
+ /* 액세스 토큰(access token) 발급 */
+ /* ... 중략 ... */
+ /* 결제정보 조회 */
+ const { body } = req;
+ // 클라이언트로부터 전달받은 주문번호, 환불사유, 환불금액, 가상계좌 정보(예금주, 계좌번호, 은행코드)
+ const {
+ merchant_uid,
+ reason,
+ cancel_request_amount,
+ refund_holder,
+ refund_bank,
+ refund_account,
+ } = body;
+ Payments.find({ merchant_uid }, async function (err, payment) {
/* ... 중략 ... */
- /* 결제정보 조회 */
- const { body } = req;
- // 클라이언트로부터 전달받은 주문번호, 환불사유, 환불금액, 가상계좌 정보(예금주, 계좌번호, 은행코드)
- const { merchant_uid, reason, cancel_request_amount, refund_holder, refund_bank, refund_account } = body;
- Payments.find({ merchant_uid }, async function(err, payment) {
- /* ... 중략 ... */
- const paymentData = payment[0]; // 조회된 결제정보
- // 조회한 결제정보로부터 imp_uid, amount(결제금액), cancel_amount(환불된 총 금액) 추출
- const { imp_uid, amount, cancel_amount } = paymentData;
- // 환불 가능 금액(= 결제금액 - 환불된 총 금액) 계산
- const cancelableAmount = amount - cancel_amount;
- if (cancelableAmount <= 0) { // 이미 전액 환불된 경우
- return res.status(400).json({ message: "이미 전액환불된 주문입니다." });
- }
- ...
- /* 포트원 REST API로 결제환불 요청 */
- const getCancelData = await axios({
- url: "https://api.iamport.kr/payments/cancel",
- method: "post",
- headers: {
- "Content-Type": "application/json",
- "Authorization": access_token // 포트원 서버로부터 발급받은 엑세스 토큰
- },
- data: {
- reason, // 고객사 클라이언트로부터 받은 환불사유
- imp_uid, // imp_uid를 환불 `unique key`로 입력
- amount: cancel_request_amount, // 고객사 클라이언트로부터 받은 환불금액
- checksum: cancelableAmount, // [권장] 환불 가능 금액 입력
- refund_holder, // [가상계좌 환불시 필수입력] 환불 수령계좌 예금주
- refund_bank, // [가상계좌 환불시 필수입력] 환불 수령계좌 은행코드(ex. KG이니시스의 경우 신한은행은 88번)
- refund_account // [가상계좌 환불시 필수입력] 환불 수령계좌 번호
- }
- });
- const { response } = getCancelData.data; // 환불 결과
- /* 환불 결과 동기화 */
- ...
+ const paymentData = payment[0]; // 조회된 결제정보
+ // 조회한 결제정보로부터 imp_uid, amount(결제금액), cancel_amount(환불된 총 금액) 추출
+ const { imp_uid, amount, cancel_amount } = paymentData;
+ // 환불 가능 금액(= 결제금액 - 환불된 총 금액) 계산
+ const cancelableAmount = amount - cancel_amount;
+ if (cancelableAmount <= 0) {
+ // 이미 전액 환불된 경우
+ return res.status(400).json({ message: "이미 전액환불된 주문입니다." });
+ }
+ /* 포트원 REST API로 결제환불 요청 */
+ const getCancelData = await axios({
+ url: "https://api.iamport.kr/payments/cancel",
+ method: "post",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: access_token, // 포트원 서버로부터 발급받은 엑세스 토큰
+ },
+ data: {
+ reason, // 고객사 클라이언트로부터 받은 환불사유
+ imp_uid, // imp_uid를 환불 `unique key`로 입력
+ amount: cancel_request_amount, // 고객사 클라이언트로부터 받은 환불금액
+ checksum: cancelableAmount, // [권장] 환불 가능 금액 입력
+ refund_holder, // [가상계좌 환불시 필수입력] 환불 수령계좌 예금주
+ refund_bank, // [가상계좌 환불시 필수입력] 환불 수령계좌 은행코드(ex. KG이니시스의 경우 신한은행은 88번)
+ refund_account, // [가상계좌 환불시 필수입력] 환불 수령계좌 번호
+ },
});
- } catch (error) {
- res.status(400).send(error);
- }
- });
+ const { response } = getCancelData.data; // 환불 결과
+ /* 환불 결과 동기화 */
+ // ...
+ });
+ } catch (error) {
+ res.status(400).send(error);
+ }
+});
```
다음과 같이 가상계좌 환불을 요청하여 성공하면 PG사 담당자가 다음날 해당 계좌로 환불 금액을 입금합니다. 이는 통상적으로 영엽일 기준 하루 정도 소요됩니다.
-
+
diff --git a/src/content/docs/ko/auth/guide/1.mdx b/src/content/docs/ko/auth/guide/1.mdx
index 9cb59596b..9f4e8ae2b 100644
--- a/src/content/docs/ko/auth/guide/1.mdx
+++ b/src/content/docs/ko/auth/guide/1.mdx
@@ -1,11 +1,11 @@
---
title: 1. 포트원 라이브러리 추가
-description: 해당 라이브러리를 추가하면 인증결제 연동준비 50%가 완료됩니다.
+description: 해당 라이브러리를 추가하면 인증결제 연동 준비 50%가 완료됩니다.
---
import Youtube from "~/components/gitbook/Youtube.astro";
-#### 결제창 연동을 진행할 주문 페이지에 아래 JS 라이브러리를 추가 합니다.
+결제창 연동을 진행할 주문 페이지에 아래 JS 라이브러리를 추가합니다.
```html title="Client-side"
diff --git a/src/content/docs/ko/auth/guide/2.mdx b/src/content/docs/ko/auth/guide/2.mdx
index acc56973e..0178e0f75 100644
--- a/src/content/docs/ko/auth/guide/2.mdx
+++ b/src/content/docs/ko/auth/guide/2.mdx
@@ -4,31 +4,23 @@ description: 고객사 식별코드를 이용하여 결제창 연동을 준비
---
import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-import Tab from "~/components/gitbook/tabs/Tab.astro";
-#### 주문 페이지에서 고객사 식별코드를 이용하여 IMP 객체를 초기화 합니다.
+주문 페이지에서 고객사 식별코드를 이용하여 IMP 객체를 초기화 합니다.
-아래 초기화 함수를 **2회 이상** 중복되게 호출하지 않도록 주의해주세요.
+ 아래 초기화 함수를 **2회 이상** 중복되게 호출하지 않도록 주의해주세요.
-
-
-```javascript title="client-side"
-IMP.init('고객사 식별코드') // 예: 'imp00000000a'
+```ts title="client-side"
+IMP.init("고객사 식별코드"); // 예: 'imp00000000a'
```
-
-
-
-
-#### 하위상점 결제창 호출 방법
+## 하위상점 결제창 호출 방법
하위 상점인 경우 `IMP.init()` 대신, `IMP.agency('고객사 식별코드', '하위
고객사 티어코드')`를 호출해야 합니다.
-```javascript
+```ts
// IMP.init() 대신 아래 함수를 사용해야함
-IMP.agency('고객사 식별코드', '티어코드') // 예: 'imp00000000a', '123'
+IMP.agency("고객사 식별코드", "티어코드"); // 예: 'imp00000000a', '123'
```
diff --git a/src/content/docs/ko/auth/guide/3.mdx b/src/content/docs/ko/auth/guide/3.mdx
index d02c5a027..8ddc74199 100644
--- a/src/content/docs/ko/auth/guide/3.mdx
+++ b/src/content/docs/ko/auth/guide/3.mdx
@@ -3,112 +3,113 @@ title: 3. 결제 요청하기
description: 파라미터값을 조합하여 결제창을 호출 할 수 있습니다.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Youtube from "~/components/gitbook/Youtube.astro";
+import Hint from "~/components/Hint.astro";
-[**IMP 객체 초기화**](2)가 완료 되었으면 이제 결제창을 호출할 차례입니다.
+**IMP 객체 초기화**](2)가 완료 되었으면 이제 결제창을 호출할 차례입니다.
-결제창 호출시 필요한 [**파라미터**](../../sdk/javascript-sdk/payrq)**를 request_pay** 함수 첫번째 파라미터 인자로 설정합니다.
+결제창 호출시 필요한 [**파라미터**](../../sdk/javascript-sdk/payrq)**를 request\_pay** 함수 첫번째 파라미터 인자로 설정합니다.
-
-```javascript
- function requestPay() {
- IMP.request_pay({
- pg: "kcp.{상점ID}",
- pay_method: "card",
- merchant_uid: "ORD20180131-0000011", // 주문번호
- name: "노르웨이 회전 의자",
- amount: 64900, // 숫자 타입
- buyer_email: "gildong@gmail.com",
- buyer_name: "홍길동",
- buyer_tel: "010-4242-4242",
- buyer_addr: "서울특별시 강남구 신사동",
- buyer_postcode: "01181"
- }, function (rsp) { // callback
- //rsp.imp_uid 값으로 결제 단건조회 API를 호출하여 결제결과를 판단합니다.
- });
- }
-```
-
-
-
-
-```jsx
-class RequestPay extends React.Component {
- requestPay = () => {
- IMP.request_pay({ // param
- pg: "kcp.{상점ID}",
- pay_method: "card",
- merchant_uid: "ORD20180131-0000011",
- name: "노르웨이 회전 의자",
- amount: 64900,
- buyer_email: "gildong@gmail.com",
- buyer_name: "홍길동",
- buyer_tel: "010-4242-4242",
- buyer_addr: "서울특별시 강남구 신사동",
- buyer_postcode: "01181"
- }, rsp => { // callback
- if (rsp.success) {
- ...,
- // 결제 성공 시 로직,
- ...
- } else {
- ...,
- // 결제 실패 시 로직,
- ...
- }
- });
- }
-```
-
-
-
-
-```javascript
-
-```
+ ```
+
-
+
+ ```tsx
+ class RequestPay extends React.Component {
+ requestPay = () => {
+ IMP.request_pay(
+ {
+ // param
+ pg: "kcp.{상점ID}",
+ pay_method: "card",
+ merchant_uid: "ORD20180131-0000011",
+ name: "노르웨이 회전 의자",
+ amount: 64900,
+ buyer_email: "gildong@gmail.com",
+ buyer_name: "홍길동",
+ buyer_tel: "010-4242-4242",
+ buyer_addr: "서울특별시 강남구 신사동",
+ buyer_postcode: "01181",
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // 결제 성공 시 로직
+ } else {
+ // 결제 실패 시 로직
+ }
+ },
+ );
+ };
+ }
+ ```
+
+
+
+ ```ts
+ export default {
+ methods: {
+ requestPay: function () {
+ IMP.request_pay(
+ {
+ // param
+ pg: "kcp.{상점ID}",
+ pay_method: "card",
+ merchant_uid: "ORD20180131-0000011",
+ name: "노르웨이 회전 의자",
+ amount: 64900,
+ buyer_email: "gildong@gmail.com",
+ buyer_name: "홍길동",
+ buyer_tel: "010-4242-4242",
+ buyer_addr: "서울특별시 강남구 신사동",
+ buyer_postcode: "01181",
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // 결제 성공 시 로직
+ } else {
+ // 결제 실패 시 로직
+ }
+ },
+ );
+ },
+ },
+ };
+ ```
+
-**주문번호(merchant\_uid) 생성 시 유의사항**
-
-- 주문번호는 결제창 요청 시 항상 **고유 값**으로 채번 되어야 합니다.
-- 결제 완료 이후 **결제 위변조** 대사 작업시 주문번호를 이용하여 검증이 필요하므로 주문번호는 고객사 서버에서 **고유하게**(unique)채번하여 **DB 상에 저장**해주세요
+ **주문번호(merchant\_uid) 생성 시 유의사항**
+ - 주문번호는 결제창 요청 시 항상 **고유 값**으로 채번 되어야 합니다.
+ - 결제 완료 이후 **결제 위변조** 대사 작업시 주문번호를 이용하여 검증이 필요하므로 주문번호는 고객사 서버에서 **고유하게**(unique)채번하여 **DB 상에 저장**해주세요
현재까지 진행한 소스코드에 **결제 버튼을 추가****한 샘플 코드**입니다.
@@ -139,7 +140,7 @@ class RequestPay extends React.Component {
},
function (rsp) {
// callback
- //rsp.imp_uid 값으로 결제 단건조회 API를 호출하여 결제결과를 판단합니다.
+ // rsp.imp_uid 값으로 결제 단건조회 API를 호출하여 결제결과를 판단합니다.
}
);
}
diff --git a/src/content/docs/ko/auth/guide/4/iframe.mdx b/src/content/docs/ko/auth/guide/4/iframe.mdx
index dafb75c68..3bb89f97a 100644
--- a/src/content/docs/ko/auth/guide/4/iframe.mdx
+++ b/src/content/docs/ko/auth/guide/4/iframe.mdx
@@ -4,27 +4,25 @@ description: 대부분의 PC환경에서 적용되는 iframe 방식 결제창
---
import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-import Tab from "~/components/gitbook/tabs/Tab.astro";
-#### **iframe** 이란?
-
-**다른 HTML 페이지를 현재 페이지에 포함**시킬 수 있는 요소입니다.\
-자세한 내용은 [MDN iframe 문서](https://developer.mozilla.org/ko/docs/Web/HTML/Element/iframe)를 참고해주세요.
+ **iframe이란?**
+ **다른 HTML 페이지를 현재 페이지에 포함**시킬 수 있는 요소입니다.\
+ 자세한 내용은 [MDN iframe 문서](https://developer.mozilla.org/ko/docs/Web/HTML/Element/iframe)를 참고해주세요.
**PC 환경**에서 일어나는 대부분의 결제는 **`request_pay()`** 함수의 두번째 인자인 **callback** 함수를 통해 결제 결과 수신이 가능합니다.
아래 예제 코드는 결제창 형태가 **iframe 으로 활성화**되는 **대부분의 PC 환경**에서의 결제요청에 대한 응답을 처리하는 부분입니다.
-
-
-```javascript
-IMP.request_pay({ /** 요청 객체를 추가해주세요 */ },
- rsp => {
- if (rsp.success) {
+```ts
+IMP.request_pay(
+ {
+ /** 요청 객체를 추가해주세요 */
+ },
+ (rsp) => {
+ if (rsp.success) {
// axios로 HTTP 요청
axios({
url: "{서버의 결제 정보를 받는 endpoint}",
@@ -32,65 +30,34 @@ IMP.request_pay({ /** 요청 객체를 추가해주세요 */ },
headers: { "Content-Type": "application/json" },
data: {
imp_uid: rsp.imp_uid,
- merchant_uid: rsp.merchant_uid
- }
+ merchant_uid: rsp.merchant_uid,
+ },
}).then((data) => {
// 서버 결제 API 성공시 로직
- })
+ });
} else {
alert(`결제에 실패하였습니다. 에러 내용: ${rsp.error_msg}`);
}
- });
-```
-
-
-
-
-```javascript
-IMP.request_pay({ /** 요청 객체를 추가해주세요 */ },
- function (rsp) {
- if (rsp.success) {
- // 결제 성공 시: 결제 승인 또는 가상계좌 발급에 성공한 경우
- // jQuery로 HTTP 요청
- jQuery.ajax({
- url: "{서버의 결제 정보를 받는 고객사 endpoint}",
- method: "POST",
- headers: { "Content-Type": "application/json" },
- data: {
- imp_uid: rsp.imp_uid, // 결제 고유번호
- merchant_uid: rsp.merchant_uid // 주문번호
- }
- }).done(function (data) {
- // 고객사 서버 결제 API 성공시 로직
- })
- } else {
- alert("결제에 실패하였습니다. 에러 내용: " + rsp.error_msg);
- }
- });
+ },
+);
```
-
-
-
결제가 완료되면 반환되는 응답 객체([**rsp**](../../../sdk/javascript-sdk-old/readme))의 결제 성공
-여부에 따라 처리 로직을 **callback** 함수에 작성합니다. 요청이 성공했을 경우에 **결제번호(imp_uid)와
-주문번호(merchant_uid)를 서버에 전달**하는 로직을 위와 같이 작성합니다.
+여부에 따라 처리 로직을 **callback** 함수에 작성합니다. 요청이 성공했을 경우에 **결제번호(imp\_uid)와
+주문번호(merchant\_uid)를 서버에 전달**하는 로직을 위와 같이 작성합니다.
-[payrt](../../../sdk/javascript-sdk/payrt "mention")에서 callback 함수로 전달되는 응답 파라미터를 확인할 수 있습니다.
-
+ [payrt](../../../sdk/javascript-sdk/payrt "mention")에서 callback 함수로 전달되는 응답 파라미터를 확인할 수 있습니다.
-최종 결제결과 로직처리는 반드시 [**웹훅**](../../../result/webhook)을 이용하여 안정적으로 처리해 주셔야 합니다.
-
-웹훅 연동을 생략하시는 경우 결제결과를 정상적으로 수신받지 못하는 상황이 발생합니다.
+ 최종 결제결과 로직처리는 반드시 [**웹훅**](../../../result/webhook)을 이용하여 안정적으로 처리해 주셔야 합니다.
+ 웹훅 연동을 생략하시는 경우 결제결과를 정상적으로 수신받지 못하는 상황이 발생합니다.
-**(구) 페이팔(Paypal)** 결제는 PC 환경 결제 시 **팝업형태(새 창)**로 결제창이 활성화 되며
-
-이에 따라 결제 결과도 **m_redirect_url** 로 받아보실 수 있습니다.
+ **(구) 페이팔(Paypal)** 결제는 PC 환경 결제 시 \*\*팝업형태(새 창)\*\*로 결제창이 활성화 되며
+ 이에 따라 결제 결과도 **m\_redirect\_url** 로 받아보실 수 있습니다.
diff --git a/src/content/docs/ko/auth/guide/4/readme.mdx b/src/content/docs/ko/auth/guide/4/readme.mdx
index 61925d5fc..6ae6f0bc7 100644
--- a/src/content/docs/ko/auth/guide/4/readme.mdx
+++ b/src/content/docs/ko/auth/guide/4/readme.mdx
@@ -5,7 +5,9 @@ description: 결제결과를 안전하게 저장할 수 있는 가이드 입니
import ContentRef from "~/components/gitbook/ContentRef.astro";
-#### 결제창이 활성화되는 방식에 따라 결제결과를 획득하는 방법이 상이합니다. 일반적으로 PC 환경에서는 iframe 방식으로 결제창이 활성화되며 모바일 환경에서는 새로운 페이지로 리다이렉트 되어 결제창이 활성화 됩니다.
+결제창이 활성화되는 방식에 따라 결제결과를 획득하는 방법이 상이합니다.
+일반적으로 PC 환경에서는 iframe 방식으로 결제창이 활성화되며,
+모바일 환경에서는 새로운 페이지로 리다이렉트되어 결제창이 활성화 됩니다.
결제가 정상적으로 완료되면 결제창 형태에 따라 아래와 같이 결제결과를 받아 볼 수 있습니다.
diff --git a/src/content/docs/ko/auth/guide/4/redirect.mdx b/src/content/docs/ko/auth/guide/4/redirect.mdx
index cbd97a7ae..68441ae0e 100644
--- a/src/content/docs/ko/auth/guide/4/redirect.mdx
+++ b/src/content/docs/ko/auth/guide/4/redirect.mdx
@@ -4,99 +4,97 @@ description: 새로운 창으로 리디렉션되어 결제가 진행되는 환
---
import ContentRef from "~/components/gitbook/ContentRef.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-> 아래 예제 코드는 결제창 형태가 **새로운 페이지로 리디렉션되어** 결제가 진행되는 대부분의 **모바일 환경**에서의 결제요청애 대한 응답을 처리하는 부분입니다.
+> 아래 예제 코드는 결제창 형태가 **새로운 페이지로 리디렉션되어** 결제가 진행되는
+> 대부분의 **모바일 환경**에서의 결제 요청에 대한 응답을 처리하는 부분입니다.
-
+
-
-```javascript
-IMP.request_pay({
- /* 결제 요청 객체를 채워주세요. */
- m_redirect_url: "{리디렉션 될 URL}"
-}, /* callback */); // 리디렉션 방식의 경우 callback은 실행되지 않습니다.
-```
-
-
+
+ ```ts
+ IMP.request_pay(
+ {
+ /* 결제 요청 객체를 채워주세요. */
+ m_redirect_url: "{리디렉션 될 URL}",
+ } /* callback */,
+ ); // 리디렉션 방식의 경우 callback은 실행되지 않습니다.
+ ```
+
-위와 같이 **request_pay** 함수 파라미터로 **m_redirect_url** 을 설정하면 **결제 완료** 이후 해당 URL 주소로 결제 결과를 **쿼리스트링(Query String)** 형태로 전송해 드립니다.
+위와 같이 **request\_pay** 함수 파라미터로 **m\_redirect\_url** 을 설정하면
+**결제 완료** 이후 해당 URL 주소로
+결제 결과를 **쿼리스트링(Query String)** 형태로 전송해 드립니다.
-**Query String 이란?**
-
-URL 뒤에 데이터를 전달하는 가장 단순한 방법으로 주로 GET 요청과 함께 데이터를 전송할 때 사용합니다.
+ **Query String 이란?**
+ URL 뒤에 데이터를 전달하는 가장 단순한 방법으로 주로 GET 요청과 함께 데이터를 전송할 때 사용합니다.
-결제 결과를 수신받을 endpoint url 주소를 m_redirect_url 에 설정하시면 결제결과 수신이 가능합니다.
+결제 결과를 수신받을 endpoint url 주소를 m\_redirect\_url 에 설정하시면 결제결과 수신이 가능합니다.
아래 파라미터를 설정하신 URL 을 통해 Query String 형태로 수신받을수 있습니다.
아래는 Query String 으로 리디렉션되는 URL 예제입니다.
-
-```url
-curl https://myservice.com/payments/complete?imp_uid=결제건을_특정하는_포트원_번호&merchant_uid=고객사_고유_주문번호&imp_success=true
-```
-
-
-
-
-```
-curl https://myservice.com/payments/complete?imp_uid=결제건을_특정하는_포트원_번호&merchant_uid=고객사_고유_주문번호&imp_success=false&error_code=에러_코드(현재_정리된_체계는_없음)&error_msg=에러_메시지
-```
-
-
+
+ ```http
+ GET https://myservice.com/payments/complete?imp_uid=결제건을_특정하는_포트원_번호&merchant_uid=고객사_고유_주문번호&imp_success=true
+ ```
+
+
+
+ ```http
+ GET https://myservice.com/payments/complete?imp_uid=결제건을_특정하는_포트원_번호&merchant_uid=고객사_고유_주문번호&imp_success=false&error_code=에러_코드(현재_정리된_체계는_없음)&error_msg=에러_메시지
+ ```
+
-| 파라미터명 | 설명 | 비고 |
-|:----------------------------------------:|:------------------:|:-----:|
-| **imp_uid** |포트원 결제 고유번호| 공통 |
-| **merchant_uid** | 고객사 주문번호 | 공통 |
-| **imp_success** | 결제 성공 여부 | 공통 |
-|error_code| 오류 코드 |실패 시|
-|error_msg | 오류 메세지 |실패 시|
+| 파라미터명 | 설명 | 비고 |
+|:-----------------------------------------:|:------------------:|:-----:|
+| **imp\_uid** |포트원 결제 고유번호| 공통 |
+| **merchant\_uid** | 고객사 주문번호 | 공통 |
+| **imp\_success** | 결제 성공 여부 | 공통 |
+|error\_code| 오류 코드 |실패 시|
+| error\_msg| 오류 메세지 |실패 시|
> **결제 완료****의 의미**
>
> `결제완료`는 아래의 모든 경우를 포함합니다.
>
-> 1. **결제 성공**(결제 상태: `paid`, imp_success: `true`)
-> 2. **결제 실패**(결제 상태: `failed`, imp_success: `false`)
+> 1. **결제 성공**(결제 상태: `paid`, imp\_success: `true`)
+> 2. **결제 실패**(결제 상태: `failed`, imp\_success: `false`)
> 3. PG 모듈 설정이 올바르지 않아, **결제 창이 열리지 않음**
> 4. 사용자가 임의로 X 버튼이나 취소 버튼을 눌러 **결제를 종료**함
> 5. 카드 정보 불일치, 한도 초과, 잔액 부족 등의 사유로 **결제가 중단**됨
-> 6. 가상계좌 **발급 완료(**결제 상태: `ready`, imp_success: `true`)
+> 6. 가상계좌 \*\*발급 완료(\*\*결제 상태: `ready`, imp\_success: `true`)
-**결제창이 리디렉션되어 새로운 페이지에서 활성화되는 경우 결제 결과는 callback 으로 받을 수 없습니다.**
-
+ **결제창이 리디렉션되어 새로운 페이지에서 활성화되는 경우 결제 결과는 callback 으로 받을 수 없습니다.**
-최종 결제결과 로직처리는 반드시 [**웹훅**](../../../result/webhook)을 이용하여 안정적으로 처리해 주셔야 합니다.
-
-웹훅연동을 생략하시는 경우 결제결과를 정상적으로 수신받지 못하는 상황이 발생합니다.
+ 최종 결제 결과 로직 처리는 반드시 [**웹훅**](../../../result/webhook)을 이용하여 안정적으로 처리해 주셔야 합니다.
+ 웹훅 연동을 생략하시는 경우 결제 결과를 정상적으로 수신받지 못하는 상황이 발생합니다.
-**imp\_success 파라미터**
-
-`imp_success` 파라미터는 **결제 프로세스 정상 종료
-여부**를 의미합니다. 하지만 클라이언트 상에서 자바스크립트 함수를 호출해서 결제창이
-열리므로 **결제금액이 위변조 되었을 가능성**이 있기 때문에 **이 값으로 결제의 성공
-여부를 판단해서는 안됩니다**. 결제의 성공 여부에 따라 아래와 같이 처리합니다.
+ **imp\_success 파라미터**
-- imp_success = true: 결제 정보(imp_uid, merchant_uid)를 서버에 전달해서 결제금액의 위변조 여부를 검증한 후 최종적으로 결제 성공 여부를 판단해야 합니다.
-- Imp_success = false: 결제가 실패했음을 사용자에게 알립니다.
+ `imp_success` 파라미터는 **결제 프로세스 정상 종료
+ 여부**를 의미합니다. 하지만 클라이언트 상에서 자바스크립트 함수를 호출해서 결제창이
+ 열리므로 **결제금액이 위변조 되었을 가능성**이 있기 때문에 **이 값으로 결제의 성공
+ 여부를 판단해서는 안됩니다**. 결제의 성공 여부에 따라 아래와 같이 처리합니다.
-\* 일부 PG사에 한해 `imp_success`가 아닌 `success` 파라미터가 전달되거나 아예 전달되지 않는 경우(예: KG이니시스 - 실시간 계좌이체)도 있으니 주의하셔야 합니다.
+ - imp\_success = true: 결제 정보(imp\_uid, merchant\_uid)를 서버에 전달해서 결제금액의 위변조 여부를 검증한 후 최종적으로 결제 성공 여부를 판단해야 합니다.
+ - Imp\_success = false: 결제가 실패했음을 사용자에게 알립니다.
+ \* 일부 PG사에 한해 `imp_success`가 아닌 `success` 파라미터가 전달되거나 아예 전달되지 않는 경우(예: KG이니시스 - 실시간 계좌이체)도 있으니 주의하셔야 합니다.
diff --git a/src/content/docs/ko/auth/guide/5/post.mdx b/src/content/docs/ko/auth/guide/5/post.mdx
index 6e93a8d8c..aa9788b76 100644
--- a/src/content/docs/ko/auth/guide/5/post.mdx
+++ b/src/content/docs/ko/auth/guide/5/post.mdx
@@ -4,22 +4,18 @@ description: ""
---
import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-import Tab from "~/components/gitbook/tabs/Tab.astro";
결제 정보를 사후 검증하는 과정은 크게 세 단계로 이루어집니다.
- 응답받은 내용을 바탕으로 실 결제 금액과 결제요청금액(고객사 자체 데이터베이스)을 비교
-- 결제 상세내역 조회를 위해 포트원 [**결제 단건 조회 API** ](https://developers.portone.io/api/rest-v1/payment#get%20%2Fpayments%2F%7Bimp_uid%7D)요청
-- 포트원 결제고유번호(**imp_uid**), 고객사 주문번호(**merchant_uid**)를 프론트엔드로부터 수신
+- 결제 상세내역 조회를 위해 포트원 [**결제 단건 조회 API**](https://developers.portone.io/api/rest-v1/payment#get%20%2Fpayments%2F%7Bimp_uid%7D) 요청
+- 포트원 결제고유번호(**imp\_uid**), 고객사 주문번호(**merchant\_uid**)를 프론트엔드로부터 수신
-### **STEP 01** 결제결과 서버 수신
+## **STEP 01** 결제결과 서버 수신
-
-
결제정보를 받은 고객사 endpoint URL 에 대한 POST 요청을 수신하는 예제
-```javascript
+```ts title="Node.js"
app.use(bodyParser.json());
// "{서버의 결제 정보를 받는 고객사 endpoint}" POST 요청 수신부
app.post("/payments/complete", async (req, res) => {
@@ -32,22 +28,17 @@ app.post("/payments/complete", async (req, res) => {
});
```
-
-
+## **STEP 02** 결제내역 단건 조회
-### **STEP 02** 결제내역 단건 조회
+수신받은 포트원 **결제고유번호**(imp\_uid)로 [**결제단건조회**](https://api.iamport.kr/#!/payments/getPaymentByImpUid)
+**API** 를 호출하여 결제정보 획득 예제
-
-
-수신받은 포트원 **결제고유번호**(imp\_uid)로 [**결제단건조회**](https://api.iamport.kr/#!/payments/getPaymentByImpUid) **API** 를 호출하여 결제정보 획득 예제
-
-```javascript
+```ts title="Node.js"
app.use(bodyParser.json());
app.post("/payments/complete", async (req, res) => {
try {
// req의 body에서 imp_uid, merchant_uid 추출
const { imp_uid, merchant_uid } = req.body;
- ...
// 액세스 토큰(access token) 발급 받기
const getToken = await axios({
url: "https://api.iamport.kr/users/getToken",
@@ -55,11 +46,11 @@ app.post("/payments/complete", async (req, res) => {
headers: { "Content-Type": "application/json" },
data: {
imp_key: "imp_apikey", // REST API 키
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f" // REST API Secret
- }
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f", // REST API Secret
+ },
});
const { access_token } = getToken.data; // 인증 토큰
- ...
// imp_uid로 포트원 서버에서 결제 정보 조회
const getPaymentData = await axios({
// imp_uid 전달
@@ -67,26 +58,20 @@ app.post("/payments/complete", async (req, res) => {
// GET method
method: "get",
// 인증 토큰 Authorization header에 추가
- headers: { "Authorization": access_token }
+ headers: { Authorization: access_token },
});
const paymentData = getPaymentData.data.response; // 조회한 결제 정보
- ...
} catch (e) {
res.status(400).send(e);
}
});
```
-
-
-
-### **STEP 03** 결제정보 검증
+## **STEP 03** 결제정보 검증
-
-
결제된 실 금액과 요청 금액을 비교하여 **결제금액 위변조여부 검증** 및 DB저장 예시
-```javascript
+```ts title="Node.js"
app.use(bodyParser.json());
app.post("/payments/complete", async (req, res) => {
try {
@@ -100,17 +85,14 @@ app.post("/payments/complete", async (req, res) => {
// 코드 생략
const paymentData = getPaymentData.data.response; // 조회한 결제 정보
- // ...
// DB에서 결제되어야 하는 금액 조회
const order = await Orders.findById(paymentData.merchant_uid);
const amountToBePaid = order.amount; // 결제 되어야 하는 금액
- // ...
// 결제 검증하기
const { amount, status } = paymentData;
// 결제금액 일치. 결제 된 금액 === 결제 되어야 하는 금액
if (amount === amountToBePaid) {
await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData }); // DB에 결제 정보 저장
- // ...
switch (status) {
case "ready": // 가상계좌 발급
// DB에 가상계좌 발급 정보 저장
@@ -138,19 +120,15 @@ app.post("/payments/complete", async (req, res) => {
});
```
-
-
-
처음 요청한 금액은 **`merchant_uid`** 로 데이터베이스에서 조회하고 실제 결제금액은 **`imp_uid`로
포트원 서버에서 조회하여 두 값을 비교합니다. 검증이 성공하면 결제 정보를 데이터베이스에 저장한 뒤
결제 상태(`status`**)에 따라 알맞은 응답을 반환하고 실패 시 에러 메세지를 출력합니다.
-결제결과 DB 처리는 [**웹훅(Webhook)을 연동**](../../../result/webhook)하여 수신되는 데이터를 기준으로 처리하셔야 결제결과 누락없이 안정적인 결과처리를 완료하실 수 있습니다.
-
+ 결제 결과 DB 처리는 [**웹훅(Webhook)을 연동**](../../../result/webhook)하여 수신되는 데이터를
+ 기준으로 처리하셔야 결제 결과 누락 없이 안정적으로 결과처리를 완료하실 수 있습니다.
-[**Confirm Process**](../../../tip/confirm-process) 기능을 사용하여서도 결제금액 검증을 할 수 있습니다.
-
+ [**Confirm Process**](../../../tip/confirm-process) 기능을 사용하여서도 결제금액 검증을 할 수 있습니다.
diff --git a/src/content/docs/ko/auth/guide/5/pre.mdx b/src/content/docs/ko/auth/guide/5/pre.mdx
index dfbadb060..000ad4381 100644
--- a/src/content/docs/ko/auth/guide/5/pre.mdx
+++ b/src/content/docs/ko/auth/guide/5/pre.mdx
@@ -4,31 +4,30 @@ description: 결제 정보 사전 검증 방법을 안내합니다.
---
import ContentRef from "~/components/gitbook/ContentRef.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
결제정보 사전 검증은 클라이언트 변조를 원천적으로 차단하기 위한 필수 절차입니다.
결제창을 띄우는 프론트엔드를 보여주기 전에 어떤 주문번호로 얼마만큼의 결제가 이루어져야 하는지를 아래의 API를 사용하여 사전에 등록할 수 있습니다.
-
+
-
-```javascript
-// 사용자에게 결제 화면을 보여주기 전에 서버 코드에서
-await axios({
- url: "https://api.iamport.kr/payments/prepare",
- method: "post",
- headers: { "Content-Type": "application/json" },
- data: {
- merchant_uid: "...", // 고객사 주문번호
- amount: 420000, // 결제 예정금액
- }
-});
-```
-
-
+
+ ```ts
+ // 사용자에게 결제 화면을 보여주기 전에 서버 코드에서
+ await axios({
+ url: "https://api.iamport.kr/payments/prepare",
+ method: "post",
+ headers: { "Content-Type": "application/json" },
+ data: {
+ merchant_uid: "...", // 고객사 주문번호
+ amount: 420000, // 결제 예정금액
+ },
+ });
+ ```
+
`IMP.request_pay`의 인자로 들어온 금액이 위의 API로 사전 등록해둔 금액과 일치하지 않으면 SDK 수준에서 결제 요청이 차단됩니다.
diff --git a/src/content/docs/ko/auth/guide/5/readme.mdx b/src/content/docs/ko/auth/guide/5/readme.mdx
index ba0045803..b42af166c 100644
--- a/src/content/docs/ko/auth/guide/5/readme.mdx
+++ b/src/content/docs/ko/auth/guide/5/readme.mdx
@@ -15,13 +15,20 @@ description: 안정적인 결제서비스를 제공할 수 있도록 결제결
> 클라이언트에서의 스크립트 조작은 원천적으로 막을 수 없는 기술적 특징이 있기 때문에 **결제 전후로
> 서버에서 결제금액의 위변조 여부를 반드시 검증**해야 합니다.
-운영중인 서버에서 클라이언트로 부터 전달 받은 결제 결과 데이터를 바탕으로 **결제금액 위변조 여부**를 검증하고 필요시 데이터베이스에 저장합니다. 결제 정보를 검증하는 과정은 크게 아래와 같은 단계로 진행합니다.
+운영중인 서버에서 클라이언트로 부터 전달 받은 결제 결과 데이터를 바탕으로
+**결제금액 위변조 여부**를 검증하고 필요시 데이터베이스에 저장합니다.
+결제 정보를 검증하는 과정은 크게 아래와 같은 단계로 진행합니다.
1. [백엔드 - 사전 검증](pre)
- [**결제금액 사전등록 API**](../../../api/api-1/api-5) 요청
+
2. [프론트엔드 - 결제 요청](../3.)
- SDK `IMP.request_pay` 호출
+
3. [백엔드 - 사후 검증](post)
- 1. 포트원 결제고유번호(**imp_uid**), 고객사 주문번호(**merchant_uid**)를 프론트엔드로부터 수신
- 2. 결제 상세내역 조회를 위해 포트원 [**결제 단건 조회 API** ](https://api.iamport.kr/#!/payments/getPaymentByImpUid)요청
+ 1. 포트원 결제고유번호(**imp\_uid**), 고객사 주문번호(**merchant\_uid**)를 프론트엔드로부터 수신
+
+ 2. 결제 상세내역 조회를 위해 포트원
+ [**결제 단건 조회 API**](https://api.iamport.kr/#!/payments/getPaymentByImpUid) 요청
+
3. 응답받은 내용을 바탕으로 실 결제 금액과 결제요청금액(고객사 자체 데이터베이스)을 비교
diff --git a/src/content/docs/ko/auth/guide/6.mdx b/src/content/docs/ko/auth/guide/6.mdx
index 2a0dd5a0e..e6aba142b 100644
--- a/src/content/docs/ko/auth/guide/6.mdx
+++ b/src/content/docs/ko/auth/guide/6.mdx
@@ -4,19 +4,17 @@ description: 결제가 완료되면 사용자에게 결제 실패 유무 메세
---
import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-import Tab from "~/components/gitbook/tabs/Tab.astro";
**Iframe** 방식으로 진행되는 대부분의 PC환경 결제인 경우 결제응답은 **callback** 함수로 받아볼 수
있으며 고객사 서버에서 결제결과 처리가 최종적으로 완료되면 아래 예제처럼 결제 성공유무에 따른 분기를
통해 결과 메세지 처리를 진행 하실 수 있습니다.
-
-
-```javascript
+```ts
IMP.request_pay(
- {/* 결제 요청 객체 */},
- async requestPayResponse => {
+ {
+ /* 결제 요청 객체 */
+ },
+ async (requestPayResponse) => {
const { success, error_msg } = requestPayResponse;
if (!success) {
alert(`결제에 실패하였습니다. 에러 내용: ${error_msg}`);
@@ -26,41 +24,37 @@ IMP.request_pay(
const res = await axios({
url: "/payments/complete",
method: "post",
- headers: { "Content-Type": "application/json" },
+ headers: { "Content-Type": "application/json" },
data: { imp_uid: "...", merchant_uid: "..." },
});
switch (res.status) {
- case: "vbankIssued":
+ case "vbankIssued":
// 가상계좌 발급 시 로직
break;
- case: "success":
+ case "success":
// 결제 성공 시 로직
break;
}
- }
+ },
);
```
-
-
-
새로운 페이지로 리디렉션되어 결제가 진행되는 대부분의 **모바일환경**에서의 결제는
**m\_redirect\_url** 파라미터로 설정하신 고객사 **EndPoint URL 에서 최종 결제완료 메세지 처리**를
진행해 주시면 됩니다.
-**error\_msg, error\_code 정의**
-
-결제 실패 시 응답으로 내려가는 해당 파라미터는 PG사에서 내려준 오류코드와 메세지를 2차 가공없이 그대로 내려드리고 있습니다.
+ **error\_msg, error\_code 정의**
+ 결제 실패 시 응답으로 내려가는 해당 파라미터는 PG사에서 내려준 오류코드와 메세지를 2차 가공없이 그대로 내려드리고 있습니다.
-인증결제 과정에서 다음과 같은 사용자 동작이 일어날 경우 [**비정상 접근입니다.**]와 같은 오류가 발생할 수 있습니다.
+ 인증결제 과정에서 다음과 같은 사용자 동작이 일어날 경우 \[**비정상 접근입니다.**]와 같은 오류가 발생할 수 있습니다.
-1. PG사 결제창 페이지 내 새로고침하는 경우
-2. 결제 진행 중 뒤로가기 버튼으로 카드사 ACS창으로 이동한 후 추가로 뒤로가기 버튼 클릭하여 PG사 결제창으로 돌아오는 경우
-3. 카드사 ACS 창 내 새로고침하는 경우 (카드사별로 상이)
+ 1. PG사 결제창 페이지 내 새로고침하는 경우
+ 2. 결제 진행 중 뒤로가기 버튼으로 카드사 ACS창으로 이동한 후 추가로 뒤로가기 버튼 클릭하여 PG사 결제창으로 돌아오는 경우
+ 3. 카드사 ACS 창 내 새로고침하는 경우 (카드사별로 상이)
-결제페이지에서 뒤로가기 또는 새로고침 등의 동작을 방지하면 위 오류를 줄일 수 있습니다.
+ 결제페이지에서 뒤로가기 또는 새로고침 등의 동작을 방지하면 위 오류를 줄일 수 있습니다.
diff --git a/src/content/docs/ko/auth/guide/def.mdx b/src/content/docs/ko/auth/guide/def.mdx
index bbc0c28d1..6f36ceb9f 100644
--- a/src/content/docs/ko/auth/guide/def.mdx
+++ b/src/content/docs/ko/auth/guide/def.mdx
@@ -6,26 +6,27 @@ description: 국내 인증결제를 소개합니다.
import Figure from "~/components/Figure.astro";
import Hint from "~/components/Hint.astro";
-인증결제는 신용카드 결제시 PG사로 부터 결제에 대한 인증 결과 수신 이후 해당 인증키로 결제를 요청하는
-결제 방식을 지칭합니다. 국내에서 제일 많이 볼수 있는 결제방식으로 결제 주문페이지에서 결제가
-요청되면 각 PG사의 결제창이 활성화되고 그후 고객이 선택한 카드사에 따른 카드사 전용 결제모듈에서
+인증결제는 신용카드 결제 시 PG사로부터 결제에 대한 인증 결과 수신 이후 해당 인증키로 결제를 요청하는
+결제 방식을 지칭합니다. 국내에서 제일 많이 볼수 있는 결제방식으로 결제 주문 페이지에서 결제가
+요청되면 각 PG사의 결제창이 활성화되고, 그 후 고객이 선택한 카드사에 따른 카드사 전용 결제 모듈에서
인증이 완료되면 해당 인증값을 바탕으로 결제를 요청하는 흐름으로 결제가 진행됩니다.
- 실 결제요청을 위한 통신은 고객사 서버와 PG사 서버간에 직접적으로 이루어지며 해당 결제요청과정에서 카드정보는 포함되어 있지 않습니다.
+ 실 결제요청을 위한 통신은 고객사 서버와 PG사 서버 간에 직접적으로 이루어지며,
+ 해당 결제 요청 과정에 카드 정보는 포함되지 않습니다.
-## 인증결제는 인증방법에 따라 전통적으로 아래 두가지 형태 구분됩니다.
+**인증결제는 인증 방법에 따라 전통적으로 아래 두 가지 형태로 구분됩니다.**
-- ISP 결제 : 공개키 기반의 전자인증서를 통해 사전에 등록된 카드정보를 인증하는 방식
+- ISP 결제 : 공개 키 기반의 전자인증서를 통해 사전에 등록된 카드정보를 인증하는 방식
- MPI 결제 : 카드번호, CVC, 안심클릭 비밀번호를 입력하여 카드정보를 인증하는 방식
-최근에는 대부분에 카드사에서 카드사 자체 **간편결제**를 지원하고 있으며 고객은 사전에 카드를
-등록하고 결제시 **결제 비밀번호 6자리를** 이용하여 간편하게 결제를 요청할 수 있는 구조를 가지고
+최근에는 대부분의 카드사에서 카드사 자체 간편결제를 지원하고 있으며, 고객은 사전에 카드를
+등록하고 결제 시 결제 비밀번호를 이용하여 간편하게 결제를 요청할 수 있는 구조를 가지고
있습니다.
-## 포트원을 통해 인증결제를 연동하시면 매우 손쉽게 결제연동을 완료하실 수 있습니다.
+**포트원을 통해 인증결제를 연동하시면 매우 손쉽게 결제연동을 완료하실 수 있습니다.**
diff --git a/src/content/docs/ko/auth/guide/readme.mdx b/src/content/docs/ko/auth/guide/readme.mdx
index 789b01de3..04d0b918f 100644
--- a/src/content/docs/ko/auth/guide/readme.mdx
+++ b/src/content/docs/ko/auth/guide/readme.mdx
@@ -11,16 +11,16 @@ import Youtube from "~/components/gitbook/Youtube.astro";
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/src/content/docs/ko/console/guide/account.mdx b/src/content/docs/ko/console/guide/account.mdx
index f444c7a39..ca92f9dd7 100644
--- a/src/content/docs/ko/console/guide/account.mdx
+++ b/src/content/docs/ko/console/guide/account.mdx
@@ -9,16 +9,28 @@ import Figure from "~/components/Figure.astro";
## 포트원 관리자콘솔 계정 체계
-- 고객사 관리자 계정 (Admin): 최초 관리자 콘솔 가입시 회원가입한 계정을 고객사을 대표하는 관리자 계정으로 칭합니다. 해당 계정은 모든 기능을 사용하실 수 있습니다.
-- 고객사 매니저 계정 (Manager) : 고객사 관리자 계정이 해당계정을 생성 및 발급하실 수 있습니다. 해당 계정은 상점 및 계정관리 와 연동은 조회만 가능하며 나머지 관리자 콘솔 기능들은 사용하실 수 있습니다.
-- 고객사 개발 계정 (Dev): 고객사 관리자 계정이 해당계정을 생성 및 발급하실 수 있습니다. 해당계정은 연동 기능은 사용 가능하며 상점 계정 관리는 조회만 가능합니다. 나머지 기능들은 사용하실 수 없습니다.
-- 고객사 조회 계정 (Read Only) : 고객사 관리자 계정이 해당계정을 생성 및 발급하실 수 있습니다. 해당 계정은 모든 기능의 조회만 가능합니다.
-- 하위 상점 매니저 계정(Manager) : 고객사 관리자 계정이나 동일한 하위상점의 매니저 계정이 해당계정을 생성 및 발급하실 수 있습니다. 해당 계정은 소속된 하위 상점의 모든 기능을 사용하실 수 있으며 고객사 관리자 계정 관리 및 고객사의 사업자 정보를 조회할 수 있습니다.
-- 하위 상점 조회 계정(Read Only) : 고객사 관리자 계정이나 동일한 하위상점의 매니저 계정이 해당계정을 생성 및 발급하실 수 있습니다. 해당 계정은 소속된 하위 상점의 모든 기능을 조회 만 하실 수 있습니다.
+- 고객사 관리자 계정 (Admin): 최초 관리자 콘솔 가입시 회원가입한 계정을 고객사를 대표하는
+ 관리자 계정으로 칭합니다. 해당 계정은 모든 기능을 사용하실 수 있습니다.
+
+- 고객사 매니저 계정 (Manager) : 고객사 관리자 계정이 해당 계정을 생성 및 발급하실 수 있습니다.
+ 해당 계정은 상점 및 계정관리와 연동 정보 조회만 가능하며 나머지 관리자 콘솔 기능들은 사용하실 수 없습니다.
+
+- 고객사 개발 계정 (Dev): 고객사 관리자 계정이 해당 계정을 생성 및 발급하실 수 있습니다.
+ 해당 계정은 연동 기능은 사용 가능하며 상점 계정 관리는 조회만 가능합니다. 나머지 기능들은 사용하실 수 없습니다.
+
+- 고객사 조회 계정 (Read Only) : 고객사 관리자 계정이 해당 계정을 생성 및 발급하실 수 있습니다.
+ 해당 계정은 모든 기능의 조회만 가능합니다.
+
+- 하위 상점 매니저 계정(Manager) : 고객사 관리자 계정이나 동일한 하위상점의 매니저 계정이
+ 해당 계정을 생성 및 발급하실 수 있습니다. 해당 계정은 소속된 하위 상점의 모든 기능을 사용하실 수 있으며
+ 고객사 관리자 계정 관리 및 고객사의 사업자 정보를 조회할 수 있습니다.
+
+- 하위 상점 조회 계정(Read Only) : 고객사 관리자 계정이나 동일한 하위상점의 매니저 계정이
+ 해당 계정을 생성 및 발급하실 수 있습니다. 해당 계정은 소속된 하위 상점의 모든 기능에 대해 조회만 가능합니다.
## 관리자 계정 관리
-_파란색 부분은 사용가능한 버튼 표기입니다_
+_파란색 부분은 사용 가능한 버튼 표기입니다_
@@ -31,8 +43,11 @@ _파란색 부분은 사용가능한 버튼 표기입니다_
## 고객사, 하위 상점 체계
-- 고객사: 포트원에서 고객사이란 고유한 사업자등록번호를 가지고있는 사업체로 정의합니다. 유일한 예외는 타 고객사들을 위해 결제를 개발해주시는 에이전시 뿐 입니다.
-- 하위상점: 고객사는 서비스 및 상품군 별, 지역별, 등등 사업을 나누어 관리자 콘솔로 관리하고 결제를 연동할 수 있습니다. 해당사항으로 나뉘는 단위를 하위상점으로 정의합니다.
+- 고객사: 포트원에서 고객사이란 고유한 사업자등록번호를 가지고있는 사업체로 정의합니다.
+ 유일한 예외는 타 고객사들을 위해 결제를 개발해주시는 에이전시 뿐 입니다.
+
+- 하위상점: 고객사는 서비스 및 상품군 별, 지역별, 등등 사업을 나누어 관리자 콘솔로 관리하고
+ 결제를 연동할 수 있습니다. 해당사항으로 나뉘는 단위를 하위상점으로 정의합니다.
- 결제 연동: 고객사가 신청한 결제수단 및 대행사를 특정 하위상점에 관리자 콘솔에서 할당할 수 있습니다.
- 하위상점 계정: 하위상점에 소속된 계정은 하위상점관련된 기능 및 결제건만 확인 하실 수 있습니다.
@@ -40,10 +55,7 @@ _파란색 부분은 사용가능한 버튼 표기입니다_
### 고객사 관리자 계정 시점
-
+
- 고객사 관리자 계정은 하위상점을 추가, 수정 할 수 있으며 해당 하위상점의 소속된 계정을 생성, 수정, 삭제 하실 수 있으십니다.
@@ -64,22 +76,13 @@ _파란색 부분은 사용가능한 버튼 표기입니다_
### 그 외 계정 시점
-
+
-
+
-
+
-## 하위상점별 웹훅 설정
+## 하위상점별 웹훅 설정
하위상점 수정에서 결제알림 동일 설정 옵션을 해제하면 하위상점별 웹훅 설정을 할 수 있습니다.
@@ -90,6 +93,7 @@ _파란색 부분은 사용가능한 버튼 표기입니다_
+
하단의 결제알림 동일설정 체크박스를 해제해주세요
@@ -97,6 +101,7 @@ _파란색 부분은 사용가능한 버튼 표기입니다_
+
웹훅 연동을 원하시는 하위상점을 선택한 뒤 결제알림 관리 탭에서 웹훅을
diff --git a/src/content/docs/ko/console/guide/connect.mdx b/src/content/docs/ko/console/guide/connect.mdx
index ecdff7e4e..a73b671ae 100644
--- a/src/content/docs/ko/console/guide/connect.mdx
+++ b/src/content/docs/ko/console/guide/connect.mdx
@@ -66,9 +66,9 @@ description: ''
- 추가 설정 관리 화면에서는 `화이트리스트 설정` 과 `내 식별코드, API Keys` 를 확인하실 수 있습니다.
- 화이트 리스트 : 포트원 관리자의 IP보안설정에 입력하는 값은 IP가 아닌 CIDR 블록방식 으로 입력하셔야
- 합니다.예를 들어 입력 하시고자 하는 IP가1.1.1. 이라고 가정 했을때 해당 IP 하나만 허용하고
- 싶으시다면  [1.1.1.1/3](http://1.1.1.1/3) 로 작성 하셔야 하고 만약1.1.1. \~1.1.1.25 까지의
- IP대역을 모두 허용하고 싶으시다면 [1.1.1.0/2](http://1.1.1.0/2) 형태로 작성하시면 됩니다. 보다
+ 합니다. 예를 들어 입력 하시고자 하는 IP가 `1.1.1.1` 이라고 가정 했을때 해당 IP 하나만 허용하고
+ 싶으시다면 `1.1.1.1/32`로 작성 하셔야 하고 만약 `1.1.1.1` \~ `1.1.1.255`까지의
+ IP대역을 모두 허용하고 싶으시다면 `1.1.1.0/24` 형태로 작성하시면 됩니다. 보다
자세한 표기법은 [RFC4632](https://tools.ietf.org/html/rfc4632) 를 참고부탁드립니다.
![]()
diff --git a/src/content/docs/ko/console/guide/list.mdx b/src/content/docs/ko/console/guide/list.mdx
index 1648e573e..302fb1eb3 100644
--- a/src/content/docs/ko/console/guide/list.mdx
+++ b/src/content/docs/ko/console/guide/list.mdx
@@ -19,7 +19,7 @@ description: 결제가 이루어진 거래내역을 조회할 수 있는 메뉴
- 검색된 내역의 총 거래액 - 총 환불액의 계산을 통하여 통화별로 확인 할 수 있는 총 매출액 기능
- 기본 결제내역 값들과 추가적으로 고객정보, 결제 대행사 정보, 카드결제 정보, 계좌결제 정보 를 선택하여 내역을 다운받을 수 있는 엑셀 다운로드 기능
-위 기능들로 구성되어 있는 화면입니다.\\
+위 기능들로 구성되어 있는 화면입니다.
## 캘린더 필터
@@ -42,6 +42,7 @@ description: 결제가 이루어진 거래내역을 조회할 수 있는 메뉴
- 결제내역의 특정값을 지정하시거나 모든 결제관련 값에 대해서 직접 입력하신 값을 검색하는 기능입니다.
- 통합검색 필터는
+
- 포트원 거래번호
- 고객사 거래번호
- 카드사 승인번호
@@ -116,6 +117,7 @@ description: 결제가 이루어진 거래내역을 조회할 수 있는 메뉴
- 고객정보는 고객사가 sdk 로 전달하시는 결제하는 고객의 이름, 전화번호, 이메일, 주소 입니다.
- 결제 정보는
+
- 결제상태
- 포트원 거래번호
diff --git a/src/content/docs/ko/console/guide/readme.mdx b/src/content/docs/ko/console/guide/readme.mdx
index ebc407973..81e2b710a 100644
--- a/src/content/docs/ko/console/guide/readme.mdx
+++ b/src/content/docs/ko/console/guide/readme.mdx
@@ -7,11 +7,16 @@ import ContentRef from "~/components/gitbook/ContentRef.astro";
포트원 관리자콘솔은 포트원 계정 생성 및 하위상점 관리, 결제수단 및 PG신청, 설정 그리고 결제내역을 통합하여 관리할 수 있는 페이지입니다.
-포트원 관리자콘솔 주소: https://admin.portone.io
+포트원 관리자콘솔 주소: [https://admin.portone.io](https://admin.portone.io)
+
+
+
+
+
diff --git a/src/content/docs/ko/console/pg.mdx b/src/content/docs/ko/console/pg.mdx
index fd6484dd8..31ed5dce9 100644
--- a/src/content/docs/ko/console/pg.mdx
+++ b/src/content/docs/ko/console/pg.mdx
@@ -4,91 +4,88 @@ description: 복수 PG를 사용하는 경우 설정방법을 확인할 수 있
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
import image1 from "./_assets/multi-pg-guide-1.png";
-import image2 from "./_assets/multi-pg-guide-2.png";
-### 이 문서는 포트원 관리자 콘솔에서 복수의 PG사를 설정하여 원하는 결제 수단으로 결제창을 호출하는 방법을 설명합니다.
+이 문서는 포트원 관리자 콘솔에서 복수의 PG사를 설정하여 원하는 결제 수단으로 결제창을 호출하는 방법을 설명합니다.
-### PG 설정하기
+## PG 설정하기
추가 설정이 필요한 PG설정정보를 아래와 같이 설정해 주세요.
[포트원 관리자 콘솔](https://admin.portone.io/) > 결제 연동 > 테스트/실 연동 > 실 연동 또는 테스트
-연동 선택 > PG사 / PG 모듈 선택 > [+추가] 클릭
+연동 선택 > PG사 / PG 모듈 선택 > \[+추가] 클릭
-## 특정 PG사의 결제창 열기
+## 특정 PG사의 결제창 열기
결제창을 호출하기 위한 [**JavaScript SDK**](../sdk/javascript-sdk-old/readme) `IMP.request_pay`를
호출할 때 `param.pg` 속성에 미리 등록한 PG사를 지정하여 해당 PG사의 결제창을 호출할 수 있습니다.
`pg` 속성에는 다음과 같은 형태로 [PG 값](https://docs.iamport.kr/sdk/javascript-sdk?lang=ko#request_pay-pg)을
지정할 수 있습니다.
-- **\{ PG사 코드값 \}**
-- **\{ PG사 코드값 \}.\{ PG사 상점아이디 \}**
+- **\{ PG사 코드값 }**
+- **\{ PG사 코드값 }.\{ PG사 상점아이디 }**
만약 포트원 관리자 콘솔 PG사 등록 현황이 아래와 같이 **3개의 PG설정**을 등록했다고 가정해 보면,
-|PG사 |상점아이디 (예시)|용도 |
+| PG사 |상점아이디 (예시)| 용도 |
|:---------------------:|:---------------:|:---------------:|
-|**(신) 나이스페이먼츠**|MID-a |**인증 결제용** |
-|**(신) 나이스페이먼츠**|MID-b |**비인증 결제용**|
-|카카오페이 |MID-c |인증 결제용 |
+|**(신) 나이스페이먼츠**| MID-a | **인증 결제용** |
+|**(신) 나이스페이먼츠**| MID-b |**비인증 결제용**|
+| 카카오페이 | MID-c | 인증 결제용 |
-위에서 등록한 PG 설정 중 **\{ PG사 코드값 \}** 으로만 구분할 수 있는 PG사는 **카카오페이**입니다.
+위에서 등록한 PG 설정 중 **\{ PG사 코드값 }** 으로만 구분할 수 있는 PG사는 **카카오페이**입니다.
다음과 같이 `pg` 속성에 `kakaopay`를 지정하면 등록한 카카오페이 설정으로 결제창이 호출됩니다
-
-```javascript
-IMP.request_pay({
- pg: "kakaopay", // 카카오페이 결제창 호출
- amount: 1000,
- name: "테스트 주문",
- buyer_name: "구매자",
- buyer_email: "buyer@iamport.kr",
-});
-```
-
+
+ ```ts
+ IMP.request_pay({
+ pg: "kakaopay", // 카카오페이 결제창 호출
+ amount: 1000,
+ name: "테스트 주문",
+ buyer_name: "구매자",
+ buyer_email: "buyer@iamport.kr",
+ });
+ ```
+
-위에서 등록한 PG 설정 중 **(신) 나이스페이먼츠 (인증 결제용)** 와 **(신) 나이스페이먼츠 (비인증 결제용)** 의 경우 **PG사 코드값이 동일**하기 때문에 `pg` 속성을 코드값과 상점아이디를 조합한 값 **\{ PG사 코드값 \}.\{ PG사 상점아이디 \}** 으로 설정해서 구분해야 합니다.
+위에서 등록한 PG 설정 중 **(신) 나이스페이먼츠 (인증 결제용)** 와 **(신) 나이스페이먼츠 (비인증 결제용)** 의 경우 **PG사 코드값이 동일**하기 때문에 `pg` 속성을 코드값과 상점아이디를 조합한 값 **\{ PG사 코드값 }.\{ PG사 상점아이디 }** 으로 설정해서 구분해야 합니다.
-
-```javascript
-IMP.request_pay({
- pg: "nice_v2.MID-a", // (신) 나이스페이먼츠 인증 결제용 호출 (상점아이디 MID-a 적용)
- amount: 1000,
- name: "테스트 주문",
- buyer_name: "구매자",
- buyer_email: "buyer@iamport.kr"
- });
-```
-
-
-
-
-```javascript
-IMP.request_pay({
- pg: "nice_v2.MID-b", // (신) 나이스페이먼츠 인증 결제용 호출 (상점아이디 MID-b 적용)
- amount: 1000,
- name: "테스트 주문",
- buyer_name: "구매자",
- buyer_email: "buyer@iamport.kr"
-});
-```
-
-
+
+ ```ts
+ IMP.request_pay({
+ pg: "nice_v2.MID-a", // (신) 나이스페이먼츠 인증 결제용 호출 (상점아이디 MID-a 적용)
+ amount: 1000,
+ name: "테스트 주문",
+ buyer_name: "구매자",
+ buyer_email: "buyer@iamport.kr",
+ });
+ ```
+
+
+
+ ```ts
+ IMP.request_pay({
+ pg: "nice_v2.MID-b", // (신) 나이스페이먼츠 인증 결제용 호출 (상점아이디 MID-b 적용)
+ amount: 1000,
+ name: "테스트 주문",
+ buyer_name: "구매자",
+ buyer_email: "buyer@iamport.kr",
+ });
+ ```
+
-**pg 속성 매칭 우선순위**
+ **pg 속성 매칭 우선순위**
-관리자 콘솔에서 PG 설정을 저장한 순서(오래된순)대로 pg 속성의 조건과 일치하는 설정을 찾습니다.
+ 관리자 콘솔에서 PG 설정을 저장한 순서(오래된순)대로 pg 속성의 조건과 일치하는 설정을 찾습니다.
diff --git a/src/content/docs/ko/etc/all/0.mdx b/src/content/docs/ko/etc/all/0.mdx
index 63975cfa1..7d5f01655 100644
--- a/src/content/docs/ko/etc/all/0.mdx
+++ b/src/content/docs/ko/etc/all/0.mdx
@@ -3,19 +3,14 @@ title: 통합인증 준비하기
description: 통합인증 연동을 시작하기 위한 준비작업을 소개합니다.
---
-import Tab from "~/components/gitbook/tabs/Tab.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Hint from "~/components/Hint.astro";
## 통합인증을 연동할 페이지에 포트원 라이브러리를 추가합니다.
-신용카드 본인인증 기능은 **포트원 JavaScript v1.1.8**부터 지원합니다.
-
+ 신용카드 본인인증 기능은 **포트원 JavaScript v1.1.8**부터 지원합니다.
-
-
```html title="client-side"
@@ -23,30 +18,12 @@ import Hint from "~/components/Hint.astro";
```
-
-
-
-**jQuery 1.0 이상이 설치**되어 있어야 합니다.
-
+ **jQuery 1.0 이상이 설치**되어 있어야 합니다.
-### 본인인증 페이지에 [`고객사 식별코드`](../../ready/readme#4-포트원-연동정보-확인하기)를 이용하여 `IMP` 객체를 초기화합니다.
-
-
-
-```javascript title="client-side"
-var IMP = window.IMP; // 생략 가능
-IMP.init("{고객사 식별코드}"); // 예: imp00000000
-```
+## 본인인증 페이지에 [`고객사 식별코드`](../../ready/readme#4-포트원-연동정보-확인하기)를 이용하여 `IMP` 객체를 초기화합니다.
-
-
-
-```javascript title="Client-side"
-var IMP = window.IMP; // 생략 가능
+```ts title="client-side"
IMP.init("{고객사 식별코드}"); // 예: imp00000000
```
-
-
-
diff --git a/src/content/docs/ko/etc/all/1.mdx b/src/content/docs/ko/etc/all/1.mdx
index 72eb6fb14..7f1606d6b 100644
--- a/src/content/docs/ko/etc/all/1.mdx
+++ b/src/content/docs/ko/etc/all/1.mdx
@@ -3,10 +3,7 @@ title: 통합인증 요청하기
description: 통합인증 페이지를 호출하는 방법을 확인합니다.
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-import Tab from "~/components/gitbook/tabs/Tab.astro";
-
-### 통합인증은 아래 두가지 방법으로 호출할 수 있습니다.
+통합인증은 아래 두 가지 방법으로 호출할 수 있습니다.
> **팝업**(**Default**) 방식
>
@@ -23,27 +20,23 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
아래는 JavaScript SDK [**IMP.certification**](../../sdk/javascript-sdk/cft) 함수를 이용하여 통합인증
본인인증창을 호출하는 예제입니다.
-
-
-```javascript title="client-side"
+```ts title="client-side"
// IMP.certification(param, callback) 호출
- IMP.certification({ // param
- pg:'inicis_unified.{CPID}',//본인인증 설정이 2개이상 되어 있는 경우 필수
+IMP.certification(
+ {
+ // param
+ pg: "inicis_unified.{CPID}", //본인인증 설정이 2개이상 되어 있는 경우 필수
merchant_uid: "ORD20180131-0000011", // 주문 번호
- m_redirect_url : "{리디렉션 될 URL}", // 모바일환경에서 popup:false(기본값) 인 경우 필수, 예: https://www.myservice.com/payments/complete/mobile
- popup : false // PC환경에서는 popup 파라미터가 무시되고 항상 true 로 적용됨
- }, function (rsp) { // callback
+ m_redirect_url: "{리디렉션 될 URL}", // 모바일환경에서 popup:false(기본값) 인 경우 필수, 예: https://www.myservice.com/payments/complete/mobile
+ popup: false, // PC환경에서는 popup 파라미터가 무시되고 항상 true 로 적용됨
+ },
+ function (rsp) {
+ // callback
if (rsp.success) {
- ...,
- // 인증 성공 시 로직,
- ...
+ // 인증 성공 시 로직
} else {
- ...,
- // 인증 실패 시 로직,
- ...
+ // 인증 실패 시 로직
}
- });
+ },
+);
```
-
-
-
diff --git a/src/content/docs/ko/etc/all/2.mdx b/src/content/docs/ko/etc/all/2.mdx
index d4b2c9ba9..bfb3889c4 100644
--- a/src/content/docs/ko/etc/all/2.mdx
+++ b/src/content/docs/ko/etc/all/2.mdx
@@ -3,62 +3,68 @@ title: 인증 완료정보 전달하기
description: 통합인증 이후 획득된 정보를 처리하는 방법을 안내합니다.
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
인증 프로세스가 완료되면 반환되는 응답 객체(**`rsp`**)의 인증 성공 여부에 따라 처리 로직을 **`callback`** 함수에 작성합니다. 요청이 성공했을 경우에 **인증번호(`imp_uid`)를 서버에 전달**하는 로직을 다음 예제를 참고하여 작성합니다. 인증 성공시 [**반환되는 값**](../../sdk/javascript-sdk/cft-rt)을 확인하세요
-### 1. callback Data 전달 예제
+## 1. callback Data 전달 예제
-
-```javascript title="client-side"
-IMP.certification({
- /* ...중략... */
- }, function (rsp) { // callback
- if (rsp.success) { // 인증 성공 시
- // jQuery로 HTTP 요청
- jQuery.ajax({
- url: "{서버의 인증 정보를 받는 endpoint}",
- method: "POST",
- headers: { "Content-Type": "application/json" },
- data: { imp_uid: rsp.imp_uid }
- });
- } else {
- alert("인증에 실패하였습니다. 에러 내용: " + rsp.error_msg);
- }
- });
-```
-
-
+
+ ```ts title="client-side"
+ IMP.certification(
+ {
+ /* ...중략... */
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // 인증 성공 시
+ // jQuery로 HTTP 요청
+ jQuery.ajax({
+ url: "{서버의 인증 정보를 받는 endpoint}",
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ data: { imp_uid: rsp.imp_uid },
+ });
+ } else {
+ alert("인증에 실패하였습니다. 에러 내용: " + rsp.error_msg);
+ }
+ },
+ );
+ ```
+
-
-```javascript title="client-side"
-IMP.certification({
- /* ...중략... */
- }, rsp => { // callback
- if (rsp.success) { // 인증 성공 시
- // axios로 HTTP 요청
- axios({
- url: "{서버의 인증 정보를 받는 endpoint}",
- method: "post",
- headers: { "Content-Type": "application/json" },
- data: { imp_uid: rsp.imp_uid }
- });
- } else {
- alert(\`인증에 실패하였습니다. 에러 내용: \${rsp.error_msg}\`);
- }
- });
-
-````
-
-
+
+ ```ts title="client-side"
+ IMP.certification(
+ {
+ /* ...중략... */
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // 인증 성공 시 axios로 HTTP 요청
+ axios({
+ url: "{서버의 인증 정보를 받는 endpoint}",
+ method: "post",
+ headers: { "Content-Type": "application/json" },
+ data: { imp_uid: rsp.imp_uid },
+ });
+ } else {
+ alert(`인증에 실패하였습니다. 에러 내용: ${rsp.error_msg}`);
+ }
+ },
+ );
+```
+
### 2. 리디렉션 전달 예제
-`IMP.`**`certification`** 호출 시 설정한 `param.`**`m_redirect_url`**로 인증 정보와 함께 다음과 같이 리디렉션됩니다.
+`IMP.`**`certification`** 호출 시 설정한 **`m_redirect_url`** 로 인증 정보와 함께 다음과 같이 리디렉션됩니다.
-```uri title="Query String"
+```http title="Query String"
GET {m_redirect_url}?imp_uid={}&merchant_uid={본인인증 건의 merchant_uid}&success={true 또는 false}
-````
+```
diff --git a/src/content/docs/ko/etc/all/3.mdx b/src/content/docs/ko/etc/all/3.mdx
index fd4726c3f..28760a345 100644
--- a/src/content/docs/ko/etc/all/3.mdx
+++ b/src/content/docs/ko/etc/all/3.mdx
@@ -3,52 +3,48 @@ title: 인증정보 조회 및 활용하기
description: 인증정보를 획득하고 활용하는 방법을 안내합니다.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
통합인증 완료이후 획득한 `imp_uid`를 이용하여 고객 인증정보를 조회할 수 있습니다.
-### **STEP 01.** 인증정보(imp_uid) 서버단에서 획득하기
+## **STEP 01.** 인증정보(imp\_uid) 서버단에서 획득하기
아래는 본인인증 앞단에서 넘어온 값을 서버단에서 수신받은 예제 입니다.
-
-
-```javascript title="server-side"
-app.use(bodyParser.json());
-
-// "/certifications"에 대한 POST 요청을 처리하는 controller
-app.post("/certifications", async (request, response) => {
- // request의 body에서 imp_uid 추출
- const { imp_uid } = request.body;
-});
-```
-
-
-
-
-
-```javascript title="server-side"
-app.use(bodyParser.json());
+
+ ```ts title="server-side"
+ app.use(bodyParser.json());
+
+ // "/certifications"에 대한 POST 요청을 처리하는 controller
+ app.post("/certifications", async (request, response) => {
+ // request의 body에서 imp_uid 추출
+ const { imp_uid } = request.body;
+ });
+ ```
+
-// "/certifications/redirect"에 대한 GET 요청을 처리하는 controller
-app.get("/certifications/redirect", async (request, response) => {
- // request의 query에서 imp_uid 추출
- const { imp_uid } = request.query;
-});
-```
+
+ ```ts title="server-side"
+ app.use(bodyParser.json());
-
+ // "/certifications/redirect"에 대한 GET 요청을 처리하는 controller
+ app.get("/certifications/redirect", async (request, response) => {
+ // request의 query에서 imp_uid 추출
+ const { imp_uid } = request.query;
+ });
+ ```
+
-### **STEP 02.** 인증 정보 조회하기
+## **STEP 02.** 인증 정보 조회하기
포트원 서버에서 인증 정보를 조회하기 위해서 먼저 [**REST API access token**](../../api/rest-api-access-token)을 발급받습니다.
발급받은 액세스 토큰(`access_token`)과 인증번호(`imp_uid`)로 **본인인증 결과조회 REST API** 를 호출하여 인증 정보를 조회하는 예제입니다.
-```javascript title="server-side(Node.js)"
+```ts title="server-side(Node.js)"
app.use(bodyParser.json());
// "/certifications"에 대한 POST 요청을 처리하는 controller
@@ -90,7 +86,7 @@ app.post("/certifications", async (request, response) => {
});
```
-### **STEP 03.** 인증 정보 활용하기
+## **STEP 03.** 인증 정보 활용하기
조회한 인증 정보에서 다음의 고객 정보를 추출하는 서비스 코드 예제입니다.\
필요 시, 예제와 같이 고객 정보를 사용하여 연령 제한을 검사할 수 있습니다.
@@ -101,7 +97,7 @@ app.post("/certifications", async (request, response) => {
- `unique_key`: CI 값과 동일. 온라인 주민번호와 같은 개인고유식별키
- `phone :`휴대폰 번호
-```javascript title="Node.js"
+```ts title="Node.js"
// "/certifications"에 대한 POST 요청을 처리하는 controller
app.post("/certifications", async (request, response) => {
const { imp_uid } = request.body; // request의 body에서 imp_uid 추출
@@ -125,11 +121,10 @@ app.post("/certifications", async (request, response) => {
```
-**\**
-
-- 이니시스 통합인증서비스는 **내국인/외국인 여부 등은 따로 제공되지 않습니다**.
-- 이니시스 통합인증서비스는 **성별(gender) 정보는 리턴되지 않습니다**. (2024년 1분기 지원 예정)
-- 이니시스 통합인증서비스는 **DI 정보는 제공되지 않습니다**.
-- 이니시스 통합인증서비스는 **카카오 인증의 경우, CI값 제공 가능하나 KG이니시스와 계약시 별도 서류 작성 절차가 필요합니다**.
+ **\**
+ - 이니시스 통합인증서비스는 **내국인/외국인 여부 등은 따로 제공되지 않습니다**.
+ - 이니시스 통합인증서비스는 **성별(gender) 정보는 리턴되지 않습니다**. (2024년 1분기 지원 예정)
+ - 이니시스 통합인증서비스는 **DI 정보는 제공되지 않습니다**.
+ - 이니시스 통합인증서비스는 **카카오 인증의 경우, CI값 제공 가능하나 KG이니시스와 계약시 별도 서류 작성 절차가 필요합니다**.
diff --git a/src/content/docs/ko/etc/all/readme.mdx b/src/content/docs/ko/etc/all/readme.mdx
index 9d1930e4b..963924378 100644
--- a/src/content/docs/ko/etc/all/readme.mdx
+++ b/src/content/docs/ko/etc/all/readme.mdx
@@ -3,7 +3,7 @@ title: 통합인증 연동하기
description: 통합인증 기능을 구현하는 방법을 설명합니다.
---
-### 통합인증 서비스란 ?
+## 통합인증 서비스란 ?
카카오톡 인증서, 네이버 인증서 등의 민간 인증서를 통한 인증 절차를 거쳐 본인 여부와 입력한 정보의
정확성을 확인하여 주는 서비스입니다. 통합인증은 **KG이니시스**를 통해 제공되며 민간 인증서를
diff --git a/src/content/docs/ko/etc/budget.mdx b/src/content/docs/ko/etc/budget.mdx
index d748c6d53..e7b7feef9 100644
--- a/src/content/docs/ko/etc/budget.mdx
+++ b/src/content/docs/ko/etc/budget.mdx
@@ -3,4 +3,4 @@ title: 버짓핸들러 연동하기
description: 카드사 프로모션 서비스를 진행하기 위한 가이드 입니다.
---
-### [**버짓핸들러 연동가이드**](https://portone.gitbook.io/promotion) **확인**
+**[버짓핸들러 연동가이드](https://portone.gitbook.io/promotion) 확인**
diff --git a/src/content/docs/ko/etc/credit-auth/1.mdx b/src/content/docs/ko/etc/credit-auth/1.mdx
index 2f9dfe792..06a92d6e2 100644
--- a/src/content/docs/ko/etc/credit-auth/1.mdx
+++ b/src/content/docs/ko/etc/credit-auth/1.mdx
@@ -3,19 +3,14 @@ title: 1. 본인인증 준비하기
description: 신용카드 본인인증을 시작하기 위한 안내입니다.
---
-import Tab from "~/components/gitbook/tabs/Tab.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Hint from "~/components/Hint.astro";
## 본인인증을 연동할 페이지에 포트원 라이브러리를 추가합니다.
-신용카드 본인인증 기능은 **포트원 JavaScript v1.1.7**부터 지원합니다.
-
+ 신용카드 본인인증 기능은 **포트원 JavaScript v1.1.7**부터 지원합니다.
-
-
```html title="client-side"
@@ -23,30 +18,12 @@ import Hint from "~/components/Hint.astro";
```
-
-
-
-**jQuery 1.0 이상이 설치**되어 있어야 합니다.
-
+ **jQuery 1.0 이상이 설치**되어 있어야 합니다.
### 본인인증 페이지에 [`고객사 식별코드`](../../ready/readme#4-포트원-연동정보-확인하기)를 이용하여 `IMP` 객체를 초기화합니다.
-
-
-```javascript title="client-side"
-var IMP = window.IMP; // 생략 가능
+```ts title="client-side"
IMP.init("{고객사 식별코드}"); // 예: imp00000000
```
-
-
-
-
-```javascript title="client-side"
-const IMP = window.IMP; // 생략 가능
-IMP.init({ 고객사_식별코드 }); // 예: "imp00000000"
-```
-
-
-
diff --git a/src/content/docs/ko/etc/credit-auth/2.mdx b/src/content/docs/ko/etc/credit-auth/2.mdx
index 9e08c6d07..200a7c909 100644
--- a/src/content/docs/ko/etc/credit-auth/2.mdx
+++ b/src/content/docs/ko/etc/credit-auth/2.mdx
@@ -3,10 +3,10 @@ title: 2. 본인인증 요청하기
description: 신용카드 본인인증 창을 호출하는 방법을 안내합니다.
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-### 신용카드 본인인증은 아래 두가지 방법으로 호출할 수 있습니다.
+신용카드 본인인증은 아래 두가지 방법으로 호출할 수 있습니다.
> **팝업**(Default) 방식
>
@@ -24,48 +24,48 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
본인인증창을 호출하는 예제입니다.
-
-```javascript title="client-side"
-// IMP.certification(param, callback) 호출
- IMP.certification({ // param
- merchant_uid: "ORD20180131-0000011", // 주문 번호
- // 모바일환경에서 popup:false(기본값) 인 경우 필수
- m_redirect_url : "{리디렉션 될 URL}",
- popup : false // PC환경에서는 popup 파라미터가 무시되고 항상 true 로 적용됨
- }, function (rsp) { // callback
- if (rsp.success) {
- ...,
- // 인증 성공 시 로직,
- ...
- } else {
- ...,
- // 인증 실패 시 로직,
- ...
- }
- });
-```
-
-
-
-
-```javascript title="client-side"
-// IMP.certification(param, callback) 호출
- IMP.certification({ // param
- merchant_uid: "ORD20180131-0000011", // 주문 번호
- m_redirect_url : "{리디렉션 될 URL}", // 모바일환경에서 popup:false(기본값) 인 경우 필수
- popup : false // PC환경에서는 popup 파라미터가 무시되고 항상 true 로 적용됨
- }, rsp => { // callback
- if (rsp.success) {
- ...,
- // 인증 성공 시 로직,
- ...
- } else {
- ...,
- // 인증 실패 시 로직,
- ...
- }
- });
-```
+
+ ```ts title="client-side"
+ // IMP.certification(param, callback) 호출
+ IMP.certification(
+ {
+ // param
+ merchant_uid: "ORD20180131-0000011", // 주문 번호
+ // 모바일환경에서 popup:false(기본값) 인 경우 필수
+ m_redirect_url: "{리디렉션 될 URL}",
+ popup: false, // PC환경에서는 popup 파라미터가 무시되고 항상 true 로 적용됨
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // 인증 성공 시 로직
+ } else {
+ // 인증 실패 시 로직
+ }
+ },
+ );
+ ```
+
-
+
+ ```ts title="client-side"
+ // IMP.certification(param, callback) 호출
+ IMP.certification(
+ {
+ // param
+ merchant_uid: "ORD20180131-0000011", // 주문 번호
+ m_redirect_url: "{리디렉션 될 URL}", // 모바일환경에서 popup:false(기본값) 인 경우 필수
+ popup: false, // PC환경에서는 popup 파라미터가 무시되고 항상 true 로 적용됨
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // 인증 성공 시 로직
+ } else {
+ // 인증 실패 시 로직
+ }
+ },
+ );
+ ```
+
diff --git a/src/content/docs/ko/etc/credit-auth/3.mdx b/src/content/docs/ko/etc/credit-auth/3.mdx
index 638cb4f86..16ecce1af 100644
--- a/src/content/docs/ko/etc/credit-auth/3.mdx
+++ b/src/content/docs/ko/etc/credit-auth/3.mdx
@@ -3,62 +3,68 @@ title: 3. 인증 완료정보 전달하기
description: 신용카드 본인인증 이후 획득된 정보를 처리하는 방법을 안내합니다.
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
인증 프로세스가 완료되면 반환되는 응답 객체(**`rsp`**)의 인증 성공 여부에 따라 처리 로직을 **`callback`** 함수에 작성합니다. 요청이 성공했을 경우에 **인증번호(`imp_uid`)를 서버에 전달**하는 로직을 다음 예제를 참고하여 작성합니다. 인증 성공시 [**반환되는 값**](../../sdk/javascript-sdk/cft-rt)을 확인하세요
-### 1. callback Data 전달 예제
+## 1. callback Data 전달 예제
-
-```javascript title="client-side"
-IMP.certification({
- /* ...중략... */
- }, function (rsp) { // callback
- if (rsp.success) { // 인증 성공 시
- // jQuery로 HTTP 요청
- jQuery.ajax({
- url: "{서버의 인증 정보를 받는 endpoint}",
- method: "POST",
- headers: { "Content-Type": "application/json" },
- data: { imp_uid: rsp.imp_uid }
- });
- } else {
- alert("인증에 실패하였습니다. 에러 내용: " + rsp.error_msg);
- }
- });
-```
-
-
+
+ ```ts title="client-side"
+ IMP.certification(
+ {
+ /* ...중략... */
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // 인증 성공 시
+ // jQuery로 HTTP 요청
+ jQuery.ajax({
+ url: "{서버의 인증 정보를 받는 endpoint}",
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ data: { imp_uid: rsp.imp_uid },
+ });
+ } else {
+ alert("인증에 실패하였습니다. 에러 내용: " + rsp.error_msg);
+ }
+ },
+ );
+ ```
+
-
-```javascript title="client-side"
-IMP.certification({
- /* ...중략... */
- }, rsp => { // callback
- if (rsp.success) { // 인증 성공 시
- // axios로 HTTP 요청
- axios({
- url: "{서버의 인증 정보를 받는 endpoint}",
- method: "post",
- headers: { "Content-Type": "application/json" },
- data: { imp_uid: rsp.imp_uid }
- });
- } else {
- alert(\`인증에 실패하였습니다. 에러 내용: \${rsp.error_msg}\`);
- }
- });
-
-````
-
-
+
+ ```ts title="client-side"
+ IMP.certification(
+ {
+ /* ...중략... */
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // 인증 성공 시 axios로 HTTP 요청
+ axios({
+ url: "{서버의 인증 정보를 받는 endpoint}",
+ method: "post",
+ headers: { "Content-Type": "application/json" },
+ data: { imp_uid: rsp.imp_uid },
+ });
+ } else {
+ alert(`인증에 실패하였습니다. 에러 내용: ${rsp.error_msg}`);
+ }
+ },
+ );
+ ```
+
-### 2. 리디렉션 전달 예제
+## 2. 리디렉션 전달 예제
-`IMP.`**`certification`** 호출 시 설정한 `param.`**`m_redirect_url`**로 인증 정보와 함께 다음과 같이 리디렉션됩니다.
+`IMP.`**`certification`** 호출 시 설정한 **`m_redirect_url`** 로 인증 정보와 함께 다음과 같이 리디렉션됩니다.
-```uri title="Query String"
+```http title="Query String"
GET {m_redirect_url}?imp_uid={}&merchant_uid={본인인증 건의 merchant_uid}&success={true 또는 false}
-````
+```
diff --git a/src/content/docs/ko/etc/credit-auth/4.mdx b/src/content/docs/ko/etc/credit-auth/4.mdx
index ba33fe5fe..e7a4cf15d 100644
--- a/src/content/docs/ko/etc/credit-auth/4.mdx
+++ b/src/content/docs/ko/etc/credit-auth/4.mdx
@@ -3,86 +3,81 @@ title: 4. 인증정보 조회 및 활용하기
description: 인증정보를 획득하고 활용하는 방법을 안내합니다.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-본인인증 완료이후 획득한 **`imp_uid`**를 이용하여 고객 인증정보를 조회할 수 있습니다.
+본인인증 완료이후 획득한 \*\*`imp_uid`\*\*를 이용하여 고객 인증정보를 조회할 수 있습니다.
-### **STEP 01.** 인증정보(imp_uid) 서버단에서 획득하기
+## **STEP 01.** 인증정보(imp\_uid) 서버단에서 획득하기
아래는 본인인증 앞단에서 넘어온 값을 서버단에서 수신받은 예제 입니다.
-
-```javascript title="server-side"
-app.use(bodyParser.json());
- ...
- // "/certifications"에 대한 POST 요청을 처리하는 controller
- app.post("/certifications", async (request, response) => {
- // request의 body에서 imp_uid 추출
- const { imp_uid } = request.body;
-})
-```
-
-
-
-
-```javascript title="server-side"
-app.use(bodyParser.json());
- ...
- // "/certifications/redirect"에 대한 GET 요청을 처리하는 controller
- app.get("/certifications/redirect", async (request, response) => {
- const { imp_uid } = request.query; // request의 query에서 imp_uid 추출
-})
-```
-
-
+
+ ```ts title="server-side"
+ app.use(bodyParser.json());
+ // "/certifications"에 대한 POST 요청을 처리하는 controller
+ app.post("/certifications", async (request, response) => {
+ // request의 body에서 imp_uid 추출
+ const { imp_uid } = request.body;
+ });
+ ```
+
+
+
+ ```ts title="server-side"
+ app.use(bodyParser.json());
+ // "/certifications/redirect"에 대한 GET 요청을 처리하는 controller
+ app.get("/certifications/redirect", async (request, response) => {
+ const { imp_uid } = request.query; // request의 query에서 imp_uid 추출
+ });
+ ```
+
-### **STEP 02.** 인증 정보 조회하기
+## **STEP 02.** 인증 정보 조회하기
포트원 서버에서 인증 정보를 조회하기 위해서 먼저 [**REST API access token**](../../api/rest-api-access-token)을 발급받습니다. 발급받은 액세스 토큰(`access_token`)과 인증번호(`imp_uid`)로 **본인인증 결과조회 REST API** 를 호출하여 인증 정보를 조회하는 예제입니다.
-```javascript title="server-side"
+```ts title="server-side"
app.use(bodyParser.json());
- ...
- // "/certifications"에 대한 POST 요청을 처리하는 controller
- app.post("/certifications", async (request, response) => {
- const { imp_uid } = request.body; // request의 body에서 imp_uid 추출
- try {
- // 인증 토큰 발급 받기
- const getToken = await axios({
- url: "https://api.iamport.kr/users/getToken",
- // POST method
- method: "post",
- // "Content-Type": "application/json"
- headers: { "Content-Type": "application/json" },
- data: {
- imp_key: "imp_apikey", // REST API키
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f" // REST API Secret
- }
- });
- const { access_token } = getToken.data; // 인증 토큰
- ...
- // imp_uid로 인증 정보 조회
- const getCertifications = await axios({
- // imp_uid 전달
- url: \`https://api.iamport.kr/certifications/\${imp_uid}\`,
- // GET method
- method: "get",
- // 인증 토큰 Authorization header에 추가
- headers: { "Authorization": access_token }
- });
- const certificationsInfo = getCertifications.data; // 조회한 인증 정보
- ...
- } catch(e) {
- console.error(e);
- }
- });
+// "/certifications"에 대한 POST 요청을 처리하는 controller
+app.post("/certifications", async (request, response) => {
+ const { imp_uid } = request.body; // request의 body에서 imp_uid 추출
+ try {
+ // 인증 토큰 발급 받기
+ const getToken = await axios({
+ url: "https://api.iamport.kr/users/getToken",
+ // POST method
+ method: "post",
+ // "Content-Type": "application/json"
+ headers: { "Content-Type": "application/json" },
+ data: {
+ imp_key: "imp_apikey", // REST API키
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f", // REST API Secret
+ },
+ });
+ const { access_token } = getToken.data; // 인증 토큰
+ // imp_uid로 인증 정보 조회
+ const getCertifications = await axios({
+ // imp_uid 전달
+ url: `https://api.iamport.kr/certifications/${imp_uid}`,
+ // GET method
+ method: "get",
+ // 인증 토큰 Authorization header에 추가
+ headers: { Authorization: access_token },
+ });
+ const certificationsInfo = getCertifications.data; // 조회한 인증 정보
+ // ...
+ } catch (e) {
+ console.error(e);
+ }
+});
```
-### **STEP 03.** 인증 정보 활용하기
+## **STEP 03.** 인증 정보 활용하기
조회한 인증 정보에서 다음의 고객 정보를 추출하는 서비스 코드 예제입니다.
@@ -93,44 +88,41 @@ app.use(bodyParser.json());
- `unique_in_site`: DI 값과 동일. 상점아이디(사이트)별로 할당되는 식별키
-**unique\_key와 unique\_in\_site**
-
-본인인증에 사용된 신용카드가 여러 장이어도 신용카드 소유자가 같다면 매번 `unique_key` 와 `unique_in_site`는 같은 값이 응답됩니다.
+ **unique\_key와 unique\_in\_site**
+ 본인인증에 사용된 신용카드가 여러 장이어도 신용카드 소유자가 같다면 매번 `unique_key` 와 `unique_in_site`는 같은 값이 응답됩니다.
-```javascript title="Node.js"
+```ts title="Node.js"
// "/certifications"에 대한 POST 요청을 처리하는 controller
- app.post("/certifications", async (request, response) => {
- const { imp_uid } = request.body; // request의 body에서 imp_uid 추출
- try {
- // 인증 토큰 발급 받기
- /* ...중략... */
- // imp_uid로 인증 정보 조회
- /* ...중략... */
- const certificationsInfo = getCertifications.data; // 조회한 인증 정보
- // unique_key: 개인식별 고유 키, unique_in_site: 사이트 별 개인식별 고유 키
- const { unique_key, unique_in_site, name, gender, birth } = certificationsInfo;
- ...
- // 연령 제한 로직
- if (new Date(birth).getFullYear() <= 1999) {
- // 연령 만족
+app.post("/certifications", async (request, response) => {
+ const { imp_uid } = request.body; // request의 body에서 imp_uid 추출
+ try {
+ // 인증 토큰 발급 받기
+ /* ...중략... */
+ // imp_uid로 인증 정보 조회
+ /* ...중략... */
+ const certificationsInfo = getCertifications.data; // 조회한 인증 정보
+ // unique_key: 개인식별 고유 키, unique_in_site: 사이트 별 개인식별 고유 키
+ const { unique_key, unique_in_site, name, gender, birth } =
+ certificationsInfo;
+ // 연령 제한 로직
+ if (new Date(birth).getFullYear() <= 1999) {
+ // 연령 만족
+ } else {
+ // 연령 미달
+ }
+ // 1인 1계정 허용 로직
+ // DB에서 unique_key 조회 후 가입여부 검사
+ Users.find({ certificationKey: unique_key }).then((user) => {
+ if (!user) {
+ // 신규 고객
} else {
- // 연령 미달
+ // 이미 가입된 고객
}
- ...
- // 1인 1계정 허용 로직
- // DB에서 unique_key 조회 후 가입여부 검사
- Users.find({ certificationKey: unique_key })
- .then((user) => {
- if (!user) {
- // 신규 고객
- } else {
- // 이미 가입된 고객
- }
- });
- } catch(e) {
- console.error(e);
- }
- });
+ });
+ } catch (e) {
+ console.error(e);
+ }
+});
```
diff --git a/src/content/docs/ko/etc/credit-auth/readme.mdx b/src/content/docs/ko/etc/credit-auth/readme.mdx
index 7c20d4be9..9f4639d9d 100644
--- a/src/content/docs/ko/etc/credit-auth/readme.mdx
+++ b/src/content/docs/ko/etc/credit-auth/readme.mdx
@@ -7,9 +7,8 @@ import Figure from "~/components/Figure.astro";
import Hint from "~/components/Hint.astro";
-신용카드본인인증 서비스는 현재 서비스 중단으로 신규계약이 불가합니다.\
-(기존에 이용중인 고객사는 지속 사용 가능)
-
+ 신용카드본인인증 서비스는 현재 서비스 중단으로 신규계약이 불가합니다.\
+ (기존에 이용중인 고객사는 지속 사용 가능)
**신용카드 본인인증 서비스란** 신용카드 인증을 통하여 해당 신용카드 소지자의 개인정보(이름, 생년월일, 성별, 외국인여부, KISA 고유식별값)를 확인할 수 있는 서비스입니다.
diff --git a/src/content/docs/ko/etc/phone/1.mdx b/src/content/docs/ko/etc/phone/1.mdx
index e1230c4bc..e7b489b6e 100644
--- a/src/content/docs/ko/etc/phone/1.mdx
+++ b/src/content/docs/ko/etc/phone/1.mdx
@@ -3,25 +3,8 @@ title: 1. 본인인증 준비하기
description: 휴대폰 본인인증 연동을 위한 준비
---
-import Tab from "~/components/gitbook/tabs/Tab.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-
[**`고객사 식별코드`**](../../ready/readme#4-포트원-연동정보-확인하기)를 이용하여 `IMP` 객체를 초기화합니다.
-
-
-```javascript title="client-side"
-var IMP = window.IMP; // 생략 가능
+```ts title="client-side"
IMP.init("{고객사 식별코드}"); // 예: imp00000000
```
-
-
-
-
-```javascript title="client-side"
-const IMP = window.IMP; // 생략 가능
-IMP.init("{고객사_식별코드}"); // 예: imp00000000
-```
-
-
-
diff --git a/src/content/docs/ko/etc/phone/2.mdx b/src/content/docs/ko/etc/phone/2.mdx
index 76d96087d..8e1928495 100644
--- a/src/content/docs/ko/etc/phone/2.mdx
+++ b/src/content/docs/ko/etc/phone/2.mdx
@@ -3,9 +3,9 @@ title: 2. 본인인증창 호출하기
description: 본인인증 창 호출방법을 안내합니다.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
휴대폰 본인인증은 아래 두가지 방법으로 호출할 수 있습니다.
@@ -22,66 +22,65 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
> **WebView 등 팝업이 차단되는 환경**에서는 `popup : false`로 설정하는 것을 권장합니다.
-**리디렉션 방식**
-
-포트원 JavaScript **SDK 1.1.7** 버전 이상 부터 지원합니다.
+ **리디렉션 방식**
+ 포트원 JavaScript **SDK 1.1.7** 버전 이상 부터 지원합니다.
아래는 휴대폰 본인인증창을 호출하는 예제입니다.
-
-```javascript title="client-side"
-// IMP.certification(param, callback) 호출
- IMP.certification({ // param
- // 주문 번호
- pg:'PG사코드.{CPID}',//본인인증 설정이 2개이상 되어 있는 경우 필
- merchant_uid: "ORD20180131-0000011",
- // 모바일환경에서 popup:false(기본값) 인 경우 필수
- m_redirect_url : "{리디렉션 될 URL}",
- // PC환경에서는 popup 파라미터가 무시되고 항상 true 로 적용됨
- popup : false
- }, function (rsp) { // callback
- if (rsp.success) {
- ...,
- // 인증 성공 시 로직,
- ...
- } else {
- ...,
- // 인증 실패 시 로직,
- ...
- }
- });
-```
-
-휴대폰 본인인증창을 호출하기 위한 [**파라미터 목록**](../../sdk/javascript-sdk/cft)을 확인하세요
-
-
+
+ ```ts title="client-side"
+ // IMP.certification(param, callback) 호출
+ IMP.certification(
+ {
+ // param
+ // 주문 번호
+ pg: "PG사코드.{CPID}", //본인인증 설정이 2개이상 되어 있는 경우 필
+ merchant_uid: "ORD20180131-0000011",
+ // 모바일환경에서 popup:false(기본값) 인 경우 필수
+ m_redirect_url: "{리디렉션 될 URL}",
+ // PC환경에서는 popup 파라미터가 무시되고 항상 true 로 적용됨
+ popup: false,
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // 인증 성공 시 로직
+ } else {
+ // 인증 실패 시 로직
+ }
+ },
+ );
+ ```
-
-```javascript title="client-side"
- // IMP.certification(param, callback) 호출
- IMP.certification({ // param
- // 주문 번호
- pg:'PG사코드.{CPID}',//본인인증 설정이 2개이상 되어 있는 경우 필
- merchant_uid: "ORD20180131-0000011",
- // 모바일환경에서 popup:false(기본값) 인 경우 필수
- m_redirect_url : "{리디렉션 될 URL}",
- // PC환경에서는 popup 파라미터가 무시되고 항상 true 로 적용됨
- popup : false
- }, rsp => { // callback
- if (rsp.success) {
- ...,
- // 인증 성공 시 로직,
- ...
- } else {
- ...,
- // 인증 실패 시 로직,
- ...
- }
- });
-```
+ 휴대폰 본인인증창을 호출하기 위한 [**파라미터 목록**](../../sdk/javascript-sdk/cft)을 확인하세요
+
-
+
+ ```ts title="client-side"
+ // IMP.certification(param, callback) 호출
+ IMP.certification(
+ {
+ // param
+ // 주문 번호
+ pg: "PG사코드.{CPID}", //본인인증 설정이 2개이상 되어 있는 경우 필
+ merchant_uid: "ORD20180131-0000011",
+ // 모바일환경에서 popup:false(기본값) 인 경우 필수
+ m_redirect_url: "{리디렉션 될 URL}",
+ // PC환경에서는 popup 파라미터가 무시되고 항상 true 로 적용됨
+ popup: false,
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // 인증 성공 시 로직
+ } else {
+ // 인증 실패 시 로직
+ }
+ },
+ );
+ ```
+
diff --git a/src/content/docs/ko/etc/phone/3.mdx b/src/content/docs/ko/etc/phone/3.mdx
index c6a304437..99ba4be67 100644
--- a/src/content/docs/ko/etc/phone/3.mdx
+++ b/src/content/docs/ko/etc/phone/3.mdx
@@ -3,62 +3,68 @@ title: 3. 인증 완료정보 전달하기
description: 휴대폰 본인인증 이후 획득된 정보를 처리하는 방법을 안내합니다.
---
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
인증 프로세스가 완료되면 반환되는 응답 객체(**`rsp`**)의 인증 성공 여부에 따라 처리 로직을 **`callback`** 함수에 작성합니다. 요청이 성공했을 경우에 **인증번호(`imp_uid`)를 서버에 전달**하는 로직을 다음 예제를 참고하여 작성합니다. 인증 성공시 [**반환되는 값**](../../sdk/javascript-sdk/cft-rt)을 확인하세요
-### 1. callback Data 전달 예제
+## 1. callback Data 전달 예제
-
-```javascript title="client-side"
-IMP.certification({
- /* ...중략... */
- }, function (rsp) { // callback
- if (rsp.success) { // 인증 성공 시
- // jQuery로 HTTP 요청
- jQuery.ajax({
- url: "{서버의 인증 정보를 받는 endpoint}",
- method: "POST",
- headers: { "Content-Type": "application/json" },
- data: { imp_uid: rsp.imp_uid }
- });
- } else {
- alert("인증에 실패하였습니다. 에러 내용: " + rsp.error_msg);
- }
- });
-```
-
-
+
+ ```ts title="client-side"
+ IMP.certification(
+ {
+ /* ...중략... */
+ },
+ function (rsp) {
+ // callback
+ if (rsp.success) {
+ // 인증 성공 시 jQuery로 HTTP 요청
+ jQuery.ajax({
+ url: "{서버의 인증 정보를 받는 endpoint}",
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ data: { imp_uid: rsp.imp_uid },
+ });
+ } else {
+ alert("인증에 실패하였습니다. 에러 내용: " + rsp.error_msg);
+ }
+ },
+ );
+ ```
+
-
-```javascript title="client-side"
-IMP.certification({
- /* ...중략... */
- }, rsp => { // callback
- if (rsp.success) { // 인증 성공 시
- // axios로 HTTP 요청
- axios({
- url: "{서버의 인증 정보를 받는 endpoint}",
- method: "post",
- headers: { "Content-Type": "application/json" },
- data: { imp_uid: rsp.imp_uid }
- });
- } else {
- alert(\`인증에 실패하였습니다. 에러 내용: \${rsp.error_msg}\`);
- }
- });
-
-````
-
-
+
+ ```ts title="client-side"
+ IMP.certification(
+ {
+ /* ...중략... */
+ },
+ (rsp) => {
+ // callback
+ if (rsp.success) {
+ // 인증 성공 시
+ // axios로 HTTP 요청
+ axios({
+ url: "{서버의 인증 정보를 받는 endpoint}",
+ method: "post",
+ headers: { "Content-Type": "application/json" },
+ data: { imp_uid: rsp.imp_uid },
+ });
+ } else {
+ alert(`인증에 실패하였습니다. 에러 내용: ${rsp.error_msg}`);
+ }
+ },
+ );
+ ```
+
-### 2. 리디렉션 전달 예제
+## 2. 리디렉션 전달 예제
-`IMP.`**`certification`** 호출 시 설정한 `param.`**`m_redirect_url`**로 인증 정보와 함께 다음과 같이 리디렉션됩니다.
+`IMP.`**`certification`** 호출 시 설정한 **`m_redirect_url`** 로 인증 정보와 함께 다음과 같이 리디렉션됩니다.
-```uri title="Query String"
+```http title="Query String"
GET {m_redirect_url}?imp_uid={}&merchant_uid={본인인증 건의 merchant_uid}&success={true 또는 false}
-````
+```
diff --git a/src/content/docs/ko/etc/phone/4.mdx b/src/content/docs/ko/etc/phone/4.mdx
index 6a7390e21..a444c2feb 100644
--- a/src/content/docs/ko/etc/phone/4.mdx
+++ b/src/content/docs/ko/etc/phone/4.mdx
@@ -3,86 +3,81 @@ title: 4. 인증정보 조회 및 활용하기
description: 인증정보를 획득하고 활용하는 방법을 안내합니다.
---
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
휴대폰 본인인증 완료이후 획득한 `imp_uid`를 이용하여 고객 인증정보를 조회할 수 있습니다.
-### **STEP 01.** 인증정보(imp_uid) 서버단에서 획득하기
+## **STEP 01.** 인증정보(imp\_uid) 서버단에서 획득하기
아래는 휴대폰 본인인증 앞단에서 넘어온 값을 서버단에서 수신받은 예제 입니다.
-
-```javascript title="server-side"
-app.use(bodyParser.json());
- ...
- // "/certifications"에 대한 POST 요청을 처리하는 controller
- app.post("/certifications", async (request, response) => {
- // request의 body에서 imp_uid 추출
- const { imp_uid } = request.body;
-})
-```
-
-
-
-
-```javascript title="server-side"
-app.use(bodyParser.json());
- ...
- // "/certifications/redirect"에 대한 GET 요청을 처리하는 controller
- app.get("/certifications/redirect", async (request, response) => {
- const { imp_uid } = request.query; // request의 query에서 imp_uid 추출
-})
-```
-
-
+
+ ```ts title="server-side"
+ app.use(bodyParser.json());
+ // "/certifications"에 대한 POST 요청을 처리하는 controller
+ app.post("/certifications", async (request, response) => {
+ // request의 body에서 imp_uid 추출
+ const { imp_uid } = request.body;
+ });
+ ```
+
+
+
+ ```ts title="server-side"
+ app.use(bodyParser.json());
+ // "/certifications/redirect"에 대한 GET 요청을 처리하는 controller
+ app.get("/certifications/redirect", async (request, response) => {
+ const { imp_uid } = request.query; // request의 query에서 imp_uid 추출
+ });
+ ```
+
-### **STEP 02.** 인증 정보 조회하기
+## **STEP 02.** 인증 정보 조회하기
포트원 서버에서 인증 정보를 조회하기 위해서 먼저 [**REST API access token**](../../api/rest-api-access-token)을 발급받습니다. 발급받은 액세스 토큰(`access_token`)과 인증번호(`imp_uid`)로 **본인인증 결과조회 REST API** 를 호출하여 인증 정보를 조회하는 예제입니다.
-```javascript title="server-side"
+```ts title="server-side"
app.use(bodyParser.json());
- ...
- // "/certifications"에 대한 POST 요청을 처리하는 controller
- app.post("/certifications", async (request, response) => {
- const { imp_uid } = request.body; // request의 body에서 imp_uid 추출
- try {
- // 인증 토큰 발급 받기
- const getToken = await axios({
- url: "https://api.iamport.kr/users/getToken",
- // POST method
- method: "post",
- // "Content-Type": "application/json"
- headers: { "Content-Type": "application/json" },
- data: {
- imp_key: "imp_apikey", // REST API키
- imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f" // REST API Secret
- }
- });
- const { access_token } = getToken.data.response; // 인증 토큰
- ...
- // imp_uid로 인증 정보 조회
- const getCertifications = await axios({
- // imp_uid 전달
- url: \`https://api.iamport.kr/certifications/\${imp_uid}\`,
- // GET method
- method: "get",
- // 인증 토큰 Authorization header에 추가
- headers: { "Authorization": access_token }
- });
- const certificationsInfo = getCertifications.data; // 조회한 인증 정보
- ...
- } catch(e) {
- console.error(e);
- }
- });
+// "/certifications"에 대한 POST 요청을 처리하는 controller
+app.post("/certifications", async (request, response) => {
+ const { imp_uid } = request.body; // request의 body에서 imp_uid 추출
+ try {
+ // 인증 토큰 발급 받기
+ const getToken = await axios({
+ url: "https://api.iamport.kr/users/getToken",
+ // POST method
+ method: "post",
+ // "Content-Type": "application/json"
+ headers: { "Content-Type": "application/json" },
+ data: {
+ imp_key: "imp_apikey", // REST API키
+ imp_secret:
+ "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f", // REST API Secret
+ },
+ });
+ const { access_token } = getToken.data.response; // 인증 토큰
+ // imp_uid로 인증 정보 조회
+ const getCertifications = await axios({
+ // imp_uid 전달
+ url: `https://api.iamport.kr/certifications/${imp_uid}`,
+ // GET method
+ method: "get",
+ // 인증 토큰 Authorization header에 추가
+ headers: { Authorization: access_token },
+ });
+ const certificationsInfo = getCertifications.data; // 조회한 인증 정보
+ // ...
+ } catch (e) {
+ console.error(e);
+ }
+});
```
-### **STEP 03.** 인증 정보 활용하기
+## **STEP 03.** 인증 정보 활용하기
조회한 인증 정보에서 다음의 고객 정보를 추출하는 서비스 코드 예제입니다.
@@ -93,57 +88,54 @@ app.use(bodyParser.json());
- `unique_in_site`: DI 값과 동일. 상점아이디(사이트)별로 할당되는 식별키
-위의 정보 외에 휴대폰 번호(**`phone`**) 및 통신사(**`carrier`**) 또는 외국인(**`foreigner`**) 여부는 **개인정보 제공동의 약관을 사이트에 게재**한 후 **cs@portone.io****로 신청**하여 취득할 수 있습니다. 해당 부분은 당사 계약 이후 다날PG사로 요청 후 승인이 완료되면 이용 가능한 점 참고해 주시기 바랍니다.
-
-**메일 요청 신청 양식**
+ 위의 정보 외에 휴대폰 번호(**`phone`**) 및 통신사(**`carrier`**) 또는 외국인(**`foreigner`**) 여부는 **개인정보 제공동의 약관을 사이트에 게재**한 후 **[cs@portone.io](mailto:cs@portone.io)****로 신청**하여 취득할 수 있습니다. 해당 부분은 당사 계약 이후 다날PG사로 요청 후 승인이 완료되면 이용 가능한 점 참고해 주시기 바랍니다.
-- 상호명 :
-- 사업자번호 :
-- 본인인증용 다날 상점ID(CPID) :
-- 업종 :
-- 필요사유 :
-- 개인정보취급방침 url : 앱서비스로 URL형태로 전달이 어려우신 경우 '개인정보취급방침' 경로를 캡쳐하여 전달주시기 바랍니다.
+ **메일 요청 신청 양식**
-**참고 - 포트원 이용 고객사의 개인정보처리방침 적용 예시**
+ - 상호명 :
+ - 사업자번호 :
+ - 본인인증용 다날 상점ID(CPID) :
+ - 업종 :
+ - 필요사유 :
+ - 개인정보취급방침 url : 앱서비스로 URL형태로 전달이 어려우신 경우 '개인정보취급방침' 경로를 캡쳐하여 전달주시기 바랍니다.
-- `(주)마플 : https://marpple.shop/kr/@/privacy`
-- `(주)브레이브모바일 / 숨고 : https://soomgo.com/terms/privacy`
-- `(주)마켓잇 : https://static.marketit.asia/static/privacy-terms.pdf`
+ **참고 - 포트원 이용 고객사의 개인정보처리방침 적용 예시**
+ - `(주)마플 : https://marpple.shop/kr/@/privacy`
+ - `(주)브레이브모바일 / 숨고 : https://soomgo.com/terms/privacy`
+ - `(주)마켓잇 : https://static.marketit.asia/static/privacy-terms.pdf`
-```javascript title="Node.js"
+```ts title="Node.js"
// "/certifications"에 대한 POST 요청을 처리하는 controller
- app.post("/certifications", async (request, response) => {
- const { imp_uid } = request.body; // request의 body에서 imp_uid 추출
- try {
- // 인증 토큰 발급 받기
- /* ...중략... */
- // imp_uid로 인증 정보 조회
- /* ...중략... */
- const certificationsInfo = getCertifications.data; // 조회한 인증 정보
- // unique_key: 개인식별 고유 키, unique_in_site: 사이트 별 개인식별 고유 키
- const { unique_key, unique_in_site, name, gender, birth } = certificationsInfo;
- ...
- // 연령 제한 로직
- if (new Date(birth).getFullYear() <= 1999) {
- // 연령 만족
+app.post("/certifications", async (request, response) => {
+ const { imp_uid } = request.body; // request의 body에서 imp_uid 추출
+ try {
+ // 인증 토큰 발급 받기
+ /* ...중략... */
+ // imp_uid로 인증 정보 조회
+ /* ...중략... */
+ const certificationsInfo = getCertifications.data; // 조회한 인증 정보
+ // unique_key: 개인식별 고유 키, unique_in_site: 사이트 별 개인식별 고유 키
+ const { unique_key, unique_in_site, name, gender, birth } =
+ certificationsInfo;
+ // 연령 제한 로직
+ if (new Date(birth).getFullYear() <= 1999) {
+ // 연령 만족
+ } else {
+ // 연령 미달
+ }
+ // 1인 1계정 허용 로직
+ // DB에서 unique_key 조회 후 가입여부 검사
+ Users.find({ certificationKey: unique_key }).then((user) => {
+ if (!user) {
+ // 신규 고객
} else {
- // 연령 미달
+ // 이미 가입된 고객
}
- ...
- // 1인 1계정 허용 로직
- // DB에서 unique_key 조회 후 가입여부 검사
- Users.find({ certificationKey: unique_key })
- .then((user) => {
- if (!user) {
- // 신규 고객
- } else {
- // 이미 가입된 고객
- }
- });
- } catch(e) {
- console.error(e);
- }
- });
+ });
+ } catch (e) {
+ console.error(e);
+ }
+});
```
diff --git a/src/content/docs/ko/etc/sdk.mdx b/src/content/docs/ko/etc/sdk.mdx
index 3db9c426a..d4fd4a5dc 100644
--- a/src/content/docs/ko/etc/sdk.mdx
+++ b/src/content/docs/ko/etc/sdk.mdx
@@ -3,14 +3,14 @@ title: 네이티브 모바일 SDK
description: 포트원에서 제공하는 네이티브 모바일 SDK(플러그인)를 통해 포트원 서비스를 연동할 수 있습니다.
---
-### 개발 예정 플랫폼별로 Github 링크를 참조하여 개발을 진행하시면 됩니다.
+개발 예정 플랫폼별로 Github 링크를 참조하여 개발을 진행하시면 됩니다.
-#### iOS/Android
+## iOS/Android
- [iOS](https://github.com/iamport/iamport-ios)
- [Android](https://github.com/iamport/iamport-android)
-#### Cross-Platform Frameworks
+## Cross-Platform Frameworks
- [Flutter](https://github.com/iamport/iamport-flutter)
- [Ionic](https://github.com/iamport/iamport-ionic)
diff --git a/src/content/docs/ko/etc/url.mdx b/src/content/docs/ko/etc/url.mdx
index a7e5b75ae..14853fcf9 100644
--- a/src/content/docs/ko/etc/url.mdx
+++ b/src/content/docs/ko/etc/url.mdx
@@ -4,19 +4,19 @@ description: 결제 URL 생성 API 명세를 기술합니다.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
import Swagger from "~/components/gitbook/swagger/Swagger.astro";
import SwaggerDescription from "~/components/gitbook/swagger/SwaggerDescription.astro";
import SwaggerParameter from "~/components/gitbook/swagger/SwaggerParameter.astro";
import SwaggerResponse from "~/components/gitbook/swagger/SwaggerResponse.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. 개요
+## 1. 개요
본 문서는 포트원에서 제공하는 결제 URL 생성 API 명세를 기술합니다. 포트원 서비스를 이용중인 고객사는 해당 서비스를 제약없이 이용 가능합니다.
-### 2. API URI
+## 2. API URI
해당 API는 REST 방식으로 구현되어 인터넷 웹 서비스의 형태로 제공됩니다.
@@ -25,226 +25,197 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
> **Content-Type : application/json;charset=UTF-8**
-
-``` title="URI"
-https://api.iamport.co/api/supplements/v1/link/payment
-```
-
-
+
+ ```http title="URI"
+ POST https://api.iamport.co/api/supplements/v1/link/payment
+ ```
+
-### 3. 설명
+## 3. 설명
-결제가 가능한 URL을 생성하여 고객이 해당 URL에 접근하여 결제를 진행 할 수 있습니다. PG사가 지원하는 모든 결제수단 지원이 가능하며 설정한 시간이 만료된 경우 해당 URL 접근시 결제를 진행할 수 없습니다.
+결제가 가능한 URL을 생성하여 고객이 해당 URL에 접근하여 결제를 진행 할 수 있습니다.
+PG사가 지원하는 모든 결제수단 지원이 가능하며 설정한 시간이 만료된 경우 해당 URL 접근시 결제를 진행할 수 없습니다.
-### 4. 요청 메세시 상세
+## 4. 요청 메세시 상세
-
-HTTP Method : POST
-
-Content-Type : Application.json;charset=UTF-8
-
-
-
-### Parameters
-
-#### Body
-
-
-
-
-브릿지 페이지 노출문구
-
-
-
-
-
-
-
-고객사식별코드
-
-
-
-
-
-
-
-결제금액
-
-
-
-
-
-
-
-주문번호
+
+ HTTP Method : POST
+
+ Content-Type : Application.json;charset=UTF-8
+
+
+ ### Parameters
+
+ #### Body
-
+
+
+ 브릿지 페이지 노출문구
+
+
-
-
-
+
+
+ 고객사식별코드
+
+
-제품명
+
+
+ 결제금액
+
+
-
+
+
+ 주문번호
+
+
-
-
-면세금액
+
+
+ 제품명
+
+
-
-
-
+
+ 면세금액
+
-통화구분코드
+
+
+ 통화구분코드
+
+
-
+
+ 실 결제창 표기언어
-
-
-실 결제창 표기언어
+ - ko
+ - en
+
-\-ko
+
+ 주문자명
+
-\-en
+
+
+ 주문자연락처
+
+
-
-
-주문자명
+
+ 주문자주소
+
-
-
-
+
+ 주문자 이메일주
+
-주문자연락처
+
+ 주문자 우편번호
+
-
+
+ 에코항목
+
-
-
-주문자주소
+
+ 결제결과(성공거래)를 수신받을 URL(웹훅)
+
-
-
-주문자 이메일주
+
+
+ 페이지 만료시각
+
+
-
-
-주문자 우편번호
+
+ 브릿지 페이지 표기언어
-
-
-에코항목
+ - ko : 한국어
+ - en : 영어
+
-
-
-결제결과(성공거래)를 수신받을 URL(웹훅)
+
+ **pg** **string**
-
-
-
+ pg사 구분코드
-페이지 만료시각
+ [#undefined](../sdk/javascript-sdk/payrq#undefined "mention")
-
+ **pay\_method** **string**
-
-
-브릿지 페이지 표기언어
+ 결제수단 구분코드
+
+ [#undefined](../sdk/javascript-sdk/payrq#undefined "mention")
-\-ko : 한국어
+ **label** **string**
-\-en : 영어
+ 브릿지페이지 결제수단 표현값
+
-
-
-**pg** **string**
-
-pg사 구분코드
-
-[#undefined](../sdk/javascript-sdk/payrq#undefined "mention")
-
-**pay_method** **string**
-
-결제수단 구분코드
-
-[#undefined](../sdk/javascript-sdk/payrq#undefined "mention")
-
-**label** **string**
-
-브릿지페이지 결제수단 표현값
-
-
-
-### Responses
-
-
-```json title="json"
-{
- "shortenedUrl": "https://dev.impay.link/4bdf239e" //결제링크 생성
-}
-```
-
-
+ ### Responses
+
+ ```json title="json"
+ {
+ "shortenedUrl": "https://dev.impay.link/4bdf239e" //결제링크 생성
+ }
+ ```
+
-**#요청 JSON 전문 예시**
+### 요청 JSON 전문 예시
-```title="json"
+```json title="json"
{
- "payment_info": "{\"title\":\"테스트고객사\",\"user_code\":\"imp68124833\",\"amount\":10000,\"merchant_uid\":\"merchant_1630665784552\",\"name\":\"결제링크 테스트\",\"tax_free\":\"면세공급가액\",\"currency\":\"KRW\",\"language\":\"ko\",\"buyer_name\":\"\",\"buyer_tel\":\"\",\"buyer_addr\":\"\",\"buyer_email\":\"\",\"buyer_postcode\":\"\",\"custom_data\":\"json_object\",\"notice_url\":\"결제 결과를 받을 url\",\"pay_methods\":[{\"pg\":\"INIpayTest\",\"pay_method\":\"card\",\"label\":\"신용/체크카드\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"naverpay\",\"label\":\"네이버페이\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"kakaopay\",\"label\":\"카카오페이\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"phone\",\"label\":\"핸드폰 소액결제\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"trans\",\"label\":\"계좌이체\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"vbank\",\"label\":\"가상계좌\"}]}",
- "expired_at": 1634324016
+ "payment_info": "{\"title\":\"테스트고객사\",\"user_code\":\"imp68124833\",\"amount\":10000,\"merchant_uid\":\"merchant_1630665784552\",\"name\":\"결제링크 테스트\",\"tax_free\":\"면세공급가액\",\"currency\":\"KRW\",\"language\":\"ko\",\"buyer_name\":\"\",\"buyer_tel\":\"\",\"buyer_addr\":\"\",\"buyer_email\":\"\",\"buyer_postcode\":\"\",\"custom_data\":\"json_object\",\"notice_url\":\"결제 결과를 받을 url\",\"pay_methods\":[{\"pg\":\"INIpayTest\",\"pay_method\":\"card\",\"label\":\"신용/체크카드\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"naverpay\",\"label\":\"네이버페이\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"kakaopay\",\"label\":\"카카오페이\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"phone\",\"label\":\"핸드폰 소액결제\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"trans\",\"label\":\"계좌이체\"},{\"pg\":\"INIpayTest\",\"pay_method\":\"vbank\",\"label\":\"가상계좌\"}]}",
+ "expired_at": 1634324016
}
```
-**#결제(브릿지) 페이지 화면 예시**
+### 결제(브릿지) 페이지 화면 예시
-
-**결제 URL API 요청이 성공한경우 응답 URL 렌더링 화면 예시입니다.**
+
+ **결제 URL API 요청이 성공한경우 응답 URL 렌더링 화면 예시입니다.**
-
+
+
-
+
+ **결제 URL 페이지 만료시각(expire\_at)이 지난 경우 표시되는 화면입니다.**
-
-**결제 URL 페이지 만료시각(expire\_at)이 지난 경우 표시되는 화면입니다.**
-
-
-
-
+
+
-### 5.결제 URL 비활성화 방법
+## 5.결제 URL 비활성화 방법
**응답**(**shortenedUrl**) **URL 마지막 String 을 결제 URI API 주소 뒤에 삽입하여 호출**
-> \*\*HTTP Method : \*\***PUT**
+> **HTTP Method :** **PUT**
-**API 응답이 아래와 같은경우**
+ **API 응답이 아래와 같은경우**
-```json
-{ "shortenedUrl": "https://dev.impay.link/4bdf239e" }
-```
+ ```json
+ { "shortenedUrl": "https://dev.impay.link/4bdf239e" }
+ ```
-[https://api.iamport.co/api/supplements/v1/link/payment/](https://api.iamport.co/api/supplements/v1/link/payment/%7BGUID%7D)**4bdf239e**
-
-위와 같이 호출시 결제 URL 즉시 비활성화 처리됩니다.
+ `https://api.iamport.co/api/supplements/v1/link/payment/4bdf239e`
+ 위와 같이 호출시 결제 URL 즉시 비활성화 처리됩니다.
-**결제결과 획득방법**
-
-**결제 URL API로 진행된 결제는 오직 웹훅으로만 결제 결과를 수신받을수 있습니다.**
+ **결제결과 획득방법**
-웹훅은 결제가 성공한 경우에만 발송되기 때문에 해당 서비스를 이용하실때는 오직 승인된 결과만 받아보면문제가 없는 서비스에 한하여 해당 API를 이용하시기 바랍니다.
+ **결제 URL API로 진행된 결제는 오직 웹훅으로만 결제 결과를 수신받을수 있습니다.**
+ 웹훅은 결제가 성공한 경우에만 발송되기 때문에 해당 서비스를 이용하실때는 오직 승인된 결과만 받아보면문제가 없는 서비스에 한하여 해당 API를 이용하시기 바랍니다.
diff --git a/src/content/docs/ko/faq/undefined.mdx b/src/content/docs/ko/faq/undefined.mdx
index 1192849fc..27c98418a 100644
--- a/src/content/docs/ko/faq/undefined.mdx
+++ b/src/content/docs/ko/faq/undefined.mdx
@@ -10,48 +10,44 @@ import Details from "~/components/gitbook/Details.astro";
import Hint from "~/components/Hint.astro";
-
웹훅 발송규칙
-
-- 기본적으로 1회 발송 됩니다.
-- 재발송 설정을 희망하는 경우 1분 단위로 최대 5회까지 발송이 가능하며 고객사 응답(**HTTP STATUS**)이 **200**응답을 주시는 경우 발송은 중단됩니다.
-- 관리자 콘솔에서 웹훅 재 전송이 가능합니다. (결제승인내역 -> 웹훅로그 -> 재전송)
-- 웹훅주소를 변경한 경우 과거거래 재 발송시 기존 웹훅 URL로 전송됩니다.
+
웹훅 발송규칙
+ - 기본적으로 1회 발송 됩니다.
+ - 재발송 설정을 희망하는 경우 1분 단위로 최대 5회까지 발송이 가능하며 고객사 응답(**HTTP STATUS**)이 **200**응답을 주시는 경우 발송은 중단됩니다.
+ - 관리자 콘솔에서 웹훅 재 전송이 가능합니다. (결제승인내역 -> 웹훅로그 -> 재전송)
+ - 웹훅주소를 변경한 경우 과거거래 재 발송시 기존 웹훅 URL로 전송됩니다.
-
통합 응답코드 제공 여부
-
-결제응답으로 내려가는 오류코드 및 메세지는 원천사(PG사)가 내려주는 응답코드와 메세지를 그대로 내려드리고 있습니다. 당사와 연동되어 있는 PG사에 따라 응답코드와 메세지가 모두 상이하여 통합적으로 정리되어 있는 오류코드표는 존재하지 않습니다.
+
통합 응답코드 제공 여부
+ 결제응답으로 내려가는 오류코드 및 메세지는 원천사(PG사)가 내려주는 응답코드와 메세지를 그대로 내려드리고 있습니다. 당사와 연동되어 있는 PG사에 따라 응답코드와 메세지가 모두 상이하여 통합적으로 정리되어 있는 오류코드표는 존재하지 않습니다.
-
운영계정 및 개발계정 구분방법
+
운영계정 및 개발계정 구분방법
-**하나의 계정으로 실모드 & 테스트모드 운영**
+ **하나의 계정으로 실모드 & 테스트모드 운영**
-기존 설정되어있던 항목에 'PG사 추가' 하여 테스트용 상점정보를 입력
+ 기존 설정되어있던 항목에 'PG사 추가' 하여 테스트용 상점정보를 입력
-- 장점: 동일한 고객사 식별코드 / API key, secret 으로 테스트가 가능
-- 단점: 상용계정과 함께 운영하기 때문에 PG설정/저장에 주의필요
+ - 장점: 동일한 고객사 식별코드 / API key, secret 으로 테스트가 가능
+ - 단점: 상용계정과 함께 운영하기 때문에 PG설정/저장에 주의필요
-**\[체크사항]**
+ **\[체크사항]**
-동일 PG의 경우 상점 아이디별로 결제요청을 하려면 pg 파라미터에 **PG사명.상점아이디** 로 지정하여 요청해야 합니다.
+ 동일 PG의 경우 상점 아이디별로 결제요청을 하려면 pg 파라미터에 **PG사명.상점아이디** 로 지정하여 요청해야 합니다.
-**테스트용도로 새로운 계정 생성하여 분리**
+ **테스트용도로 새로운 계정 생성하여 분리**
-포트원 관리자페이지([https://admin.portone.io/](https://admin.portone.io/)) 회원가입 하시어 개발용도의 계정을 생성하시는 방법입니다.
-
-- 장점 : 상용과 개발용을 분리함으로써 안정적인 테스트 가능
-- 단점 : 고객사 식별코드 / API key, secret 정보가 달라지다보니 소스코드 분기가 필요
+ 포트원 관리자페이지([https://admin.portone.io/](https://admin.portone.io/)) 회원가입 하시어 개발용도의 계정을 생성하시는 방법입니다.
+ - 장점 : 상용과 개발용을 분리함으로써 안정적인 테스트 가능
+ - 단점 : 고객사 식별코드 / API key, secret 정보가 달라지다보니 소스코드 분기가 필요
-**더 많은 질문 리스트는 아래 링크를 참고해 주세요**
-
-[https://faq.portone.io/](https://faq.portone.io/)
+ **더 많은 질문 리스트는 아래 링크를 참고해 주세요**
+ [https://faq.portone.io/](https://faq.portone.io/)
diff --git a/src/content/docs/ko/pg/payment-gateway/blue.mdx b/src/content/docs/ko/pg/payment-gateway/blue.mdx
index 325f266f9..b02b7a7f8 100644
--- a/src/content/docs/ko/pg/payment-gateway/blue.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/blue.mdx
@@ -3,78 +3,80 @@ title: 블루월넛
description: 블루월넛 결제 연동방법을 안내합니다.
---
-import Codepen from "~/components/gitbook/Codepen.astro";
import Figure from "~/components/Figure.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Codepen from "~/components/gitbook/Codepen.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-### 1. 블루월넛 PG 설정하기
+## 1. 블루월넛 PG 설정하기
[**블루월넛 설정**](../../ready/2-pg/payment-gateway/blue) 페이지의 내용을 참고하여 PG 설정을 진행합니다.
-### 2.결제 요청하기
+## 2.결제 요청하기
[JavaScript SDK](../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을 호출하여
블루월넛 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 `IMP.request_pay(param, callback)`
-호출 후 **callback** 으로 수신되
-모바일의 경우 **m_redirect_url** 로 리디렉션됩니다.
+호출 후 **callback** 으로 수신되어
+모바일의 경우 **m\_redirect\_url** 로 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg: "bluewalnut.{상점 ID}",
- pay_method: "card",
- merchant_uid: "order_no_0001", // 상점에서 관리하는 주문 번호
- name: "주문명:결제테스트",
- amount: 14000,
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456"
-}, function (rsp) { // callback 로직
- /* ...중략... */
-});
-```
-
-**주요 파라미터 설명**
-
-**`pg` \*****string**
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "bluewalnut.{상점 ID}",
+ pay_method: "card",
+ merchant_uid: "order_no_0001", // 상점에서 관리하는 주문 번호
+ name: "주문명:결제테스트",
+ amount: 14000,
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ },
+ function (rsp) {
+ // callback 로직
+ /* ...중략... */
+ },
+ );
+ ```
-**PG사 구분코드**
+ **주요 파라미터 설명**
-**`bluewalnut`** 로 지정하면 됩니다.
+ **`pg` \*****string**
-**`pay_method`** **\*** **string**
+ **PG사 구분코드**
-**결제수단 구분코드**
+ **`bluewalnut`** 로 지정하면 됩니다.
-- card (신용카드)
-- trans (실시간 계좌이체)
-- vbank(가상계좌)
-- phone (휴대폰소액결제)
+ **`pay_method`** **\*** **string**
-**`merchant_uid`** **\*** **string**
+ **결제수단 구분코드**
-**`고객사 고유주문번호`**
+ - card (신용카드)
+ - trans (실시간 계좌이체)
+ - vbank(가상계좌)
+ - phone (휴대폰소액결제)
-매번 고유하게 채번되어야 합니다.
+ **`merchant_uid`** **\*** **string**
-**`amount`** **\*** **`integer`**
+ **`고객사 고유주문번호`**
-**결제금액**
+ 매번 고유하게 채번되어야 합니다.
-**string** 이 아닌점에 유의하세요
+ **`amount`** **\*** **`integer`**
-
+ **결제금액**
-
+ **string** 이 아닌점에 유의하세요
-
-**포트원은 블루월넛 비 인증 결제를 지원하지 않습니다.**
+
+
-
+
+ **포트원은 블루월넛 비 인증 결제를 지원하지 않습니다.**
+
diff --git a/src/content/docs/ko/pg/payment-gateway/danal.mdx b/src/content/docs/ko/pg/payment-gateway/danal.mdx
index 316379636..e52f23cfc 100644
--- a/src/content/docs/ko/pg/payment-gateway/danal.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/danal.mdx
@@ -3,319 +3,319 @@ title: 다날
description: 다날 결제연동 방법을 안내합니다.
---
-import Codepen from "~/components/gitbook/Codepen.astro";
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Codepen from "~/components/gitbook/Codepen.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. 다날 PG 설정하기
+## 1. 다날 PG 설정하기
[**다날 설정**](../../ready/2-pg/payment-gateway/undefined) 페이지의 내용을 참고하여 PG 설정을 진행합니다.
-### 2.결제 요청하기
+## 2. 결제 요청하기
-
-[JavaScript SDK](../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을 호출하여 다날 Tpay 결제창을 호출할 수 있습니다.
-**결제결과**는 PC/모바일 환경 모두 경우 IMP.request\_pay(param, callback) 호출 후 **callback** 으로 수신됩니다.
-
-```javascript title="Javascript SDK" showLineNumbers
-IMP.request_pay(
- {
- pg: "danal_tpay.{CPID}",
- pay_method: "card",
- merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
- name: "주문명:결제테스트",
- amount: 1004,
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456",
- },
- function (rsp) {
- // callback 로직
- //* ...중략... *//
- }
-);
-```
+
+ [JavaScript SDK](../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을 호출하여 다날 Tpay 결제창을 호출할 수 있습니다.
+ **결제결과**는 PC/모바일 환경 모두 경우 IMP.request\_pay(param, callback) 호출 후 **callback** 으로 수신됩니다.
-#### 주요 파라미터 설명
-
-**`pg` \*****string**
-
-**PG사 구분코드**
-
-**`danal_tpay`** 로 지정하면 됩니다.
+ ```ts title="Javascript SDK" showLineNumbers
+ IMP.request_pay(
+ {
+ pg: "danal_tpay.{CPID}",
+ pay_method: "card",
+ merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
+ name: "주문명:결제테스트",
+ amount: 1004,
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ },
+ function (rsp) {
+ // callback 로직
+ //* ...중략... *//
+ },
+ );
+ ```
-**`pay_method`** **\*** **string**
+ ### 주요 파라미터 설명
-**결제수단 구분코드**
+ **`pg` \*****string**
-- card (신용카드)
-- trans (실시간 계좌이체)
-- vbank(가상계좌)
-- phone(휴대폰 소액결제) : 휴대폰 결제인 경우 pg 파라미터는 **`danal`** 로 지정하면 됩니다.
-- cultureland (문화상품권)
-- happymoney (해피머니)
-- booknlife (도서문화상품권)
+ **PG사 구분코드**
-**`merchant_uid`** **\*** **string**
+ **`danal_tpay`** 로 지정하면 됩니다.
-**`고객사 고유주문번호`**
+ **`pay_method`** **\*** **string**
-매번 고유하게 채번되어야 합니다.
+ **결제수단 구분코드**
-**`buyer_tel`** **\*** **`string`**
+ - card (신용카드)
+ - trans (실시간 계좌이체)
+ - vbank(가상계좌)
+ - phone(휴대폰 소액결제) : 휴대폰 결제인 경우 pg 파라미터는 **`danal`** 로 지정하면 됩니다.
+ - cultureland (문화상품권)
+ - happymoney (해피머니)
+ - booknlife (도서문화상품권)
-**`주문자 연락처`**
+ **`merchant_uid`** **\*** **string**
-미 설정 시 다날 결제창에서 오류 발생 가능
+ **`고객사 고유주문번호`**
-**`amount`** **\*** **`integer`**
+ 매번 고유하게 채번되어야 합니다.
-**결제금액**
+ **`buyer_tel`** **\*** **`string`**
-**string** 이 아닌점에 유의하세요
+ **`주문자 연락처`**
-
-**가상계좌 결제창 호출시 주의사항**
+ 미 설정 시 다날 결제창에서 오류 발생 가능
-- **`biz_num`**: `사업자등록번호 10자리` 필수 입력 (미설정 시 다날 결제창에서 오류 발생 가능)
+ **`amount`** **\*** **`integer`**
-
+ **결제금액**
-
+ **string** 이 아닌점에 유의하세요
-
+
+ **가상계좌 결제창 호출시 주의사항**
-
-인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다.
+ - **`biz_num`**: `사업자등록번호 10자리` 필수 입력 (미설정 시 다날 결제창에서 오류 발생 가능)
+
-
-**amount 금액**
+
+
-- 빌링키 발급시 amount 파라미터에 금액이 설정되는 경우 **실 결제와 동시에 빌링키가 발급**됩니다.
-- 실결제를 원하지 않은 경우 amount 금액을 **0원**으로 설정합니다.
+
+ 인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다.
-(amount를 0으로 지정한 경우 다날에서 최초 10원 테스트 결제를 하고 30분 쯤 후 자동 취소됩니다.)
+
+ **amount 금액**
-
+ - 빌링키 발급시 amount 파라미터에 금액이 설정되는 경우 **실 결제와 동시에 빌링키가 발급**됩니다.
+ - 실결제를 원하지 않은 경우 amount 금액을 **0원**으로 설정합니다.
-```javascript
-IMP.request_pay(
- {
- pg: "danal_tpay.{CPID}",
- pay_method: "card", // 'card'만 지원됩니다.
- merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
- name: "최초인증결제",
- amount: 0, // 빌링키 발급만 진행하며 결제승인을 하지 않습니다.
- customer_uid: "your-customer-unique-id", // 필수 입력.
- buyer_email: "test@portone.io",
- buyer_name: "포트원",
- buyer_tel: "02-1234-1234",
- buyer_addr: "서울특별시 강남구 삼성동",
- period: {
- from: "20200101", //YYYYMMDD
- to: "20201231", //YYYYMMDD
- },
- },
- function (rsp) {
- if (rsp.success) {
- alert("빌링키 발급 성공");
- } else {
- alert("빌링키 발급 실패");
- }
- }
-);
-```
+ (amount를 0으로 지정한 경우 다날에서 최초 10원 테스트 결제를 하고 30분 쯤 후 자동 취소됩니다.)
+
-#### 주요 파라미터 설명
+ ```ts
+ IMP.request_pay(
+ {
+ pg: "danal_tpay.{CPID}",
+ pay_method: "card", // 'card'만 지원됩니다.
+ merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
+ name: "최초인증결제",
+ amount: 0, // 빌링키 발급만 진행하며 결제승인을 하지 않습니다.
+ customer_uid: "your-customer-unique-id", // 필수 입력.
+ buyer_email: "test@portone.io",
+ buyer_name: "포트원",
+ buyer_tel: "02-1234-1234",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ period: {
+ from: "20200101", //YYYYMMDD
+ to: "20201231", //YYYYMMDD
+ },
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("빌링키 발급 성공");
+ } else {
+ alert("빌링키 발급 실패");
+ }
+ },
+ );
+ ```
-**`pg` \*****string**
+ ### 주요 파라미터 설명
-**PG사 구분코드**
+ **`pg` \*****string**
-**`danal_tpay`** 로 지정하면 됩니다.
+ **PG사 구분코드**
-**`customer_uid` \*****string**
+ **`danal_tpay`** 로 지정하면 됩니다.
-**카드 빌링키**
+ **`customer_uid` \*****string**
-비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
+ **카드 빌링키**
-**`amount` \*****Integer**
+ 비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
-**결제금액**
+ **`amount` \*****Integer**
-0원으로 설정시 빌링키만 발급되며 **0원 이상 설정시 실결제와 빌링키 발급이 동시**에 이루어 집니다.
+ **결제금액**
-**`period`** **`array`**
+ 0원으로 설정시 빌링키만 발급되며 **0원 이상 설정시 실결제와 빌링키 발급이 동시**에 이루어 집니다.
-정기결제시 고객이 구매하는 제품에 대한 제공기간을 명시합니다. 해당 일자가 다날 결제창에 표기 됩니다.
+ **`period`** **`array`**
-**`from`** **`: YYYYMMDD`**
+ 정기결제시 고객이 구매하는 제품에 대한 제공기간을 명시합니다. 해당 일자가 다날 결제창에 표기 됩니다.
-**`to`** **`: YYYYMMDD`**
+ **`from`** **`: YYYYMMDD`**
-#### 빌링키(customer_uid)로 결제 요청하기
+ **`to`** **`: YYYYMMDD`**
-빌링키 발급이 성공하면 실 빌링키는 customer_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. customer_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api)를 호출하시면 결제를 발생시킬 수 있습니다.
+ ### 빌링키(customer\_uid)로 결제 요청하기
-```sh title="server-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ 빌링키 발급이 성공하면 실 빌링키는 customer\_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. customer\_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api)를 호출하시면 결제를 발생시킬 수 있습니다.
-
+ ```sh title="server-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-### 3. 부가기능
+## 3. 부가기능
-
-```js title="특정 통신사만 노출"
-{
- phone: {
- detail: [
- {
- carrier: "*", // 모두 활성화
- enabled: false
- },
- {
- carrier: "SKT", // SKT만 활성화
- enabled: true
- },
- ]
- }
-}
-```
-
-```js title="2개 이상 통신사 노출"
-{
- phone: {
- detail: [
- {
- carrier: "SKT",
- enabled: false
- },
- {
- carrier: "KTF",
- enabled: false
- },
- {
- carrier: "LGT",
- enabled: false
- },
- {
- carrier: "CJH",
- enabled: false
- }
- ]
- }
-}
-KCT, SKL 을 제외한 나머지 통신사는 비활성화 됩니다.
-```
-
-```js title="특정 통신사만 비노출"
-phone: {
- detail: [
+
+ ```json title="특정 통신사만 노출"
{
- carrier: "SKT",
- enabled: false,
- },
- ];
-}
-```
-
-
-`phone 파라미터 미 설정시`(기본값) 모든 통신사 노출됨
-
-
-
-
-
-
-```javascript title="javascript"
-prefill: {
- phoneNumber: "휴대폰번호" // 휴대폰번호 입력(하이픈 제거)
-}
-```
-
-휴대폰 결제시 해당 파라미터를 설정하면 휴대폰번호를 고정시킬수 있습니다.
-
+ "phone": {
+ "detail": [
+ {
+ "carrier": "*", // 모두 활성화
+ "enabled": false
+ },
+ {
+ "carrier": "SKT", // SKT만 활성화
+ "enabled": true
+ }
+ ]
+ }
+ }
+ ```
-
+ ```json title="2개 이상 통신사 노출"
+ {
+ "phone": {
+ "detail": [
+ {
+ "carrier": "SKT",
+ "enabled": false
+ },
+ {
+ "carrier": "KTF",
+ "enabled": false
+ },
+ {
+ "carrier": "LGT",
+ "enabled": false
+ },
+ {
+ "carrier": "CJH",
+ "enabled": false
+ }
+ ]
+ }
+ }
+ KCT, SKL 을 제외한 나머지 통신사는 비활성화 됩니다.
+ ```
-
-```javascript title="javascript"
-display: {
- card_quota: [6] // 할부개월 6개월까지만 활성화
-}
-```
+ ```json title="특정 통신사만 비노출"
+ {
+ "phone": {
+ "detail": [
+ {
+ "carrier": "SKT",
+ "enabled": false,
+ },
+ ]
+ }
+ }
+ ```
-**파라미터 설명**
+
+ `phone 파라미터 미 설정시`(기본값) 모든 통신사 노출됨
+
+
-- **card_quota :**
- - `[]`: 일시불만 결제 가능
- - `3,6`: 일시불을 포함한 3, 6개월 할부개월 선택 가능\\
+
+ ```json
+ {
+ "prefill": {
+ "phoneNumber": "휴대폰번호" // 휴대폰번호 입력(하이픈 제거)
+ }
+ }
+ ```
-
-할부결제는 **5만원 이상 결제 요청시**에만 이용 가능합니다.
+
+ 휴대폰 결제시 해당 파라미터를 설정하면 휴대폰번호를 고정시킬수 있습니다.
+
+
-
+
+ ```json
+ {
+ "display": {
+ "card_quota": [6] // 할부개월 6개월까지만 활성화
+ }
+ }
+ ```
-할부개월수 **3개월****까지 활성화 예제**
+ **파라미터 설명**
-
+ - **card\_quota :**
+ - `[]`: 일시불만 결제 가능
+ - `3,6`: 일시불을 포함한 3, 6개월 할부개월 선택 가능\\
-
+
+ 할부결제는 **5만원 이상 결제 요청시**에만 이용 가능합니다.
+
-
-```javascript title="javascript"
-card: {
- direct: {
- code: "367",
- quota: 3,
- usePoint: "Y"
- }
-}
-```
+ 할부개월수 **3개월****까지 활성화 예제**
-**파라미터 설명**
+
+
-- **code** : 카드사 금융결제원 표준 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string**)
-- **quota** : 할부 개월 수. 일시불일 시 0 으로 지정. (**integer**)
-- **usePoint** : 해당 파라미터 설정시 카드사 포인트가 후취방식으로 결제됩니다.
+
+ ```json
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3,
+ "usePoint": "Y"
+ }
+ }
+ }
+ ```
-
-**주의사항**
+ **파라미터 설명**
-- 카드사 모듈 바로 호출을 이용하기 위해서는 다날측 설정이 우선 필요 합니다.
+ - **code** : 카드사 금융결제원 표준 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string**)
+ - **quota** : 할부 개월 수. 일시불일 시 0 으로 지정. (**integer**)
+ - **usePoint** : 해당 파라미터 설정시 카드사 포인트가 후취방식으로 결제됩니다.
-
+
+ **주의사항**
-```javascript title="javascript"
-card: {
- detail: [
- { card_code: "*", enabled: false }, //모든 카드사 비활성화
- { card_code: "366", enabled: true }, //특정 카드만 활성화
- ];
-}
-```
+ - 카드사 모듈 바로 호출을 이용하기 위해서는 다날측 설정이 우선 필요 합니다.
+
-**파라미터 설명**
+ ```json
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, //모든 카드사 비활성화
+ { "card_code": "366", "enabled": true } //특정 카드만 활성화
+ ]
+ }
+ }
+ ```
-- **card_code :** 금결원 카드사코드 [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string)**
-- **enabled :** 해당카드 활성화 여부 (**boolean)**
+ **파라미터 설명**
-**신한카드****만 결제창 노출 처리 예제**
+ - **card\_code :** 금결원 카드사코드 [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string)**
+ - **enabled :** 해당카드 활성화 여부 (**boolean)**
-
+ **신한카드****만 결제창 노출 처리 예제**
-
+
+
diff --git a/src/content/docs/ko/pg/payment-gateway/daou/readme.mdx b/src/content/docs/ko/pg/payment-gateway/daou/readme.mdx
index bc450fe1e..f2a8858b3 100644
--- a/src/content/docs/ko/pg/payment-gateway/daou/readme.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/daou/readme.mdx
@@ -5,9 +5,9 @@ description: 키움페이 연동 방법을 안내합니다.
import Figure from "~/components/Figure.astro";
import ContentRef from "~/components/gitbook/ContentRef.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 1. 키움페이 채널 설정하기
@@ -20,227 +20,220 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
[JavaScript SDK](../../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을 호출하여 다우 페이조아 결제창을 호출할 수 있습니다. **결제 결과**는 PC의 경우 `IMP.request_pay(param, callback)` 호출 후 **callback**으로 수신되고 모바일의 경우 **m\_redirect\_url**로 리디렉션됩니다.
-**페이조아 결제창 연동을 위해서는 ****JS SDK Version 1.2.0**** 이상을 사용하셔야 합니다.**
-
+ **페이조아 결제창 연동을 위해서는 ****JS SDK Version 1.2.0**** 이상을 사용하셔야 합니다.**
-
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "daou.{상점 ID}",
- pay_method: "card",
- merchant_uid: "mid_1234567890",
- escrow: false,
- amount: 1004,
- name: "노스페이스 롱패딩 M",
- buyer_name: "홍길동",
- buyer_email: "hello@world.com",
- buyer_tel: "01012345678",
- digital: false, // 디지털로 계약되었다면 true로 설정
- m_redirect_url: "https://allerts.com/payments/complete",
- bypass: {
- // 페이조아(다우데이타) 전용 파라미터
- daou: {
- PRODUCTCODE: "portone",
- CASHRECEIPTFLAG: 0,
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "daou.{상점 ID}",
+ pay_method: "card",
+ merchant_uid: "mid_1234567890",
+ escrow: false,
+ amount: 1004,
+ name: "노스페이스 롱패딩 M",
+ buyer_name: "홍길동",
+ buyer_email: "hello@world.com",
+ buyer_tel: "01012345678",
+ digital: false, // 디지털로 계약되었다면 true로 설정
+ m_redirect_url: "https://allerts.com/payments/complete",
+ bypass: {
+ // 페이조아(다우데이타) 전용 파라미터
+ daou: {
+ PRODUCTCODE: "portone",
+ CASHRECEIPTFLAG: 0,
+ },
+ },
+ app_scheme: "portoneappscheme",
},
- },
- app_scheme: "portoneappscheme",
- },
- function (rsp) {
- // callback 로직
- // * ...중략... *
- }
-);
-```
-
-**주요 파라미터 설명**
-
-**`pg` \*****string**
+ function (rsp) {
+ // callback 로직
+ // * ...중략... *
+ },
+ );
+ ```
-**PG사 구분코드**
+ **주요 파라미터 설명**
-**`daou`** 로 지정하면 됩니다.
+ **`pg` \*****string**
-**`pay_method`** **\*** **string**
+ **PG사 구분코드**
-**결제수단 구분코드**
+ **`daou`** 로 지정하면 됩니다.
-- card(신용카드)
-- trans(실시간 계좌이체)
-- vbank(가상계좌)
+ **`pay_method`** **\*** **string**
-**`merchant_uid`** **\*** **string**
+ **결제수단 구분코드**
-**주문번호**
+ - card(신용카드)
+ - trans(실시간 계좌이체)
+ - vbank(가상계좌)
-매번 고유하게 채번되어야 합니다.
+ **`merchant_uid`** **\*** **string**
-**`digital`** **\*** **`string`**
+ **주문번호**
-**디지털 컨텐츠 여부**
+ 매번 고유하게 채번되어야 합니다.
-고객사 \<-\> 페이조아간 계약 상태에 따라 정해진 올바른 값을 넣어야 함. 그렇지 않은 경우 결제 진행 불가
+ **`digital`** **\*** **`string`**
-**`bypass.daou.PRODUCTCODE`** **`string`**
+ **디지털 컨텐츠 여부**
-**결제 상품 고유 번호**
+ 고객사 \<-> 페이조아간 계약 상태에 따라 정해진 올바른 값을 넣어야 함. 그렇지 않은 경우 결제 진행 불가
-값에 대해 정해진 규격이 없고 보내지 않을 경우 포트원에서 기본값(iamport)을 설정해 페이조아 측으로 전달
+ **`bypass.daou.PRODUCTCODE`** **`string`**
-**`bypass.daou.CASHRECEIPTFLAG`** **``****`number`**
+ **결제 상품 고유 번호**
-**현금영수증 발급 구분코드**
+ 값에 대해 정해진 규격이 없고 보내지 않을 경우 포트원에서 기본값(iamport)을 설정해 페이조아 측으로 전달
-비 신용결제(계좌,가상)시 페이조아에서 자동발급 여부 구분코드
+ **`bypass.daou.CASHRECEIPTFLAG`** **\`\`****`number`**
-**`1`: 허용**
+ **현금영수증 발급 구분코드**
-**`0`: 차단**
+ 비 신용결제(계좌,가상)시 페이조아에서 자동발급 여부 구분코드
-**`app_scheme`** **`string`**
+ **`1`: 허용**
-**모바일 앱 URL Scheme**
+ **`0`: 차단**
-모바일 앱 환경에서 결제시 필수 파라미터
+ **`app_scheme`** **`string`**
-**`amount` \*****number**
+ **모바일 앱 URL Scheme**
-**결제금액**
+ 모바일 앱 환경에서 결제시 필수 파라미터
-**string** 이 아닌 점에 유의하세요.
+ **`amount` \*****number**
-**`escrow`** **`boolean`**
+ **결제금액**
-**에스크로 설정여부**
+ **string** 이 아닌 점에 유의하세요.
-계좌이체,가상계좌만 지원됩니다.
+ **`escrow`** **`boolean`**
-
+ **에스크로 설정여부**
-
-**API 방식으로 빌링키 발급,결제요청,예약결제를 구현할수 있습니다.**
+ 계좌이체,가상계좌만 지원됩니다.
+
-**일회성 결제 요청하기**
+
+ **API 방식으로 빌링키 발급,결제요청,예약결제를 구현할수 있습니다.**
-REST[ **API POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
+ **일회성 결제 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ REST API [**POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
-**빌링키 발급 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-REST [**API POST /subscribe/customers/\{customer_uid}**](../../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
+ **빌링키 발급 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
+ REST API [**POST /subscribe/customers/\{customer\_uid}**](../../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
-**빌링키 발급 및 최초 결제 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-REST [**API POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 빌링키 발급과 최초 결제를 요청합니다.
+ **빌링키 발급 및 최초 결제 요청하기**
-- **`customer_uid`** : 빌링키 등록을 위해서 지정해야 합니다.
+ REST API [**POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 빌링키 발급과 최초 결제를 요청합니다.
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ - **`customer_uid`** : 빌링키 등록을 위해서 지정해야 합니다.
-**빌링키로 결제 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
+ **빌링키로 결제 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ 빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
-**자세한 가이드는 아래 링크를 참조하세요**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-
+ **자세한 가이드는 아래 링크를 참조하세요**
-
+
+
## 3. 부가기능
-
-```javascript title="javascript"
-display: {
- card_quota: [6] // 할부개월 6개월까지만 활성화
-}
-```
-
-**파라미터 설명**
-
-- **`card_quota` :**
- - `[]`: 일시불만 결제 가능
- - `2,3,4,5,6`: 일시불을 포함한 2, 3, 4, 5, 6개월까지 할부개월 선택 가능
-
-
-
-할부결제는 **5만원 이상 결제 요청시**에만 이용 가능합니다.
-
-
-
-
-
-
-```javascript title="javascript"
-card: {
- direct: {
- code: "367",
- quota: 3
- }
-}
-```
-
-**파라미터 설명**
-
-- **`code`** : 카드사 금융결제원 표준 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string**)
-- **`quota`** : 할부 개월 수. 일시불일 시 0으로 지정 (**number**)
-
-
-
-
-에스크로 결제를 위해서는 **`escrow`** 파라미터를 추가하고 **true** 값으로 설정해야 합니다. 에스크로 결제가 완료되면 고객사는 배송정보 등록을 진행해야 하며 해당 작업이 누락되는 경우 **정산이 진행되지 않습니다**. [**배송정보 등록**](../../../api/api-7/api-1) 및 [**배송수정 API**](../../../api/api-7/api-2) 를 이용하여 배송정보를 관리할 수 있습니다.
-
-```json title="API Body 예시"
-{
- "logis": {
- "invoice": "1728384716123",
- "company": "CJGLS",
- "receiving_at": "20220215",
- "address": "성수이로20길16"
- },
- "receiver": {
- "name": "홍길동"
- },
- "sender": {
- "relationship": "본인"
- }
-}
-```
-
-
-
-**주의사항**
-
-- 에스크로 배송정보 등록/수정 시 고객사가 전달한 배송정보(운송장 번호, 택배사 이름 등)에 대해 페이조아 측에서 유효성 체크를 하지 않습니다.
-
-
-
-
+
+ ```json
+ {
+ "display": {
+ "card_quota": [6] // 할부개월 6개월까지만 활성화
+ }
+ }
+ ```
+
+ **파라미터 설명**
+
+ - **`card_quota` :**
+ - `[]`: 일시불만 결제 가능
+ - `2,3,4,5,6`: 일시불을 포함한 2, 3, 4, 5, 6개월까지 할부개월 선택 가능
+
+
+ 할부결제는 **5만원 이상 결제 요청시**에만 이용 가능합니다.
+
+
+
+
+ ```json
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3
+ }
+ }
+ }
+ ```
+
+ **파라미터 설명**
+
+ - **`code`** : 카드사 금융결제원 표준 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string**)
+ - **`quota`** : 할부 개월 수. 일시불일 시 0으로 지정 (**number**)
+
+
+
+ 에스크로 결제를 위해서는 **`escrow`** 파라미터를 추가하고 **true** 값으로 설정해야 합니다. 에스크로 결제가 완료되면 고객사는 배송정보 등록을 진행해야 하며 해당 작업이 누락되는 경우 **정산이 진행되지 않습니다**. [**배송정보 등록**](../../../api/api-7/api-1) 및 [**배송수정 API**](../../../api/api-7/api-2) 를 이용하여 배송정보를 관리할 수 있습니다.
+
+ ```json title="API Body 예시"
+ {
+ "logis": {
+ "invoice": "1728384716123",
+ "company": "CJGLS",
+ "receiving_at": "20220215",
+ "address": "성수이로20길16"
+ },
+ "receiver": {
+ "name": "홍길동"
+ },
+ "sender": {
+ "relationship": "본인"
+ }
+ }
+ ```
+
+
+ **주의사항**
+
+ - 에스크로 배송정보 등록/수정 시 고객사가 전달한 배송정보(운송장 번호, 택배사 이름 등)에 대해 페이조아 측에서 유효성 체크를 하지 않습니다.
+
+
diff --git a/src/content/docs/ko/pg/payment-gateway/daou/undefined.mdx b/src/content/docs/ko/pg/payment-gateway/daou/undefined.mdx
index 216471aee..db46ede9e 100644
--- a/src/content/docs/ko/pg/payment-gateway/daou/undefined.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/daou/undefined.mdx
@@ -8,171 +8,135 @@ import Details from "~/components/gitbook/Details.astro";
## 페이조아 결제 특이사항
-
PC 결제는 `success`, 모바일 결제는 `imp_success` 전달
-
-PC와 모바일에서 결제창이 각기 다른 방식으로 호출되기 때문에, 결제 후속 프로세스에도 차이가 있습니다. PC 결제의 경우 페이조아 결제창이 iframe 방식으로 호출되기 때문에 결제 프로세스 완료 후 콜백 함수(`IMP.request_pay` 함수 호출시 전달한 두 번째 파라미터)가 호출되지만, 모바일 결제의 경우 페이조아 결제창이 페이조아 URL로 리디렉션되기 때문에 결제 프로세스 완료 후 지정 된 URL(`m_redirect_url`)로 302 리디렉션 됩니다. 이때 결제 실패/성공 여부를 의미하는 파라미터가 전달되는데, PC 결제시에는 `success`, 모바일 결제시에는 `imp_success`로 서로 다른 이름의 파라미터가 전달되어 주의가 요구됩니다. 정리해보면 아래와 같습니다.
-
-- \[PC결제] iframe → 콜백 함수 호출 → 콜백 함수로 전달되는 response 객체에 `success` 키 값으로 전달
-
- ```jsx
- IMP.request_pay(
- {
- // 중략
- },
- function (response) {
- const { success } = response; // 결제 성공 또는 실패 여부
- if (success) {
- // 결제 성공 시 프로세스
- } else {
- // 결제 실패 시 프로세스
- }
- }
- );
- ```
+
PC 결제는 `success`, 모바일 결제는 `imp_success` 전달
-- \[모바일 결제] 리디렉션 → m_redirect_url로 302 리디렉션 → `imp_success` 쿼리 파라미터 전달
+ PC와 모바일에서 결제창이 각기 다른 방식으로 호출되기 때문에, 결제 후속 프로세스에도 차이가 있습니다. PC 결제의 경우 페이조아 결제창이 iframe 방식으로 호출되기 때문에 결제 프로세스 완료 후 콜백 함수(`IMP.request_pay` 함수 호출시 전달한 두 번째 파라미터)가 호출되지만, 모바일 결제의 경우 페이조아 결제창이 페이조아 URL로 리디렉션되기 때문에 결제 프로세스 완료 후 지정 된 URL(`m_redirect_url`)로 302 리디렉션 됩니다. 이때 결제 실패/성공 여부를 의미하는 파라미터가 전달되는데, PC 결제시에는 `success`, 모바일 결제시에는 `imp_success`로 서로 다른 이름의 파라미터가 전달되어 주의가 요구됩니다. 정리해보면 아래와 같습니다.
- ```text
- /**
- * m_redirect_url을 https://myservice.com/payments/complete로 설정한 후
- * 결제 프로세스 종료 됐을때 302 리디렉션 되는 URL 예시
- */
- https://myservice.com/payments/complete?**imp_success=true**&imp_uid=imp1234567890&merchant_uid=mid_123467890
- ```
+ - \[PC결제] iframe → 콜백 함수 호출 → 콜백 함수로 전달되는 response 객체에 `success` 키 값으로 전달
+
+ ```tsx
+ IMP.request_pay(
+ {
+ // 중략
+ },
+ function (response) {
+ const { success } = response; // 결제 성공 또는 실패 여부
+ if (success) {
+ // 결제 성공 시 프로세스
+ } else {
+ // 결제 실패 시 프로세스
+ }
+ },
+ );
+ ```
-**`imp_success`와 `success`는 deprecated**
+ - \[모바일 결제] 리디렉션 → m\_redirect\_url로 302 리디렉션 → `imp_success` 쿼리 파라미터 전달
-하지만 애초에 `imp_success` 파라미터든 `success` 파라미터는 deprecated 되었기 때문에 해당 파라미터를 기반으로 결제 실패/성공 여부를 판단하시면 안 됩니다. 해당 파라미터는 단순히 포트원 → 고객사 클라이언트로 응답되는 시기의 결제 실패/성공 여부를 내려주는데, 이 값은 페이조아 → 포트원으로 결제 결과 통지 → 포트원 DB 업데이트가 완료된 시점이어야지만 정확하다고 볼 수 있습니다.
+ ```text
+ /**
+ * m_redirect_url을 https://myservice.com/payments/complete로 설정한 후
+ * 결제 프로세스 종료 됐을때 302 리디렉션 되는 URL 예시
+ */
+ https://myservice.com/payments/complete?**imp_success=true**&imp_uid=imp1234567890&merchant_uid=mid_123467890
+ ```
-그런데 **페이조아 → 포트원로의 결제 결과가 전달 → 포트원 DB 업데이트와 포트원 → 고객사 클라이언트로의 응답이 비동기로 동작**하기 때문에 **실제로는 결제가 정상적으로 완료된 경우에도 아직 포트원 DB에 업데이트가 안 된 시점이라 고객사 클라이언트로 응답되는 `imp_success` 또는 `success` 파라미터가 `false`일 수** 있습니다.
+ **`imp_success`와 `success`는 deprecated**
-따라서 포트원 → 고객사 클라이언트로 응답되는 결과 데이터 중 신뢰할 수 있는 값은 오로지 포트원 주문 번호(`imp_uid`)와 고객사 주문 번호(`merchant_uid`)이며, 이 값을 고객사 서버로 전달해 포트원 결제내역 조회 API([GET /payments/\{imp_uid}](https://api.iamport.kr/#!/payments/getPaymentByImpUid))를 호출한 결과(`status`)를 보고 결제 실패(`failed`)/성공(`paid`) 여부를 판단하시길 바랍니다.
+ 하지만 애초에 `imp_success` 파라미터든 `success` 파라미터는 deprecated 되었기 때문에 해당 파라미터를 기반으로 결제 실패/성공 여부를 판단하시면 안 됩니다. 해당 파라미터는 단순히 포트원 → 고객사 클라이언트로 응답되는 시기의 결제 실패/성공 여부를 내려주는데, 이 값은 페이조아 → 포트원으로 결제 결과 통지 → 포트원 DB 업데이트가 완료된 시점이어야지만 정확하다고 볼 수 있습니다.
+ 그런데 **페이조아 → 포트원으로의 결제 결과가 전달 → 포트원 DB 업데이트와 포트원 → 고객사 클라이언트로의 응답이 비동기로 동작**하기 때문에 **실제로는 결제가 정상적으로 완료된 경우에도 아직 포트원 DB에 업데이트가 안 된 시점이라 고객사 클라이언트로 응답되는 `imp_success` 또는 `success` 파라미터가 `false`일 수** 있습니다.
+
+ 따라서 포트원 → 고객사 클라이언트로 응답되는 결과 데이터 중 신뢰할 수 있는 값은 오로지 포트원 주문 번호(`imp_uid`)와 고객사 주문 번호(`merchant_uid`)이며, 이 값을 고객사 서버로 전달해 포트원 결제내역 조회 API([GET /payments/\{imp\_uid}](https://api.iamport.kr/#!/payments/getPaymentByImpUid))를 호출한 결과(`status`)를 보고 결제 실패(`failed`)/성공(`paid`) 여부를 판단하시길 바랍니다.
-
사파리 브라우저 - 하나카드 / NH앱캐시 결제 시 세션 관련 이슈 존재
-
-사파리 브라우저에서 하나카드 / NH앱캐시(계좌이체) 결제 시 아래와 같이 `세션 유효기간이 초과되어 카드사와 연결이 종료되었습니다`와 같은 메시지가 렌더링되며 더 이상 결제가 불가능한 이슈가 있습니다.
+
사파리 브라우저 - 하나카드 / NH앱캐시 결제 시 세션 관련 이슈 존재
-
+ 사파리 브라우저에서 하나카드 / NH앱캐시(계좌이체) 결제 시 아래와 같이 `세션 유효기간이 초과되어 카드사와 연결이 종료되었습니다`와 같은 메시지가 렌더링되며 더 이상 결제가 불가능한 이슈가 있습니다.
-이러한 현상을 겪으시는 경우, 사파리 환경설정에서 아래와 같이 `크로스 사이트 추적 방지` 해제 및 `모든 쿠키 차단`이 모두 해제되어 있는지 확인해 보시고, 모두 해제 후 다시 시도해보시길 바랍니다.
+
-
+ 이러한 현상을 겪으시는 경우, 사파리 환경설정에서 아래와 같이 `크로스 사이트 추적 방지` 해제 및 `모든 쿠키 차단`이 모두 해제되어 있는지 확인해 보시고, 모두 해제 후 다시 시도해보시길 바랍니다.
+
-
사파리/파이어폭스 브라우저 - BC카드 결제시 이슈 존재
+
사파리/파이어폭스 브라우저 - BC카드 결제시 이슈 존재
-신용카드 결제창에서 BC카드 선택 후 다음 버튼 클릭시 "지불에 실패하였습니다"라는 알림창이 뜨면서 더 이상 진행되지 않는 이슈가 있습니다. 다른 브라우저(크롬, 오페라, 엣지 등)나 다른 카드사에서는 이상 없이 BC카드 결제를 위한 페이북 QR코드가 렌더링되지만, 사파리와 파이어폭스에서는 아래와 같이 "지불에 실패하였습니다"라는 메시지를 담고 있는 알림창이 뜨면서 더 이상 결제가 진행되지 않습니다.
+ 신용카드 결제창에서 BC카드 선택 후 다음 버튼 클릭시 "지불에 실패하였습니다"라는 알림창이 뜨면서 더 이상 진행되지 않는 이슈가 있습니다. 다른 브라우저(크롬, 오페라, 엣지 등)나 다른 카드사에서는 이상 없이 BC카드 결제를 위한 페이북 QR코드가 렌더링되지만, 사파리와 파이어폭스에서는 아래와 같이 "지불에 실패하였습니다"라는 메시지를 담고 있는 알림창이 뜨면서 더 이상 결제가 진행되지 않습니다.
-
+
-이러한 현상을 겪으시는 경우, 사파리 환경설정에서 아래와 같이 `*.payjoa.co.kr` 도메인에 대해 팝업 `허용` 설정 되어 있으신지 확인해보시고, 허용 후 다시 시도해보시길 바랍니다.
-
-
+ 이러한 현상을 겪으시는 경우, 사파리 환경설정에서 아래와 같이 `*.payjoa.co.kr` 도메인에 대해 팝업 `허용` 설정 되어 있으신지 확인해보시고, 허용 후 다시 시도해보시길 바랍니다.
+
-
실시간 계좌이체 결제 플로우 상이
+
실시간 계좌이체 결제 플로우 상이
-페이조아의 경우 내부적으로 토스페이먼츠 - 계좌이체를 사용하고 있어 토스 간편결제, NH앱캐시 그리고 계좌 정보 직접 입력을 통해서만 계좌이체가 가능합니다. 여기서 계좌 정보 직접 입력시, 보안카드 / OTP 인증 → 공인인증서 인증까지 진행해야 합니다.
+ 페이조아의 경우 내부적으로 토스페이먼츠 - 계좌이체를 사용하고 있어 토스 간편결제, NH앱캐시 그리고 계좌 정보 직접 입력을 통해서만 계좌이체가 가능합니다. 여기서 계좌 정보 직접 입력시, 보안카드 / OTP 인증 → 공인인증서 인증까지 진행해야 합니다.
-단, 모바일 결제의 경우엔 토스 간편결제와 NH앱캐시를 통해서만 결제가 가능합니다.
+ 단, 모바일 결제의 경우엔 토스 간편결제와 NH앱캐시를 통해서만 결제가 가능합니다.
-
+
+
-
가상계좌 입금 완료시, 송금자 이름만 알 수 있음
+
가상계좌 입금 완료시, 송금자 이름만 알 수 있음
-페이조아는 (발급된) 가상계좌에 입금 완료시, 송금자의 정보(은행명, 계좌번호, 송금인) 중 송금자 이름만 알려줍니다. 따라서 포트원 결제내역 조회([**GET /payments/\{imp_uid}**](../../../api/api-1/api-1))시 송금자의 은행코드(`bank_code`)과 은행명(`bank_name`)은 모두 NULL로 내려가며, 송금자 이름을 확인하기 위해서는 아래 예시와 같이 별도의 쿼리 파라미터(`extension`)를 `true`로 설정해주셔야 합니다.
+ 페이조아는 (발급된) 가상계좌에 입금 완료시, 송금자의 정보(은행명, 계좌번호, 송금인) 중 송금자 이름만 알려줍니다. 따라서 포트원 결제내역 조회([**GET /payments/\{imp\_uid}**](../../../api/api-1/api-1))시 송금자의 은행코드(`bank_code`)과 은행명(`bank_name`)은 모두 NULL로 내려가며, 송금자 이름을 확인하기 위해서는 아래 예시와 같이 별도의 쿼리 파라미터(`extension`)를 `true`로 설정해주셔야 합니다.
-```text
-GET http://api.iamport.kr/payments/{포트원 번호}?**extension=true**
-```
+ ```http
+ GET http://api.iamport.kr/payments/{포트원 번호}?**extension=true**
+ ```
-```json
-{
- // ... 중략
- "bank_code": null, // 송금자 은행 코드 알 수 없음
- "bank_name": null, // 송금자 은행 이름 알 수 없음
- "extension": {
+ ```json
+ {
// ... 중략
- "REMITTER": "홍길동" // 송금자 이름
+ "bank_code": null, // 송금자 은행 코드 알 수 없음
+ "bank_name": null, // 송금자 은행 이름 알 수 없음
+ "extension": {
+ // ... 중략
+ "REMITTER": "홍길동" // 송금자 이름
+ }
}
-}
-```
-
+ ```
-
가상계좌 결제 취소시, PG사와 특약 필요
-
-가상계좌 입금 완료 건에 대한 결제 취소(환불)은 가상계좌 발급 시 부과되는 수수료 이슈로 인해 페이조아와 특약을 맺어야지만 가능합니다. 이 특약 없이는 기본적으로 가상계좌 결제 건의 환불은 불가능합니다.
+
가상계좌 결제 취소시, PG사와 특약 필요
+ 가상계좌 입금 완료 건에 대한 결제 취소(환불)은 가상계좌 발급 시 부과되는 수수료 이슈로 인해 페이조아와 특약을 맺어야지만 가능합니다. 이 특약 없이는 기본적으로 가상계좌 결제 건의 환불은 불가능합니다.
-
가상계좌 결제 취소시, 실제 환불 금액 입금까지 7 영업일 이상 소요
-
-페이조아 가상계좌 결제 취소(환불)는 고객사 → 포트원 → 페이조아로 환불 요청 접수 시, 페이조아 담당자가 수기로 확인 후 환불 처리를 해 주는 프로세스로 진행되기 때문에 환불 금액이 실제로 입금 될때까지 7 영업일 이상 소요됩니다.
+
가상계좌 결제 취소시, 실제 환불 금액 입금까지 7 영업일 이상 소요
+ 페이조아 가상계좌 결제 취소(환불)는 고객사 → 포트원 → 페이조아로 환불 요청 접수 시, 페이조아 담당자가 수기로 확인 후 환불 처리를 해 주는 프로세스로 진행되기 때문에 환불 금액이 실제로 입금 될때까지 7 영업일 이상 소요됩니다.
-
과세/면세/복합과세용 CPID는 모두 건별 구분으로 1개만 발급하여 사용
-
-페이조아 측으로 해당 CPID 설정을 `건별구분`으로 발급 해달라고 요청해주셔야 합니다. 그래야 하나의 CPID로 과세/면세/복합과세 거래건을 모두 처리할 수 있습니다.
+
과세/면세/복합과세용 CPID는 모두 건별 구분으로 1개만 발급하여 사용
+ 페이조아 측으로 해당 CPID 설정을 `건별구분`으로 발급 해달라고 요청해주셔야 합니다. 그래야 하나의 CPID로 과세/면세/복합과세 거래건을 모두 처리할 수 있습니다.
-
면세금액은 카드 결제만 설정 가능
-
-결제창(`IMP.request_pay` 함수) 호출시 총 결제 금액(`amount`)중 면세 금액(`tax_free`)을 설정할 수 있습니다. 단, 페이조아 시스템 상 면세 금액은 카드 결제(`pay_method: "card"`) 시에만 가능하고 계좌이체 / 가상계좌 결제 시에는 설정할 수 없어 전액 과세 처리 됩니다.
+
면세금액은 카드 결제만 설정 가능
+ 결제창(`IMP.request_pay` 함수) 호출시 총 결제 금액(`amount`)중 면세 금액(`tax_free`)을 설정할 수 있습니다. 단, 페이조아 시스템 상 면세 금액은 카드 결제(`pay_method: "card"`) 시에만 가능하고 계좌이체 / 가상계좌 결제 시에는 설정할 수 없어 전액 과세 처리 됩니다.
-
페이조아 자체 버그
-
-**에스크로 결제시 구매자 전화번호가 결제창에 자동 완성되지 않음**
+
페이조아 자체 버그
-
+ **에스크로 결제시 구매자 전화번호가 결제창에 자동 완성되지 않음**
-- `IMP.request_pay` 호출시 전달한 구매자의 전화번호(`buyer_tel`)가 다른 결제창과는 달리 에스크로 결제창에서는 자동 완성되지 않습니다. 이는 페이조아가 해당 기능을 제공하지 않는 것으로 이용에 참고 부탁드립니다.
+
+ - `IMP.request_pay` 호출시 전달한 구매자의 전화번호(`buyer_tel`)가 다른 결제창과는 달리 에스크로 결제창에서는 자동 완성되지 않습니다. 이는 페이조아가 해당 기능을 제공하지 않는 것으로 이용에 참고 부탁드립니다.
diff --git a/src/content/docs/ko/pg/payment-gateway/eximbay.mdx b/src/content/docs/ko/pg/payment-gateway/eximbay.mdx
index 683d969c1..d107e9e84 100644
--- a/src/content/docs/ko/pg/payment-gateway/eximbay.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/eximbay.mdx
@@ -3,11 +3,11 @@ title: 엑심베이
description: 엑심베이 결제 연동 방법을 안내합니다.
---
-import Details from "~/components/gitbook/Details.astro";
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Details from "~/components/gitbook/Details.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 1. 엑심베이 채널 설정하기
@@ -15,143 +15,149 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
-## 2.결제 요청하기
+## 2. 결제 요청하기
[JavaScript SDK](../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을 호출하여
-엑심베이 결제창을 호출할 수 있습니다. **결제결과**는 **PC / 모바일** 모두 **callback** 으로 전달됩니다.
+엑심베이 결제창을 호출할 수 있습니다. **결제결과**는 **PC / 모바일** 모두 **callback** 으로 전달됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg: "eximbay.{상점 ID}",
- pay_method: "card",
- merchant_uid: "order_no_0001", // 상점에서 관리하는 주문 번호
- name: "주문명:결제테스트",
- amount: 14.20,
- currency: "USD", // 기본값: USD(원화 KRW는 페이팔 정책으로 인해 지원하지 않음)
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456",
- popup:false // 팝업창 활성 비활성화 컨트롤
-}, function(rsp) { // callback 로직
- /* ...중략... */
-});
-```
-
-**주요 파라미터 설명**
-
-**`pg` \*****string**
-
-**PG사 구분코드**
-
-**`eximbay`** 로 지정하면 됩니다.
-
-**`pay_method`** **\*** **string**
-
-**결제수단 구분코드**
-
-- 신용카드: `card`
-- 알리페이 / 알리페이 플러스: `alipay` (상점아이디 설정에 따라 알리페이 혹은 알리페이 플러스로 호출됩니다. )
-- 해외카드: `card`
-- 유니온페이: `unionpay`
-- 텐페이: `tenpay`
-- 일본 편의점결제(eContext): `econtext`
-- 위챗페이: `wechat`
-- 몰페이: `molpay`
-
-**`merchant_uid`** **\*** **string**
-
-**`고객사 고유주문번호`**
-
-매번 고유하게 채번되어야 합니다.
-
-**`buyer`** **\*** **`string`**
-
-**`구매자명`**
-
-**`buyer_tel`** **\*** **`string`**
-
-**`구매자 연락처`**
-
-**`amount`** **\*** **`integer`**
-
-**결제금액**
-
-**string** 이 아닌점에 유의하세요
-
-**`currency`** **`string`**
-
-**결제통화코드**
-
-- KRW
-- USD
-- EUR
-- GBP
-- JPY
-- THB
-- SGD
-- RUB
-- HKD
-- CAD
-- AUD
-- CNY
-- TWD
-- MYR
-- VND
-- PHP
-- MNT
-- NZD
-- AED
-- MOP
-- BRL
-- KZT
-- NOK
-- SAR
-- TRY
-
-**`language`** **`string`**
-
-- 한국어 : ko
-- 영어 : en
-- 중국어 : zh
-- 일본어 : jp
-
-
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "eximbay.{상점 ID}",
+ pay_method: "card",
+ merchant_uid: "order_no_0001", // 상점에서 관리하는 주문 번호
+ name: "주문명:결제테스트",
+ amount: 14.2,
+ currency: "USD", // 기본값: USD(원화 KRW는 페이팔 정책으로 인해 지원하지 않음)
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ popup: false, // 팝업창 활성 비활성화 컨트롤
+ },
+ function (rsp) {
+ // callback 로직
+ /* ...중략... */
+ },
+ );
+ ```
+
+ **주요 파라미터 설명**
+
+ **`pg` \*****string**
+
+ **PG사 구분코드**
+
+ **`eximbay`** 로 지정하면 됩니다.
+
+ **`pay_method`** **\*** **string**
+
+ **결제수단 구분코드**
+
+ - 신용카드: `card`
+ - 알리페이 / 알리페이 플러스: `alipay` (상점아이디 설정에 따라 알리페이 혹은 알리페이 플러스로 호출됩니다. )
+ - 해외카드: `card`
+ - 유니온페이: `unionpay`
+ - 텐페이: `tenpay`
+ - 일본 편의점결제(eContext): `econtext`
+ - 위챗페이: `wechat`
+ - 몰페이: `molpay`
+
+ **`merchant_uid`** **\*** **string**
+
+ **`고객사 고유주문번호`**
+
+ 매번 고유하게 채번되어야 합니다.
+
+ **`buyer`** **\*** **`string`**
+
+ **`구매자명`**
+
+ **`buyer_tel`** **\*** **`string`**
+
+ **`구매자 연락처`**
+
+ **`amount`** **\*** **`integer`**
+
+ **결제금액**
+
+ **string** 이 아닌점에 유의하세요
+
+ **`currency`** **`string`**
+
+ **결제통화코드**
+
+ - KRW
+ - USD
+ - EUR
+ - GBP
+ - JPY
+ - THB
+ - SGD
+ - RUB
+ - HKD
+ - CAD
+ - AUD
+ - CNY
+ - TWD
+ - MYR
+ - VND
+ - PHP
+ - MNT
+ - NZD
+ - AED
+ - MOP
+ - BRL
+ - KZT
+ - NOK
+ - SAR
+ - TRY
+
+ **`language`** **`string`**
+
+ - 한국어 : ko
+ - 영어 : en
+ - 중국어 : zh
+ - 일본어 : jp
+
-**참고사항**
-
-포트원은 엑심베이 정기결제를 지원하지 않습니다.
+ **참고사항**
+ 포트원은 엑심베이 정기결제를 지원하지 않습니다.
-
편의점 결제 테스트 방법
+
편의점 결제 테스트 방법
+
+ **편의점결제 동작 방식**
+
+ 한국의 가상계좌와 같이 결제창 내에서는 등록을 한 다음에 고객에게 이메일 / 문자로 전달되는 화면을 편의점 카운터에서 지불하며 처리합니다.
+
+ - 포트원 내부에서는 `pay_method: "vbank"` 로 기록됨
+ - Econtext 등록이 완료되었다는 콜백함수 및 웹훅 전송 (`status: "ready"` 상태 / `vbank_num`은 `unknown`으로 고정)
+ - Econtext 로부터 입금확인이 되면 포트원에서 엑심베이로부터 응답을 받아 `status: "paid"`로 변경 후 결제완료처리에 대한 웹훅 전송
+
+ **편의점결제 테스트 진행순서**
+
+ 가상계좌와 같이 실제 고객이 입금한 결과를 테스트해야 하므로 아래와 같이 입금완료됨을 임의적으로 통지받아보실 수 있습니다.
-**편의점결제 동작 방식**
+ 1. 엑심베이 테스트모드 ON상태에서 1번과 같이 결제창 진행
-한국의 가상계좌와 같이 결제창 내에서는 등록을 한 다음에 고객에게 이메일 / 문자로 전달되는 화면을 편의점 카운터에서 지불하며 처리합니다.
+ 2. 콜백 응답 중 `pg_tid` 값을 별도로 메모 (포트원 관리자콘솔 PG사승인번호 컬럼에서 확인 가능)
-- 포트원 내부에서는 `pay_method: "vbank"` 로 기록됨
-- Econtext 등록이 완료되었다는 콜백함수 및 웹훅 전송 (`status: "ready"` 상태 / `vbank_num`은 `unknown`으로 고정)
-- Econtext 로부터 입금확인이 되면 포트원에서 엑심베이로부터 응답을 받아 `status: "paid"`로 변경 후 결제완료처리에 대한 웹훅 전송
+ 3. [http://test.econ.ne.jp/site/tuchi\_2/tuchi\_menu\_2.html](http://test.econ.ne.jp/site/tuchi_2/tuchi_menu_2.html)로 이동 후 계정 로그인
+ (아이디 : `ectest` / 비번 : `#eg0810#`)
-**편의점결제 테스트 진행순서**
+ 4. ShopID : `361301`, orderID : 2번에서 확보한 PG사승인번호 입력
-가상계좌와 같이 실제 고객이 입금한 결과를 테스트해야 하므로 아래와 같이 입금완료됨을 임의적으로 통지받아보실 수 있습니다.
+ 5. 하단에 있는 **`登録`** 버튼 클릭
-1. 엑심베이 테스트모드 ON상태에서 1번과 같이 결제창 진행
-2. 콜백 응답 중 `pg_tid` 값을 별도로 메모 (포트원 관리자콘솔 PG사승인번호 컬럼에서 확인 가능)
-3. [http://test.econ.ne.jp/site/tuchi_2/tuchi_menu_2.html](http://test.econ.ne.jp/site/tuchi_2/tuchi_menu_2.html)로 이동 후 계정 로그인
- (아이디 : `ectest` / 비번 : `#eg0810#`)
-4. ShopID : `361301`, orderID : 2번에서 확보한 PG사승인번호 입력
-5. 하단에 있는 **`登録`** 버튼 클릭
-6. 다음 페이지에서 한 번 더 **`登録`** 클릭
-7. 10분 후 결제상태가 `status: "paid"`로 바뀌는지 확인 (이 때 입금에 대한 웹훅 발송됨)
+ 6. 다음 페이지에서 한 번 더 **`登録`** 클릭
+ 7. 10분 후 결제상태가 `status: "paid"`로 바뀌는지 확인 (이 때 입금에 대한 웹훅 발송됨)
diff --git a/src/content/docs/ko/pg/payment-gateway/inicis.mdx b/src/content/docs/ko/pg/payment-gateway/inicis.mdx
index c21fd8eab..e291072ee 100644
--- a/src/content/docs/ko/pg/payment-gateway/inicis.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/inicis.mdx
@@ -3,12 +3,12 @@ title: KG 이니시스
description: KG이니시스 결제창 연동 가이드입니다.
---
+import Figure from "~/components/Figure.astro";
import Codepen from "~/components/gitbook/Codepen.astro";
import ContentRef from "~/components/gitbook/ContentRef.astro";
-import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 1. KG이니시스 채널 설정하기
@@ -16,327 +16,327 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
-## 2.결제 요청하기
+## 2. 결제 요청하기
-[JavaScript SDK](../../sdk/javascript-sdk/readme) `IMP.request_pay(param, callback)`을 호출하여 KG이니시스 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 `IMP.request_pay(param, callback)` 호출 후 **callback** 으로 수신 되며 모바일의 경우 **m_redirect_url** 로 리디렉션됩니다.
+[JavaScript SDK](../../sdk/javascript-sdk/readme) `IMP.request_pay(param, callback)`을 호출하여
+KG이니시스 결제창을 호출할 수 있습니다.
+**결제결과**는 PC의 경우 `IMP.request_pay(param, callback)` 호출 후
+**callback** 으로 수신 되며
+모바일의 경우 **m\_redirect\_url** 로 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg : 'html5_inicis.{PG상점아이디}', //테스트 시 html5_inicis.INIpayTest 기재
- pay_method : 'card',
- merchant_uid: "order_no_0001", //상점에서 생성한 고유 주문번호
- name : '주문명:결제테스트',
- amount : 1004,
- buyer_email : 'test@portone.io',
- buyer_name : '구매자이름',
- buyer_tel : '010-1234-5678', //필수 파라미터 입니다.
- buyer_addr : '서울특별시 강남구 삼성동',
- buyer_postcode : '123-456',
- m_redirect_url : '{모바일에서 결제 완료 후 리디렉션 될 URL}',
- escrow : true, //에스크로 결제인 경우 설정
- vbank_due : 'YYYYMMDD'
- bypass : {
- acceptmethod : "noeasypay" // 간편결제 버튼을 통합결제창에서 제외(PC)
- P_RESERVED: "noeasypay=Y" // 간편결제 버튼을 통합결제창에서 제외(모바일)
- acceptmethod: 'cardpoint' // 카드포인트 사용시 설정(PC)
- P_RESERVED : 'cp_yn=Y' // 카드포인트 사용시 설정(모바일)
- },
- period : {
- from : "20200101", //YYYYMMDD
- to : "20201231" //YYYYMMDD
- }
-}, function(rsp) { // callback 로직
- //* ...중략... *//
-});
-```
-
-### **주요 파라미터 설명**
-
-**`pg` \*****string**
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "html5_inicis.{PG상점아이디}", //테스트 시 html5_inicis.INIpayTest 기재
+ pay_method: "card",
+ merchant_uid: "order_no_0001", //상점에서 생성한 고유 주문번호
+ name: "주문명:결제테스트",
+ amount: 1004,
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678", //필수 파라미터 입니다.
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ escrow: true, //에스크로 결제인 경우 설정
+ vbank_due: "YYYYMMDD",
+ bypass: {
+ acceptmethod: "noeasypay", // 간편결제 버튼을 통합결제창에서 제외(PC)
+ P_RESERVED: "noeasypay=Y", // 간편결제 버튼을 통합결제창에서 제외(모바일)
+ acceptmethod: "cardpoint", // 카드포인트 사용시 설정(PC)
+ P_RESERVED: "cp_yn=Y", // 카드포인트 사용시 설정(모바일)
+ },
+ period: {
+ from: "20200101", //YYYYMMDD
+ to: "20201231", //YYYYMMDD
+ },
+ },
+ function (rsp) {
+ // callback 로직
+ //* ...중략... *//
+ },
+ );
+ ```
+
+ ### **주요 파라미터 설명**
+
+ **`pg` \*****string**
+
+ **PG사 구분코드**
+
+ **`html5_inicis.`**`{`PG상점아이디}
+
+ PG상점아이디는 KG 이니시스와 계약 후 발급받을 수 있습니다.
+
+ **`pay_method`** **\*** **string**
-**PG사 구분코드**
+ **결제수단 구분코드**
-**`html5_inicis.`**`{`PG상점아이디}
+ - `card` (신용카드)
+ - `samsung` (삼성페이 허브형)
+ - `kakaopay` (카카오페이 허브형)
+ - `ssgpay` (SSG페이 허브형)
+ - `chai` (차이페이)
+ - `trans` (실시간 계좌이체)
+ - `vbank`(가상계좌)
+ - `phone` (휴대폰소액결제)
+ - `payco` (페이코 허브형)
+ - tosspay (토스간편결제 허브형)
+ - lpay (L페이 허브형)
+ - `naverpay` (네이버페이)
+ - `cultureland` (문화상품권)
+ - `smartculture` (스마트문상)
+ - `happymoney` (해피머니)
+ - booknlife(도서문화상품권)
-PG상점아이디는 KG 이니시스와 계약 후 발급받을 수 있습니다.
+ **`merchant_uid`** **\*** **string**
-**`pay_method`** **\*** **string**
+ **주문번호**
-**결제수단 구분코드**
+ 매번 고유하게 채번되어야 합니다.
-- `card` (신용카드)
-- `samsung` (삼성페이 허브형)
-- `kakaopay` (카카오페이 허브형)
-- `ssgpay` (SSG페이 허브형)
-- `chai` (차이페이)
-- `trans` (실시간 계좌이체)
-- `vbank`(가상계좌)
-- `phone` (휴대폰소액결제)
-- `payco` (페이코 허브형)
-- tosspay (토스간편결제 허브형)
-- lpay (L페이 허브형)
-- `naverpay` (네이버페이)
-- `cultureland` (문화상품권)
-- `smartculture` (스마트문상)
-- `happymoney` (해피머니)
-- booknlife(도서문화상품권)
+ **`amount` \*****integer**
-**`merchant_uid`** **\*** **string**
+ **결제금액**
-**주문번호**
+ **string** 이 아닌점에 유의하세요
-매번 고유하게 채번되어야 합니다.
+ **`buyer_tel`** **\*** **`string`**
-**`amount` \*****integer**
+ **`주문자연락처`**
-**결제금액**
+ 필수 파라미터 입니다.
-**string** 이 아닌점에 유의하세요
+ **`vbank_due`** **string**
-**`buyer_tel`** **\*** **`string`**
+ 가상계좌 입금마감일시를 지정할수 있습니다.(미 지정시 Default 30일)
-**`주문자연락처`**
+ **`period`** **array**
-필수 파라미터 입니다.
+ - `from`
+ - `to`
-**`vbank_due`** **string**
+ 인증 결제창 제공기간을 표현할수 있습니다.
-가상계좌 입금마감일시를 지정할수 있습니다.(미 지정시 Default 30일)
-
-**`period`** **array**
-
-```
-from
-to
-```
-
-인증 결제창 제공기간을 표현할수 있습니다.
-
-
-
-
-
-
-**PG사 결제창으로 카드정보를 입력받고 빌링키를 발급할수 있습니다.**
-
-- 인증결제창 호출 파라미터에서 **customer_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다.
-- 비 인증 결제창에서 빌링키를 발급받은 후 해당 빌링키로 결제를 요청합니다.
-- amount 파라미터에 금액을 설정하여도 실제 승인은 이루어지지 않습니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "html5_inicis.{PG상점아이디}", // 실제 계약 후에는 실제 상점아이디로 변경
- pay_method: "card", // 'card'만 지원됩니다.
- merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
- name: "최초인증결제",
- amount: 0, // 결제창에 표시될 금액. 실제 승인이 이뤄지지는 않습니다.
- customer_uid: "your-customer-unique-id", // 필수 입력.
- buyer_email: "test@portone.io",
- buyer_name: "포트원",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
- },
- function (rsp) {
- if (rsp.success) {
- alert("빌링키 발급 성공");
- } else {
- alert("빌링키 발급 실패");
- }
- }
-);
-```
+
+
-###
+
+ **PG사 결제창으로 카드정보를 입력받고 빌링키를 발급할수 있습니다.**
-### **주요 파라미터 설명**
+ - 인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다.
+ - 비 인증 결제창에서 빌링키를 발급받은 후 해당 빌링키로 결제를 요청합니다.
+ - amount 파라미터에 금액을 설정하여도 실제 승인은 이루어지지 않습니다.
-**`pg` \*****string**
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "html5_inicis.{PG상점아이디}", // 실제 계약 후에는 실제 상점아이디로 변경
+ pay_method: "card", // 'card'만 지원됩니다.
+ merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
+ name: "최초인증결제",
+ amount: 0, // 결제창에 표시될 금액. 실제 승인이 이뤄지지는 않습니다.
+ customer_uid: "your-customer-unique-id", // 필수 입력.
+ buyer_email: "test@portone.io",
+ buyer_name: "포트원",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("빌링키 발급 성공");
+ } else {
+ alert("빌링키 발급 실패");
+ }
+ },
+ );
+ ```
-**PG사 구분코드**
+ ### **주요 파라미터 설명**
-\*\*`html5_inicis`\*\*로 설정
+ **`pg` \*****string**
-> KG이니시스에서 발급받은 상점아이디가 여러개(각각 일반 및 정기)인 경우에는 html5_inicis.\{상점아이디} 또는 inicis.\{상점아이디}(for ActiveX)로 지정합니다.
+ **PG사 구분코드**
-**`customer_uid` \*****string**
+ **`html5_inicis`** 로 설정
-**카드 빌링키**
+ > KG이니시스에서 발급받은 상점아이디가 여러개(각각 일반 및 정기)인 경우에는 html5\_inicis.\{상점아이디} 또는 inicis.\{상점아이디}(for ActiveX)로 지정합니다.
-비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
+ **`customer_uid` \*****string**
-**`amount` \*****Integer**
+ **카드 빌링키**
-**결제금액**
+ 비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
-결제창에 표시될 금액으로 실제 승인은 이루어지지 않습니다.(실 결제를 발생시키기 위해서는 **customer_uid** 로 **REST API 를 이용하여 결제요청**을 해주셔야 합니다.)
+ **`amount` \*****Integer**
-**빌링키(customer_uid)로 결제 요청하기**
+ **결제금액**
-빌링키 발급이 성공하면 실 빌링키는 customer_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. customer_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api)를 호출하시면 결제를 발생시킬 수 있습니다.
+ 결제창에 표시될 금액으로 실제 승인은 이루어지지 않습니다.(실 결제를 발생시키기 위해서는 **customer\_uid** 로 **REST API 를 이용하여 결제요청**을 해주셔야 합니다.)
-```sh title="server-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ **빌링키(customer\_uid)로 결제 요청하기**
-
+ 빌링키 발급이 성공하면 실 빌링키는 customer\_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. customer\_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api)를 호출하시면 결제를 발생시킬 수 있습니다.
-
-**API 방식으로 빌링키 발급,결제요청,예약결제를 구현할수 있습니다.**
+ ```sh title="server-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-**일회성 결제 요청하기**
+
+ **API 방식으로 빌링키 발급,결제요청,예약결제를 구현할수 있습니다.**
-REST[ **API POST /subscribe/payments/onetime**](../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
+ **일회성 결제 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ REST [**API POST /subscribe/payments/onetime**](../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
-**빌링키 발급 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-REST [**API POST /subscribe/customers/\{customer_uid}**](../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
+ **빌링키 발급 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
+ REST [**API POST /subscribe/customers/\{customer\_uid}**](../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
-**빌링키 발급 및 최초 결제 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-REST [**API POST /subscribe/payments/onetime**](../../api/api-4/api-1)을 호출하여 빌링키 발급과 최초 결제를 요청합니다.
+ **빌링키 발급 및 최초 결제 요청하기**
-- **`customer_uid`** : 빌링키 등록을 위해서 지정해야 합니다.
-- **`amount`** : 0원 이상 설정시 빌링키 발급과 동시에 실결제가 발생됩니다.
+ REST [**API POST /subscribe/payments/onetime**](../../api/api-4/api-1)을 호출하여 빌링키 발급과 최초 결제를 요청합니다.
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ - **`customer_uid`** : 빌링키 등록을 위해서 지정해야 합니다.
+ - **`amount`** : 0원 이상 설정시 빌링키 발급과 동시에 실결제가 발생됩니다.
-**빌링키로 결제 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
+ **빌링키로 결제 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ 빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
-**자세한 가이드는 아래 링크를 참조하세요**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-
+ **자세한 가이드는 아래 링크를 참조하세요**
-
+
+
## 3. 부가기능
-
-```javascript title="javascript"
-display: {
- card_quota: [6] // 할부개월 6개월만 활성화
-}
-```
-
-**파라미터 설명**
-
-- **card_quota :** 지정한 숫자에 해당하는 할부개월수만 표기
- - `[]`: 일시불만 결제 가능
- - `2,3,4,5,6`: 일시불을 포함한 2, 3, 4, 5, 6 할부개월 선택 가능\\
-
-
-할부결제는 **5만원 이상 결제 요청시**에만 이용 가능합니다.
-
-
-
-
-
-
-
-```javascript title="javascript"
-card: {
- direct: {
- code: "367",
- quota: 3
- }
-}
-```
-
-**파라미터 설명**
-
-- **code** : 카드사 금융결제원 표준 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string**)
-- **quota** : 할부 개월 수. 일시불일 시 0 으로 지정. (**integer**)
-
-
-
-
-
-
-```javascript title="javascript"
-card: {
- detail: [
- { card_code: "*", enabled: false }, //모든 카드사 비활성화
- { card_code: '366', enabled: true } //특정 카드만 활성화
- ]
-}
-```
-
-**파라미터 설명**
+
+ ```json
+ {
+ "display": {
+ "card_quota": [6] // 할부개월 6개월만 활성화
+ }
+ }
+ ```
+
+ **파라미터 설명**
+
+ - **card\_quota :** 지정한 숫자에 해당하는 할부개월수만 표기
+ - `[]`: 일시불만 결제 가능
+ - `2,3,4,5,6`: 일시불을 포함한 2, 3, 4, 5, 6 할부개월 선택 가능\\
+
+
+ 할부결제는 **5만원 이상 결제 요청시**에만 이용 가능합니다.
+
+
+
+
+
+
+ ```json
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3
+ }
+ }
+ }
+ ```
-- **card_code :** 금결원 카드사코드 [**링크**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) 참조 (**string)**
-- **enabled :** 해당카드 활성화 여부 (**boolean)**
+ **파라미터 설명**
-
+ - **code** : 카드사 금융결제원 표준 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string**)
+ - **quota** : 할부 개월 수. 일시불일 시 0 으로 지정. (**integer**)
-
-```javascript
-// 영세율의 경우
-amount: 1000,
-tax_free: 0,
-vat_amount: 0
-```
+
+
-**파라미터 설명**
+
+ ```json
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, //모든 카드사 비활성화
+ { "card_code": "366", "enabled": true } //특정 카드만 활성화
+ ]
+ }
+ }
+ ```
-- **vat_amount**: 상점아이디(MID)에 영세율 설정된 경우 부가세(`vat_amount`) 및 면세금액(`tax_free`)를 0원으로 지정하여 영세율 결제 가능
+ **파라미터 설명**
-
-주의사항
+ - **card\_code :** 금결원 카드사코드 [**링크**](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) 참조 (**string)**
+ - **enabled :** 해당카드 활성화 여부 (**boolean)**
+
-- 취소 시 **요청된 값 그대로 이니시스에서 취소**가 되므로, 취소할 금액, 부가세, 면세금액을 정확하게 전달해 주셔야 부가세, 면세금액이 설정되어 정상적으로 취소가 된다는 점 주의해주시기 바랍니다.
-- 실시간 계좌이체 및 가상계좌의 경우 현금영수증 발급하지 않으면 매출전표에 부가세가 나눠서 표시 되지 않습니다
+
+ ```json
+ // 영세율의 경우
+ {
+ "amount": 1000,
+ "tax_free": 0,
+ "vat_amount": 0
+ }
+ ```
-
+ **파라미터 설명**
-
+ - **vat\_amount**: 상점아이디(MID)에 영세율 설정된 경우 부가세(`vat_amount`) 및 면세금액(`tax_free`)를 0원으로 지정하여 영세율 결제 가능
-
-
-**상점 부담 무이자 할부 설정은 사전에 반드시 이니시스에 협의후 이니시스쪽 설정이 먼저 선행되어야 합니다.**
+
+ 주의사항
-
+ - 취소 시 **요청된 값 그대로 이니시스에서 취소**가 되므로, 취소할 금액, 부가세, 면세금액을 정확하게 전달해 주셔야 부가세, 면세금액이 설정되어 정상적으로 취소가 된다는 점 주의해주시기 바랍니다.
+ - 실시간 계좌이체 및 가상계좌의 경우 현금영수증 발급하지 않으면 매출전표에 부가세가 나눠서 표시 되지 않습니다
+
+
-이니시스 설정이 완료되었으면 아래와 같이 파라미터 설정하시면 됩니다.
+
+
+ **상점 부담 무이자 할부 설정은 사전에 반드시 이니시스에 협의후 이니시스쪽 설정이 먼저 선행되어야 합니다.**
+
-```javascript
-card: {
- interest_free: 7, //모든 카드 7개월까지 상점분담무이자
-}
-```
+ 이니시스 설정이 완료되었으면 아래와 같이 파라미터 설정하시면 됩니다.
-
+ ```json
+ {
+ "card": {
+ "interest_free": 7 //모든 카드 7개월까지 상점분담무이자
+ }
+ }
+ ```
+
diff --git a/src/content/docs/ko/pg/payment-gateway/jtnet.mdx b/src/content/docs/ko/pg/payment-gateway/jtnet.mdx
index b61340c0d..98c73a54d 100644
--- a/src/content/docs/ko/pg/payment-gateway/jtnet.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/jtnet.mdx
@@ -3,20 +3,20 @@ title: JTNET
description: JTNET 결제 연동 방법을 안내합니다.
---
+import Figure from "~/components/Figure.astro";
import Codepen from "~/components/gitbook/Codepen.astro";
import ContentRef from "~/components/gitbook/ContentRef.astro";
-import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-### 1. JTNET PG 설정하기
+## 1. JTNET PG 설정하기
[**JTNET 설정**](../../ready/2-pg/payment-gateway/jtnet) 페이지의 내용을 참고하여 PG 설정을 진행합니다.
-### 2. 결제 요청하기
+## 2. 결제 요청하기
[JavaScript SDK](../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을 호출하여
JTNET 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 `IMP.request_pay(param, callback)` 호출
@@ -24,194 +24,195 @@ JTNET 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우
모바일의 경우 **`m_redirect_url`** 로 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg: "jtnet.{상점 ID}",
- pay_method: "card",
- merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
- name: "주문명:결제테스트",
- amount: 1004,
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}"
-}, function(rsp) { // callback 로직
- /* ...중략... */
-});
-```
-
-**주요 파라미터 설명**
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "jtnet.{상점 ID}",
+ pay_method: "card",
+ merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
+ name: "주문명:결제테스트",
+ amount: 1004,
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ // callback 로직
+ /* ...중략... */
+ },
+ );
+ ```
-**`pg` \*****string**
+ **주요 파라미터 설명**
-**PG사 구분코드**
+ **`pg` \*****string**
-**`jtnet`** 로 지정하면 됩니다.
+ **PG사 구분코드**
-**`pay_method`** **\*** **string**
+ **`jtnet`** 로 지정하면 됩니다.
-**결제수단 구분코드**
+ **`pay_method`** **\*** **string**
-- card (신용카드)
-- trans (실시간 계좌이체)
-- vbank(가상계좌)
-- phone (휴대폰소액결제)
+ **결제수단 구분코드**
-**`merchant_uid`** **\*** **string**
+ - card (신용카드)
+ - trans (실시간 계좌이체)
+ - vbank(가상계좌)
+ - phone (휴대폰소액결제)
-**`고객사 고유주문번호`**
+ **`merchant_uid`** **\*** **string**
-매번 고유하게 채번되어야 합니다.
+ **`고객사 고유주문번호`**
-**`amount`** **\*** **`integer`**
+ 매번 고유하게 채번되어야 합니다.
-**결제금액**
+ **`amount`** **\*** **`integer`**
-**string** 이 아닌점에 유의하세요
+ **결제금액**
-
+ **string** 이 아닌점에 유의하세요
-
+
+
-
-인증결제창 호출 파라미터에서 **customer_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다.
+
+ 인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다.
-
-**amount 금액**
+
+ **amount 금액**
-- 빌링키 발급시 amount 파라미터에 **금액이 설정되는 경우** **실 결제와 동시에 빌링키가 발급**됩니다.
-- 실결제를 원하지 않은 경우 amount 금액을 **0원**으로 설정합니다.
+ - 빌링키 발급시 amount 파라미터에 **금액이 설정되는 경우** **실 결제와 동시에 빌링키가 발급**됩니다.
+ - 실결제를 원하지 않은 경우 amount 금액을 **0원**으로 설정합니다.
+
-
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "jtnet.{상점 ID}",
+ pay_method: "card", // 'card'만 지원됩니다.
+ merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
+ name: "최초인증결제",
+ amount: 0, // 빌링키 발급만 진행하며 결제승인을 하지 않습니다.
+ customer_uid: "your-customer-unique-id", // 필수 입력
+ buyer_email: "test@portone.io",
+ buyer_name: "포트원",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("빌링키 발급 성공");
+ } else {
+ alert("빌링키 발급 실패");
+ }
+ },
+ );
+ ```
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "jtnet.{상점 ID}",
- pay_method: "card", // 'card'만 지원됩니다.
- merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
- name: "최초인증결제",
- amount: 0, // 빌링키 발급만 진행하며 결제승인을 하지 않습니다.
- customer_uid: "your-customer-unique-id", // 필수 입력
- buyer_email: "test@portone.io",
- buyer_name: "포트원",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
- },
- function (rsp) {
- if (rsp.success) {
- alert("빌링키 발급 성공");
- } else {
- alert("빌링키 발급 실패");
- }
- }
-);
-```
-
-**주요 파라미터 설명**
-
-**`pg` \*** **string**
-
-**PG사 구분코드**
+ **주요 파라미터 설명**
-**`jtnet`** 로 지정하면 됩니다.
+ **`pg` \*** **string**
-**`customer_uid` \*** **string**
+ **PG사 구분코드**
-**카드 빌링키**
+ **`jtnet`** 로 지정하면 됩니다.
-비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
+ **`customer_uid` \*** **string**
-**`amount` \*** **Integer**
+ **카드 빌링키**
-**결제금액**
+ 비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
-0원으로 설정시 빌링키만 발급되며 0원 이상 설정시 **실 결제와 빌링키 발급이 동시**에 이루어 집니다.\\
+ **`amount` \*** **Integer**
-**빌링키(customer_uid)로 결제 요청하기**
+ **결제금액**
-빌링키 발급이 성공하면 실 빌링키는 customer_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. customer_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api)를 호출하시면 결제를 발생시킬 수 있습니다.
+ 0원으로 설정시 빌링키만 발급되며 0원 이상 설정시 **실 결제와 빌링키 발급이 동시**에 이루어 집니다.\\
-```sh title="server-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ **빌링키(customer\_uid)로 결제 요청하기**
-
+ 빌링키 발급이 성공하면 실 빌링키는 customer\_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. customer\_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api)를 호출하시면 결제를 발생시킬 수 있습니다.
-
-**API 방식으로 빌링키 발급,결제요청,예약결제를 구현할수 있습니다.**
+ ```sh title="server-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-**일회성 결제 요청하기**
+
+ **API 방식으로 빌링키 발급,결제요청,예약결제를 구현할수 있습니다.**
-REST[ **API POST /subscribe/payments/onetime**](../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
+ **일회성 결제 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ REST [**API POST /subscribe/payments/onetime**](../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
-**빌링키 발급 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-REST [**API POST /subscribe/customers/\{customer_uid}**](../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
+ **빌링키 발급 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
+ REST [**API POST /subscribe/customers/\{customer\_uid}**](../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
-**빌링키 발급 및 최초 결제 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-REST [**API POST /subscribe/payments/onetime**](../../api/api-4/api-1)을 호출하여 빌링키 발급과 최초 결제를 요청합니다.
+ **빌링키 발급 및 최초 결제 요청하기**
-- **`customer_uid`** : 빌링키 등록을 위해서 지정해야 합니다.
+ REST [**API POST /subscribe/payments/onetime**](../../api/api-4/api-1)을 호출하여 빌링키 발급과 최초 결제를 요청합니다.
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ - **`customer_uid`** : 빌링키 등록을 위해서 지정해야 합니다.
-**빌링키로 결제 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
+ **빌링키로 결제 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ 빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
-**자세한 가이드는 아래 링크를 참조하세요**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-
+ **자세한 가이드는 아래 링크를 참조하세요**
-
+
+
-### 3. 부가기능
+## 3. 부가기능
-
-```javascript title="javascript"
-card: {
- detail: [
- { card_code: "*", enabled: false }, // 모든 카드사 비활성화
- { card_code: '366', enabled: true }, // 특정 카드만 활성화
- ],
-}
-```
-
-**파라미터 설명**
-
-- **card_code:** 금결원 카드사코드 [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string)**
-- **enabled:** 해당카드 활성화 여부 (**boolean)**
-
-
+
+ ```json
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, // 모든 카드사 비활성화
+ { "card_code": "366", "enabled": true } // 특정 카드만 활성화
+ ]
+ }
+ }
+ ```
+
+ **파라미터 설명**
+
+ - **card\_code:** 금결원 카드사코드 [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string)**
+ - **enabled:** 해당카드 활성화 여부 (**boolean)**
+
diff --git a/src/content/docs/ko/pg/payment-gateway/kg.mdx b/src/content/docs/ko/pg/payment-gateway/kg.mdx
index 24e695c91..a592a7882 100644
--- a/src/content/docs/ko/pg/payment-gateway/kg.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/kg.mdx
@@ -3,8 +3,8 @@ title: KG모빌리언스
description: KG모빌리언스 결제 연동 방법을 안내합니다.
---
-import Codepen from "~/components/gitbook/Codepen.astro";
import Figure from "~/components/Figure.astro";
+import Codepen from "~/components/gitbook/Codepen.astro";
import Hint from "~/components/Hint.astro";
## 1. KG모빌리언스 채널 설정하기
@@ -13,11 +13,15 @@ import Hint from "~/components/Hint.astro";
-### 2.결제 요청하기
+## 2. 결제 요청하기
-[JavaScript SDK](../../sdk/javascript-sdk/readme) `IMP.request_pay(param, callback)`을 호출하여 KG 모빌리언스 결제창을 호출할 수 있습니다. **결제 결과**는 PC의 경우 `IMP.request_pay(param, callback)` 호출 후 **callback** 으로 수신되고 모바일의 경우 **m_redirect_url**로 리디렉션됩니다.
+[JavaScript SDK](../../sdk/javascript-sdk/readme) `IMP.request_pay(param, callback)`을 호출하여
+KG 모빌리언스 결제창을 호출할 수 있습니다.
+**결제 결과**는 PC의 경우 `IMP.request_pay(param, callback)` 호출 후
+**callback** 으로 수신되고
+모바일의 경우 **m\_redirect\_url**로 리디렉션됩니다.
-```javascript title="Javascript SDK"
+```ts title="Javascript SDK"
IMP.request_pay(
{
pg: "mobilians.{상점 ID}",
@@ -35,11 +39,11 @@ IMP.request_pay(
function (rsp) {
// callback 로직
//* ...중략... *//
- }
+ },
);
```
-### 주요 파라미터 설명
+## 주요 파라미터 설명
**`pg` \*****string**
@@ -68,10 +72,10 @@ IMP.request_pay(
-인증결제창 호출 파라미터에서 **customer_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다. 비
+인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다. 비
인증 결제창에서 빌링키를 발급받은 후 해당 빌링키로 결제를 요청합니다.
-```javascript title="Javascript SDK"
+```ts title="Javascript SDK"
IMP.request_pay(
{
pg: "mobilians",
@@ -91,16 +95,14 @@ IMP.request_pay(
} else {
alert("빌링키 발급 실패");
}
- }
+ },
);
```
-
-- 비 인증 결제를 위해서는 **KG모빌리언스와 계약이 완료된 MID 정보를** 관리자콘솔에 설정하셔야 비 인증 결제창을 활성화시킬 수 있습니다.
-- **KG모빌리언스 휴대폰 결제는** 빌링키 발급시 **실 결제가 발생됩니다.**
-- 최초 승인일자 기준 매월 **동일한 일자에 동일 금액**이 재결제되어야 합니다.
-
+ - 비 인증 결제를 위해서는 **KG모빌리언스와 계약이 완료된 MID 정보를** 관리자콘솔에 설정하셔야 비 인증 결제창을 활성화시킬 수 있습니다.
+ - **KG모빌리언스 휴대폰 결제는** 빌링키 발급시 **실 결제가 발생됩니다.**
+ - 최초 승인일자 기준 매월 **동일한 일자에 동일 금액**이 재결제되어야 합니다.
### 주요 파라미터 설명
@@ -127,7 +129,9 @@ IMP.request_pay(
### 빌링키(`customer_uid`)로 결제 요청하기
-빌링키 발급이 성공하면 실 빌링키는 `customer_uid` 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. `customer_uid`를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api) 를 호출하시면 결제를 발생시킬 수 있습니다.
+빌링키 발급이 성공하면 실 빌링키는 `customer_uid` 와 1:1 매칭되어 **포트원 서버에 저장**됩니다.
+`customer_uid`를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api) 를 호출하시면
+결제를 발생시킬 수 있습니다.
```sh title="server-side"
curl -H "Content-Type: application/json" \
diff --git a/src/content/docs/ko/pg/payment-gateway/kicc.mdx b/src/content/docs/ko/pg/payment-gateway/kicc.mdx
index a4fd0d490..782124089 100644
--- a/src/content/docs/ko/pg/payment-gateway/kicc.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/kicc.mdx
@@ -5,9 +5,9 @@ description: 이지페이(KICC) 결제창 연동 방법을 안내합니다.
import Figure from "~/components/Figure.astro";
import Codepen from "~/components/gitbook/Codepen.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 1. 이지페이(KICC) 채널 설정하기
@@ -18,239 +18,236 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
## 2. 결제 요청하기
-
-[JavaScript SDK](../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을 호출하여 KICC 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 `IMP.request_pay(param, callback)` 호출 후 **callback**으로 수신되고 모바일의 경우 **m_redirect_url**로 리디렉션됩니다.
+
+ [JavaScript SDK](../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을 호출하여 KICC 결제창을 호출할 수 있습니다.
+ **결제결과**는 PC의 경우 `IMP.request_pay(param, callback)` 호출 후 **callback**으로 수신되고
+ 모바일의 경우 **m\_redirect\_url**로 리디렉션됩니다.
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "kicc.{상점 ID}",
+ pay_method: "card",
+ merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
+ name: "주문명:결제테스트",
+ amount: 1004,
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678", // 필수
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ // callback 로직
+ //* ...중략... *//
+ },
+ );
+ ```
+
+ ### 주요 파라미터 설명
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "kicc.{상점 ID}",
- pay_method: "card",
- merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
- name: "주문명:결제테스트",
- amount: 1004,
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678", // 필수
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
- },
- function (rsp) {
- // callback 로직
- //* ...중략... *//
- }
-);
-```
+ **`pg` \*****string**
-### 주요 파라미터 설명
+ **PG사 구분코드**
-**`pg` \*****string**
+ **`kicc`** 로 지정하면 됩니다.
-**PG사 구분코드**
+ **`pay_method`** **\*** **string**
-**`kicc`** 로 지정하면 됩니다.
+ **결제수단 구분코드**
-**`pay_method`** **\*** **string**
+ - card(신용카드)
+ - trans(실시간 계좌이체)
+ - vbank(가상계좌)
+ - phone(휴대폰소액결제)
-**결제수단 구분코드**
+ **`merchant_uid`** **\*** **string**
-- card(신용카드)
-- trans(실시간 계좌이체)
-- vbank(가상계좌)
-- phone(휴대폰소액결제)
+ **주문번호**
-**`merchant_uid`** **\*** **string**
+ 매번 고유하게 채번되어야 합니다.
-**주문번호**
+ **`buyer_tel`** **\*** **`string`**
-매번 고유하게 채번되어야 합니다.
+ **`주문자 연락처`**
-**`buyer_tel`** **\*** **`string`**
+ **`amount` \*****number**
-**`주문자 연락처`**
+ **결제금액**
-**`amount` \*****number**
+ **string** 이 아닌점에 유의하세요
-**결제금액**
+ **`escrow`** **`boolean`**
-**string** 이 아닌점에 유의하세요
+ **에스크로 설정여부**
-**`escrow`** **`boolean`**
+ 계좌이체, 가상계좌만 지원됩니다.
-**에스크로 설정여부**
+
+
-계좌이체, 가상계좌만 지원됩니다.
+
+ 인증결제창 호출 파라미터에서 **`customer_uid`** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다.
+ 비 인증 결제창에서 빌링키를 발급받은 후 해당 빌링키로 결제를 요청합니다.
-
-
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "kicc",
+ pay_method: "card", // 'card'만 지원됩니다.
+ merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
+ name: "최초인증결제",
+ amount: 1004, // 결제창에 표시될 금액. 실제 승인이 이뤄지지는 않습니다.
+ customer_uid: "your-customer-unique-id", // 필수 입력.
+ buyer_email: "test@portone.io",
+ buyer_name: "포트원",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("빌링키 발급 성공");
+ } else {
+ alert("빌링키 발급 실패");
+ }
+ },
+ );
+ ```
-
+
+ - 비 인증 결제를 위해서는 **KICC와 협의가 완료된 MID 정보** 관리자콘솔에 설정하셔야 비인증 결제창을 활성화 시킬수 있습니다.
+ - KICC는 빌링키 발급시 **실 결제가 발생되지 않습니다**.(금액을 지정해도 결제가 발생되지 않음)
+
-인증결제창 호출 파라미터에서 **`customer_uid`** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다. 비 인증 결제창에서 빌링키를 발급받은 후 해당 빌링키로 결제를 요청합니다.
+ ### 주요 파라미터 설명
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "kicc",
- pay_method: "card", // 'card'만 지원됩니다.
- merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
- name: "최초인증결제",
- amount: 1004, // 결제창에 표시될 금액. 실제 승인이 이뤄지지는 않습니다.
- customer_uid: "your-customer-unique-id", // 필수 입력.
- buyer_email: "test@portone.io",
- buyer_name: "포트원",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
- },
- function (rsp) {
- if (rsp.success) {
- alert("빌링키 발급 성공");
- } else {
- alert("빌링키 발급 실패");
- }
- }
-);
-```
+ **`pg` \*****string**
-
+ **PG사 구분코드**
-- 비 인증 결제를 위해서는 **KICC와 협의가 완료된 MID 정보** 관리자콘솔에 설정하셔야 비인증 결제창을 활성화 시킬수 있습니다.
-- KICC는 빌링키 발급시 **실 결제가 발생되지 않습니다**.(금액을 지정해도 결제가 발생되지 않음)
+ **`kicc.`** 로 지정하면 됩니다.
-
+ **`customer_uid` \*****string**
- ### 주요 파라미터 설명
+ **카드 빌링키**
+
+ 비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
-**`pg` \*****string**
+ **`amount` \*****number**
-**PG사 구분코드**
+ **결제금액**
-**`kicc.`** 로 지정하면 됩니다.
+ 결제창에 표시될 금액으로 실제 승인은 이루어지지 않습니다.
-**`customer_uid` \*****string**
+ (실 결제를 발생시키기 위해서는 **`customer_uid`** 로 **REST API 를 이용하여 결제요청**을 해 주셔야 합니다.)
-**카드 빌링키**
+ ### 빌링키(`customer_uid`)로 결제 요청하기
-비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
+ 빌링키 발급이 성공하면 실 빌링키는 `customer_uid` 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. `customer_uid`를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api) 를 호출하시면 결제를 발생시킬 수 있습니다.
-**`amount` \*****number**
+ ```sh title="server-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":1004}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-**결제금액**
+
+ **포트원을 통한 KICC API 방식 비 인증 결제는 지원되지 않습니다.**
+
+
+
+
+## 3. 부가기능
-결제창에 표시될 금액으로 실제 승인은 이루어지지 않습니다.
+
+
+ KICC는 **현금성 결제수단** (실시간 계좌이체, 가상계좌)에 한하여 에스크로 결제수단을 지원합니다.
+
+ > 에스크로 설정을 위해서는 아래 파라미터를 기본적으로 설정한 후 추가적인 파라미터를
+ >
+ > 입력해야 합니다.
+ >
+ > - **`escrow: true`**
+
+ **추가 파라미터 안내**
+
+ 에스크로 결제 시 다음 파라미터를 반드시 설정해야 합니다.
+
+ - `buyer_name` : 구매자 이름
+
+ - `buyer_email` : 구매자 이메일
+
+ - `buyer_tel` : 구매자 전화번호
+
+ - `kiccProducts` : 상품별 부분배송을 위한 상품 관련 정보 (4개의 필수 속성으로 구성된 객체배열). 해당 `amount` 값은 결제 금액(`param.amount`) 값과 관계가 없으며 비교검증되지 않습니다.
+ - `orderNumber` : 상품주문번호
+ - `name` : 상품명
+ - `quantity` : 수량
+ - `amount` : 상품 가격
+
+ ```json
+ {
+ "escrow": true, // 에스크로 결제인 경우 필요
+ "kiccProducts": [
+ {
+ "orderNumber": "xxxx",
+ "name": "상품A",
+ "quantity": 3,
+ "amount": 1000
+ },
+ {
+ "orderNumber": "yyyy",
+ "name": "상품B",
+ "quantity": 2,
+ "amount": 3000
+ }
+ ]
+ }
+ ```
+
+
+
+ ```json
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3
+ }
+ }
+ }
+ ```
-(실 결제를 발생시키기 위해서는 **`customer_uid`** 로 **REST API 를 이용하여 결제요청**을 해 주셔야 합니다.)
+ **파라미터 설명**
-### 빌링키(`customer_uid`)로 결제 요청하기
+ - **`code`** : 카드사 금융결제원 표준 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string**)
+ - **`quota`** : 할부 개월 수. 일시불일 시 0 으로 지정. (**number**)
-빌링키 발급이 성공하면 실 빌링키는 `customer_uid` 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. `customer_uid`를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api) 를 호출하시면 결제를 발생시킬 수 있습니다.
+
+ **주의사항**
-```sh title="server-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":1004}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ - 일부 PG사의 경우, 모든 상점아이디에 대하여 카드사 결제창 direct 노출 기능을 지원하지 않습니다. 반드시 포트원을 통해 현재 사용중인 상점아이디가 카드사 결제창 direct 호출이 가능하도록 설정이 되어있는지 PG사에 확인이 필요합니다.
+
+
-
- **포트원을 통한 KICC API 방식 비 인증 결제는 지원되지 않습니다.**
-
+
+ ```json
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, //모든 카드사 비활성화
+ { "card_code": "366", "enabled": true } //특정 카드만 활성화
+ ]
+ }
+ }
+ ```
-
-
+ **파라미터 설명**
-## 3. 부가기능
+ - **`card_code` :** 금융결제원 카드사 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string)**
+ - **`enabled` :** 해당카드 활성화 여부 (**boolean)**
-
-
-
-KICC는 **현금성 결제수단** (실시간 계좌이체, 가상계좌)에 한하여 에스크로 결제수단을 지원합니다.
-
-> 에스크로 설정을 위해서는 아래 파라미터를 기본적으로 설정한 후 추가적인 파라미터를
->
-> 입력해야 합니다.
->
-> - **`escrow: true`**
-
-**추가 파라미터 안내**
-
-에스크로 결제 시 다음 파라미터를 반드시 설정해야 합니다.
-
-- `buyer_name` : 구매자 이름
-- `buyer_email` : 구매자 이메일
-- `buyer_tel` : 구매자 전화번호
-- `kiccProducts` : 상품별 부분배송을 위한 상품 관련 정보 (4개의 필수 속성으로 구성된 객체배열). 해당 `amount` 값은 결제 금액(`param.amount`) 값과 관계가 없으며 비교검증되지 않습니다.
- - `orderNumber` : 상품주문번호
- - `name` : 상품명
- - `quantity` : 수량
- - `amount` : 상품 가격
-
-```javascript title="JavaScript SDK"
-escrow: true, // 에스크로 결제인 경우 필요
-kiccProducts: [
- {
- orderNumber: "xxxx",
- name: "상품A",
- quantity: 3,
- amount: 1000,
- },
- {
- orderNumber: "yyyy",
- name: "상품B",
- quantity: 2,
- amount: 3000,
- },
-],
-```
-
-
-
-
-
-```javascript title="javascript"
-card: {
- direct: {
- code: "367",
- quota: 3
- }
-}
-```
-
-**파라미터 설명**
-
-- **`code`** : 카드사 금융결제원 표준 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string**)
-- **`quota`** : 할부 개월 수. 일시불일 시 0 으로 지정. (**number**)
-
-
-
-**주의사항**
-
-- 일부 PG사의 경우, 모든 상점아이디에 대하여 카드사 결제창 direct 노출 기능을 지원하지 않습니다. 반드시 포트원을 통해 현재 사용중인 상점아이디가 카드사 결제창 direct 호출이 가능하도록 설정이 되어있는지 PG사에 확인이 필요합니다.
-
-
-
-
-
-
-```javascript title="javascript"
-card: {
- detail: [
- { card_code: "*", enabled: false }, //모든 카드사 비활성화
- { card_code: '366', enabled: true } //특정 카드만 활성화
- ]
-}
-```
-
-**파라미터 설명**
-
-- **`card_code` :** 금융결제원 카드사 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string)**
-- **`enabled` :** 해당카드 활성화 여부 (**boolean)**
-
-
-
-
+
+
diff --git a/src/content/docs/ko/pg/payment-gateway/ksnet/readme.mdx b/src/content/docs/ko/pg/payment-gateway/ksnet/readme.mdx
index ddced6de5..2d56959b2 100644
--- a/src/content/docs/ko/pg/payment-gateway/ksnet/readme.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/ksnet/readme.mdx
@@ -5,9 +5,9 @@ description: KSNET 결제창 연동 가이드입니다.
import Figure from "~/components/Figure.astro";
import Codepen from "~/components/gitbook/Codepen.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
@@ -17,207 +17,194 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
## 2. 결제 요청하기
-[JavaScript SDK (신규)](../../../sdk/javascript-sdk/readme)의 `IMP.request_pay(param, callback)`을 호출하여 KSNET 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 `IMP.request_pay(param, callback)` 호출 후 **callback**으로 수신되고 모바일의 경우 **m_redirect_url**로 리디렉션됩니다.
+[JavaScript SDK (신규)](../../../sdk/javascript-sdk/readme)의 `IMP.request_pay(param, callback)`을 호출하여 KSNET 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 `IMP.request_pay(param, callback)` 호출 후 **callback**으로 수신되고 모바일의 경우 **m\_redirect\_url**로 리디렉션됩니다.
-기존 JavaScript SDK를 사용 중이신 경우 [JavaScript SDK (신규)](../../../sdk/javascript-sdk/readme) 문서를 참고하여 업데이트를 진행해주세요.
-
+ 기존 JavaScript SDK를 사용 중이신 경우 [JavaScript SDK (신규)](../../../sdk/javascript-sdk/readme) 문서를 참고하여 업데이트를 진행해주세요.
KSNET 결제는 최신 SDK에서만 지원되는 기능입니다.
-```javascript title="JS SDK"
+```html
```
-
-**KSNET을 연동하기 위해서는 위에 안내된 JS SDK를 이용하셔야 합니다.**
-
+ **KSNET을 연동하기 위해서는 위에 안내된 JS SDK를 이용하셔야 합니다.**
-#### **기존에 deprecated된 응답들은 모두 제거**됐습니다. ⚠️
+ ### **기존에 deprecated된 응답들은 모두 제거**됐습니다. ⚠️
-KSNET 연동시에 사용되는 신규 JS SDK는 기존 모듈에서 제공했던 CallBack 파라미터가 대부분 삭제되었습니다.(특히 deprecated 로 명시된 파라미터는 모두 삭제되었습니다.)
+ KSNET 연동시에 사용되는 신규 JS SDK는 기존 모듈에서 제공했던 CallBack 파라미터가 대부분 삭제되었습니다.(특히 deprecated 로 명시된 파라미터는 모두 삭제되었습니다.)
-해당 JS SDK 사용시 Callback 으로 내려받을수 있는 데이터는 오직 아래 두가지 입니다.
+ 해당 JS SDK 사용시 Callback 으로 내려받을수 있는 데이터는 오직 아래 두가지 입니다.
-**`imp_uid`, `merchant_uid`**
-
-따라서 해당 SDK를 사용하실때는 `IMP.request_pay`로부터 응답된 객체(또는 쿼리 파라미터)에서 `imp_uid`를 가지고 **아임포트 REST API(GET `/payments/imp_uid`)로 결제 상세 내역(승인 상태, 승인 결과 등등)을 조회**하여 응답 파라미터 중 status 파라미터로 결제 상태를 파악하셔야 합니다.
+ **`imp_uid`, `merchant_uid`**
+ 따라서 해당 SDK를 사용하실때는 `IMP.request_pay`로부터 응답된 객체(또는 쿼리 파라미터)에서 `imp_uid`를 가지고 **아임포트 REST API(GET `/payments/imp_uid`)로 결제 상세 내역(승인 상태, 승인 결과 등등)을 조회**하여 응답 파라미터 중 status 파라미터로 결제 상태를 파악하셔야 합니다.
-```html
-
-```
-
-위 JS SDK를 이용하여 토스페이먼츠, KSNET 연동시 callback Data는
-아래와 같이 두가지 형태로만 내려갑니다.
+ ```html
+
+ ```
-- `imp_uid`
-- `merchant_uid`
+ 위 JS SDK를 이용하여 토스페이먼츠, KSNET 연동시 callback Data는
+ 아래와 같이 두가지 형태로만 내려갑니다.
-위 PG사를 제외한 다른 PG사는 `imp_success` 파라미터가 기존처럼 내려가지만
-해당 파리미터는 deprecated 된 값이기 때문에 해당 값에 의존성을 가진 프로그램 로직은 모두 삭제하시는
-방향성을 잡아가셔야 하는점 유념하시기 바랍니다.
+ - `imp_uid`
+ - `merchant_uid`
+ 위 PG사를 제외한 다른 PG사는 `imp_success` 파라미터가 기존처럼 내려가지만
+ 해당 파리미터는 deprecated 된 값이기 때문에 해당 값에 의존성을 가진 프로그램 로직은 모두 삭제하시는
+ 방향성을 잡아가셔야 하는점 유념하시기 바랍니다.
-
-
-```javascript title="JavaScript SDK"
-IMP.request_pay(
- {
- pg: "ksnet.{PG 상점 아이디}", // 테스트인 경우 ksnet.2999199999
- pay_method: "card",
- merchant_uid: "order_id_1667634130160", // 상점에서 채번하는 고유 주문 번호
- name: "나이키 와플 트레이너 2 SD",
- pay_method: "card",
- escrow: false,
- amount: "109000",
- tax_free: 3000,
- buyer_name: "홍길동",
- buyer_email: "buyer@example.com",
- buyer_tel: "02-1670-5176",
- buyer_addr: "성수이로 20길 16",
- buyer_postcode: "04783",
- app_scheme: "portone://",
- m_redirect_url: "https://helloworld.com/payments/result",
- notice_url: "https://helloworld.com/api/v1/payments/notice",
- confirm_url: "https://helloworld.com/api/v1/payments/confirm",
- currency: "KRW",
- digital: false,
- period: {
- from: "2022-12-01",
- to: "2023-01-01",
- },
- custom_data: { userId: 30930 },
- display: { card_quota: [0, 6] },
- bypass: {
- ksnet: {
- sndQpayType: "0",
+
+ ```ts title="JavaScript SDK"
+ IMP.request_pay(
+ {
+ pg: "ksnet.{PG 상점 아이디}", // 테스트인 경우 ksnet.2999199999
+ pay_method: "card",
+ merchant_uid: "order_id_1667634130160", // 상점에서 채번하는 고유 주문 번호
+ name: "나이키 와플 트레이너 2 SD",
+ pay_method: "card",
+ escrow: false,
+ amount: "109000",
+ tax_free: 3000,
+ buyer_name: "홍길동",
+ buyer_email: "buyer@example.com",
+ buyer_tel: "02-1670-5176",
+ buyer_addr: "성수이로 20길 16",
+ buyer_postcode: "04783",
+ app_scheme: "portone://",
+ m_redirect_url: "https://helloworld.com/payments/result",
+ notice_url: "https://helloworld.com/api/v1/payments/notice",
+ confirm_url: "https://helloworld.com/api/v1/payments/confirm",
+ currency: "KRW",
+ digital: false,
+ period: {
+ from: "2022-12-01",
+ to: "2023-01-01",
+ },
+ custom_data: { userId: 30930 },
+ display: { card_quota: [0, 6] },
+ bypass: {
+ ksnet: {
+ sndQpayType: "0",
+ },
+ },
},
- },
- },
- function (rsp) {
- // callback 로직
- //* ...중략... *//
- }
-);
-```
-
-**주요 파라미터 설명**
-
-**`pg`** **\*** **string**
-
-**PG사 구분코드**
-
-`ksnet.{PG 상점 아이디}`
+ function (rsp) {
+ // callback 로직
+ //* ...중략... *//
+ },
+ );
+ ```
-**`pay_method`** **\*** **string**
+ **주요 파라미터 설명**
-**결제수단 구분코드**
+ **`pg`** **\*** **string**
-- card (신용카드)
-- vbank (가상계좌)
-- trans (계좌이체)
-- phone (휴대폰소액결제)
-- lpay (LPAY)
-- ssgpay (SSGPAY)
-- kakaopay (카카오페이)
-- naverpay (네이버페이)
-- payco (페이코 허브형)
+ **PG사 구분코드**
-**`merchant_uid`** **\*** **string**
+ `ksnet.{PG 상점 아이디}`
-**고객사 채번 주문 고유번호**
+ **`pay_method`** **\*** **string**
-고객사에서 매번 고유하게 채번되어야 합니다.
+ **결제수단 구분코드**
-**`amount`** **string**
+ - card (신용카드)
+ - vbank (가상계좌)
+ - trans (계좌이체)
+ - phone (휴대폰소액결제)
+ - lpay (LPAY)
+ - ssgpay (SSGPAY)
+ - kakaopay (카카오페이)
+ - naverpay (네이버페이)
+ - payco (페이코 허브형)
-**결제금액**
+ **`merchant_uid`** **\*** **string**
-지정하지 않은 경우 0원입니다.
+ **고객사 채번 주문 고유번호**
-**`tax_free`** **number**
+ 고객사에서 매번 고유하게 채번되어야 합니다.
-**면세금액**
+ **`amount`** **string**
-지정하지 않은 경우 0원입니다.
+ **결제금액**
-
+ 지정하지 않은 경우 0원입니다.
-포트원을 통해 KSNET를 사용하는 경우 과세 설정이 `복합과세`이므로 면세금액을 반드시 입력해야 합니다.
+ **`tax_free`** **number**
-
+ **면세금액**
-**`digital`** **boolean**
+ 지정하지 않은 경우 0원입니다.
-**디지털 상품 유형 여부**
+
+ 포트원을 통해 KSNET를 사용하는 경우 과세 설정이 `복합과세`이므로 면세금액을 반드시 입력해야 합니다.
+
-
+ **`digital`** **boolean**
-해당 필드는 **휴대폰 결제**에서만 사용되며, 상점이 `디지털 상품유형`으로 설정된 경우 항상 `true`로 전달해야 합니다.
+ **디지털 상품 유형 여부**
-
+
+ 해당 필드는 **휴대폰 결제**에서만 사용되며, 상점이 `디지털 상품유형`으로 설정된 경우 항상 `true`로 전달해야 합니다.
+
-**`bypass.ksnet`**
+ **`bypass.ksnet`**
-**KSNET 전용 파라미터**
+ **KSNET 전용 파라미터**
-상단의 `request_pay` 예제를 참고하여 KSNET 전용 파라미터를 기입할 수 있습니다.
+ 상단의 `request_pay` 예제를 참고하여 KSNET 전용 파라미터를 기입할 수 있습니다.
-> **`sndQpayType`** **string**
->
-> **카드 결제 시 결제창에 간편 결제 수단 표시 여부**
->
-> - `"0"`: 간편결제 수단 표시하지 않음
-> - `"1"`: 간편결제 수단 표시함
+ > **`sndQpayType`** **string**
+ >
+ > **카드 결제 시 결제창에 간편 결제 수단 표시 여부**
+ >
+ > - `"0"`: 간편결제 수단 표시하지 않음
+ > - `"1"`: 간편결제 수단 표시함
+
-
+
+ **KSNET은 결제창 기반 비인증 결제를 지원하지 않습니다.**
+
-
-**KSNET은 결제창 기반 비인증 결제를 지원하지 않습니다.**
+
+ ### 일회성 결제 요청하기
-
+ REST [**API POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
-
-### 일회성 결제 요청하기
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-REST [**API POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
+ ### 빌링키 발급 요청하기
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ REST [**API POST /subscribe/customers/\{customer\_uid}**](../../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
-### 빌링키 발급 요청하기
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-REST [**API POST /subscribe/customers/\{customer_uid}**](../../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
+ ### 빌링키로 결제 요청하기
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
-
-### 빌링키로 결제 요청하기
-
-빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
+ 빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid": "your-customer-unique-id", "merchant_uid": "order_id_8237352", "amount": 3000, "product_type": "digital"}' \
- https://api.iamport.kr/subscribe/payments/again
-```
-
-
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid": "your-customer-unique-id", "merchant_uid": "order_id_8237352", "amount": 3000, "product_type": "digital"}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
## 3. API 기능
@@ -230,7 +217,7 @@ REST [**API POST /payments/cancel**](../../../api/api-1/api)를 호출하여 승
### 현금영수증 등록
포트원을 통한 거래건이지만 결제창에서 현금영수증 등록을 하지 못한 경우 API를 통해 현금영수증을 등록할 수 있습니다.\
-REST [**API POST /receipts/\{imp_uid}**](../../../api/api-8/api-2)를 호출하여 현금영수증을 요청합니다.
+REST [**API POST /receipts/\{imp\_uid}**](../../../api/api-8/api-2)를 호출하여 현금영수증을 요청합니다.
- `product_type`(디지털: `"digital"`, 실물: `"real"`), `buyer_name` 파라미터는 KSNET 필수 입력 대상입니다.
@@ -243,7 +230,8 @@ curl -H "Content-Type: application/json" \
### 외부 현금영수증 등록
포트원을 통한 거래건이 아닌 현금성 거래의 경우에도 API를 통해 현금영수증을 등록할 수 있습니다.\
-REST [**API POST /receipts/external/\{merchant_uid}**](../../../api/api-8/api-5)를 호출하여 현금영수증을 요청합니다.
+REST [**API POST /receipts/external/\{merchant\_uid}**](../../../api/api-8/api-5)를
+호출하여 현금영수증을 요청합니다.
- `product_type`, `pg`, `buyer_name` 파라미터는 KSNET 필수 입력 대상입니다.
@@ -255,9 +243,11 @@ curl -H "Content-Type: application/json" \
## 4. 부가기능
-```javascript title="javascript"
-display: {
- card_quota: [6]; // 할부개월 6개월까지만 활성화
+```json
+{
+ "display": {
+ "card_quota": [6] // 할부개월 6개월까지만 활성화
+ }
}
```
@@ -268,12 +258,7 @@ display: {
- `2,3,4,5,6`: 일시불을 포함한 2, 3, 4, 5, 6개월까지 할부개월 선택 가능\\
-할부결제는 **5만원 이상 결제 요청시**에만 이용 가능합니다.
-
+ 할부결제는 **5만원 이상 결제 요청시**에만 이용 가능합니다.
-
+
diff --git a/src/content/docs/ko/pg/payment-gateway/ksnet/warning.mdx b/src/content/docs/ko/pg/payment-gateway/ksnet/warning.mdx
index 0a216e4e1..4c8574844 100644
--- a/src/content/docs/ko/pg/payment-gateway/ksnet/warning.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/ksnet/warning.mdx
@@ -7,27 +7,32 @@ import Details from "~/components/gitbook/Details.astro";
import Hint from "~/components/Hint.astro";
-
계약 확인사항
+
계약 확인사항
-**포트원을 통한 KSNET 이용 고객사의 상점아이디 과세 설정은 반드시 `복합과세`로 설정되어 있어야 합니다. 일반과세, 면세 설정은 지원하지 않습니다.**
+ **포트원을 통한 KSNET 이용 고객사의 상점아이디 과세 설정은 반드시 `복합과세`로 설정되어 있어야 합니다. 일반과세, 면세 설정은 지원하지 않습니다.**
-- 키인결제
-- 고객사 부담 무이자 할부 설정
-- 가상계좌 마감일시 지정
-- 가상계좌 환불
-- 간편결제 사용
-- 할부 사용
-- 에스크로 사용, 배송 에스크로만 지원
- - KSNET에서 일반 에스크로, 배송 에스크로 두 가지 유형의 에스크로를 제공합니다. 포트원을 통해 KSNET 에스크로를 사용하려는 경우 반드시 **배송 에스크로** 설정이 되어 있어야 합니다.
-- 휴대폰 결제 시 상품 유형 설정(실물 혹은 디지털)
+ - 키인결제
+ - 고객사 부담 무이자 할부 설정
+
+ - 가상계좌 마감일시 지정
+
+ - 가상계좌 환불
+
+ - 간편결제 사용
+
+ - 할부 사용
+
+ - 에스크로 사용, 배송 에스크로만 지원
+ - KSNET에서 일반 에스크로, 배송 에스크로 두 가지 유형의 에스크로를 제공합니다. 포트원을 통해 KSNET 에스크로를 사용하려는 경우 반드시 **배송 에스크로** 설정이 되어 있어야 합니다.
+
+ - 휴대폰 결제 시 상품 유형 설정(실물 혹은 디지털)
-
특정카드사 고객사 부담 무이자 할부 설정 불가
-
-KSNET에서 고객사 부담 무이자 할부 설정에 필요한 카드 코드 정보를 일부 카드사에 대해서만 제공하고 있습니다. 카드코드가 제공되지 않는 일부 카드사의 경우 고객사 부담 무이자 할부를 설정할 수 없습니다.
+
특정카드사 고객사 부담 무이자 할부 설정 불가
+ KSNET에서 고객사 부담 무이자 할부 설정에 필요한 카드 코드 정보를 일부 카드사에 대해서만 제공하고 있습니다. 카드코드가 제공되지 않는 일부 카드사의 경우 고객사 부담 무이자 할부를 설정할 수 없습니다.
@@ -75,71 +80,78 @@ KSNET에서 고객사 부담 무이자 할부 설정에 필요한 카드 코드
-
-고객사 부담 무이자를 원하시는 경우 PG사와의 별도의 계약 후 **`interest_free_by_merchant`** 파라미터를 사용해야 합니다.
+ 판매 상품에 대한 구분값으로 **`product_type`** 파라미터를 사용해야 결제가 가능합니다.
-카드번호와 유효기간만으로 결제를 요청하는 비인증 승인 API만 연동되어 있어
+ 고객사 부담 무이자를 원하시는 경우 PG사와의 별도의 계약 후 **`interest_free_by_merchant`** 파라미터를 사용해야 합니다.
-**`birth`**(생년월일 6자리 혹은 사업자 등록번호 10자리)와 **`pwd_2digit`**(비밀번호 앞 2자리)는 검증하지 않습니다.
+ 카드번호와 유효기간만으로 결제를 요청하는 비인증 승인 API만 연동되어 있어
+ **`birth`**(생년월일 6자리 혹은 사업자 등록번호 10자리)와 **`pwd_2digit`**(비밀번호 앞 2자리)는 검증하지 않습니다.
-
빌링키 결제
-
-판매 상품에 대한 구분값으로 **`product_type`** 을 파라미터로 사용해야 결제가 가능합니다.
+
빌링키 결제
-고객사 부담 무이자를 원하시는 경우 pg 사와의 별도의 계약 후 **`interest_free_by_merchant`** 파라미터를 사용해야 합니다.
+ 판매 상품에 대한 구분값으로 **`product_type`** 을 파라미터로 사용해야 결제가 가능합니다.
+ 고객사 부담 무이자를 원하시는 경우 pg 사와의 별도의 계약 후 **`interest_free_by_merchant`** 파라미터를 사용해야 합니다.
-
-
-- 휴대폰 결제는 부분취소 불가능.
-- 카드, 간편결제 외 결제의 경우 매출 전표 확인 불가능.
-- 간편결제(카카오페이, 페이코) 카드 결제의 경우 KSNET 측에서 카드정보(카드번호, bin) 정보를 제공해주지 않아 결제 정보에 카드사 정보가 제공되지 않습니다.
-- USD 결제는 순수 해외카드로만 결제 가능합니다.
-- 카카오페이 사용 시 상점정보(대표자명, 주소, 전화번호)를 필수로 입력해야합니다
-- 부분취소는 총 9회까지 가능합니다. (카드결제, 가상계좌, 계좌이체, 간편결제)
-- 취소는 결제일 기준 6개월 이내에만 가능합니다.
-- 가상계좌 환불은 23:00\~06:00 시간 외에만 가능합니다.
-- 계좌입금 거래 시 결제창에서 발급한 현금영수증은 경우 거래 취소 시 자동으로 취소 되지 않습니다.
-- 복합과세의 계좌입금 거래를 부분취소하는 경우 기존에 발급한 현금영수증을 취소하고 부분취소 금액이 반영된 금액 정보로 다시 현금영수증을 발급해야합니다.
-- 매출 전표 확인 시 자동으로 인쇄 기능이 호출됩니다. 오동작이 아닌 KSNET의 의도된 기능입니다.
-- 간편 결제 수단에서 고객사 부담 무이자 설정은 사용 불가능합니다.
-- 간편 결제 수단에서 할부 개월 수 표시 설정은 일부 간편결제사에서만 가능합니다.
- - 네이버페이, 카카오페이, LPay: 할부 개월 수 표시 설정 가능
- - Payco, SSGPay: 할부 개월 수 표시 설정 불가, 5만원 이상 시 1\~12 개월 표시 고정
+
기타
+
+ - 휴대폰 결제는 부분취소 불가능.
+
+ - 카드, 간편결제 외 결제의 경우 매출 전표 확인 불가능.
+ - 간편결제(카카오페이, 페이코) 카드 결제의 경우 KSNET 측에서 카드정보(카드번호, bin) 정보를 제공해주지 않아 결제 정보에 카드사 정보가 제공되지 않습니다.
+
+ - USD 결제는 순수 해외카드로만 결제 가능합니다.
+
+ - 카카오페이 사용 시 상점정보(대표자명, 주소, 전화번호)를 필수로 입력해야합니다
+
+ - 부분취소는 총 9회까지 가능합니다. (카드결제, 가상계좌, 계좌이체, 간편결제)
+
+ - 취소는 결제일 기준 6개월 이내에만 가능합니다.
+
+ - 가상계좌 환불은 23:00\~06:00 시간 외에만 가능합니다.
+
+ - 계좌입금 거래 시 결제창에서 발급한 현금영수증은 경우 거래 취소 시 자동으로 취소 되지 않습니다.
+
+ - 복합과세의 계좌입금 거래를 부분취소하는 경우 기존에 발급한 현금영수증을 취소하고 부분취소 금액이 반영된 금액 정보로 다시 현금영수증을 발급해야합니다.
+
+ - 매출 전표 확인 시 자동으로 인쇄 기능이 호출됩니다. 오동작이 아닌 KSNET의 의도된 기능입니다.
+
+ - 간편 결제 수단에서 고객사 부담 무이자 설정은 사용 불가능합니다.
+
+ - 간편 결제 수단에서 할부 개월 수 표시 설정은 일부 간편결제사에서만 가능합니다.
+ - 네이버페이, 카카오페이, LPay: 할부 개월 수 표시 설정 가능
+ - Payco, SSGPay: 할부 개월 수 표시 설정 불가, 5만원 이상 시 1\~12 개월 표시 고정
-특이사항
-
-- 카드, 간편결제를 외 결제 수단 에서는 매출전표를 제공하지 않습니다.
-- KSNET은 KRW, USD 만 지원합니다.
-- USD 결제의 경우 순수 해외 카드만 결제 가능합니다.
-- 페이코, 카카오페이의 경우 카드번호 혹은 카드bin 정보를 제공하지 않습니다.
-- 주문자 이메일(`buyer_email`)은 선택 입력 항목이지만 에스크로 결제에서 구매확인 이메일 수신을 위해 필수로 입력해야 합니다.
-- 카드, 간편결제 다이렉트 호출은 현재 지원하지 않습니다.
-- 발급사가 비씨,국민,하나,삼성,신한,현대,롯데,농협인 경우에 `고객사 무이자 할부`를 설정할 수 있습니다.
-- 결제 취소 시 부분취소는 9회까지 가능합니다. (카드결제, 가상계좌, 계좌이체)
-- 취소는 결제일 기준으로 6개월까지만 가능합니다.
-- 가상계좌 환불은 23:00\~06:00 시간 외에만 가능합니다.
-- 가상계좌 환불은 특약이 있는 고객사만 사용 가능합니다.
-- 휴대폰 결제는 부분취소를 지원하지 않습니다.
-- 계좌입금 거래 시 발급한 현금영수증은 경우 거래 취소 시 자동으로 취소 되지 않습니다. 수동으로 취소해야 합니다.
-- **포트원을 통한 KSNET 이용 고객사의 상점아이디 `복합과세` 및 `면세`만 지원합니다.**
-
+ 특이사항
+
+ - 카드, 간편결제를 외 결제 수단 에서는 매출전표를 제공하지 않습니다.
+ - KSNET은 KRW, USD 만 지원합니다.
+ - USD 결제의 경우 순수 해외 카드만 결제 가능합니다.
+ - 페이코, 카카오페이의 경우 카드번호 혹은 카드bin 정보를 제공하지 않습니다.
+ - 주문자 이메일(`buyer_email`)은 선택 입력 항목이지만 에스크로 결제에서 구매확인 이메일 수신을 위해 필수로 입력해야 합니다.
+ - 카드, 간편결제 다이렉트 호출은 현재 지원하지 않습니다.
+ - 발급사가 비씨,국민,하나,삼성,신한,현대,롯데,농협인 경우에 `고객사 무이자 할부`를 설정할 수 있습니다.
+ - 결제 취소 시 부분취소는 9회까지 가능합니다. (카드결제, 가상계좌, 계좌이체)
+ - 취소는 결제일 기준으로 6개월까지만 가능합니다.
+ - 가상계좌 환불은 23:00\~06:00 시간 외에만 가능합니다.
+ - 가상계좌 환불은 특약이 있는 고객사만 사용 가능합니다.
+ - 휴대폰 결제는 부분취소를 지원하지 않습니다.
+ - 계좌입금 거래 시 발급한 현금영수증은 경우 거래 취소 시 자동으로 취소 되지 않습니다. 수동으로 취소해야 합니다.
+ - **포트원을 통한 KSNET 이용 고객사의 상점아이디 `복합과세` 및 `면세`만 지원합니다.**
diff --git a/src/content/docs/ko/pg/payment-gateway/newtoss/readme.mdx b/src/content/docs/ko/pg/payment-gateway/newtoss/readme.mdx
index aa082fd24..9802ca99a 100644
--- a/src/content/docs/ko/pg/payment-gateway/newtoss/readme.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/newtoss/readme.mdx
@@ -5,9 +5,10 @@ description: 토스페이먼츠 (신모듈 / 2022-07-27 버전) 연동 방법을
import Figure from "~/components/Figure.astro";
import Details from "~/components/gitbook/Details.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
+
import image1 from "../_assets/tosspayments/tosspayments1.webp";
import image2 from "../_assets/tosspayments/tosspayments2.png";
import image3 from "../_assets/tosspayments/tosspayments3.png";
@@ -24,12 +25,11 @@ import image4 from "../_assets/tosspayments/tosspayments4.png";
토스페이먼츠 신모듈 결제는 최신 SDK에서만 지원되는 기능입니다.
```html title="JS SDK"
-
+
```
-**토스페이먼츠 신모듈을 연동하기 위해서는 위에 안내된 JS SDK를 이용하셔야 합니다**
-
+ **토스페이먼츠 신모듈을 연동하기 위해서는 위에 안내된 JS SDK를 이용하셔야 합니다**
[JavaScript SDK](../../../sdk/javascript-sdk/readme)문서를 통해 최신 SDK를 설치해주세요.
@@ -43,336 +43,326 @@ import image4 from "../_assets/tosspayments/tosspayments4.png";
토스페이먼츠 신 모듈을 기준으로 작성한 예시 코드는 아래와 같습니다.
-
-
-```javascript showLineNumbers
-const userCode = "고객사 식별코드";
-IMP.init(userCode); // 고객사 식별 코드를 넣어 모듈을 초기화해주세요.
-
-IMP.request_pay(
- {
- pg: "tosspayments", // 반드시 "tosspayments"임을 명시해주세요.
- merchant_uid: "order_id_1667634130160",
- name: "나이키 와플 트레이너 2 SD",
- pay_method: "card",
- escrow: false,
- amount: "109000",
- tax_free: 3000,
- buyer_name: "홍길동",
- buyer_email: "buyer@example.com",
- buyer_tel: "02-1670-5176",
- buyer_addr: "성수이로 20길 16",
- buyer_postcode: "04783",
- m_redirect_url: "https://helloworld.com/payments/result", // 모바일 환경에서 필수 입력
- notice_url: "https://helloworld.com/api/v1/payments/notice",
- confirm_url: "https://helloworld.com/api/v1/payments/confirm",
- currency: "KRW",
- locale: "ko",
- custom_data: { userId: 30930 },
- display: { card_quota: [0, 6] },
- appCard: false,
- useCardPoint: true,
- bypass: {
- tosspayments: {
- useInternationalCardOnly: true, // 영어 결제창 활성화
+
+ ```ts showLineNumbers
+ const userCode = "고객사 식별코드";
+ IMP.init(userCode); // 고객사 식별 코드를 넣어 모듈을 초기화해주세요.
+
+ IMP.request_pay(
+ {
+ pg: "tosspayments", // 반드시 "tosspayments"임을 명시해주세요.
+ merchant_uid: "order_id_1667634130160",
+ name: "나이키 와플 트레이너 2 SD",
+ pay_method: "card",
+ escrow: false,
+ amount: "109000",
+ tax_free: 3000,
+ buyer_name: "홍길동",
+ buyer_email: "buyer@example.com",
+ buyer_tel: "02-1670-5176",
+ buyer_addr: "성수이로 20길 16",
+ buyer_postcode: "04783",
+ m_redirect_url: "https://helloworld.com/payments/result", // 모바일 환경에서 필수 입력
+ notice_url: "https://helloworld.com/api/v1/payments/notice",
+ confirm_url: "https://helloworld.com/api/v1/payments/confirm",
+ currency: "KRW",
+ locale: "ko",
+ custom_data: { userId: 30930 },
+ display: { card_quota: [0, 6] },
+ appCard: false,
+ useCardPoint: true,
+ bypass: {
+ tosspayments: {
+ useInternationalCardOnly: true, // 영어 결제창 활성화
+ },
+ },
},
- },
- },
- (response) => {
- // PC 환경에서 결제 프로세스 완료 후 실행 될 로직
- }
-);
-```
-
-
-
주요 파라미터 설명
-
-**`pg` \*****string**
-
-**PG사 구분코드**
+ (response) => {
+ // PC 환경에서 결제 프로세스 완료 후 실행 될 로직
+ },
+ );
+ ```
-_tosspayments_ 로 지정하면 됩니다.
+
+
+ **`useCardPoint`** **`boolean`**
-**`bypass`** **object**
+ 카드 결제시, 카드 포인트 사용 허용할지 여부
+
-**`isCulturalExpense`** **boolean**
+
+
기타 파라미터 설명
-문화비 지출여부
+ **`bypass`** **object**
-**`useInternationalCardOnly`** **boolean**
+ **`isCulturalExpense`** **boolean**
-해외카드(Visa, MasterCard, UnionPay) 결제 여부입니다. 값이 `true`면 해외카드 결제가 가능한 영문 결제창이 열립니다.
+ 문화비 지출여부
-**`cashReceiptType`** **string**
+ **`useInternationalCardOnly`** **boolean**
-현금성 결제(계좌이체, 가상계좌)창에서 선택할 수 있는 현금영수증 발급 유형 (기본값: 결제창에서 선택 가능)
+ 해외카드(Visa, MasterCard, UnionPay) 결제 여부입니다. 값이 `true`면 해외카드 결제가 가능한 영문 결제창이 열립니다.
-- anonymous (미발행, 자진발급)
-- personal (소득공제)
-- corporate (지출증빙)
+ **`cashReceiptType`** **string**
-```javascript
-{
- pay_method: 'trans',
- bypass: {
- isCulturalExpense: true,
- cashReceiptType: 'personal'
- }
-}
-```
+ 현금성 결제(계좌이체, 가상계좌)창에서 선택할 수 있는 현금영수증 발급 유형 (기본값: 결제창에서 선택 가능)
-
-
-
-
-
-인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다. 비 인증 결제창에서 빌링키를 발급받은 후 해당 빌링키로 결제를 요청합니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "tosspayments.{MID}",
- pay_method: "card", // 'card'만 지원됩니다.
- merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
- name: "최초인증결제",
- amount: 0, // 실제 승인은 발생되지 않고 오직 빌링키만 발급됩니다.
- customer_uid: "your-customer-unique-id", // 필수 입력.
- buyer_email: "test@portone.io",
- buyer_name: "포트원",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
- customer_id: "matthew", //고객사가 회원에게 부여한 고유 ID
- },
- function (rsp) {
- // callback 로직
- }
-);
-```
+ - anonymous (미발행, 자진발급)
+ - personal (소득공제)
+ - corporate (지출증빙)
-
-- 비인증 결제를 위해서는 **토스페이먼츠로 부터 발급받은 MID정보**를 포트원 관리자콘솔에 설정하셔야 비 인증 결제창을 활성화 시킬수 있습니다.
-- 빌링키 발급시 **실 결제는 발생되지 않습니다**.(금액을 지정해도 결제가 발생되지 않음)
+ ```json
+ {
+ "pay_method": "trans",
+ "bypass": {
+ "isCulturalExpense": true,
+ "cashReceiptType": "personal"
+ }
+ }
+ ```
+
+
-
+
+ 인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다. 비 인증 결제창에서 빌링키를 발급받은 후 해당 빌링키로 결제를 요청합니다.
-**주요 파라미터 설명**
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "tosspayments.{MID}",
+ pay_method: "card", // 'card'만 지원됩니다.
+ merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
+ name: "최초인증결제",
+ amount: 0, // 실제 승인은 발생되지 않고 오직 빌링키만 발급됩니다.
+ customer_uid: "your-customer-unique-id", // 필수 입력.
+ buyer_email: "test@portone.io",
+ buyer_name: "포트원",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ customer_id: "matthew", //고객사가 회원에게 부여한 고유 ID
+ },
+ function (rsp) {
+ // callback 로직
+ },
+ );
+ ```
-**`pg` \*****string**
+
+ - 비인증 결제를 위해서는 **토스페이먼츠로 부터 발급받은 MID정보**를 포트원 관리자콘솔에 설정하셔야 비 인증 결제창을 활성화 시킬수 있습니다.
+ - 빌링키 발급시 **실 결제는 발생되지 않습니다**.(금액을 지정해도 결제가 발생되지 않음)
+
-**PG사 구분코드**
+ **주요 파라미터 설명**
-**`tosspayments`** 로 지정하면 됩니다.
+ **`pg` \*****string**
-**`customer_uid` \*****string**
+ **PG사 구분코드**
-**카드 빌링키**
+ **`tosspayments`** 로 지정하면 됩니다.
-비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
+ **`customer_uid` \*****string**
-**`amount` \*****number**
+ **카드 빌링키**
-**결제금액**
+ 비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
-결제창에 표시될 금액으로 실제 승인은 이루어지지 않습니다.(실 결제를 발생시키기 위해서는 **customer_uid** 로 **REST API 를 이용하여 결제요청**을 해주셔야 합니다.)
+ **`amount` \*****number**
-**`customer_id`** **`string`**
+ **결제금액**
-**`구매자 식별자`**
+ 결제창에 표시될 금액으로 실제 승인은 이루어지지 않습니다.(실 결제를 발생시키기 위해서는 **customer\_uid** 로 **REST API 를 이용하여 결제요청**을 해주셔야 합니다.)
-빌링키를 발급한 고객의 고유 ID 를 지정합니다.(회원ID) 해당 값 설정시 빌링키와 고객을 맵핑할 수 있습니다. 누락시 포트원에서 임의의 값을 설정합니다.
+ **`customer_id`** **`string`**
-**빌링키(customer_uid)로 결제 요청하기**
+ **`구매자 식별자`**
-빌링키 발급이 성공하면 실 빌링키는 customer_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. customer_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../../api/api-4/api)를 호출하시면 결제를 발생시킬 수 있습니다.
+ 빌링키를 발급한 고객의 고유 ID 를 지정합니다.(회원ID) 해당 값 설정시 빌링키와 고객을 맵핑할 수 있습니다. 누락시 포트원에서 임의의 값을 설정합니다.
-```sh title="server-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ **빌링키(customer\_uid)로 결제 요청하기**
-
+ 빌링키 발급이 성공하면 실 빌링키는 customer\_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. customer\_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../../api/api-4/api)를 호출하시면 결제를 발생시킬 수 있습니다.
-
-**API 방식으로 빌링키 발급,결제요청,예약결제를 구현할수 있습니다.**
-
-
-**MID 발급시 주의사항**
+ ```sh title="server-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
-토스페이먼츠로 부터 MID 발급시 **API version** 은 반드시 **1.4** 이어야 합니다.
+
+ **API 방식으로 빌링키 발급,결제요청,예약결제를 구현할수 있습니다.**
-
+
+ **MID 발급시 주의사항**
-**일회성 결제 요청하기**
+ 토스페이먼츠로 부터 MID 발급시 **API version** 은 반드시 **1.4** 이어야 합니다.
+
-REST[ **API POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
+ **일회성 결제 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ [**REST API POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
-**빌링키 발급 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-REST [**API POST /subscribe/customers/\{customer_uid}**](../../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
+ **빌링키 발급 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
+ REST [**API POST /subscribe/customers/\{customer\_uid}**](../../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
-**빌링키 발급 및 최초 결제 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-REST [**API POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 빌링키 발급과 최초 결제를 요청합니다.
+ **빌링키 발급 및 최초 결제 요청하기**
-- **`customer_uid`** : 빌링키 등록을 위해서 지정해야 합니다.
+ REST [**API POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 빌링키 발급과 최초 결제를 요청합니다.
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ - **`customer_uid`** : 빌링키 등록을 위해서 지정해야 합니다.
-**빌링키로 결제 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
+ **빌링키로 결제 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ 빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
-
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
## 4. 부가기능
-
-
-```javascript title="javascript"
-display: {
- card_quota: [6], // 할부개월 6개월만 활성화
- only_installment: true // 일시불 항목은 제외
-}
-```
-
-**파라미터 설명**
-
-- **card_quota :**
-
-\- 지정한 숫자에 해당하는 할부개월수만 표기
-
-\- `[]`: 일시불만 결제 가능
+
+ ```json title="javascript"
+ {
+ "display": {
+ "card_quota": [6], // 할부개월 6개월만 활성화
+ "only_installment": true // 일시불 항목은 제외
+ }
+ }
+ ```
-\- `2,3,4,5,6`: 일시불을 포함한 2, 3, 4, 5, 6개월까지 할부개월 선택 가능\\
+ **파라미터 설명**
-- **`only_installment` : `true`** 인 경우 `card_quota` 에 설정한 할부개월수만 표시
+ - **card\_quota :**
-
-할부결제는 **5만원 이상 결제 요청시**에만 이용 가능합니다.
-
-
+ \- 지정한 숫자에 해당하는 할부개월수만 표기
-
+ \- `[]`: 일시불만 결제 가능
-
-```javascript title="javascript"
-card: {
- direct: {
- code: "367",
- quota: 3
- }
-}
-```
+ \- `2,3,4,5,6`: 일시불을 포함한 2, 3, 4, 5, 6개월까지 할부개월 선택 가능\\
-**파라미터 설명**
+ - **`only_installment` : `true`** 인 경우 `card_quota` 에 설정한 할부개월수만 표시
-- **`code`** : 카드사 금융결제원 표준 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string**)
-- **`quota`** : 할부 개월 수. 일시불일 시 0 으로 지정. (**number**)
+
+ 할부결제는 **5만원 이상 결제 요청시**에만 이용 가능합니다.
+
+
-
+
+ ```json title="javascript"
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3
+ }
+ }
+ }
+ ```
-
+ **파라미터 설명**
-토스페이먼츠 고정식 가상계좌 발급 서비스를 이용하기 위해서는 **토스페이먼츠 측과 협의**를 통해 결제에 이용하는 MID에 고정식 가상계좌 설정이 반드시 선행되어야 합니다.
+ - **`code`** : 카드사 금융결제원 표준 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string**)
+ - **`quota`** : 할부 개월 수. 일시불일 시 0 으로 지정. (**number**)
+
-해당 설정이 완료되면 두가지 방식으로 고정식 가상계좌를 발급할 수 있습니다.
+
+ 토스페이먼츠 고정식 가상계좌 발급 서비스를 이용하기 위해서는 **토스페이먼츠 측과 협의**를 통해 결제에 이용하는 MID에 고정식 가상계좌 설정이 반드시 선행되어야 합니다.
-- [API 방식](../../../api/api-9/api)
-- 결제창 방식
+ 해당 설정이 완료되면 두가지 방식으로 고정식 가상계좌를 발급할 수 있습니다.
-두 방식 모두 **고유식별번호**가 유입되어야 하며 해당 값은 각 고객을 특정할수 있는 고유값이어야 합니다.
+ - [API 방식](../../../api/api-9/api)
+ - 결제창 방식
-결제창 방식을 이용하기 위해서 고객에게 사전에 해당 고유식별번호가 안내되어야 하며 가상계좌 발급단계에서 아래 첨부이미지처럼 고유식별번호 란에 해당 값이 유입되어야 합니다.
+ 두 방식 모두 **고유식별번호**가 유입되어야 하며 해당 값은 각 고객을 특정할수 있는 고유값이어야 합니다.
-
+ 결제창 방식을 이용하기 위해서 고객에게 사전에 해당 고유식별번호가 안내되어야 하며 가상계좌 발급단계에서 아래 첨부이미지처럼 고유식별번호 란에 해당 값이 유입되어야 합니다.
-API 방식 또한 `vbank_key` 파라미터가 고유식별번호에 대응되는 값으로 API방식은 고객사에서 직접 해당 값을 기재해서 호출할수 있기 때문에 고객 편의차원에서 훨씬 간편한 고정식 가상계좌 서비스를 제공할수 있습니다.
+
-고정식 가상계좌 발급이 정상적으로 이루어지면 아래와 같이 고객휴대폰 번호로 SMS가 발송되며 고객은 해당 정보를 보고 입금을 할수 있습니다.(비용: 무료)
+ API 방식 또한 `vbank_key` 파라미터가 고유식별번호에 대응되는 값으로 API방식은 고객사에서 직접 해당 값을 기재해서 호출할수 있기 때문에 고객 편의차원에서 훨씬 간편한 고정식 가상계좌 서비스를 제공할수 있습니다.
-
+ 고정식 가상계좌 발급이 정상적으로 이루어지면 아래와 같이 고객휴대폰 번호로 SMS가 발송되며 고객은 해당 정보를 보고 입금을 할수 있습니다.(비용: 무료)
-
+
+
## 5. 사용가능 기능
@@ -385,45 +375,41 @@ API 방식 또한 `vbank_key` 파라미터가 고유식별번호에 대응되는
- [현금영수증 발급(외부) API](../../../api/api-8/api-5)
+ **기존에 deprecated된 응답들은 모두 제거됐습니다. ⚠️**
-**기존에 deprecated된 응답들은 모두 제거됐습니다. ⚠️**
-
-신 토스페이먼츠 모듈 연동시에 사용되는 신규 JS SDK는 기존 모듈에서 제공했던 CallBack 파라미터가 대부분 삭제되었습니다.(특히 deprecated 로 명시된 파라미터는 모두 삭제되었습니다.)
-
-해당 JS SDK 사용시 Callback 으로 내려받을수 있는 데이터는 오직 아래 두가지 입니다.
+ 신 토스페이먼츠 모듈 연동시에 사용되는 신규 JS SDK는 기존 모듈에서 제공했던 CallBack 파라미터가 대부분 삭제되었습니다.(특히 deprecated 로 명시된 파라미터는 모두 삭제되었습니다.)
-**`imp_uid`, `merchant_uid`**
+ 해당 JS SDK 사용시 Callback 으로 내려받을수 있는 데이터는 오직 아래 두가지 입니다.
-따라서 해당 SDK를 사용하실때는 `IMP.request_pay()`로부터 응답된 객체(또는 쿼리 파라미터)에서 `imp_uid`를 가지고 **아임포트 REST API(GET `/payments/imp_uid`)로 결제 상세 내역(승인 상태, 승인 결과 등등)을 조회**하여 응답 파라미터 중 status 파라미터로 결제 상태를 파악하셔야 합니다.
+ **`imp_uid`, `merchant_uid`**
+ 따라서 해당 SDK를 사용하실때는 `IMP.request_pay()`로부터 응답된 객체(또는 쿼리 파라미터)에서 `imp_uid`를 가지고 **아임포트 REST API(GET `/payments/imp_uid`)로 결제 상세 내역(승인 상태, 승인 결과 등등)을 조회**하여 응답 파라미터 중 status 파라미터로 결제 상태를 파악하셔야 합니다.
+ ```html
+
+ ```
-```html
-
-```
-
-위 JS SDK 를 이용하여 토스페이먼츠,케이에스넷 연동시 callback Data는
-아래와 같이 두가지 형태로만 내려갑니다.
-
-- `imp_uid`
-- `merchant_uid`
+ 위 JS SDK 를 이용하여 토스페이먼츠,케이에스넷 연동시 callback Data는
+ 아래와 같이 두가지 형태로만 내려갑니다.
-위 PG사를 제외한 다른 PG사는 `imp_success` 파라미터가 기존처럼 내려가지만
-해당 파리미터는 deprecated 된 값이기 때문에 해당 값에 의존성을 가진 프로그램 로직은 모두 삭제하시는
-방향성을 잡아가셔야 하는점 유념하시기 바랍니다.
+ - `imp_uid`
+ - `merchant_uid`
+ 위 PG사를 제외한 다른 PG사는 `imp_success` 파라미터가 기존처럼 내려가지만
+ 해당 파리미터는 deprecated 된 값이기 때문에 해당 값에 의존성을 가진 프로그램 로직은 모두 삭제하시는
+ 방향성을 잡아가셔야 하는점 유념하시기 바랍니다.
-**토스페이먼츠 API 버전 설정**
+ **토스페이먼츠 API 버전 설정**
-- [토스페이먼츠 개발자센터](https://app.tosspayments.com/signin?redirectUrl=https%3A%2F%2Fdevelopers.tosspayments.com%2Fmy%2Fapi-keys) 로그인
-- 왼쪽 네비게이션 메뉴 API 키 선택 → API 버전을 **2022-07-27**로 선택
+ - [토스페이먼츠 개발자센터](https://app.tosspayments.com/signin?redirectUrl=https%3A%2F%2Fdevelopers.tosspayments.com%2Fmy%2Fapi-keys) 로그인
- API 버전을 다르게 설정하면 결제 승인 / 실패 시 실제 응답과 다른 응답을 받아볼 수 있으니 **반드시 API 버전을 2022-07-27로** 맞춰주시기 바랍니다
+ - 왼쪽 네비게이션 메뉴 API 키 선택 → API 버전을 **2022-07-27**로 선택
-
+ API 버전을 다르게 설정하면 결제 승인 / 실패 시 실제 응답과 다른 응답을 받아볼 수 있으니 **반드시 API 버전을 2022-07-27로** 맞춰주시기 바랍니다
+
diff --git a/src/content/docs/ko/pg/payment-gateway/newtoss/warning.mdx b/src/content/docs/ko/pg/payment-gateway/newtoss/warning.mdx
index 2d90947e6..cbb397b63 100644
--- a/src/content/docs/ko/pg/payment-gateway/newtoss/warning.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/newtoss/warning.mdx
@@ -3,8 +3,8 @@ title: 연동 유의사항
description: 토스페이먼츠 (신 모듈) 연동 유의사항을 소개합니다.
---
-import Details from "~/components/gitbook/Details.astro";
import Figure from "~/components/Figure.astro";
+import Details from "~/components/gitbook/Details.astro";
## 토스페이먼츠와 사전 계약이 필요한 경우
@@ -24,233 +24,235 @@ import Figure from "~/components/Figure.astro";
## 카드 결제
-
appCard 파라미터는 일부 카드사에 대해서만 적용 됨
+
appCard 파라미터는 일부 카드사에 대해서만 적용 됨
-토스페이먼츠의 경우 카드 결제시, 앱 카드로만 결제할 수 있도록 제한하는 appCard 파라미터를 지원하지만 지원 범위가 아래와 같이 제한적입니다.
-
-- 지원 가능 카드: 국민, 농협, 롯데, 삼성, 신한, 현대, 우리, 하나
-- 지원 불가 카드: 씨티
+ 토스페이먼츠의 경우 카드 결제시, 앱 카드로만 결제할 수 있도록 제한하는 appCard 파라미터를 지원하지만 지원 범위가 아래와 같이 제한적입니다.
+ - 지원 가능 카드: 국민, 농협, 롯데, 삼성, 신한, 현대, 우리, 하나
+ - 지원 불가 카드: 씨티
-
-
-고객사는 토스페이먼츠와 사전 계약 또는 카드사 정책에 따라 무이자 할부 기능을 사용할 수 있습니다. 이에 따라 결제창 내에서 각 카드 사별 최대 무이자 할부 개월수에 따라 할부 개월수 옆에 “무이자” 또는 “무”라고 표기 됩니다.
+
무이자 할부가 적용 되어도 ISP 계열 카드로 결제시에는 “무이자” 표기가 되지 않음
-- 예1. 삼성카드 - 최대 3개월 무이자 할부 적용 → 3개월까지 “무” 표기
+ 고객사는 토스페이먼츠와 사전 계약 또는 카드사 정책에 따라 무이자 할부 기능을 사용할 수 있습니다. 이에 따라 결제창 내에서 각 카드 사별 최대 무이자 할부 개월수에 따라 할부 개월수 옆에 “무이자” 또는 “무”라고 표기 됩니다.
-
+ - 예1. 삼성카드 - 최대 3개월 무이자 할부 적용 → 3개월까지 “무” 표기
-하지만 ISP 계열 카드의 경우에는 실제로 무이자가 적용된다고 하더라도 “무이자” 여부가 표기되지 않습니다.
+
-- 예2. BC카드 - 최대 12개월 무이자 할부 적용 → 표기 없음 → 실제 결제 승인시 무이자 할부 적용은 됨
+ 하지만 ISP 계열 카드의 경우에는 실제로 무이자가 적용된다고 하더라도 “무이자” 여부가 표기되지 않습니다.
-
+ - 예2. BC카드 - 최대 12개월 무이자 할부 적용 → 표기 없음 → 실제 결제 승인시 무이자 할부 적용은 됨
-이는 ISP 계열 카드사 결제시 사용되는 페이북 앱 특성에 따른 것으로 실제 결제 승인시에는 정상적으로 무이자 할부가 적용됩니다.
+
+ 이는 ISP 계열 카드사 결제시 사용되는 페이북 앱 특성에 따른 것으로 실제 결제 승인시에는 정상적으로 무이자 할부가 적용됩니다.
-
할부 기간 선택 관련 이슈
+
할부 기간 선택 관련 이슈
+
+ 모바일 웹 - 카드 결제시 토스페이먼츠 결제창 내에서 간편결제의 경우 할부 기간 선택이 불가능하고, 간편결제 외의 모든 카드사의 경우엔 할부 기간 선택이 가능합니다.
-모바일 웹 - 카드 결제시 토스페이먼츠 결제창 내에서 간편결제의 경우 할부 기간 선택이 불가능하고, 간편결제 외의 모든 카드사의 경우엔 할부 기간 선택이 가능합니다.
+ - 모바일 웹 - 간편결제 외 카드사: 할부 기간 선택 가능\
+ ![]()
-- 모바일 웹 - 간편결제 외 카드사: 할부 기간 선택 가능\
- ![]()
-- 모바일 웹 - 간편결제: 할부 기간 선택 불가능\
- ![]()
+ - 모바일 웹 - 간편결제: 할부 기간 선택 불가능\
+ ![]()
-반면, PC - 카드 결제 - ISP계열의 경우에는 토스페이먼츠 결제창 내에서도 할부 기간 선택이 불가능 하며, 대신 ISP 페이북 팝업에서는 선택이 가능합니다.
+ 반면, PC - 카드 결제 - ISP계열의 경우에는 토스페이먼츠 결제창 내에서도 할부 기간 선택이 불가능 하며, 대신 ISP 페이북 팝업에서는 선택이 가능합니다.
-- PC - 카드결제 - ISP 선택: 할부 기간 선택 불가능\
-
-- PC - 카드결제 - ISP 선택 - 페이북 팝업: 할부 기간 선택 가능
+ - PC - 카드결제 - ISP 선택: 할부 기간 선택 불가능
+
-다소 헷갈릴 수 있으나 간편결제는 간편결제 앱에서 할부 개월수를 선택할 수 있어 토스페이먼츠 결제창에서 선택할 수 없다는 토스 답변이 있었습니다.
+ - PC - 카드결제 - ISP 선택 - 페이북 팝업: 할부 기간 선택 가능
+ 다소 헷갈릴 수 있으나 간편결제는 간편결제 앱에서 할부 개월수를 선택할 수 있어 토스페이먼츠 결제창에서 선택할 수 없다는 토스 답변이 있었습니다.
-
카카오페이 13개월 이상 할부 개월수 불가능한 이슈
-
-카카오페이 자체에서 13개월 이상 할부 결제를 지원하지 않기 때문에, 카카오페이로는 최대 12개월까지 할부 결제가 가능합니다.
+
카카오페이 13개월 이상 할부 개월수 불가능한 이슈
+ 카카오페이 자체에서 13개월 이상 할부 결제를 지원하지 않기 때문에, 카카오페이로는 최대 12개월까지 할부 결제가 가능합니다.
-
카카오페이 일부 카드의 경우 카드 정보를 확인할 수 없는 이슈
-
-카카오페이로 결제시 일부 카드(2022년 6월 이후 카드사 측에서 신규 생성 된 카드)의 경우, 카카오페이 → 토스페이먼츠로 카드 정보를 정상적으로 내려주지 않기 때문에 포트원 REST API로 결제내역 조회(GET /payments/\{imp_uid})시 카드사 정보(card_code: 카드 코드, card_name: 카드 이름)를 확인할 수 없습니다.
+
카카오페이 일부 카드의 경우 카드 정보를 확인할 수 없는 이슈
+ 카카오페이로 결제시 일부 카드(2022년 6월 이후 카드사 측에서 신규 생성 된 카드)의 경우, 카카오페이 → 토스페이먼츠로 카드 정보를 정상적으로 내려주지 않기 때문에 포트원 REST API로 결제내역 조회(GET /payments/\{imp\_uid})시 카드사 정보(card\_code: 카드 코드, card\_name: 카드 이름)를 확인할 수 없습니다.
## 카드사 다이렉트 호출
-
고정 할부 개월수(card.direct.quota)를 보내지 않으면 무조건 일시불로 결제 됨
+
고정 할부 개월수(card.direct.quota)를 보내지 않으면 무조건 일시불로 결제 됨
-토스페이먼츠는 카드사 다이렉트 호출시 **quota 값을 전달하지 않는 경우에는 무조건 일시불로 결제**가 됩니다.
+ 토스페이먼츠는 카드사 다이렉트 호출시 **quota 값을 전달하지 않는 경우에는 무조건 일시불로 결제**가 됩니다.
-따라서 카드사 다이렉트 호출시에는 반드시 구매자가 할부 개월수를 선택할 수 있는 UI/UX를 만들어주신 후 결제창 호출(IMP.request_pay)시 card.direct.quota값을 넘겨야 합니다.
+ 따라서 카드사 다이렉트 호출시에는 반드시 구매자가 할부 개월수를 선택할 수 있는 UI/UX를 만들어주신 후 결제창 호출(IMP.request\_pay)시 card.direct.quota값을 넘겨야 합니다.
-- 예1. 현대카드 다이렉트 호출 → 무조건 일시불로 결제 됨
+ - 예1. 현대카드 다이렉트 호출 → 무조건 일시불로 결제 됨
- ```jsx
- card: {
- direct: {
- code: "367";
+ ```json
+ {
+ "card": {
+ "direct": {
+ "code": "367"
+ }
+ }
}
- }
- ```
+ ```
-- 예2. 삼성카드 다이렉트 호출 + 5개월 고정 할부 개월수 지정 → 5개월 할부 적용
+ - 예2. 삼성카드 다이렉트 호출 + 5개월 고정 할부 개월수 지정 → 5개월 할부 적용
- ```jsx
- {
- card: {
- direct: {
- code: '365',
- quota: 5
+ ```json
+ {
+ "card": {
+ "direct": {
+ "code": "365",
+ "quota": 5
+ }
}
}
- }
- ```
-
+ ```
-
고정 할부 개월수(card.direct.quota)를 보내도 카드 결제창에서 결제 될 할부 개월수를 확인할 수 없음
+
고정 할부 개월수(card.direct.quota)를 보내도 카드 결제창에서 결제 될 할부 개월수를 확인할 수 없음
-카드사 다이렉트 호출시 quota 값을 보내도 **실제로 카드사 결제창에서는 결제시 적용 될 할부 개월수를 확인할 수 없습니다.** (물론 실제 승인시에는 전달한 quota값 만큼 할부 적용이 됨)
+ 카드사 다이렉트 호출시 quota 값을 보내도 **실제로 카드사 결제창에서는 결제시 적용 될 할부 개월수를 확인할 수 없습니다.** (물론 실제 승인시에는 전달한 quota값 만큼 할부 적용이 됨)
-단, ISP 계열의 카드사인 경우에는 페이북 팝업에서 확인이 가능하며 이 값을 사용자가 변경 할 수는 없습니다.
+ 단, ISP 계열의 카드사인 경우에는 페이북 팝업에서 확인이 가능하며 이 값을 사용자가 변경 할 수는 없습니다.
-- 예. BC카드 다이렉트 호출 + 5개월 고정 할부 개월수 지정\\
+ - 예. BC카드 다이렉트 호출 + 5개월 고정 할부 개월수 지정\\
-
+
+ ```json
+ {
+ "card": {
+ "direct": {
+ "code": "361",
+ "quota": 5
+ }
+ }
+ }
+ ```
-
페이북을 통한 ISP 계열 카드 결제시, 카드 번호가 정상적으로 내려오지 않음
-
-페이북 통한 ISP 계열 카드 결제시 토스페이먼츠로부터 실제 카드 번호와 다른 9200으로 시작하는 카드 번호가 내려오고 있어 결제 승인 내역 조회(POST `/payments/{imp_uid}`)시 응답되는 카드 번호(`card_numer`)가 정확하지 않습니다.
+
페이북을 통한 ISP 계열 카드 결제시, 카드 번호가 정상적으로 내려오지 않음
+ 페이북 통한 ISP 계열 카드 결제시 토스페이먼츠로부터 실제 카드 번호와 다른 9200으로 시작하는 카드 번호가 내려오고 있어 결제 승인 내역 조회(POST `/payments/{imp_uid}`)시 응답되는 카드 번호(`card_numer`)가 정확하지 않습니다.
-
사파리 브라우저에서 ISP 계열 카드 결제 불가능
-
-사파리 브라우저에서 ISP 계열 카드 결제를 위한 페이북 팝업 호출에 이슈가 있습니다. 이는 토스페이먼츠 결제창에서 페이북으로 넘어가는 과정에서 발생하는 이슈로 포트원과는 무관합니다.
+
사파리 브라우저에서 ISP 계열 카드 결제 불가능
+ 사파리 브라우저에서 ISP 계열 카드 결제를 위한 페이북 팝업 호출에 이슈가 있습니다. 이는 토스페이먼츠 결제창에서 페이북으로 넘어가는 과정에서 발생하는 이슈로 포트원과는 무관합니다.
## 가상계좌
-
가상계좌 발급 완료시 예금주 명 알 수 없음
-
-토스페이먼츠는 가상계좌 발급 완료시 발급 된 가상계좌의 **예금주 명을 전달해주지 않습니다**. 따라서 포트원 REST API로 결제내역 조회(GET `/payments/{imp_uid}`)시 `vbank_holder`가 null로 전달됩니다.
+
가상계좌 발급 완료시 예금주 명 알 수 없음
-실제 가상계좌 예금주 명은 토스페이먼츠와 계약된 고객사 이름과 동일하다고 하니, 참고 부탁드립니다.
+ 토스페이먼츠는 가상계좌 발급 완료시 발급 된 가상계좌의 **예금주 명을 전달해주지 않습니다**. 따라서 포트원 REST API로 결제내역 조회(GET `/payments/{imp_uid}`)시 `vbank_holder`가 null로 전달됩니다.
+ 실제 가상계좌 예금주 명은 토스페이먼츠와 계약된 고객사 이름과 동일하다고 하니, 참고 부탁드립니다.
## 간편결제
-
대부분의 간편결제에 대해 결제 테스트 불가능
-
-토스페이먼츠는 SSGPAY, 네이버페이, 카카오페이, 페이코 등 대부분의 간편결제에 대해 결제 테스트 기능을 제공하고 있지 않습니다. 따라서 테스트용 설정으로 간편결제를 시도하면 `[PAY_PROCESS_ABORTED] Toss Payments와 계약된 결제수단(SSG)이 아닙니다.` 와 같은 에러 메시지가 리턴되면서 결제창이 호출되지 않습니다. 이 경우 토스페이먼츠와 실 상점 계약을 하여 실 상점 정보를 포트원 관리자페이지에 다시 등록한 후 시도하셔야 합니다.
+
대부분의 간편결제에 대해 결제 테스트 불가능
+ 토스페이먼츠는 SSGPAY, 네이버페이, 카카오페이, 페이코 등 대부분의 간편결제에 대해 결제 테스트 기능을 제공하고 있지 않습니다. 따라서 테스트용 설정으로 간편결제를 시도하면 `[PAY_PROCESS_ABORTED] Toss Payments와 계약된 결제수단(SSG)이 아닙니다.` 와 같은 에러 메시지가 리턴되면서 결제창이 호출되지 않습니다. 이 경우 토스페이먼츠와 실 상점 계약을 하여 실 상점 정보를 포트원 관리자페이지에 다시 등록한 후 시도하셔야 합니다.
-
카드 외 복합 결제 건에 대해서는 정확한 결제 수단 정보 확인 불가능
+
카드 외 복합 결제 건에 대해서는 정확한 결제 수단 정보 확인 불가능
-간편결제로는 여러가지 결제수단으로 결제 할 수도 있고 각 결제 수단을 혼합하여 복합 결제를 할 수도 있습니다. 이때 토스페이먼츠는 구매자가 정확히 어떤 방식으로 결제했는지 데이터를 내려주지 않으며 그 내용은 아래와 같습니다.
-
-1. 카드로 결제한 경우에는 카드 정보(카드사, 카드 유형 등)를 확인할 수 있습니다.
-2. 하지만 카드 외의 결제 수단으로 결제를 한 경우에는, 결제 수단 세부 정보(어떤 은행, 포인트, 머니인지)를 확인할 수 없습니다.
-3. 카드가 포함 된 결제 건인지 아닌지는 구분이 됩니다. 따라서 카드가 포함 된 결제 건이면 결제 수단을 `card` 로 기록합니다.
-4. 하지만 계좌 / 포인트 / 머니 중 어떤 것으로 결제 됐는지 구분되지 않습니다. 따라서 카드가 포함 되지 않은 결제 건이면 결제 수단을 `point`로 기록합니다. 실제로 등록된 계좌로 결제 됐다고 하더라도 포인트나 머니로 결제 된 것과 구분되지 않기 때문에 결제 수단을 `trans`로 저장하지 않습니다.
+ 간편결제로는 여러가지 결제수단으로 결제 할 수도 있고 각 결제 수단을 혼합하여 복합 결제를 할 수도 있습니다. 이때 토스페이먼츠는 구매자가 정확히 어떤 방식으로 결제했는지 데이터를 내려주지 않으며 그 내용은 아래와 같습니다.
+ 1. 카드로 결제한 경우에는 카드 정보(카드사, 카드 유형 등)를 확인할 수 있습니다.
+ 2. 하지만 카드 외의 결제 수단으로 결제를 한 경우에는, 결제 수단 세부 정보(어떤 은행, 포인트, 머니인지)를 확인할 수 없습니다.
+ 3. 카드가 포함 된 결제 건인지 아닌지는 구분이 됩니다. 따라서 카드가 포함 된 결제 건이면 결제 수단을 `card` 로 기록합니다.
+ 4. 하지만 계좌 / 포인트 / 머니 중 어떤 것으로 결제 됐는지 구분되지 않습니다. 따라서 카드가 포함 되지 않은 결제 건이면 결제 수단을 `point`로 기록합니다. 실제로 등록된 계좌로 결제 됐다고 하더라도 포인트나 머니로 결제 된 것과 구분되지 않기 때문에 결제 수단을 `trans`로 저장하지 않습니다.
-
고정 할부 개월수 적용해도 일시불과 함께 표기
+
고정 할부 개월수 적용해도 일시불과 함께 표기
-네이버페이, L페이, 토스페이, 삼성페이 등 일부 간편결제사의 경우 해당 간편결제사의 정책에 따라 **고정 할부 개월수를 설정하더라도 일시불과 함께 렌더링**됩니다.
+ 네이버페이, L페이, 토스페이, 삼성페이 등 일부 간편결제사의 경우 해당 간편결제사의 정책에 따라 **고정 할부 개월수를 설정하더라도 일시불과 함께 렌더링**됩니다.
-- 예. 네이버페이 - 5개월 고정 할부 설정시, 일시불과 5개월 할부 모두 선택 가능
+ - 예. 네이버페이 - 5개월 고정 할부 설정시, 일시불과 5개월 할부 모두 선택 가능
- ```jsx
- {
- pay_method: 'naverpay',
- display: {
- card_quota: [5]
+ ```json
+ {
+ "pay_method": "naverpay",
+ "display": {
+ "card_quota": [5]
+ }
}
- }
- ```
-
-
+ ```
+
## 기타
@@ -262,60 +264,53 @@ card: {
- `cashReceiptType` 파라미터로 인한 오동작 관련 이슈
-
지출증빙 발급번호 이슈
-
-`bypass.cashReceiptType`(현금성 결제시, 결제창 내에 현금영수증 발급 유형 설정 값)을 corporate(지출 증빙)으로 설정하고 결제창을 호출하면 토스페이먼츠 결제창에서 현금영수증 발급 유형이 “지출증빙”으로 표기되어있으나 발급 번호가 사업자등록번호가 아닌 주민등록번호로 설정되어있으며 이를 변경할 수 없는 토스 버그가 있습니다. 따라서 구매자는 현금영수증 발급 유형을 지출증빙용이 아닌 소득공제용이나 미발행으로 바꿔서 선택한 후 다시 지출증빙용을 선택해야합니다.
+
지출증빙 발급번호 이슈
-
+ `bypass.cashReceiptType`(현금성 결제시, 결제창 내에 현금영수증 발급 유형 설정 값)을 corporate(지출 증빙)으로 설정하고 결제창을 호출하면 토스페이먼츠 결제창에서 현금영수증 발급 유형이 “지출증빙”으로 표기되어있으나 발급 번호가 사업자등록번호가 아닌 주민등록번호로 설정되어있으며 이를 변경할 수 없는 토스 버그가 있습니다. 따라서 구매자는 현금영수증 발급 유형을 지출증빙용이 아닌 소득공제용이나 미발행으로 바꿔서 선택한 후 다시 지출증빙용을 선택해야합니다.
+
-
간편결제 - SSG페이 결제시 토스페이먼츠 결제창에서 휴대폰 번호를 입력하지 않아도 다음으로 넘어가는 이슈
-
-간편결제 - SSG페이 결제시 토스페이먼츠 결제창에서 휴대폰 번호를 입력해야 구매자의 휴대폰에 깔린 SSG 페이 앱에서 푸쉬 알림이 오면서 결제를 할 수 있는데, 현재 토스페이먼츠 결제창에서 휴대폰 번호를 입력하지 않아도 다음 단계로 이동되기 때문에 구매자는 이 경우 무한 대기를 하게 됩니다. 휴대폰 번호를 입력을 하지 않은 경우엔 다음 단계로 이동할 수 없도록 토스 측의 조치가 필요합니다.![]()
+
간편결제 - SSG페이 결제시 토스페이먼츠 결제창에서 휴대폰 번호를 입력하지 않아도 다음으로 넘어가는 이슈
+ 간편결제 - SSG페이 결제시 토스페이먼츠 결제창에서 휴대폰 번호를 입력해야 구매자의 휴대폰에 깔린 SSG 페이 앱에서 푸쉬 알림이 오면서 결제를 할 수 있는데, 현재 토스페이먼츠 결제창에서 휴대폰 번호를 입력하지 않아도 다음 단계로 이동되기 때문에 구매자는 이 경우 무한 대기를 하게 됩니다. 휴대폰 번호를 입력을 하지 않은 경우엔 다음 단계로 이동할 수 없도록 토스 측의 조치가 필요합니다.![]()
-
삼성페이 결제 중단시 결제창 잘림 현상
-
-삼성페이 결제창 렌더링 후 장시간 대기했다가 우측 상단 X 버튼을 눌러 결제 프로세스를 중단하면 아래와 같이 잘린 화면이 렌더링됩니다. 가로 스크롤도 동작하지 않아(스크롤은 움직이지만 화면은 고정) 사용자 경험이 다소 저해됩니다.
+
삼성페이 결제 중단시 결제창 잘림 현상
-
+ 삼성페이 결제창 렌더링 후 장시간 대기했다가 우측 상단 X 버튼을 눌러 결제 프로세스를 중단하면 아래와 같이 잘린 화면이 렌더링됩니다. 가로 스크롤도 동작하지 않아(스크롤은 움직이지만 화면은 고정) 사용자 경험이 다소 저해됩니다.
+
-
현금영수증 발급 API 호출시 유효성 검사를 하지 않음
-
-예를 들어 현금영수증 발급 유형(type)을 소득공제(person)으로 보내고 현금영수증 발급 번호(identifier)를 사업자 등록번호로 보내면 실제로는 현금영수증 발급에 실패해야하지만 토스페이먼츠에서 유효성 검사를 하지 않아 그대로 성공 응답을 보내고 있습니다.
+
현금영수증 발급 API 호출시 유효성 검사를 하지 않음
-따라서 원활한 현금영수증 발급을 위해서는 현금영수증 발급 API 호출시 현금영수증 정보를 정확하게 입력하셔야 합니다.
+ 예를 들어 현금영수증 발급 유형(type)을 소득공제(person)으로 보내고 현금영수증 발급 번호(identifier)를 사업자 등록번호로 보내면 실제로는 현금영수증 발급에 실패해야하지만 토스페이먼츠에서 유효성 검사를 하지 않아 그대로 성공 응답을 보내고 있습니다.
+ 따라서 원활한 현금영수증 발급을 위해서는 현금영수증 발급 API 호출시 현금영수증 정보를 정확하게 입력하셔야 합니다.
-
사파리 / 파이어폭스 브라우저 내 팝업 블로커 이슈
-
-사파리 / 파이어폭스 브라우저에서 설정에서 팝업이 차단되어있는 경우 페이북 결제시 팝업이 뜨지 않아 결제 진행이 되지 않거나 가상계좌 발급이나 휴대폰 소액결제시 승인에 실패하는 등 결제가 원활하게 진행되지 않을 수 있으니, 반드시 팝업을 해제하시고 시도해주시기 바랍니다.
+
사파리 / 파이어폭스 브라우저 내 팝업 블로커 이슈
+ 사파리 / 파이어폭스 브라우저에서 설정에서 팝업이 차단되어있는 경우 페이북 결제시 팝업이 뜨지 않아 결제 진행이 되지 않거나 가상계좌 발급이나 휴대폰 소액결제시 승인에 실패하는 등 결제가 원활하게 진행되지 않을 수 있으니, 반드시 팝업을 해제하시고 시도해주시기 바랍니다.
-
IE 브라우저 - 카드결제 - 페이코 선택시 아래와 같이 결제창이 잘리는 이슈
-
-이에 대해 토스로부터 “IE 에서 fade out 이 되고 있으므로 수정에 우선순위를 두기 어려울것 같습니다.”라는 답변을 받았습니다.
+
IE 브라우저 - 카드결제 - 페이코 선택시 아래와 같이 결제창이 잘리는 이슈
+ 이에 대해 토스로부터 “IE 에서 fade out 이 되고 있으므로 수정에 우선순위를 두기 어려울것 같습니다.”라는 답변을 받았습니다.
-
IE 브라우저 결제 중단시 에러 메시지 인코딩 이슈
-
-IE 브라우저에서 결제 중단(결제 승인/실패 이전에 결제창을 명시적으로 닫을때)시 토스페이먼츠로부터 아래와 같이 인코딩 된 에러 메시지가 전달되는 이슈가 있습니다. (이를 디코딩해보면 “사용자가결제를취소하였습니다”라는 메시지)
+
IE 브라우저 결제 중단시 에러 메시지 인코딩 이슈
-`%EC%82%AC%EC%9A%A9%EC%9E%90%EA%B0%80 %EA%B2%B0%EC%A0%9C%EB%A5%BC %EC%B7%A8%EC%86%8C%ED%95%98%EC%98%80%EC%8A%B5%EB%8B%88%EB%8B%A4`
+ IE 브라우저에서 결제 중단(결제 승인/실패 이전에 결제창을 명시적으로 닫을때)시 토스페이먼츠로부터 아래와 같이 인코딩 된 에러 메시지가 전달되는 이슈가 있습니다. (이를 디코딩해보면 “사용자가결제를취소하였습니다”라는 메시지)
-이에 대해 토스로부터 “IE 의 인코딩 이슈라서 저희가 수정해 드리기가 애매하고, 내부적으로 IE 는 fadeout 되어 더 이상 공식적으로 지원을 하지 않고 있습니다.”라는 답변을 받았습니다.
+ `%EC%82%AC%EC%9A%A9%EC%9E%90%EA%B0%80 %EA%B2%B0%EC%A0%9C%EB%A5%BC %EC%B7%A8%EC%86%8C%ED%95%98%EC%98%80%EC%8A%B5%EB%8B%88%EB%8B%A4`
+ 이에 대해 토스로부터 “IE 의 인코딩 이슈라서 저희가 수정해 드리기가 애매하고, 내부적으로 IE 는 fadeout 되어 더 이상 공식적으로 지원을 하지 않고 있습니다.”라는 답변을 받았습니다.
diff --git a/src/content/docs/ko/pg/payment-gateway/nhn-kcp.mdx b/src/content/docs/ko/pg/payment-gateway/nhn-kcp.mdx
index 35f6d4263..b42c0d613 100644
--- a/src/content/docs/ko/pg/payment-gateway/nhn-kcp.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/nhn-kcp.mdx
@@ -3,12 +3,12 @@ title: NHN KCP
description: NHN KCP 결제창 연동 가이드입니다.
---
+import Figure from "~/components/Figure.astro";
import Codepen from "~/components/gitbook/Codepen.astro";
import ContentRef from "~/components/gitbook/ContentRef.astro";
-import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 1. NHN KCP 채널 설정하기
@@ -16,523 +16,542 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
-## 2.결제 요청하기
+## 2. 결제 요청하기
[JavaScript SDK](../../sdk/javascript-sdk/readme) `IMP.request_pay(param, callback)`을 호출하여 NHN
KCP 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 `IMP.request_pay(param, callback)` 호출 후
**callback** 으로 수신되고
-모바일의 경우 **m_redirect_url** 로 리디렉션됩니다.
+모바일의 경우 **m\_redirect\_url** 로 리디렉션됩니다.
-
-```javascript
-IMP.request_pay({
- pg : 'kcp.{사이트코드}', //테스트인경우 kcp.T0000
- pay_method : 'card',
- merchant_uid: "order_no_0001", //상점에서 생성한 고유 주문번호
- name : '주문명:결제테스트',
- amount : 1004,
- company : '상호명',//해당 파라미터 설정시 통합결제창에 해당 상호명이 노출됩니다.
- buyer_email : 'test@portone.io',
- buyer_name : '구매자이름',
- buyer_tel : '010-1234-5678',
- buyer_addr : '서울특별시 강남구 삼성동',
- buyer_postcode : '123-456',
- language : 'ko', // en 설정시 영문으로 출력되면 해당 파라미터 생략시 한국어 default
- m_redirect_url : '{모바일에서 결제 완료 후 리디렉션 될 URL}',
- auth_mode:'key-in' // 키인결제(일회성 결제)이용시 설정
-}, function(rsp) { // callback 로직
- //* ...중략... *//
-});
-```
-
-## 주요 파라미터 설명
-
-**`pg`** **\*** **string**
-
-**PG사 구분코드**
-
-`kcp.{사이트코드}`
-
-사이트코드 값은 KCP 계약 후 KCP로 부터 발급받을수 있습니다.
-
-**`pay_method`** **\*** **string**
-
-**결제수단 구분코드**
-
-- card (신용카드)
-- samsung (삼성페이)
-- trans (실시간 계좌이체)
-- vbank(가상계좌)
-- phone (휴대폰소액결제)
-- payco (페이코 허브형)
-- lpay(L페이 허브형)
-- cultureland (문화상품권)
-- smartculture (스마트문상)
-- happymoney (해피머니)
-- booknlife (도서문화상품권)
-- point (베네피아 포인트)
-- kakaopay(카카오페이)
-- naverpay(네이버페이)
-- applepay(애플페이)
-
-**`merchant_uid`** **\*** **string**
-
-**주문번호**
-
-매번 고유하게 채번되어야 합니다.
-
-**`amount`** **\*** **integer**
-
-**결제금액**
-
-**string** 이 아닌점에 유의하세요
-
-
-**payco 허브형**인 경우 KCP 관리자페이지 신청 및 설정이 필요합니다.
-
-신청안내 링크 : [https://sir.kr/main/service/p_payco_hub.php](https://sir.kr/main/service/p_payco_hub.php)
-
-
-
-
-
-
-
-
-인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다. 비인증 결제창에서 빌링키를 발급받은 후 해당 빌링키로 결제를 요청합니다.
-
-```javascript title="Javascript SDK" showLineNumbers
-IMP.request_pay(
- {
- pg: "kcp_billing.{사이트코드}",
- pay_method: "card", // 'card'만 지원됩니다.
- merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
- name: "최초인증결제",
- amount: 0, // 결제창에 표시될 금액. 실제 승인이 이뤄지지는 않습니다.
- customer_uid: "your-customer-unique-id", // 필수 입력.
- buyer_email: "test@portone.io",
- buyer_name: "포트원",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
- },
- function (rsp) {
- if (rsp.success) {
- alert("빌링키 발급 성공");
- } else {
- alert("빌링키 발급 실패");
- }
- }
-);
-```
+
+ ```ts
+ IMP.request_pay(
+ {
+ pg: "kcp.{사이트코드}", //테스트인경우 kcp.T0000
+ pay_method: "card",
+ merchant_uid: "order_no_0001", //상점에서 생성한 고유 주문번호
+ name: "주문명:결제테스트",
+ amount: 1004,
+ company: "상호명", //해당 파라미터 설정시 통합결제창에 해당 상호명이 노출됩니다.
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ language: "ko", // en 설정시 영문으로 출력되면 해당 파라미터 생략시 한국어 default
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ auth_mode: "key-in", // 키인결제(일회성 결제)이용시 설정
+ },
+ function (rsp) {
+ // callback 로직
+ //* ...중략... *//
+ },
+ );
+ ```
+
+ ## 주요 파라미터 설명
+
+ **`pg`** **\*** **string**
+
+ **PG사 구분코드**
+
+ `kcp.{사이트코드}`
+
+ 사이트코드 값은 KCP 계약 후 KCP로 부터 발급받을수 있습니다.
+
+ **`pay_method`** **\*** **string**
+
+ **결제수단 구분코드**
+
+ - card (신용카드)
+ - samsung (삼성페이)
+ - trans (실시간 계좌이체)
+ - vbank(가상계좌)
+ - phone (휴대폰소액결제)
+ - payco (페이코 허브형)
+ - lpay(L페이 허브형)
+ - cultureland (문화상품권)
+ - smartculture (스마트문상)
+ - happymoney (해피머니)
+ - booknlife (도서문화상품권)
+ - point (베네피아 포인트)
+ - kakaopay(카카오페이)
+ - naverpay(네이버페이)
+ - applepay(애플페이)
+
+ **`merchant_uid`** **\*** **string**
+
+ **주문번호**
+
+ 매번 고유하게 채번되어야 합니다.
-
-- 비인증 결제를 위해서는 **KCP와 협의가 완료된 사이트코드**를 관리자콘솔에 설정하셔야 비인증 결제창을 활성화 시킬수 있습니다.
-- KCP는 빌링키 발급시 **실 결제는 발생되지 않습니다**.(금액을 지정해도 결제가 발생되지 않음)
+ **`amount`** **\*** **integer**
-
+ **결제금액**
-## 주요 파라미터 설명
+ **string** 이 아닌점에 유의하세요
+
+
+ **payco 허브형**인 경우 KCP 관리자페이지 신청 및 설정이 필요합니다.
-**`pg`** **\*** **string**
+ 신청안내 링크 : [https://sir.kr/main/service/p\_payco\_hub.php](https://sir.kr/main/service/p_payco_hub.php)
+
-**PG사 구분코드**
+
+
-`kcp_billing.{사이트코드}`
+
+ 인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다. 비인증 결제창에서 빌링키를 발급받은 후 해당 빌링키로 결제를 요청합니다.
-사이트코드 값은 KCP 계약 후 KCP로 부터 발급받을수 있습니다.
+ ```ts title="Javascript SDK" showLineNumbers
+ IMP.request_pay(
+ {
+ pg: "kcp_billing.{사이트코드}",
+ pay_method: "card", // 'card'만 지원됩니다.
+ merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
+ name: "최초인증결제",
+ amount: 0, // 결제창에 표시될 금액. 실제 승인이 이뤄지지는 않습니다.
+ customer_uid: "your-customer-unique-id", // 필수 입력.
+ buyer_email: "test@portone.io",
+ buyer_name: "포트원",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("빌링키 발급 성공");
+ } else {
+ alert("빌링키 발급 실패");
+ }
+ },
+ );
+ ```
-**`customer_uid`** **\*** **string**
+
+ - 비인증 결제를 위해서는 **KCP와 협의가 완료된 사이트코드**를 관리자콘솔에 설정하셔야 비인증 결제창을 활성화 시킬수 있습니다.
+ - KCP는 빌링키 발급시 **실 결제는 발생되지 않습니다**.(금액을 지정해도 결제가 발생되지 않음)
+
-**카드 빌링키**
+ ## 주요 파라미터 설명
-비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
+ **`pg`** **\*** **string**
-**`amount`** **\*** **Integer**
+ **PG사 구분코드**
-**결제금액**
+ `kcp_billing.{사이트코드}`
-결제창에 표시될 금액으로 실제 승인은 이루어지지 않습니다.(실 결제를 발생시키기 위해서는 **customer_uid** 로 **REST API 를 이용하여 결제요청**을 해주셔야 합니다.)
+ 사이트코드 값은 KCP 계약 후 KCP로 부터 발급받을수 있습니다.
-## 빌링키(customer\_uid)로 결제 요청하기
+ **`customer_uid`** **\*** **string**
-빌링키 발급이 성공하면 실 빌링키는 customer_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. customer_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api)를 호출하시면 결제를 발생시킬 수 있습니다.
+ **카드 빌링키**
-```sh title="server-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ 비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
-**API 방식으로 빌링키 발급,결제요청,예약결제를 구현할수 있습니다.**
+ **`amount`** **\*** **Integer**
-
+ **결제금액**
-
-## 일회성 결제 요청하기
+ 결제창에 표시될 금액으로 실제 승인은 이루어지지 않습니다.
+ (실 결제를 발생시키기 위해서는 **customer\_uid** 로 **REST API 를 이용하여 결제요청**을 해주셔야 합니다.)
-REST [**API POST /subscribe/payments/onetime**](../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
+ ## 빌링키(customer\_uid)로 결제 요청하기
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ 빌링키 발급이 성공하면 실 빌링키는 customer\_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다.
+ customer\_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api)를 호출하시면
+ 결제를 발생시킬 수 있습니다.
-## 빌링키 발급 요청하기
+ ```sh title="server-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-REST [**API POST /subscribe/customers/\{customer\_uid}**](../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
+ **API 방식으로 빌링키 발급,결제요청,예약결제를 구현할수 있습니다.**
+
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
+
+ ## 일회성 결제 요청하기
-## 빌링키 발급 및 최초 결제 요청하기
+ REST [**API POST /subscribe/payments/onetime**](../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다.
+ 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
-REST [**API POST /subscribe/payments/onetime**](../../api/api-4/api-1)을 호출하여 빌링키 발급과 최초 결제를 요청합니다.
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-- **`customer_uid`** : 빌링키 등록을 위해서 지정해야 합니다.
+ ## 빌링키 발급 요청하기
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ REST [**API POST /subscribe/customers/\{customer\_uid}**](../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
-## 빌링키로 결제 요청하기
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
+ ## 빌링키 발급 및 최초 결제 요청하기
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ REST [**API POST /subscribe/payments/onetime**](../../api/api-4/api-1)을 호출하여 빌링키 발급과 최초 결제를 요청합니다.
-**자세한 가이드는 아래 링크를 참조하세요**
+ - **`customer_uid`** : 빌링키 등록을 위해서 지정해야 합니다.
-
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-
+ ## 빌링키로 결제 요청하기
+
+ 빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다.
+ 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서
+ 재결제([**POST /subscribe/payments/again**](../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
+
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
+ **자세한 가이드는 아래 링크를 참조하세요**
+
+
+
## 3. 부가기능
-
-```javascript title="javascript"
-display: {
- card_quota: [6] // 할부개월 6개월까지만 활성화
-}
-```
-
-**파라미터 설명**
-
-- **card_quota :**
- - `[]`: 일시불만 결제 가능
- - `2,3,4,5,6`: 일시불을 포함한 2, 3, 4, 5, 6개월까지 할부개월 선택 가능\\
-
-
-할부결제는 **5만원 이상 결제 요청시**에만 이용 가능합니다.
-
-
-
-할부개월수 **3개월****까지 활성화 예제**
-
-
-
-
-
-
-```javascript title="javascript"
-{
- card: {
- direct: {
- code: "367",
- quota: 3
- // 카드사 포인트 사용 경우
- // quota: 80 = 80(현대카드 포인트 할부개월) + 0(일시불)
- // quota: 93 = 80(현대카드 포인트 할부개월) + 13개월 할부
- // quota: 60 = 60(기타카드 포인트 할부개월) + 0(일시불)
- // quota: 63 = 60(기타카드 포인트 할부개월) + 3개월 할부
+
+ ```json
+ {
+ "display": {
+ "card_quota": [6] // 할부개월 6개월까지만 활성화
+ }
+ }
+ ```
+
+ **파라미터 설명**
+
+ - **card\_quota :**
+ - `[]`: 일시불만 결제 가능
+ - `2,3,4,5,6`: 일시불을 포함한 2, 3, 4, 5, 6개월까지 할부개월 선택 가능\\
+
+
+ 할부결제는 **5만원 이상 결제 요청시**에만 이용 가능합니다.
+
+
+ 할부개월수 **3개월****까지 활성화 예제**
+
+
+
+
+
+ ```json
+ {
+ "card": {
+ "direct": {
+ "code": "367",
+ "quota": 3
+ // 카드사 포인트 사용 경우
+ // quota: 80 = 80(현대카드 포인트 할부개월) + 0(일시불)
+ // quota: 93 = 80(현대카드 포인트 할부개월) + 13개월 할부
+ // quota: 60 = 60(기타카드 포인트 할부개월) + 0(일시불)
+ // quota: 63 = 60(기타카드 포인트 할부개월) + 3개월 할부
+ }
+ },
+ "company": "고객사", // 해당 파라미터를 설정하지 않으면 카드사 모듈 창에 import 로 표기
+ }
+ ```
+
+ **파라미터 설명**
+
+ - **code**: 카드사 금융결제원 표준 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string**)
+
+ - **quota**: 할부 개월 수. 일시불일 시 0 으로 지정. 만약, 신용 카드사 포인트를 사용할 경우 카드사별 포인트 할부개월\[1]을 할부 개월 수에 더해줘야 합니다. (**integer**)
+
+
+ \[1] 카드사별 포인트 할부개월
+
+
+
+
+
+
카드사 포인트
+
+
+
+
포인트 할부개월
+
+
+
+
+
+
현대M
+
+
+
+
+80
+
+
+
+
+
+
국민
+
+
+
+
+60
+
+
+
+
+
+
비씨
+
+
+
+
+60
+
+
+
+
+
+
삼성
+
+
+
+
+60
+
+
+
+
+
+
하나/외환
+
+
+
+
+60
+
+
+
+
+
+
롯데
+
+
+
+
+60
+
+
+
+
+
+
신한
+
+
+
+
+60
+
+
+
+
+
+
농협
+
+
+
+
+60
+
+
+
+
+
+
씨티
+
+
+
+
+60
+
+
+
+
+
+
우리
+
+
+
+
+60
+
+
+
+
+
+
+
+ **주의사항**
+
+ - 현재 **KG이니시스, KCP, 토스페이먼츠, 나이스페이먼츠, KICC, 다날** 6개 PG사에 대해서만 카드사 결제창 direct 호출이 가능합니다.
+ - 일부 PG사의 경우, 모든 상점아이디에 대하여 카드사 결제창 direct 노출 기능을 지원하지 않습니다. 반드시 포트원을 통해 현재 사용중인 상점아이디가 카드사 결제창 direct 호출이 가능하도록 설정이 되어있는지 PG사에 확인이 필요합니다.
+
+
+ **현대카드** 결제모듈 바로 호출 예제
+
+
+
+
+
+ ```json
+ {
+ "card": {
+ "detail": [
+ { "card_code": "*", "enabled": false }, // 모든 카드사 비활성화
+ { "card_code": "366", "enabled": true } // 특정 카드만 활성화
+ ]
+ }
+ }
+ ```
+
+ **파라미터 설명**
+
+ - **card\_code :** 금결원 카드사코드 [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string)**
+ - **enabled :** 해당카드 활성화 여부 (**boolean)**
+
+ **신한카드****만 결제창 노출 처리 예제**
+
+
+
+
+
+ 인증결제시 각 카드사 앱카드 결제 화면만 노출하고 싶은 경우 아래 파라미터를 설정하시면 됩니다.
+
+ ```json
+ {
+ "appCard": true //true 설정시 각 카드사 앱카드 결제만 활성화
}
- },
- company: "고객사", // 해당 파라미터를 설정하지 않으면 카드사 모듈 창에 import 로 표기
-}
-````
-
-**파라미터 설명**
-
-- **code**: 카드사 금융결제원 표준 코드. [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string**)
-- **quota**: 할부 개월 수. 일시불일 시 0 으로 지정. 만약, 신용 카드사 포인트를 사용할 경우 카드사별 포인트 할부개월[1]을 할부 개월 수에 더해줘야 합니다. (**integer**)
-
- [1] 카드사별 포인트 할부개월
-
-
-
-
-
-
카드사 포인트
-
-
-
포인트 할부개월
-
-
-
-
-
현대M
-
-
-
+80
-
-
-
-
-
국민
-
-
-
+60
-
-
-
-
-
비씨
-
-
-
+60
-
-
-
-
-
삼성
-
-
-
+60
-
-
-
-
-
하나/외환
-
-
-
+60
-
-
-
-
-
롯데
-
-
-
+60
-
-
-
-
-
신한
-
-
-
+60
-
-
-
-
-
농협
-
-
-
+60
-
-
-
-
-
씨티
-
-
-
+60
-
-
-
-
-
우리
-
-
-
+60
-
-
-
-
-
-
-
-**주의사항**
-
-- 현재 **KG이니시스, KCP, 토스페이먼츠, 나이스페이먼츠, KICC, 다날** 6개 PG사에 대해서만 카드사 결제창 direct 호출이 가능합니다.
-- 일부 PG사의 경우, 모든 상점아이디에 대하여 카드사 결제창 direct 노출 기능을 지원하지 않습니다. 반드시 포트원을 통해 현재 사용중인 상점아이디가 카드사 결제창 direct 호출이 가능하도록 설정이 되어있는지 PG사에 확인이 필요합니다.
-
-
-
-**현대카드** 결제모듈 바로 호출 예제
-
-
-
-
-
-
-```javascript
-{
- card: {
- detail: [
- { card_code: "*", enabled: false }, // 모든 카드사 비활성화
- { card_code: "366", enabled: true } // 특정 카드만 활성화
- ]
- }
-}
-````
-
-**파라미터 설명**
-
-- **card_code :** 금결원 카드사코드 [**링크**](https://faq.portone.io/6503bcb4-4a61-4cf3-afd8-5d913b1385a6) 참조 (**string)**
-- **enabled :** 해당카드 활성화 여부 (**boolean)**
-
-**신한카드****만 결제창 노출 처리 예제**
-
-
-
-
-
-
-인증결제시 각 카드사 앱카드 결제 화면만 노출하고 싶은 경우 아래 파라미터를 설정하시면 됩니다.
-
-```javascript title="request_pay()"
-{
- appCard: true; //true 설정시 각 카드사 앱카드 결제만 활성화
-}
-```
-
-
+ ```
+
## 4. 기타 파라미터
-
-**상품권 결제수단**을 사용하기 위해서는 고객사에서 관리하는 회원ID를 아래와 같은 방법으로 파라미터 설정이 필요합니다.
-
-```javascript title="javascript SDK"
-{
- bypass: {
- shop_user_id: "ABCD123"; // 고객사 회원ID (20byte)
- }
-}
-```
-
-
-**상품권 기관 RM 조치를 위해 필수적으로 실어주셔야 합니다.**
-
-
-
-**컬처랜드 문화 상품권을 호출하는 경우**
-
-```javascript
-IMP.request_pay({
- pg: "kcp.{문화상품권 대상 사이트코드}",
- pay_method: "cultureland", //문화상품권
- merchant_uid: "A00021-TEST",
- name: "당근 10kg",
- amount: 1004,
- buyer_email: "iamport@chai.finance",
- buyer_name: "포트원 기술지원팀",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456",
- bypass: {
- shop_user_id: "abaddd", // 고객사 회원 id기재
- },
-});
-```
-
-
-
-
-에스크로 결제를 위해서는 **`escrow`** 파라미터를 추가하고 **true** 값으로 설정되어야 합니다. 에스크로 결제요청 시 **장바구니 상품을 묶어서 결제하는 경우** 해당 품목에 대한 정보를 전달하기 위해 해당 상품관련 정보를 추가 파라미터(**`kcpProducts`**)로 전달해야 합니다.\
-\*\*`kcpProducts`\*\*는 다음 4개의 필수 속성으로 구성된 객체배열입니다.
-
-**`amount`** 값은 결제 금액(`param.amount`) 값과 관계가 없으며 비교검증되지 않습니다.
-
-- orderNumber : 상품주문번호
-- name : 상품명
-- quantity : 수량
-- amount : 상품 가격
-
-```javascript title="JavaScript SDK"
-IMP.request_pay({
- pg: "kcp",
- escrow: true, // 에스크로 결제인 경우 필요
- kcpProducts: [
+
+ **상품권 결제수단**을 사용하기 위해서는 고객사에서 관리하는 회원ID를 아래와 같은 방법으로 파라미터 설정이 필요합니다.
+
+ ```json
{
- orderNumber: "xxxx",
- name: "상품A",
- quantity: 3,
- amount: 1000,
- },
+ "bypass": {
+ "shop_user_id": "ABCD123" // 고객사 회원ID (20byte)
+ }
+ }
+ ```
+
+
+ **상품권 기관 RM 조치를 위해 필수적으로 실어주셔야 합니다.**
+
+
+ **컬처랜드 문화 상품권을 호출하는 경우**
+
+ ```ts
+ IMP.request_pay({
+ pg: "kcp.{문화상품권 대상 사이트코드}",
+ pay_method: "cultureland", //문화상품권
+ merchant_uid: "A00021-TEST",
+ name: "당근 10kg",
+ amount: 1004,
+ buyer_email: "iamport@chai.finance",
+ buyer_name: "포트원 기술지원팀",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ bypass: {
+ shop_user_id: "abaddd", // 고객사 회원 id기재
+ },
+ });
+ ```
+
+
+
+ 에스크로 결제를 위해서는 **`escrow`** 파라미터를 추가하고 **true** 값으로 설정되어야 합니다.
+ 에스크로 결제요청 시 **장바구니 상품을 묶어서 결제하는 경우**
+ 해당 품목에 대한 정보를 전달하기 위해 해당 상품관련 정보를 추가 파라미터(**`kcpProducts`**)로 전달해야 합니다.\
+ **`kcpProducts`** 는 다음 4개의 필수 속성으로 구성된 객체배열입니다.
+
+ **`amount`** 값은 결제 금액(`param.amount`) 값과 관계가 없으며 비교검증되지 않습니다.
+
+ - orderNumber : 상품주문번호
+ - name : 상품명
+ - quantity : 수량
+ - amount : 상품 가격
+
+ ```ts title="JavaScript SDK"
+ IMP.request_pay({
+ pg: "kcp",
+ escrow: true, // 에스크로 결제인 경우 필요
+ kcpProducts: [
+ {
+ orderNumber: "xxxx",
+ name: "상품A",
+ quantity: 3,
+ amount: 1000,
+ },
+ {
+ orderNumber: "yyyy",
+ name: "상품B",
+ quantity: 2,
+ amount: 3000,
+ },
+ ],
+ /* ...중략 (README 파일에서 상세 샘플코드를 확인하세요)... */
+ });
+ ```
+
+
+
+ ```json
{
- orderNumber: "yyyy",
- name: "상품B",
- quantity: 2,
- amount: 3000,
- },
- ],
- /* ...중략 (README 파일에서 상세 샘플코드를 확인하세요)... */
-});
-```
-
-
-
-
-```javascript title="request_pay()"
-{
- prefill: {
- phoneNumber: "고정할 휴대폰번호"
- }
-}
-```
-
-숫자만 입력하세요
-
-
-
-
-```javascript
-IMP.request_pay({
- ...
- bypass: {
- coupon_apply_yn: "Y", // 미사용시 "N"
- },
- ...
-});
-```
-
-인증 결제창내 할인쿠폰 UX를 활성/비활성화 할 수 있습니다.
-해당 기능은 KCP와 협의 후 사용 가능 합니다.
-
-
-
-
-```javascript
-IMP.request_pay({
- ...
- bypass : {
- batch_birth_day_yn: "Y", // 결제창 렌더링 시 생년월일 입력 박스 고정 활성화
- }
- ...
-});
-```
-
-NHN KCP 결제창을 이용한 빌링키 발급 시 PC 환경에서 공인인증서 절차를 생략하는 경우
-카드 정보 입력 화면에서 생년월일 입력 박스가 표시되도록 고정시킬 수 있습니다.
-해당 파라미터를 설정하지 않고 빌링키 발급 진행 시 최초 주민등록번호 입력 박스가 표시되며, 카드 정보 8자리 입력 시 생년월일 입력 박스로 변환됩니다.
-
-
-
+ "prefill": {
+ "phoneNumber": "고정할 휴대폰번호"
+ }
+ }
+ ```
+
+ 숫자만 입력하세요
+
+
+
+ ```ts
+ IMP.request_pay({
+ // ...
+ bypass: {
+ coupon_apply_yn: "Y", // 미사용시 "N"
+ },
+ // ...
+ });
+ ```
+
+ 인증 결제창내 할인쿠폰 UX를 활성/비활성화 할 수 있습니다.
+ 해당 기능은 KCP와 협의 후 사용 가능 합니다.
+
+
+
+ ```ts
+ IMP.request_pay({
+ // ...
+ bypass: {
+ batch_birth_day_yn: "Y", // 결제창 렌더링 시 생년월일 입력 박스 고정 활성화
+ },
+ // ...
+ });
+ ```
+
+ NHN KCP 결제창을 이용한 빌링키 발급 시 PC 환경에서 공인인증서 절차를 생략하는 경우
+ 카드 정보 입력 화면에서 생년월일 입력 박스가 표시되도록 고정시킬 수 있습니다.
+ 해당 파라미터를 설정하지 않고 빌링키 발급 진행 시 최초 주민등록번호 입력 박스가 표시되며, 카드 정보 8자리 입력 시 생년월일 입력 박스로 변환됩니다.
+
diff --git a/src/content/docs/ko/pg/payment-gateway/nice-v2/billing-api-caution.mdx b/src/content/docs/ko/pg/payment-gateway/nice-v2/billing-api-caution.mdx
index 36992a546..5236aef17 100644
--- a/src/content/docs/ko/pg/payment-gateway/nice-v2/billing-api-caution.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/nice-v2/billing-api-caution.mdx
@@ -18,7 +18,7 @@ import Details from "~/components/gitbook/Details.astro";
## 빌링키 발급
-(신) 나이스페이먼츠 빌링키 발급은 API 방식(POST /subscrie/customers/"customer\_uid")만 지원합니다.
+(신) 나이스페이먼츠 빌링키 발급은 API 방식(`POST /subscribe/customers/{customer_uid}`)만 지원합니다.
## 비인증 결제
@@ -62,7 +62,8 @@ import Details from "~/components/gitbook/Details.astro";
### 배송 정보 수정 불가
-(신) 나이스페이먼츠는 `POST /escrow/logis/{imp_uid}` API로 에스크로 배송 정보 등록은 가능하지만 `PUT /escrow/logis/{imp_uid}` API로 **수정은 불가능**합니다.
+(신) 나이스페이먼츠는 `POST /escrow/logis/{imp_uid}` API로 에스크로 배송 정보 등록은 가능하지만
+`PUT /escrow/logis/{imp_uid}` API로 **수정은 불가능**합니다.
## 현금영수증
@@ -70,7 +71,7 @@ import Details from "~/components/gitbook/Details.astro";
(신) 나이스페이먼츠의 경우 현금성 결제(가상계좌, 계좌이체, 네이버페이 포인트 결제 등)시 승인 단계에서
현금영수증을 발급 요청할 수 있습니다. 이때 결제 승인 단계에서 현금영수증을 발급 요청하지 못한 경우,
-현금영수증 발급 API(`POST /receipts/"imp_uid"`)를 사용한다고 하더라도 발급이 되지 않으니 참고 부탁드립니다.
+현금영수증 발급 API(`POST /receipts/{imp_uid}`)를 사용한다고 하더라도 발급이 되지 않으니 참고 부탁드립니다.
### API로 현금영수증 발급 시, 현금영수증 카드 사용 불가능
@@ -81,14 +82,14 @@ API로 현금영수증 발급(`POST /receipts/{imp_uid}`)시 발급 받을 현
\[가능] 사업자 등록번호로 지출증빙용 현금영수증 발급
- ```json
- // POST /receipts/{imp_uid}
+ ```http
+ POST /receipts/{imp_uid}
{
// ...중략
- type: "company", // 현금영수증 발급 유형: 지출증빙
- identifier: "1178178260", // 현금영수증 발행 식별 정보: 사업자 등록번호
- identifier_type: "business" // 현금영수증 발행 식별 정보 유형: 사업자 등록번호
+ "type": "company", // 현금영수증 발급 유형: 지출증빙
+ "identifier": "1178178260", // 현금영수증 발행 식별 정보: 사업자 등록번호
+ "identifier_type": "business" // 현금영수증 발행 식별 정보 유형: 사업자 등록번호
}
```
@@ -96,14 +97,14 @@ API로 현금영수증 발급(`POST /receipts/{imp_uid}`)시 발급 받을 현
\[가능] 휴대폰 번호로 소득공제용 현금영수증 발급
- ```json
- // POST /receipts/{imp_uid}
+ ```http
+ POST /receipts/{imp_uid}
{
// ...중략
- type: "personal", // 현금영수증 발급 유형: 소득공제
- identifier: "01012345678", // 현금영수증 발행 식별 정보: 휴대폰 번호
- identifier_type: "phone" // 현금영수증 발행 식별 정보 유형: 휴대폰 번호
+ "type": "personal", // 현금영수증 발급 유형: 소득공제
+ "identifier": "01012345678", // 현금영수증 발행 식별 정보: 휴대폰 번호
+ "wdentifier_type": "phone" // 현금영수증 발행 식별 정보 유형: 휴대폰 번호
}
```
@@ -111,14 +112,14 @@ API로 현금영수증 발급(`POST /receipts/{imp_uid}`)시 발급 받을 현
\[가능] 주민등록번호로 소득공제용 현금영수증 발급
- ```json
- // POST /receipts/{imp_uid}
+ ```http
+ POST /receipts/{imp_uid}
{
// ...중략
- type: "personal", // 현금영수증 발급 유형: 소득공제
- identifier: "9010102012345", // 현금영수증 발행 식별 정보: 주민등록번호
- identifier_type: "person" // 현금영수증 발행 식별 정보 유형: 주민등록번호
+ "type": "personal", // 현금영수증 발급 유형: 소득공제
+ "identifier": "9010102012345", // 현금영수증 발행 식별 정보: 주민등록번호
+ "identifier_type": "person" // 현금영수증 발행 식별 정보 유형: 주민등록번호
}
```
@@ -126,14 +127,14 @@ API로 현금영수증 발급(`POST /receipts/{imp_uid}`)시 발급 받을 현
\[불가능] 현금영수증 카드번호로 소득공제용 현금영수증 발급
- ```json
- // POST /receipts/{imp_uid}
+ ```http
+ POST /receipts/{imp_uid}
{
// ...중략
- type: "personal", // 현금영수증 발급 유형: 소득공제
- identifier: "123456789012", // 현금영수증 발행 식별 정보: 현금영수증 카드번호
- identifier_type: "taxcard" // 현금영수증 발행 식별 정보 유형: 현금영수증 카드번호
+ "type": "personal", // 현금영수증 발급 유형: 소득공제
+ "identifier": "123456789012", // 현금영수증 발행 식별 정보: 현금영수증 카드번호
+ "identifier_type": "taxcard" // 현금영수증 발행 식별 정보 유형: 현금영수증 카드번호
}
```
diff --git a/src/content/docs/ko/pg/payment-gateway/nice-v2/payment-caution.mdx b/src/content/docs/ko/pg/payment-gateway/nice-v2/payment-caution.mdx
index d2eae66c7..83a1228c9 100644
--- a/src/content/docs/ko/pg/payment-gateway/nice-v2/payment-caution.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/nice-v2/payment-caution.mdx
@@ -3,23 +3,30 @@ title: 일반결제 연동 유의사항
description: 나이스페이먼츠(신모듈) 일반결제 연동 유의사항을 소개합니다.
---
-import Details from "~/components/gitbook/Details.astro";
import Figure from "~/components/Figure.astro";
+import Details from "~/components/gitbook/Details.astro";
+
+import screenshot2 from "./_assets/caution/escrow-trans.png";
+import screenshot1 from "./_assets/caution/only-list-installment-on-mobile.png";
+import screenshot3 from "./_assets/caution/receipts-list-on-v1-console.png";
## 결제창 호출 실패 사유 알 수 없음
-상점 아이디 설정 이슈, 파라미터 설정 오류 등으로 결제창 호출이 불가능한 경우 PG사로부터 정확한 사유를 전달받지 못하기 때문에 다음과 같이 “알 수 없는 이유로 결제가 중단되었습니다. 나이스페이로 문의(1661-0808)하세요.”에러를 리턴합니다. 이 메시지를 받으신 경우 결제창 호출 시 사용한 파라미터 전문과 함께 포트원으로 문의해 주시길 바랍니다.
+상점 아이디 설정 이슈, 파라미터 설정 오류 등으로 결제창 호출이 불가능한 경우
+PG사로부터 정확한 사유를 전달받지 못하기 때문에 다음과 같이
+“알 수 없는 이유로 결제가 중단되었습니다. 나이스페이로 문의(1661-0808)하세요.” 에러를 리턴합니다.
+이 메시지를 받으신 경우 결제창 호출 시 사용한 파라미터 전문과 함께 포트원으로 문의해 주시길 바랍니다.
## 카드 결제
-| 기능 | 사용 가능 여부 |
-| ------------------------------------- | --------------------------------------------------------- |
-| 상점 부담 무이자 할부 | 가능 |
-| 다이렉트 호출 | **단독 사용 불가능** (고정 할부 개월수가 함께 전달 되어야 함) |
-| 다이렉트 호출 + 고정 할부 개월수 | 가능 |
-| 다이렉트 호출 + 리스트 할부 개월수 | **불가능** |
-| 비 다이렉트 호출 + 고정 할부 개월수 | **PC만 가능** |
-| 비 다이렉트 호출 + 리스트 할부 개월수 | **PC만 가능** |
+|기능 |사용 가능 여부 |
+|-------------------------------------|----------------------------------------------------------------------------------------|
+|상점 부담 무이자 할부 |가능 |
+|다이렉트 호출 | **단독 사용 불가능** (고정 할부 개월수가 함께 전달 되어야 함)|
+|다이렉트 호출 + 고정 할부 개월수 |가능 |
+|다이렉트 호출 + 리스트 할부 개월수 | **불가능** |
+|비 다이렉트 호출 + 고정 할부 개월수 |**PC만 가능** |
+|비 다이렉트 호출 + 리스트 할부 개월수|**PC만 가능** |
### 토스뱅크 카드사 다이렉트 호출 미지원
@@ -27,52 +34,53 @@ import Figure from "~/components/Figure.astro";
### 카드사 다이렉트 호출시 고정 할부 개월수 필수 입력
-나이스페이먼츠(신모듈)는 **카드사 다이렉트 호출시 고정 할부 개월수를 필수 로 입력**해야 합니다. 결제 금액이 할부 지원 금액 미만(일반적으로 50,000원이상 결제 시 할부 기능을 지원하나 카드사에 따라 다를 수 있습니다.)인 경우 **할부 개월수를 0(일시불)으로 전달**해야 합니다.
+나이스페이먼츠(신모듈)는 **카드사 다이렉트 호출시
+고정 할부 개월수를 필수 로 입력**해야 합니다.
+결제 금액이 할부 지원 금액 미만(일반적으로 50,000원 이상 결제 시 할부 기능을 지원하나
+카드사에 따라 다를 수 있습니다.)인 경우 **할부 개월수를 0(일시불)으로 전달**해야 합니다.
-
+
+ ```ts
+ IMP.request_pay(
+ {
+ // ...중략
+ pg: "nice_v2",
+ pay_method: "naverpay_point", // 네이버페이 포인트 결제
+ bypass: {
+ cashReceiptType: "personal", // 소득공제
+ customerIdentifier: "01012345678", // 핸드폰 번호 입력(주민등록번호 불가능)
+ },
},
- },
- 콜백함수
-);
-```
-
+ // 콜백함수
+ );
+ ```
### 가상계좌, 계좌이체 결제 시 현금영수증 파라미터 사용이 불가능한 경우
diff --git a/src/content/docs/ko/pg/payment-gateway/nice-v2/readme.mdx b/src/content/docs/ko/pg/payment-gateway/nice-v2/readme.mdx
index 309ec1889..c7a7d9165 100644
--- a/src/content/docs/ko/pg/payment-gateway/nice-v2/readme.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/nice-v2/readme.mdx
@@ -3,31 +3,40 @@ title: 나이스페이먼츠 (신모듈)
description: 나이스페이먼츠 연동 방법을 안내합니다.
---
-import * as prose from "~/components/prose";
import Details from "~/components/gitbook/Details.astro";
import Hint from "~/components/Hint.astro";
+import * as prose from "~/components/prose";
export const components = prose;
-import Figure from "~/components/Figure.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
## 1. 나이스페이먼츠(신모듈) 채널 설정하기
[결제대행사 채널 설정하기](../../../ready/readme#3-결제대행사-채널-설정하기) 페이지의 내용을 참고하여 채널 설정을 진행합니다.
아래 기능을 사용하시려면 나이스페이먼츠에 사전 신청 후 계약이 완료되어야 합니다.
-그렇지 않은 상태에서 해당 기능 이용시 PG창 호출에 실패하거나, 승인에 실패하거나, 승인에 성공하더라도 의도한 바와는 다른 응답을 얻게 될 수 있으니 주의 해주시기 바랍니다.
+그렇지 않은 상태에서 해당 기능 이용시 PG창 호출에 실패하거나, 승인에 실패하거나,
+승인에 성공하더라도 의도한 바와는 다른 응답을 얻게 될 수 있으니 주의 해주시기 바랍니다.
- 모든 결제 수단(간편결제 포함)
+
- 면세 / 복합과세 사용
+
- 부가세 지정 금액 방식 사용(영세율 포함)
+
- 부분 취소
+
- 할부 사용
+
- 상점 부담 무이자 할부 사용
+
- 카드사 포인트 사용
+
- 에스크로 사용
+
- 해외 결제 사용
+
- 일부 bypass 파라미터
- UserCI
- MallUserID
@@ -48,19 +57,18 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
-#### **기존에 deprecated된 콜백 응답은 모두 제거**됐습니다.
-
-신규 JS SDK는 기존 모듈에서 제공했던 CallBack 응답 파라미터가 대부분 삭제되었습니다.
-(특히 deprecated 로 명시된 파라미터는 모두 삭제되었습니다.)
+ ## **기존에 deprecated된 콜백 응답은 모두 제거**됐습니다.
-해당 JS SDK 사용시 Callback 으로 내려받을수 있는 데이터는 오직 아래 두가지 입니다.
+ 신규 JS SDK는 기존 모듈에서 제공했던 CallBack 응답 파라미터가 대부분 삭제되었습니다.
+ (특히 deprecated 로 명시된 파라미터는 모두 삭제되었습니다.)
-**`imp_uid`, `merchant_uid`**
+ 해당 JS SDK 사용시 Callback 으로 내려받을수 있는 데이터는 오직 아래 두가지 입니다.
-따라서 해당 SDK를 사용하실때는 `IMP.request_pay`로부터 응답된 객체(또는 쿼리 파라미터)에서
-`imp_uid`를 가지고 **아임포트 REST API(GET `/payments/imp_uid`)로 결제 상세 내역(승인 상태, 승인 결과 등등)을 조회**하여
-응답 파라미터 중 `status` 파라미터로 결제 상태를 파악하셔야 합니다.
+ **`imp_uid`, `merchant_uid`**
+ 따라서 해당 SDK를 사용하실때는 `IMP.request_pay`로부터 응답된 객체(또는 쿼리 파라미터)에서
+ `imp_uid`를 가지고 **아임포트 REST API(GET `/payments/imp_uid`)로 결제 상세 내역(승인 상태, 승인 결과 등등)을 조회**하여
+ 응답 파라미터 중 `status` 파라미터로 결제 상태를 파악하셔야 합니다.
[JavaScript SDK](../../../sdk/javascript-sdk/readme) 문서를 통해 최신 SDK를 설치해주세요.
@@ -70,131 +78,126 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
[JavaScript SDK](../../../sdk/javascript-sdk/readme) `IMP.request_pay(param, callback)`을 호출하여
(신) 나이스페이먼츠 결제창을 호출할 수 있습니다. **결제 결과**는 PC의 경우 `IMP.request_pay(param,
callback)` 호출 후 **callback**으로 수신되고 모바일의 경우
-**m_redirect_url** 로 리디렉션됩니다.
+**m\_redirect\_url** 로 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "nice_v2.{상점 ID}",
- pay_method: "card",
- merchant_uid: "orderNo0001",
- name: "주문명:결제테스트",
- amount: 1004,
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
- },
- function (rsp) {
- // callback 로직
- }
-);
-```
-
-
-
+## RT 연동 유의사항
-페이팔을 통해 다양한 수단으로 빌링키 발급이 가능하지만, 페이팔이 승인 된 빌링키 발급 수단 및 정보를 알려주지 않습니다. 따라서 페이팔 빌링키 발급 건의 결제 수단(pay_method)은 모두 paypal로 일괄 저장되며 [발급 된 빌링키 정보 조회](../../../api/api-2/api-2)시 카드 정보는 모두 null로 내려갑니다.
+
+
빌링키 발급 수단 및 정보를 알 수 없음
-```javascript
-GET /subscribe/customers/{customer_uid}
+ 페이팔을 통해 다양한 수단으로 빌링키 발급이 가능하지만, 페이팔이 승인 된 빌링키 발급 수단 및 정보를 알려주지 않습니다. 따라서 페이팔 빌링키 발급 건의 결제 수단(pay\_method)은 모두 paypal로 일괄 저장되며 [발급 된 빌링키 정보 조회](../../../api/api-2/api-2)시 카드 정보는 모두 null로 내려갑니다.
-{
- ...중략
- pg_provider: 'paypal_v2',
- customer_uid: '{customer_uid}'
- card_name: null,
- card_code: null,
- card_number: null,
- card_type: null,
-}
-```
+ ```http
+ GET /subscribe/customers/{customer_uid}
+ {
+ // ...중략
+ "pg_provider": "paypal_v2",
+ "customer_uid": "{customer_uid}",
+ "card_name": null,
+ "card_code": null,
+ "card_number": null,
+ "card_type": null
+ }
+ ```
-
Manges & Fraudnet 이상 거래 대응 필요
+
Manges & Fraudnet 이상 거래 대응 필요
+
+ 페이팔은 이상 거래를 줄이기 위해 Rist Data Aquisition 정책을 시행하고 있습니다.
+ 일반 결제나 빌링키 발급은 페이팔 버튼을 통해 진행되기 때문에
+ 페이팔이 이상 거래 판단을 위한 구매자 접속 정보를 얻을 수 있지만,
+ 발급 된 빌링키로 재결제 (again API 호출) 할때는 고객사 서버에서 포트원 API를 통해
+ 페이팔 API가 호출되는 구조이기 때문에 이상 거래 판단을 위한 구매자 접속 정보를 얻을 수 없습니다.
+
+ 따라서 발급 된 빌링키로 재결제를 할때는 구매자의 브라우저/디바이스 접속 정보를
+ 페이팔에 전달할 수 있도록 **again API가 호출되는 고객사 클라이언트 페이지에
+ 반드시 페이팔 Fraudnet 스크립트/Manges SDK를 아래와 같이 추가해야** 합니다.
+
+
+ **페이팔 RT를 통한 again API 호출시에는 Manges & Fraudnet 조치가 필수적으로 요구됩니다.**
+
+
+ 브라우저/앱에 페이팔 Fraudnet Script/Manges SDK를 추가한 후 again API를 호출할때 진행되는 플로우는 아래와 같습니다.
+
+
+
+ ### 브라우저
+
+ ```html
+
+
+
+
+ ```
-페이팔은 이상 거래를 줄이기 위해 Rist Data Aquisition 정책을 시행하고 있습니다. 일반 결제나 빌링키 발급은 페이팔 버튼을 통해 진행되기 때문에 페이팔이 이상 거래 판단을 위한 구매자 접속 정보를 얻을 수 있지만, 발급 된 빌링키로 재결제 (again API 호출) 할때는 고객사 서버에서 포트원 API를 통해 페이팔 API가 호출되는 구조이기 때문에 이상 거래 판단을 위한 구매자 접속 정보를 얻을 수 없습니다.
+ |파라미터 |설명 |예시 |
+ |---------|-------------------------------------------------------------------------------|-----------------------------------------------|
+ |`fncls` |`fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99`로 항상 고정 |`fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99`|
+ |`f` |주문번호(`merchant_uid`) 전달 |`mid_1683690731602` |
+ |`s` |string (`{페이팔 Account ID}_{페이지 유형}` 형식. 페이지 유형은 아래 목록 참고)|`7WBB3CKT63FRG_checkout-page` |
+ |`sandbox`|페이팔 Account ID가 테스트 용인지 운영 용인지 여부 |`true` |
-따라서 발급 된 빌링키로 재결제를 할때는 구매자의 브라우저/디바이스 접속 정보를 페이팔에 전달할 수 있도록 **again API가 호출되는 고객사 클라이언트 페이지에 반드시 페이팔 Fraudnet 스크립트/Manges SDK를 아래와 같이 추가해야** 합니다.
+ **\[페이지 유형]**
-
- **페이팔 RT를 통한 again API 호출시에는 Manges & Fraudnet 조치가 필수적으로
- 요구됩니다.**
-
+ - `home-page`
+ - `search-result-page`
+ - `category-page`
+ - `product-detail-page`
+ - `cart-page`
+ - `inline-cart-page`
+ - `checkout-page`
-브라우저/앱에 페이팔 Fraudnet Script/Manges SDK를 추가한 후 again API를 호출할때 진행되는 플로우는 아래와 같습니다.
+ ### 앱
-
+ #### 안드로이드
-#### 브라우저
+ [**Android Integration of Magnes**](https://developer.paypal.com/limited-release/magnes/integrate/android/) 가이드 문서에 따라
+ 아래와 같이 collectAndSubmit 메소드 호출을 통해 페이팔로 디바이스 정보를 보내야 합니다.
+ 이때 두번째 파라미터(paypalClientMetaDataId)로는 주문번호(merchant\_uid)를 전달해주시면 됩니다.
-```html
-
-
-
-
-```
-
-| 파라미터 | 설명 | 예시 |
-| --------- | ------------------------------------------------------------------------------- | ----------------------------------------------- |
-| `fncls` | `fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99`로 항상 고정 | `fnparams-dede7cc5-15fd-4c75-a9f4-36c430ee3a99` |
-| `f` | 주문번호(`merchant_uid`) 전달 | `mid_1683690731602` |
-| `s` | string (`{페이팔 Account ID}_{페이지 유형}` 형식. 페이지 유형은 아래 목록 참고) | `7WBB3CKT63FRG_checkout-page` |
-| `sandbox` | 페이팔 Account ID가 테스트 용인지 운영 용인지 여부 | `true` |
-
-##### **\[페이지 유형\]**
-
-- `home-page`
-- `search-result-page`
-- `category-page`
-- `product-detail-page`
-- `cart-page`
-- `inline-cart-page`
-- `checkout-page`
-
-#### 앱
-
-#### 안드로이드
-
-[**Android Integration of Magnes**](https://developer.paypal.com/limited-release/magnes/integrate/android/) 가이드 문서에 따라 아래와 같이 collectAndSubmit 메소드 호출을 통해 페이팔로 디바이스 정보를 보내야합니다. 이때 두번째 파라미터(paypalClientMetaDataId)로는 주문번호(merchant_uid)를 전달해주시면 됩니다.
-
-```java
-MagnesResult magnesResult = MagnesSDK.getInstance()
- .collectAndSubmit(Context context, String paypalClientMetaDataId,
- HashMap
- additionalData)
-```
-
-#### IOS Switft
-
-[**iOS Swift SDK Integration**](https://developer.paypal.com/limited-release/magnes/integrate/ios-swift/) 가이드 문서에 따라 아래와 같이 collectAndSubmit 메소드 호출을 통해 페이팔로 디바이스 정보를 보내야합니다. 이때 첫번째 파라미터(withPayPalClientMetadataId)로는 주문번호(merchant_uid)를 전달해주시면 됩니다.
-
-```swift
-let magnesResult:MagnesResult =
-MagnesSDK.shared().collectAndSubmit(withPayPalClientMetadataId:
- "YOUR-PAYPAL-CLIENT-METADATA-ID", withAdditionalData: [String: String])
-```
-
-#### IOS Objective-C
-
-[**iOS Objective-C SDK Integration of Magnes**](https://developer.paypal.com/limited-release/magnes/integrate/ios-objective-c/) 가이드 문서에 따라 아래와 같이 collectAndSubmitWithPayPalClientMetadataId 메소드 호출을 통해 페이팔로 디바이스 정보를 보내야합니다. 이때 첫번째 파라미터(YOUR-PAYPAL-CLIENT-METADATA-ID)로는 주문번호(merchant_uid)를 전달해주시면 됩니다.
-
-```objective-c
-//PPRMOCMagnesSDK *magnesSDK = [PPRMOCMagnesSDK shared];
-PPRMOCMagnesSDKResult *magnesResult =
-[magnesSDK
-collectAndSubmitWithPayPalClientMetadataId:@"YOUR-PAYPAL-CLIENT-METADATA-ID"
-withAdditionalData:@{}];
-```
+ ```java
+ MagnesResult magnesResult = MagnesSDK.getInstance()
+ .collectAndSubmit(Context context, String paypalClientMetaDataId,
+ HashMap
+ additionalData)
+ ```
+
+ ### IOS Switft
+ [**iOS Swift SDK Integration**](https://developer.paypal.com/limited-release/magnes/integrate/ios-swift/) 가이드 문서에 따라
+ 아래와 같이 collectAndSubmit 메소드 호출을 통해 페이팔로 디바이스 정보를 보내야 합니다.
+ 이때 첫번째 파라미터(withPayPalClientMetadataId)로는 주문번호(merchant\_uid)를 전달해주시면 됩니다.
+
+ ```swift
+ let magnesResult:MagnesResult =
+ MagnesSDK.shared().collectAndSubmit(withPayPalClientMetadataId:
+ "YOUR-PAYPAL-CLIENT-METADATA-ID", withAdditionalData: [String: String])
+ ```
+
+ ### IOS Objective-C
+
+ [**iOS Objective-C SDK Integration of Magnes**](https://developer.paypal.com/limited-release/magnes/integrate/ios-objective-c/) 가이드 문서에 따라
+ 아래와 같이 collectAndSubmitWithPayPalClientMetadataId 메소드 호출을 통해 페이팔로 디바이스 정보를 보내야 합니다.
+ 이때 첫번째 파라미터(YOUR-PAYPAL-CLIENT-METADATA-ID)로는 주문번호(merchant\_uid)를 전달해주시면 됩니다.
+
+ ```objective-c
+ //PPRMOCMagnesSDK *magnesSDK = [PPRMOCMagnesSDK shared];
+ PPRMOCMagnesSDKResult *magnesResult =
+ [magnesSDK
+ collectAndSubmitWithPayPalClientMetadataId:@"YOUR-PAYPAL-CLIENT-METADATA-ID"
+ withAdditionalData:@{}];
+ ```
-
파라미터 유의사항
+
파라미터 유의사항
-### `name`
+ ### `name`
-빌링키 발급 창 내 “판매자가 보낸 메모” 하단에 표기할 메시지를 name 파라미터로 전달할 수 있습니다.
+ 빌링키 발급 창 내 “판매자가 보낸 메모” 하단에 표기할 메시지를 name 파라미터로 전달할 수 있습니다.
-
+
-#### `pg`
+ ### `pg`
-필수 입력이며 페이팔의 경우 `paypal_v2` 또는 `paypal_v2.{페이팔 Account ID}`를 입력해야 합니다. **paypal로 입력시 빌링키 발급이 불가능**합니다.
+ 필수 입력이며 페이팔의 경우 `paypal_v2` 또는 `paypal_v2.{페이팔 Account ID}`를 입력해야 합니다. **paypal로 입력시 빌링키 발급이 불가능**합니다.
-#### `pay_method`
+ ### `pay_method`
-`paypal`만 입력 가능하며 다른 값을 입력하면 “페이팔에서 제공하지 않는 빌링키 발급 수단입니다.”라는 에러 메시지와 함께 빌링키 발급 창이 호출되지 않습니다.
+ `paypal`만 입력 가능하며 다른 값을 입력하면 “페이팔에서 제공하지 않는 빌링키 발급 수단입니다.”라는 에러 메시지와 함께 빌링키 발급 창이 호출되지 않습니다.
-또한 pay_method를 `paypal`로 입력 후 카드, 계좌 등 어떤 결제 수단으로 빌링키를 발급 받아도 빌링키 발급 수단은 무조건 `paypal`로 저장됩니다. 이는 페이팔이 실제 발급 된 빌링키 종류를 구분해 알려주지 않고 모두 `paypal`로 일괄 응답해주기 때문입니다.
+ 또한 pay\_method를 `paypal`로 입력 후 카드, 계좌 등 어떤 결제 수단으로 빌링키를 발급 받아도 빌링키 발급 수단은 무조건 `paypal`로 저장됩니다. 이는 페이팔이 실제 발급 된 빌링키 종류를 구분해 알려주지 않고 모두 `paypal`로 일괄 응답해주기 때문입니다.
-#### `bypass.paypal_v2.style`
+ ### `bypass.paypal_v2.style`
-페이팔 RT 버튼을 커스터마이징 하기 위한 파라미터입니다. 자세한 내용은 [페이팔에서 제공하는 문서](https://developer.paypal.com/sdk/js/reference/#link-style)를 참고하세요.
+ 페이팔 RT 버튼을 커스터마이징 하기 위한 파라미터입니다. 자세한 내용은 [페이팔에서 제공하는 문서](https://developer.paypal.com/sdk/js/reference/#link-style)를 참고하세요.
-#### `bypass.paypal_v2.shipping_address`
+ ### `bypass.paypal_v2.shipping_address`
-페이팔은 기본적으로 구매자가 페이팔에 가입할때 입력 한 배송 정보를 빌링키 발급 창에 자동으로 입력해줍니다. 만약 이 배송 정보를 override하고 싶다면 shipping_address 파라미터에 override할 주소를 입력하고 shipping_address.recipient_name에 override할 수령인 이름을 입력하면 됩니다.
+ 페이팔은 기본적으로 구매자가 페이팔에 가입할때 입력 한 배송 정보를 빌링키 발급 창에 자동으로 입력해줍니다. 만약 이 배송 정보를 override하고 싶다면 shipping\_address 파라미터에 override할 주소를 입력하고 shipping\_address.recipient\_name에 override할 수령인 이름을 입력하면 됩니다.
-배송 정보 중 **`line1`, `city` 그리고 `country_code`는 필수 입력**입니다. 전달하지
-않을 경우 에러가 리턴되며 빌링키 발급 창이 호출되지 않습니다.
+ 배송 정보 중 **`line1`, `city` 그리고 `country_code`는 필수 입력**입니다. 전달하지
+ 않을 경우 에러가 리턴되며 빌링키 발급 창이 호출되지 않습니다.
-```javascript
-bypass: {
- paypal_v2: {
- ...중략
- shipping_address: { // 상품 수령 주소
- recipient_name: "홍길동", // 수령인 이름
- line1: "세종대로 110", // 도로명 주소
- line2: "서울특별시청", // 아파트 동 호수
- city: "중구", // 시(Los Angeles, New York)
- state: "서울특별시", // 주(CA, NY)
- postal_code: "04524", // 상품 수령지 우편번호
- country_code: "KR", // [필수 입력] 상품 수령지 국가 코드
- }
- } // end-of paypal_v2
-} // end-of-bypass
-```
+ ```json
+ {
+ "bypass": {
+ "paypal_v2": {
+ // ...중략
+ "shipping_address": { // 상품 수령 주소
+ "recipient_name": "홍길동", // 수령인 이름
+ "line1": "세종대로 110", // 도로명 주소
+ "line2": "서울특별시청", // 아파트 동 호수
+ "city": "중구", // 시(Los Angeles, New York)
+ "state": "서울특별시", // 주(CA, NY)
+ "postal_code": "04524", // 상품 수령지 우편번호
+ "country_code": "KR", // [필수 입력] 상품 수령지 국가 코드
+ }
+ } // end-of paypal_v2
+ } // end-of-bypass
+ }
+ ```
-
-
-
-
+
+
+
+
-
사용 불가능한 파라미터
+
사용 불가능한 파라미터
-#### `amount/tax_free`
+ ### `amount/tax_free`
-결제/면세 금액 파라미터는 결제 시에만 제공되기 때문에 빌링키 발급 시에는 무조건 0으로 저장됩니다.
+ 결제/면세 금액 파라미터는 결제 시에만 제공되기 때문에 빌링키 발급 시에는 무조건 0으로 저장됩니다.
-#### `country`
+ ### `country`
-빌링키 발급 국가를 의미하는 country 파라미터로 페이팔 sandbox 모드에서만 유의미하며 **운영 모드에서는 구매자가 접속한 환경에 따라 자동 적용되기 때문에 전달한 파라미터가 무시**됩니다.
+ 빌링키 발급 국가를 의미하는 country 파라미터로 페이팔 sandbox 모드에서만 유의미하며 **운영 모드에서는 구매자가 접속한 환경에 따라 자동 적용되기 때문에 전달한 파라미터가 무시**됩니다.
-#### `currency`
+ ### `currency`
-결제 통화를 의미하는 currency 파라미터로 빌링키 발급시에는 결제가 되지 않기 때문에 해당 파라미터는 무시됩니다.
+ 결제 통화를 의미하는 currency 파라미터로 빌링키 발급시에는 결제가 되지 않기 때문에 해당 파라미터는 무시됩니다.
-#### `buyer_addr`
+ ### `buyer_addr`
-페이팔 빌링키 발급 창 내에는 상품 배송지(shipping address)가 표기되는데, 이 상품 배송지는 페이팔 회원가입시 기입한 정보가 자동으로 입력됩니다.
+ 페이팔 빌링키 발급 창 내에는 상품 배송지(shipping address)가 표기되는데, 이 상품 배송지는 페이팔 회원가입시 기입한 정보가 자동으로 입력됩니다.
-단, 이때의 주소는 총 5개의 영역으로 나누어진 상세 주소로 기존에 포트원이 제공하던 buyer_addr 파라미터로는 커버가 불가능하므로 페이팔 전용 파라미터(`bypass.paypal_v2.shipping_address`)를 사용하셔야 합니다. 자세한 내용은 하단의 예제 코드를 참고해주세요.
- ```tsx
- bypass: {
- paypal_v2: {
- ...중략
- shipping_address: { // 상품 수령 주소
- recipient_name: "홍길동", // 수령인 이름
- line1: "세종대로 110", // 도로명 주소
- line2: "서울특별시청", // 아파트 동 호수
- city: "중구", // 시(Los Angeles, New York)
- state: "서울특별시", // 주(CA, NY)
- postal_code: "04524", // 상품 수령지 우편번호
- country_code: "KR", // [필수 입력] 상품 수령지 국가 코드
- }
- } // end-of paypal_v2
- } // end-of-bypass
+ 단, 이때의 주소는 총 5개의 영역으로 나누어진 상세 주소로 기존에 포트원이 제공하던 buyer\_addr 파라미터로는 커버가 불가능하므로 페이팔 전용 파라미터(`bypass.paypal_v2.shipping_address`)를 사용하셔야 합니다. 자세한 내용은 하단의 예제 코드를 참고해주세요.
+
+ ```json
+ {
+ "bypass": {
+ "paypal_v2": {
+ // ...중략
+ "shipping_address": { // 상품 수령 주소
+ "recipient_name": "홍길동", // 수령인 이름
+ "line1": "세종대로 110", // 도로명 주소
+ "line2": "서울특별시청", // 아파트 동 호수
+ "city": "중구", // 시(Los Angeles, New York)
+ "state": "서울특별시", // 주(CA, NY)
+ "postal_code": "04524", // 상품 수령지 우편번호
+ "country_code": "KR", // [필수 입력] 상품 수령지 국가 코드
+ }
+ } // end-of paypal_v2
+ } // end-of-bypass
+ }
```
-#### `popup`
-페이팔의 경우 빌링키 발급 창이 무조건 팝업으로 렌더링되기 때문에 해당 파라미터는 무시 됩니다.
+ ### `popup`
-#### `m_redirect_url`
+ 페이팔의 경우 빌링키 발급 창이 무조건 팝업으로 렌더링되기 때문에 해당 파라미터는 무시 됩니다.
-페이팔의 경우 PC와 모바일 모두 팝업으로 빌링키 발급 창이 렌더링되기 때문에 빌링키 발급 프로세스 종료시 모두 콜백 함수가 호촐됩니다. 따라서 m_redirect_url 파라미터는 무시됩니다.
+ ### `m_redirect_url`
-#### `app_scheme`
+ 페이팔의 경우 PC와 모바일 모두 팝업으로 빌링키 발급 창이 렌더링되기 때문에 빌링키 발급 프로세스 종료시 모두 콜백 함수가 호촐됩니다. 따라서 m\_redirect\_url 파라미터는 무시됩니다.
-페이팔의 경우 외부 앱으로 이동하는 경우가 없기 때문에 해당 파라미터는 무시됩니다.
+ ### `app_scheme`
-#### `escrow`
+ 페이팔의 경우 외부 앱으로 이동하는 경우가 없기 때문에 해당 파라미터는 무시됩니다.
-페이팔의 경우 에스크로 결제를 지원하지 않기 때문에 해당 파라미터는 무시됩니다.
+ ### `escrow`
-#### `language`
+ 페이팔의 경우 에스크로 결제를 지원하지 않기 때문에 해당 파라미터는 무시됩니다.
-빌링키 발급 창 언어 설정을 의미하는 language 파라미터는 구매자가 접속한 환경에 따라 자동 적용되기 때문에 전달한 파라미터가 무시됩니다.
+ ### `language`
-#### `bypass.isCulturalExpense`
+ 빌링키 발급 창 언어 설정을 의미하는 language 파라미터는 구매자가 접속한 환경에 따라 자동 적용되기 때문에 전달한 파라미터가 무시됩니다.
-페이팔의 경우 문화비 결제가 불가능하기 때문에 해당 파라미터는 무시됩니다.
+ ### `bypass.isCulturalExpense`
-#### `bypass.cashReceiptType`
+ 페이팔의 경우 문화비 결제가 불가능하기 때문에 해당 파라미터는 무시됩니다.
-페이팔의 경우 현금영수증 발급이 불가능하기 때문에 해당 파라미터는 무시됩니다.
+ ### `bypass.cashReceiptType`
-#### `bypass.customerIdentifier`
+ 페이팔의 경우 현금영수증 발급이 불가능하기 때문에 해당 파라미터는 무시됩니다.
-페이팔의 경우 현금영수증 발급이 불가능하기 때문에 해당 파라미터는 무시됩니다.
+ ### `bypass.customerIdentifier`
-#### `bypass.useInternationalFreeFromMall`
+ 페이팔의 경우 현금영수증 발급이 불가능하기 때문에 해당 파라미터는 무시됩니다.
-페이팔의 경우 상점 부담 무이자 할부가 불가능하기 때문에 해당 파라미터는 무시됩니다.
+ ### `bypass.useInternationalFreeFromMall`
-#### `card`
+ 페이팔의 경우 상점 부담 무이자 할부가 불가능하기 때문에 해당 파라미터는 무시됩니다.
-페이팔의 경우 카드사 다이렉트 호출, 상점 부담 무이자 할부, 렌더링 될 카드 종류 제어 등이 불가능하기 때문에 해당 파라미터는 무시됩니다.
+ ### `card`
-#### `display`
+ 페이팔의 경우 카드사 다이렉트 호출, 상점 부담 무이자 할부, 렌더링 될 카드 종류 제어 등이 불가능하기 때문에 해당 파라미터는 무시됩니다.
-카드 할부 개월수를 의미하는 display: \{ card_quota } 파라미터는 결제 시에만 적용되므로 빌링키 발급 시에는 무시됩니다.
+ ### `display`
-#### `vbank_due`
+ 카드 할부 개월수를 의미하는 display: \{ card\_quota } 파라미터는 결제 시에만 적용되므로 빌링키 발급 시에는 무시됩니다.
-페이팔의 경우 가상계좌 결제를 지원하지 않기 때문에 해당 파라미터는 무시됩니다.
+ ### `vbank_due`
-#### `appCard`
+ 페이팔의 경우 가상계좌 결제를 지원하지 않기 때문에 해당 파라미터는 무시됩니다.
-페이팔의 경우 앱카드 결제가 불가능하기 때문에 해당 파라미터는 무시됩니다.
+ ### `appCard`
-#### `useCardPoint`
+ 페이팔의 경우 앱카드 결제가 불가능하기 때문에 해당 파라미터는 무시됩니다.
-페이팔의 경우 카드 포인트 결제가 불가능하기 때문에 해당 파라미터는 무시됩니다.
+ ### `useCardPoint`
-#### `period`
+ 페이팔의 경우 카드 포인트 결제가 불가능하기 때문에 해당 파라미터는 무시됩니다.
-페이팔은 빌링키 발급 창 내 제공 기간 정보 노출을 지원하지 않아 해당 파라미터가 무시됩니다.
+ ### `period`
-#### `storeDetails`
+ 페이팔은 빌링키 발급 창 내 제공 기간 정보 노출을 지원하지 않아 해당 파라미터가 무시됩니다.
-페이팔은 상점 세부 정보를 입력할 필요가 없기 때문에 해당 파라미터가 무시됩니다.
+ ### `storeDetails`
+ 페이팔은 상점 세부 정보를 입력할 필요가 없기 때문에 해당 파라미터가 무시됩니다.
diff --git a/src/content/docs/ko/pg/payment-gateway/settle/mybank.mdx b/src/content/docs/ko/pg/payment-gateway/settle/mybank.mdx
index 6e5e35a57..4597d2dac 100644
--- a/src/content/docs/ko/pg/payment-gateway/settle/mybank.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/settle/mybank.mdx
@@ -4,9 +4,9 @@ description: 핵토파이낸셜에서 제공하는 오픈뱅킹 기반 계좌간
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 1. 내통장결제 채널 설정하기
@@ -17,166 +17,167 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
## 2.결제 요청하기
[JavaScript SDK](../../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을
-호출하여 내통장 결제 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 IMP.request_pay(param,
+호출하여 내통장 결제 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 IMP.request\_pay(param,
callback) 호출 후 **callback** 으로 수신되
-모바일의 경우 **m_redirect_url** 로 리디렉션됩니다.
+모바일의 경우 **m\_redirect\_url** 로 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({ // param
- pg: "settle_acc.MID", // 발급받은 고객사아이디
- pay_method: "trans",
- merchant_uid: "ORD20180131-0000011",
- name: "노르웨이 회전 의자",
- buyer_email: "gildong@gmail.com",
- buyer_name: "홍길동",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
- amount: 1000,
- bypass: {
- settle: {
- addDeductionYn: "N", // 추가공제구분 (대중교통:Y, 도서,공연비:C, 추가공제없음:N)
- criPsblYn: "N", // 현금영수증 발행가능 여부 ( Y or N or ""빈문자열은 Y로인식)
- custCi: "<회원 연계정보(Connecting Information)>" // 고객사가 보유한 회원 CI를 설정하면 내통장 결제에 등록한 CI와 비교하여 동일인인지 자동검증되며 일치하지 않은 경우 결제가 중단됩니다.
- }
- }
-}, function (rsp) { // callback
- // 생략
-});
-```
-
-#### 주요 파라미터 설명
-
-**`pg` \*****string**
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ // param
+ pg: "settle_acc.MID", // 발급받은 고객사아이디
+ pay_method: "trans",
+ merchant_uid: "ORD20180131-0000011",
+ name: "노르웨이 회전 의자",
+ buyer_email: "gildong@gmail.com",
+ buyer_name: "홍길동",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ amount: 1000,
+ bypass: {
+ settle: {
+ addDeductionYn: "N", // 추가공제구분 (대중교통:Y, 도서,공연비:C, 추가공제없음:N)
+ criPsblYn: "N", // 현금영수증 발행가능 여부 ( Y or N or ""빈문자열은 Y로인식)
+ custCi: "<회원 연계정보(Connecting Information)>", // 고객사가 보유한 회원 CI를 설정하면 내통장 결제에 등록한 CI와 비교하여 동일인인지 자동검증되며 일치하지 않은 경우 결제가 중단됩니다.
+ },
+ },
+ },
+ function (rsp) {
+ // callback
+ // 생략
+ },
+ );
+ ```
-**PG사 구분코드**
+ ### 주요 파라미터 설명
-**``** **`settle_acc`****`.MID 형태`** 로 지정하셔야 합니다.
+ **`pg` \*****string**
-**`pay_method`** **\*** **string**
+ **PG사 구분코드**
-**결제수단 구분코드**
+ `settle_acc.MID` 형태로 지정하셔야 합니다.
-**`trans`**
+ **`pay_method`** **\*** **string**
-**`merchant_uid`** **\*** **string**
+ **결제수단 구분코드**
-**`고객사 고유주문번호`**
+ **`trans`**
-매번 고유하게 채번되어야 합니다.
+ **`merchant_uid`** **\*** **string**
-**`buyer_tel`** **\*** **`string`**
+ **`고객사 고유주문번호`**
-**구매자 연락처**
+ 매번 고유하게 채번되어야 합니다.
-필수 파라미터 입니다.
+ **`buyer_tel`** **\*** **`string`**
-**`amount`** **\*** **`integer`**
+ **구매자 연락처**
-**결제금액**
+ 필수 파라미터 입니다.
-**string** 이 아닌점에 유의하세요
+ **`amount`** **\*** **`integer`**
-**`bypass`**
+ **결제금액**
-**optional** 로 계약이 된 경우 사용 가능합니다.
+ **string** 이 아닌점에 유의하세요
-```
-addDeductionYn: 추가공제구분 (대중교통:Y, 도서,공연비:C, 추가공제없음:N)
-criPsblYn: "N", // 현금영수증 발행가능 여부 ( Y or N or ""빈문자열은 Y로인식)
-```
+ **`bypass`**
-
-1. **내통장결제는 팝업 형태로 제공됩니다.**
-2. **매출전표가** 제공되지 않습니다.
-3. 선불충전금 ( ex: 카카오페이, 네이버페이 충전금)으로만 결제하는 경우 계좌정보(은행코드)가 제공되지 않습니다
+ **optional** 로 계약이 된 경우 사용 가능합니다.
-
+ - `addDeductionYn`: 추가공제구분 (대중교통: Y, 도서 및 공연비: C, 추가공제없음: N)
+ - `criPsblYn`: 현금영수증 발행가능 여부 (Y or N or "", 빈문자열은 Y로 인식)
-
+
+ 1. **내통장결제는 팝업 형태로 제공됩니다.**
+ 2. **매출전표가** 제공되지 않습니다.
+ 3. 선불충전금 ( ex: 카카오페이, 네이버페이 충전금)으로만 결제하는 경우 계좌정보(은행코드)가 제공되지 않습니다
+
+
-
-인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다. 비인증 결제창에서 빌링키를 발급받은 후 해당 빌링키로 결제를 요청합니다.
+
+ 인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 비 인증 결제창을 호출할 수 있습니다. 비인증 결제창에서 빌링키를 발급받은 후 해당 빌링키로 결제를 요청합니다.
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "settle_acc.MID", //발급받은 고객사아이디
- pay_method: "trans",
- merchant_uid: "ORD20180131-0000011",
- name: "노르웨이 회전 의자",
- buyer_email: "gildong@gmail.com",
- buyer_name: "홍길동",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
- customer_uid: "A00001-001", // 빌링키와 맵핑되는
- amount: 1000,
- bypass: {
- settle: {
- addDeductionYn: "N", // 추가공제구분 (대중교통:Y, 도서,공연비:C, 추가공제없음:N)
- criPsblYn: "N", // 현금영수증 발행가능 여부 ( Y or N or ""빈문자열은 Y로인식)
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "settle_acc.MID", //발급받은 고객사아이디
+ pay_method: "trans",
+ merchant_uid: "ORD20180131-0000011",
+ name: "노르웨이 회전 의자",
+ buyer_email: "gildong@gmail.com",
+ buyer_name: "홍길동",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ customer_uid: "A00001-001", // 빌링키와 맵핑되는
+ amount: 1000,
+ bypass: {
+ settle: {
+ addDeductionYn: "N", // 추가공제구분 (대중교통:Y, 도서,공연비:C, 추가공제없음:N)
+ criPsblYn: "N", // 현금영수증 발행가능 여부 ( Y or N or ""빈문자열은 Y로인식)
+ },
+ },
},
- },
- },
- function (rsp) {
- if (rsp.success) {
- alert("빌링키 발급 성공");
- } else {
- alert("빌링키 발급 실패");
- }
- }
-);
-```
-
-
-- 비인증 결제를 위해서는 **정기결제 계약이 필수입니다.**
-- amount 값을 0으로 설정시 빌링키만 발급이 가능합니다.
-
-
+ function (rsp) {
+ if (rsp.success) {
+ alert("빌링키 발급 성공");
+ } else {
+ alert("빌링키 발급 실패");
+ }
+ },
+ );
+ ```
-#### 주요 파라미터 설명
+
+ - 비인증 결제를 위해서는 **정기결제 계약이 필수입니다.**
+ - amount 값을 0으로 설정시 빌링키만 발급이 가능합니다.
+
-**`pg` \*****string**
+ #### 주요 파라미터 설명
-**PG사 구분코드**
+ **`pg` \*****string**
-**`settle_acc`****`.MID 형태`** 로 지정\\
+ **PG사 구분코드**
-**`customer_uid` \*****string**
+ **`settle_acc`****`.MID 형태`** 로 지정\\
-**빌링키**
+ **`customer_uid` \*****string**
-등록 계좌정보와 1:1로 매칭될 빌링키를 지정합니다.
+ **빌링키**
-**`amount` \*****Integer**
+ 등록 계좌정보와 1:1로 매칭될 빌링키를 지정합니다.
-**결제금액**
+ **`amount` \*****Integer**
-0원으로 입력시 빌링키만 발급되 실금액 설정시 결제와 동시에 빌링키가 발급됩니다.\\
+ **결제금액**
-#### 빌링키(customer_uid)로 결제 요청하기
+ 0원으로 입력시 빌링키만 발급되 실금액 설정시 결제와 동시에 빌링키가 발급됩니다.\\
-빌링키 발급이 성공하면 실 빌링키는 customer_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. customer_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../../api/api-4/api)를 호출하시면 결제를 발생시킬 수 있습니다.
+ #### 빌링키(customer\_uid)로 결제 요청하기
-```sh title="server-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ 빌링키 발급이 성공하면 실 빌링키는 customer\_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다.
+ customer\_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../../api/api-4/api)를 호출하시면
+ 결제를 발생시킬 수 있습니다.
-**추가 파라미터 안내**
+ ```sh title="server-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-```json
-{
- "extra": {
- "addDeductionYn": "N", // 추가공제구분 (대중교통:Y, 도서,공연비:C, 추가공제없음:N)
- "criPsblYn": "N" // 현금영수증 발행가능 여부 ( Y or N or ""빈문자열은 Y로인식)
- }
-}
-```
+ **추가 파라미터 안내**
-
+ ```json
+ {
+ "extra": {
+ "addDeductionYn": "N", // 추가공제구분 (대중교통:Y, 도서,공연비:C, 추가공제없음:N)
+ "criPsblYn": "N" // 현금영수증 발행가능 여부 ( Y or N or ""빈문자열은 Y로인식)
+ }
+ }
+ ```
+
diff --git a/src/content/docs/ko/pg/payment-gateway/settle/readme.mdx b/src/content/docs/ko/pg/payment-gateway/settle/readme.mdx
index 1384c6453..5a1fe6440 100644
--- a/src/content/docs/ko/pg/payment-gateway/settle/readme.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/settle/readme.mdx
@@ -3,12 +3,12 @@ title: 핵토파이낸셜
description: 핵토파이낸셜 결제 연동 방법을 안내합니다.
---
+import Figure from "~/components/Figure.astro";
import Codepen from "~/components/gitbook/Codepen.astro";
import ContentRef from "~/components/gitbook/ContentRef.astro";
-import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 1. 핵토파이낸셜 채널 설정하기
@@ -19,134 +19,134 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
## 2.결제 요청하기
[JavaScript SDK](../../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을
-호출하여 핵토파이낸셜 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 `IMP.request_pay(param,
-callback)` 호출 후 **`callback`**으로 수신되
+호출하여 핵토파이낸셜 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 `IMP.request_pay(param, callback)`
+호출 후 **`callback`**으로 수신되며
모바일의 경우 **`m_redirect_url`**로 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg: "settle.{상점 ID}",
- pay_method: "card",
- merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
- name: "주문명:결제테스트",
- amount: 1004,
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678", // 누락시 오류 발생
- buyer_addr: "서울특별시 강남구 삼성동",
- company: "포트원", // 가상계좌 발급시 권고사항
- buyer_postcode: "123-456"
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
-}, function (rsp) { // callback 로직
- /* ...중략... */
-});
-```
-
-**주요 파라미터 설명**
-
-**`pg` \*****string**
-
-**PG사 구분코드**
-
-**`settle`** 로 지정하면 됩니다.
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "settle.{상점 ID}",
+ pay_method: "card",
+ merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
+ name: "주문명:결제테스트",
+ amount: 1004,
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678", // 누락시 오류 발생
+ buyer_addr: "서울특별시 강남구 삼성동",
+ company: "포트원", // 가상계좌 발급시 권고사항
+ buyer_postcode: "123-456",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ // callback 로직
+ /* ...중략... */
+ },
+ );
+ ```
-**`pay_method`** **\*** **string**
+ **주요 파라미터 설명**
-**결제수단 구분코드**
+ **`pg` \*****string**
-- card (신용카드)
-- trans (실시간 계좌이체)
-- vbank(가상계좌)
-- phone (휴대폰소액결제)
+ **PG사 구분코드**
-**`merchant_uid`** **\*** **string**
+ **`settle`** 로 지정하면 됩니다.
-**`고객사 고유주문번호`**
+ **`pay_method`** **\*** **string**
-매번 고유하게 채번되어야 합니다.
+ **결제수단 구분코드**
-**`buyer_tel`** **\*** **`string`**
+ - card (신용카드)
+ - trans (실시간 계좌이체)
+ - vbank(가상계좌)
+ - phone (휴대폰소액결제)
-**구매자 연락처**
+ **`merchant_uid`** **\*** **string**
-필수 파라미터 입니다.
+ **`고객사 고유주문번호`**
-**`amount`** **\*** **`integer`**
+ 매번 고유하게 채번되어야 합니다.
-**결제금액**
+ **`buyer_tel`** **\*** **`string`**
-**string** 이 아닌점에 유의하세요
+ **구매자 연락처**
-**`company`** **`string`**
+ 필수 파라미터 입니다.
-**`회사명`**
+ **`amount`** **\*** **`integer`**
-**가상계좌** 결제 요청인 경우 필수 파라미터
+ **결제금액**
-
+ **string** 이 아닌점에 유의하세요
-
+ **`company`** **`string`**
-
-**세틀뱅크는 비 인증 결제창을 지원하지 않습니다.**
+ **`회사명`**
-
+ **가상계좌** 결제 요청인 경우 필수 파라미터
-
-**API 방식으로 결제요청,예약결제를 구현할수 있습니다.**
+
+
-**일회성 결제 요청하기**
+
+ **세틀뱅크는 비 인증 결제창을 지원하지 않습니다.**
+
-REST[ **API POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
+
+ **API 방식으로 결제요청,예약결제를 구현할수 있습니다.**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ **일회성 결제 요청하기**
-**빌링키 발급 요청하기**
+ REST [**API POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 일회성 결제를 요청합니다. 요청 시 전달된 카드는 포트원에 등록되지 않습니다.
-REST [**API POST /subscribe/customers/\{customer_uid}**](../../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
- https://api.iamport.kr/subscribe/customers/your-customer-unique-id
-```
+ **빌링키 발급 요청하기**
-
-**세틀뱅크** [**빌링키 단독 발급 API**](../../../api/api-2/api-1)**는 별도 계약 후 사용가능합니다..**
+ REST [**API POST /subscribe/customers/\{customer\_uid}**](../../../api/api-2/api-1)를 호출하여 빌링키 발급을 요청합니다.
-
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
+ https://api.iamport.kr/subscribe/customers/your-customer-unique-id
+ ```
-**빌링키 발급 및 최초 결제 요청하기**
+
+ **세틀뱅크** [**빌링키 단독 발급 API**](../../../api/api-2/api-1)**는 별도 계약 후 사용가능합니다..**
+
-REST [**API POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 빌링키 발급과 최초 결제를 요청합니다.
+ **빌링키 발급 및 최초 결제 요청하기**
-- **`customer_uid`** : 빌링키 등록을 위해서 지정해야 합니다.
+ REST [**API POST /subscribe/payments/onetime**](../../../api/api-4/api-1)을 호출하여 빌링키 발급과 최초 결제를 요청합니다.
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/onetime
-```
+ - **`customer_uid`** : 빌링키 등록을 위해서 지정해야 합니다.
-**빌링키로 결제 요청하기**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/onetime
+ ```
-빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
+ **빌링키로 결제 요청하기**
-```sh
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
+ 빌링키 발급과 최초 결제가 성공하면 빌링키는 전달된 `customer_uid` 와 1:1 매칭되어 포트원에 저장됩니다. 보안상의 이유로 서버는 빌링키에 직접 접근할 수 없기 때문에 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
-**자세한 비 인증 결제 가이드는 아래 링크를 참조하세요**
+ ```sh
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
-
+ **자세한 비 인증 결제 가이드는 아래 링크를 참조하세요**
-
+
+
diff --git a/src/content/docs/ko/pg/payment-gateway/smartro-v2/api.mdx b/src/content/docs/ko/pg/payment-gateway/smartro-v2/api.mdx
index 8c0e37e46..8b365d6d2 100644
--- a/src/content/docs/ko/pg/payment-gateway/smartro-v2/api.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/smartro-v2/api.mdx
@@ -93,7 +93,7 @@ description: 스마트로 API 연동 방법을 안내합니다.
- `smartro_v2`는 **`merchant_uid`** 파라미터에 특수문자 포함이 불가능합니다.
- 계좌 발급 받거나 환불금액을 입금받을 수 있는 은행 목록과 코드는
- [https://api.iamport.kr/#vbank_codes](https://api.iamport.kr/#vbank_codes)에서 확인 가능합니다.
+ [https://api.iamport.kr/#vbank\_codes](https://api.iamport.kr/#vbank_codes)에서 확인 가능합니다.
### 에스크로 배송 정보 등록
@@ -118,8 +118,8 @@ description: 스마트로 API 연동 방법을 안내합니다.
- 주의 사항
- `smartro_v2`는 배송수정시, 지번주소/도로명주소와 상세주소를 구분하여 받고있기 때문에, 발신자의
주소와 수신자의 주소 정보를 기존의 `sender.addr`와 `receiver.addr` 파라미터 대신 새로 추가된
- 파라미터 **`formed_address`**의 `address_line_1`(지번주소 또는 도로명주소)와
- `address_line_2`(상제주소)에 설정해야합니다.
+ 파라미터 **`formed_address`** 의 `address_line_1`(지번주소 또는 도로명주소)와
+ `address_line_2`(상제주소)에 설정해야 합니다.
### 에스크로 배송 정보 수정
@@ -133,9 +133,12 @@ description: 스마트로 API 연동 방법을 안내합니다.
- `logis.sent_at`
- 주의 사항
- - `smartro_v2`는 배송 정보 수정시, 지번주소/도로명주소와 상세주소를 구분하여 받고있기 때문에, 발신자의 주소와 수신자의 주소 정보를 기존의 `sender.addr`와 `receiver.addr` 파라미터 대신 새로 추가된 파라미터 **`formed_address`**의 `address_line_1`(지번주소 또는 도로명주소)와 `address_line_2`(상제주소)에 설정해야합니다.
+ - `smartro_v2`는 배송 정보 수정시, 지번주소/도로명주소와 상세주소를 구분하여 받고 있기 때문에,
+ 발신자의 주소와 수신자의 주소 정보를 기존의 `sender.addr`와 `receiver.addr` 파라미터 대신
+ 새로 추가된 파라미터 **`formed_address`** 의 `address_line_1`(지번주소 또는 도로명주소)와
+ `address_line_2`(상세주소)에 설정해야 합니다.
-### 현금영수증 발급 (아임포트 결제건)
+### 현금영수증 발급 (포트원 결제건)
- 요청 URL: `https://api.iamport.kr/receipts/{imp_uid}`
@@ -151,7 +154,7 @@ description: 스마트로 API 연동 방법을 안내합니다.
- 주의사항
- 스마트로 신모듈은 현금영수증 발급 API를 통해 발급받은 경우는 현금영수증을 발급 받은 거래건 취소
시 현금영수증 자동 발급 취소를 지원하지 않기 때문에, 따로 현금영수증 발급 취소 API를 통해
- 취소해야합니다.
+ 취소해야 합니다.
### 현금영수증 발급 (외부 결제건)
diff --git a/src/content/docs/ko/pg/payment-gateway/smartro-v2/caution.mdx b/src/content/docs/ko/pg/payment-gateway/smartro-v2/caution.mdx
index 5b59bbffe..8408676b5 100644
--- a/src/content/docs/ko/pg/payment-gateway/smartro-v2/caution.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/smartro-v2/caution.mdx
@@ -3,16 +3,19 @@ title: 연동 유의사항
description: 스마트로 연동 유의사항을 소개합니다.
---
-import Details from "~/components/gitbook/Details.astro";
import Figure from "~/components/Figure.astro";
+import Details from "~/components/gitbook/Details.astro";
import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-import Tab from "~/components/gitbook/tabs/Tab.astro";
+
+import screenshot1 from "./_assets/caution/screenshot-1.png";
+import screenshot2 from "./_assets/caution/screenshot-2.png";
## 스마트로와 사전 계약이 필요한 경우
아래 기능을 사용하시려면 스마트로에 사전 신청 후 계약이 완료되어야 합니다.
-그렇지 않은 상태에서 해당 기능 이용시 결제 승인에 실패하거나, 승인에 성공하더라도 의도한 바와는 다른 응답(예: 결제창에서 에스크로 결제를 했으나 비-에스크로 결제 응답을 받음)을 얻게 될 수 있으니 주의 해주시기 바랍니다.
+그렇지 않은 상태에서 해당 기능 이용시 결제 승인에 실패하거나,
+승인에 성공하더라도 의도한 바와는 다른 응답
+(예: 결제창에서 에스크로 결제를 했으나 비-에스크로 결제 응답을 받음)을 얻게 될 수 있으니 주의해주시기 바랍니다.
- 간편결제 사용
- 면세 / 복합과세 사용
@@ -42,17 +45,20 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
### 카카오페이 - 등록된 카드로 결제시, 반드시 직접 취소 필요
-테스트모드로 연동시에는 카카오페이 - 등록된 카드로 결제시, 결제 된 금액이 자동으로 취소되지 않으므로 반드시 아임포트 REST cancel API(`POST /payments/cancel`)로 직접 취소하셔야 합니다.
+테스트모드로 연동시에는 카카오페이 - 등록된 카드로 결제 시, 결제된 금액이 자동으로 취소되지 않으므로
+반드시 포트원 REST cancel API(`POST /payments/cancel`)로 직접 취소하셔야 합니다.
## 카드 결제시 유의사항
### 할부 개월수 리스트를 제어할 수 없음
-다른 PG사는 `display: { card_quota }` 파라미터로 구매자에게 노출 될 할부 개월수 리스트 제어가 가능하나 스마트로는 해당 기능을 지원하지 않습니다.
+다른 PG사는 `display: { card_quota }` 파라미터로 구매자에게 노출될 할부개월수 리스트 제어가 가능하나
+스마트로는 해당 기능을 지원하지 않습니다.
### 무이자 할부 개월수 리스트를 제어할 수 없음
-다른 PG사는 `card: { detail }` 파라미터로 구매자에게 노출 될 무이자 할부 개월수 리스트 제어가 가능하나 스마트로는 해당 기능을 지원하지 않으며 상점 아이디에 등록 된 무이자 정보에 따라 자동 표기됩니다.
+다른 PG사는 `card: { detail }` 파라미터로 구매자에게 노출될 무이자 할부개월수 리스트 제어가 가능하나
+스마트로는 해당 기능을 지원하지 않으며 상점 아이디에 등록된 무이자 정보에 따라 자동 표기됩니다.
### 다이렉트 호출시에만 고정 할부 개월수 필수 입력
@@ -60,34 +66,39 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
마찬가지로 **고정 할부 개월수 지정시 다이렉트 호출 할 카드사 코드는 필수 입력**입니다.
즉, 둘 다 지정하거나 둘 다 지정하지 않거나 둘 중에 하나만 가능합니다.
-예를 들어, 5개월 할부로 지정하고 싶은 경우 다른 PG사는 `display: { card_quota: [5] }` 또는 `card: { direct: quota: 5 }`만 지정하면 되지만 스마트로의 경우 고정 할부 개월수는 다이렉트 호출시에만 지원하기 때문에 다이렉트 호출 할 카드사 코드까지 함께 넘겨야 합니다.
+예를 들어, 5개월 할부로 지정하고 싶은 경우 다른 PG사는 `display: { card_quota: [5] }`
+또는 `card: { direct: quota: 5 }`만 지정하면 되지만 스마트로의 경우
+고정 할부 개월수는 다이렉트 호출시에만 지원하기 때문에 다이렉트 호출 할 카드사 코드까지 함께 넘겨야 합니다.
-마찬가지로 BC카드 다이렉트 호출을 하고 싶은 경우 다른 PG사는 `card: { direct: { code: '361' } }`만 지정하면 되지만 스마트로의 경우 카드사 다이렉트 호출시 고정 할부 개월수는 필수 입력이기 때문에 할부 개월수를 함께 넘겨야 하니다.
+마찬가지로 BC카드 다이렉트 호출을 하고 싶은 경우
+다른 PG사는 `card: { direct: { code: '361' } }`만 지정하면 되지만
+스마트로의 경우 카드사 다이렉트 호출시 고정 할부 개월수는 필수 입력이기 때문에 할부 개월수를 함께 넘겨야 하니다.
-
+
+ ```json
+ // 예. BC카드 5개월 할부
+ {
+ "pg": "smartro_v2",
+ "pay_method": "card",
+ "card": {
+ "direct": {
+ // 다이렉트 호출할 카드사 코드와 고정 할부개월수를 모두 지정해야 함
+ "code": "361", // BC카드
+ "quota": 5 // 5개월 할부
+ }
+ }
}
-}
-
-// 예. 결제창에서 카드사와 할부 개월수 선택
-...중략
-pg: 'smartro_v2',
-pay_method: 'card'
-// 다이렉트 호출 할 카드사와 고정 할부 개월수 모두 지정하지 않아야 함
-```
+ // 예. 결제창에서 카드사와 할부개월수 선택
+ {
+ "pg": "smartro_v2",
+ "pay_method": "card",
+ }
+ // 다이렉트 호출할 카드사와 고정 할부개월수 모두 지정하지 않아야 함
+ ```
### 카드사 포인트 사용 여부 파라미터 제어 불가능
@@ -97,25 +108,29 @@ pay_method: 'card'
### 전북카드와 카카오뱅크 카드 다이렉트 호출은 윈도우 OS에서만 가능
-스마트로의 경우 전북 카드(`code: "372"`)와 카카오뱅크 카드(`code: "090"`) 다이렉트 호출은 윈도우 OS에서만 가능하기 때문에 맥 OS에서는 사용이 불가능합니다.
+스마트로의 경우 전북 카드(`code: "372"`)와 카카오뱅크 카드(`code: "090"`) 다이렉트 호출은
+윈도우 OS에서만 가능하기 때문에 맥 OS에서는 사용이 불가능합니다.
-## 간편 결제시 유의사항
+## 간편 결제 시 유의사항
### 구매자 식별값 `customer_id`는 필수 입력
스마트로는 **간편결제시 구매자를 식별할 수 있는 고유 번호인 `customer_id`를 필수**로 입력 받고 있으며, 입력 길이는 **20자로 제한**됩니다.
-이는 빌링키 발급시에도 마찬가지입니다.
+이는 빌링키 발급 시에도 마찬가지입니다.
### 네이버페이는 카드 결제만 가능
스마트로를 통한 네이버페이 결제 시 등록된 카드로만 결제가 가능하고 네이버페이 포인트/머니 결제는 불가능합니다.
-단, 카드 결제창에서 네이버페이를 선택한 경우에는 네이버페이 포인트/머니 결제 또는 네이버페이 카드 결제 둘 중 하나를 선택할 수 있으니 네이버페이 포인트/머니로 결제를 원하시면 카드 결제창 내에서 네이버페이를 선택하여 결제해주시기 바랍니다.
+단, 카드 결제창에서 네이버페이를 선택한 경우에는 네이버페이 포인트/머니 결제 또는
+네이버페이 카드 결제 둘 중 하나를 선택할 수 있으니 네이버페이 포인트/머니로 결제를 원하시면
+카드 결제창 내에서 네이버페이를 선택하여 결제해주시기 바랍니다.
## 가상계좌 결제시 유의사항
### `vbank_due` 파라미터는 필수 입력
-스마트로의 경우 **가상계좌 발급시 입금 기한을 의미하는 `vbank_due` 파라미터가 필수**로 요구되며 `YYYYMMDD` 형식의 유효한 날짜(시각은 무조건 `23:59:59`로 설정 됨)만 허용됩니다.
+스마트로의 경우 **가상계좌 발급시 입금 기한을 의미하는 `vbank_due` 파라미터가 필수**로 요구되며
+`YYYYMMDD` 형식의 유효한 날짜(시각은 무조건 `23:59:59`로 설정 됨)만 허용됩니다.
`vbank_due` 파라미터를 전달하지 않거나, 유효하지 않은 날짜를 입력하면 결제창이 호출되지 않습니다.
@@ -124,7 +139,8 @@ pay_method: 'card'
구매자는 가상계좌나 계좌이체와 같은 현금성 결제시 결제창에서 현금영수증 정보(현금영수증 발급 유형, 현금영수증 발행 식별 번호)를 선택할 수 있습니다.
스마트로의 경우 현금영수증 정보를 파라미터로 받고 있으며, 파라미터로 전달시 결제창에 자동 입력됩니다.
-단, 가상계좌 결제시에는 스마트로 정책상 다이렉트 호출시에만 현금영수증 정보를 파라미터로 전달할 수 있는데 V1에서는 가상계좌 다이렉트 호출을 지원하지 않기 때문에 **가상계좌 결제시에는 현금영수증 정보를 파라미터로 전달할 수 없**으니 참고 바랍니다.
+단, 가상계좌 결제 시에는 스마트로 정책상 다이렉트 호출시에만 현금영수증 정보를 파라미터로 전달할 수 있는데
+V1에서는 가상계좌 다이렉트 호출을 지원하지 않기 때문에 **가상계좌 결제시에는 현금영수증 정보를 파라미터로 전달할 수 없**으니 참고 바랍니다.
## 휴대폰 소액결제시 유의사항
@@ -136,15 +152,13 @@ pay_method: 'card'
### `digital` 파라미터가 올바르지 않은 경우 결제 불가
스마트로 상점 아이디 설정에 따라 올바른 `digital` 파라미터 값이 정해져 있습니다.
-만약 해당 상점 아이디 설정이 디지털 컨텐츠 판매용인 경우, `digital` 파라미터를 `true`로 보내야 하는데 보내지 않거나 `false`로 보내는 경우엔 아래와 같은 팝업이 노출되며 결제를 더이상 진행할 수 없습니다.
+만약 해당 상점 아이디 설정이 디지털 컨텐츠 판매용인 경우, `digital` 파라미터를 `true`로 보내야 하는데
+이를 보내지 않거나 `false`로 보내는 경우엔 아래와 같은 팝업이 노출되며 결제를 더 이상 진행할 수 없습니다.
-
고객사 설정 정보와 다른 `digital` 파라미터가 입력 된 경우
-
-import screenshot1 from "./_assets/caution/screenshot-1.png";
-
-
+
고객사 설정 정보와 다른 `digital` 파라미터가 입력 된 경우
+
## 빌링키 발급시 유의사항
@@ -155,127 +169,128 @@ import screenshot1 from "./_assets/caution/screenshot-1.png";
### 구매자 식별값 `customer_id`는 필수 입력
-스마트로는 **빌링키 발급시 구매자를 식별할 수 있는 고유 번호인 `customer_id`를 필수**로 입력 받고 있으며, 입력 길이는 **20자로 제한**됩니다.
-이는 간편결제시에도 마찬가지입니다.
+스마트로는 **빌링키 발급시 구매자를 식별할 수 있는 고유 번호인 `customer_id`를 필수**로 입력 받고 있으며,
+입력 길이는 **20자로 제한**됩니다. 이는 간편결제 시에도 마찬가지입니다.
### 본인인증 프로세스 존재
스마트로는 다른 PG사와는 다르게 **빌링키 발급시 휴대폰 본인인증 프로세스가 존재**합니다.
-단, 한 번 인증 받은 "구매자"는 다시 인증 받을 필요가 없는데 이 "구매자"를 식별하기 위해 위에 언급 한 `customer_id`가 사용되고 있습니다.
+단, 한 번 인증 받은 "구매자"는 다시 인증 받을 필요가 없는데 이 "구매자"를 식별하기 위해 위에 언급한 `customer_id`가 사용되고 있습니다.
-즉, 기존에 빌링키 발급시 사용한 `customer_id`를 재사용하면 휴대폰 본인인증 프로세스가 생략되지만, 새로운 `customer_id`로 빌링키 발급을 시도하면 휴대폰 본인인증 후 빌링키 발급이 진행됩니다.
+즉, 기존에 빌링키 발급 시 사용한 `customer_id`를 재사용하면 휴대폰 본인인증 프로세스가 생략되지만,
+새로운 `customer_id`로 빌링키 발급을 시도하면 휴대폰 본인인증 후 빌링키 발급이 진행됩니다.
-| customer_id | customer_uid | 카드사 | 빌링키 발급 프로세스 |
-| ----------- | ------------ | -------- | ----------------------------------------------------------------------------------------------------------------------- |
-| cid_A | cuid_A | 현대카드 | 본인인증 → 현대카드로 빌링키 발급 |
-| | cuid_B | 우리카드 | 이미 본인인증을 완료 한 customer_id이므로 본인인증 생략 → 우리카드로 빌링키 발급 |
-| | cuid_A | 신한카드 | 이미 본인인증을 완료 한 customer_id이므로 본인인증 생략 → cuid_A에 신한카드가 override / cuid_B는 여전히 우리카드 |
-| cid_B | cuid_C | 삼성카드 | 새로운 customer_id이므로 본인인증 → 삼성카드로 빌링키 발급 |
+|customer\_id|customer\_uid|카드사 |빌링키 발급 프로세스 |
+|------------|-------------|--------|---------------------------------------------------------------------------------------------------------------------------|
+|cid\_A |cuid\_A |현대카드|본인인증 → 현대카드로 빌링키 발급 |
+| |cuid\_B |우리카드|이미 본인인증을 완료 한 customer\_id이므로 본인인증 생략 → 우리카드로 빌링키 발급 |
+| |cuid\_A |신한카드|이미 본인인증을 완료 한 customer\_id이므로 본인인증 생략 → cuid\_A에 신한카드가 override / cuid\_B는 여전히 우리카드|
+|cid\_B |cuid\_C |삼성카드|새로운 customer\_id이므로 본인인증 → 삼성카드로 빌링키 발급 |
## 에스크로 결제시 유의사항
### 에스크로 결제시 카드사/가상계좌 은행 다이렉트 호출 불가능
-스마트로는 에스크로 결제시 카드사 다이렉트 호출 및 가상계좌 은행 다이렉트 호출(V2만 사용 가능)이 불가능합니다. 만약 에스크로 결제시 아래와 같이 다이렉트 호출을 할 경우 결제창이 호출되지 않으니 유의하시기 바랍니다.
+스마트로는 에스크로 결제 시 카드사 다이렉트 호출 및 가상계좌 은행 다이렉트 호출(V2만 사용 가능)이 불가능합니다.
+만약 에스크로 결제 시 아래와 같이 다이렉트 호출을 할 경우 결제창이 호출되지 않으니 유의하시기 바랍니다.
+
+ ```tsx {4-10}
+ PortOne.requestPayment({
+ pgProvider: "SMARTRO_V2",
+ totalAmount: 50000,
+ payMethod: "TRANSFER", // 계좌이체 결제
+ isEscrow: true, // 에스크로 결제
+ transfer: {
+ // 현금영수증 정보 전달
+ cashReceiptType: "company",
+ customerIdentiifer: "1178178260",
+ },
+ });
+ ```
## 기타 유의사항
@@ -283,7 +298,8 @@ PortOne.requestPayment({
### 주문 번호에 특수문자 입력 불가능
스마트로는 주문 번호(`merchant_uid`)에 특수문자를 허용하고 있지 않습니다.
-따라서 결제창에서 일반결제를 할때와 발급 된 빌링키로 API를 통해 재결제를 하는 경우 숫자, 문자(알파벳 소문자와 대문자) 또는 그 조합으로 이루어진 주문 번호를 사용해주세요.
+따라서 결제창에서 일반결제를 할 때와 발급된 빌링키로 API를 통해 재결제를 하는 경우
+숫자, 문자(알파벳 소문자와 대문자) 또는 그 조합으로 이루어진 주문 번호를 사용해주세요.
### 주문 번호 40자 길이 제한
@@ -295,57 +311,62 @@ PortOne.requestPayment({
스마트로는 상점 아이디 설정에 따라 사용 가능한 통화가 자동으로 정해지는 방식입니다.
따라서 다른 PG사와는 달리 currency 파라미터로 결제 통화를 설정할 수 없습니다.
-단, 스마트로가 지원하지 않는 화폐(KRW와 USD를 제외 한 값)를 전달할 경우 `"스마트로가 지원하지 않는 화폐입니다"`라는 에러가 발생하며 결제를 진행할 수 없으니 유의 바랍니다.
+단, 스마트로가 지원하지 않는 화폐(KRW와 USD를 제외한 값)를 전달할 경우
+`"스마트로가 지원하지 않는 화폐입니다"`라는 에러가 발생하며 결제를 진행할 수 없으니 유의 바랍니다.
또한 스마트로 이슈로 인해 당분간 **USD 결제는 불가능하며 KRW 결제만 가능**하니 참고 바랍니다.
### 제공 기간은 시작 날짜와 종료 날짜를 모두 입력해야 함
스마트로는 결제창 내 서비스 제공 기간을 노출시킬 수 있도록 period 파라미터를 optional로 제공하고 있습니다.
-단, 시작 날짜(`from`)와 종료 날짜(`to`)를 모두 입력해야 결제창에 정상적으로 노출되며 **둘 중 하나만 입력하거나 유효(`YYYMMDD`)하지 않은 날짜 형식을 입력하면 결제창에 노출되지 않**습니다.
+단, 시작 날짜(`from`)와 종료 날짜(`to`)를 모두 입력해야 결제창에 정상적으로 노출되며
+**둘 중 하나만 입력하거나 유효(`YYYMMDD`)하지 않은 날짜 형식을 입력하면 결제창에 노출되지 않**습니다.
-
파라미터 예시
-
-```tsx
- pg: 'smartro_v2',
- period: {
- // 서비스 제공 시작 날짜와 종료 날짜를 모두 입력해야 함
- from: '2023-01-01', // 서비스 제공 시작 날짜
- to: '2023-03-31' // 서비스 제공 종료 날짜
+
파라미터 예시
+
+ ```json
+ {
+ "pg": "smartro_v2",
+ "period": {
+ // 서비스 제공 시작 날짜와 종료 날짜를 모두 입력해야 함
+ "from": "2023-01-01", // 서비스 제공 시작 날짜
+ "to": "2023-03-31" // 서비스 제공 종료 날짜
+ }
}
-```
-
-import screenshot2 from "./_assets/caution/screenshot-2.png";
-
-
+ ```
+
-### 현금성 결제시 `cashReceiptType`값에 따라 `customerIdentifier` 입력 정책이 달라짐
+### 현금성 결제 시 `cashReceiptType` 값에 따라 `customerIdentifier` 입력 정책이 달라짐
-스마트로의 경우 현금성 결제시, bypass 파라미터에 현금영수증 발급 정보를 아래와 같이 전달할 수 있습니다.
+스마트로의 경우 현금성 결제 시, bypass 파라미터에 현금영수증 발급 정보를 아래와 같이 전달할 수 있습니다.
-단, 가상계좌 결제시에는 스마트로 정책상 다이렉트 호출시에만 현금영수증 정보를 파라미터로 전달할 수 있는데 V1에서는 가상계좌 다이렉트 호출을 지원하지 않기 때문에 **가상계좌 결제시에는 현금영수증 정보를 파라미터로 전달할 수 없**으니 참고 바랍니다.
-
+ 단, 가상계좌 결제 시에는 스마트로 정책상 다이렉트 호출 시에만 현금영수증 정보를 파라미터로 전달할 수 있는데
+ V1에서는 가상계좌 다이렉트 호출을 지원하지 않기 때문에
+ **가상계좌 결제시에는 현금영수증 정보를 파라미터로 전달할 수 없**으니 참고 바랍니다.
-```tsx
-...중략
-bypass: {
- cashReceiptType: 'corporate', // 현금영수증 발급 유형
- customerIdentifier: '1178178260' // 현금영수증 발행 대상 식별 정보
+```json
+{
+ "bypass": {
+ "cashReceiptType": "corporate", // 현금영수증 발급 유형
+ "customerIdentifier": "1178178260" // 현금영수증 발행 대상 식별 정보
+ }
}
```
이때 전달하는 `cashReceiptType` 파라미터 값에 따라 `customerIdentifier` 파라미터 입력 정책이 아래와 같이 달라지기 때문에 주의가 요구됩니다.
-| cashReceiptType | customerIdentifier |
-| --------------- | ----------------------------------------------------------------------- |
-| 미입력 | 입력 불가(결제창에서 입력) |
-| anonymous | 입력 불가(결제창에서도 입력 불가) |
-| personal | 핸드폰 번호, 주민등록번호, 국세청 현금영수증 카드 번호 중 1개 필수 입력 |
-| corporate | 사업자 등록번호 필수 입력 |
+|cashReceiptType|customerIdentifier |
+|---------------|-----------------------------------------------------------------------|
+|미입력 |입력 불가(결제창에서 입력) |
+|anonymous |입력 불가(결제창에서도 입력 불가) |
+|personal |핸드폰 번호, 주민등록번호, 국세청 현금영수증 카드 번호 중 1개 필수 입력|
+|corporate |사업자 등록번호 필수 입력 |
-만약 `cashReceiptType: "anonymous"` 또는 입력하지 않은 상태로 `customerIdentifier`를 입력하거나 `cashReceiptType`이 `"personal"` 또는 `"corporate"`인데 `customerIdentifier`를 입력하지 않으면 에러가 리턴되면서 결제창이 호출되지 않습니다.
+만약 `cashReceiptType: "anonymous"` 또는 입력하지 않은 상태로 `customerIdentifier`를 입력하거나
+`cashReceiptType`이 `"personal"` 또는 `"corporate"`인데 `customerIdentifier`를 입력하지 않으면
+에러가 리턴되면서 결제창이 호출되지 않습니다.
diff --git a/src/content/docs/ko/pg/payment-gateway/smartro-v2/readme.mdx b/src/content/docs/ko/pg/payment-gateway/smartro-v2/readme.mdx
index 9c81f66d8..5c4a53bec 100644
--- a/src/content/docs/ko/pg/payment-gateway/smartro-v2/readme.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/smartro-v2/readme.mdx
@@ -3,14 +3,14 @@ title: 스마트로(신모듈)
description: 스마트로 연동 방법을 안내합니다.
---
-import * as prose from "~/components/prose";
import Details from "~/components/gitbook/Details.astro";
import Hint from "~/components/Hint.astro";
+import * as prose from "~/components/prose";
export const components = prose;
import Figure from "~/components/Figure.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
## 1. 스마트로 채널 설정하기
@@ -37,193 +37,194 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
[JavaScript SDK](../../../sdk/javascript-sdk/readme) `IMP.request_pay(param, callback)`을 호출하여
스마트로 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 `IMP.request_pay(param, callback)`
호출 후 **callback**으로 수신되고
-모바일의 경우 **m_redirect_url** 로 리디렉션됩니다.
+모바일의 경우 **m\_redirect\_url** 로 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg: 'smartro_v2.{상점 ID}',
- pay_method: 'card',
- merchant_uid: "orderNo0001", // 상점에서 생성한 고유 주문번호 주의: 스마트로 일반결제시 주문 번호에 특수문자 사용 불가
- name: '주문명:결제테스트',
- amount: 1004,
- buyer_email: 'test@portone.io',
- buyer_name: '구매자이름',
- buyer_tel: '010-1234-5678',
- buyer_addr: '서울특별시 강남구 삼성동',
- buyer_postcode: '123-456',
- m_redirect_url: '{모바일에서 결제 완료 후 리디렉션 될 URL}',
- period: {
- from: "20230512", //YYYYMMDD
- to: "20230515", //YYYYMMDD
- },
-}, function(rsp) { // callback 로직
- /* ...중략... */
-});
-```
-
-
-
-**PG사 구분코드**
+ **`pg` \*****string**
-`smartro_v2` 로 지정하면 됩니다.
+ **PG사 구분코드**
-**`pay_method`** **\*** **string**
+ `smartro_v2` 로 지정하면 됩니다.
-**결제수단 구분코드**
+ **`pay_method`** **\*** **string**
-- card (신용카드)
+ **결제수단 구분코드**
-**`merchant_uid`** **\*** **string**
+ - card (신용카드)
-**주문번호**
+ **`merchant_uid`** **\*** **string**
-매번 고유하게 채번되어야 합니다.
+ **주문번호**
-주의: 스마트로 일반결제시 주문 번호에 특수문자 사용 불가
+ 매번 고유하게 채번되어야 합니다.
-**`customer_uid`** **\*** **string**
+ 주의: 스마트로 일반결제시 주문 번호에 특수문자 사용 불가
-**`빌링키 발급을 위한 결제 수단을 특정하는 고유 번호`**
+ **`customer_uid`** **\*** **string**
-빌링키 발급시 필수 입력
+ **`빌링키 발급을 위한 결제 수단을 특정하는 고유 번호`**
-**`customer_id`** **\*** **string**
+ 빌링키 발급시 필수 입력
-**`구매자 식별자`**
+ **`customer_id`** **\*** **string**
-주의: 스마트로 빌링키 발급시 필수 입력으로 입력 길이는 **20자**로 제한됩니다.
+ **`구매자 식별자`**
-**`m_redirect_url`** **\*** **string**
+ 주의: 스마트로 빌링키 발급시 필수 입력으로 입력 길이는 **20자**로 제한됩니다.
-**`리다이렉트 URL`**
+ **`m_redirect_url`** **\*** **string**
-리디렉션 방식으로 진행할 경우, 트랜잭션 종료 이후 302 리디렉션 될 고객사 URL
+ **`리다이렉트 URL`**
-스마트로의 경우 모바일 환경에서 **리디렉션 방식으로 빌링키 발급창이 렌더링 되기 때문에 필수입력입니다.**
-
-
-
-
+ 리디렉션 방식으로 진행할 경우, 트랜잭션 종료 이후 302 리디렉션 될 고객사 URL
+ 스마트로의 경우 모바일 환경에서 **리디렉션 방식으로 빌링키 발급창이 렌더링 되기 때문에 필수입력입니다.**
+
+
-
- 가능한 결제 환경
-
-
-- PC (iframe)
-- 모바일 (리디렉션)
+
+ 가능한 결제 환경
+
+ - PC (iframe)
+ - 모바일 (리디렉션)
diff --git a/src/content/docs/ko/pg/payment-gateway/smartro.mdx b/src/content/docs/ko/pg/payment-gateway/smartro.mdx
index a02747652..2a0fbcaac 100644
--- a/src/content/docs/ko/pg/payment-gateway/smartro.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/smartro.mdx
@@ -4,16 +4,15 @@ description: 스마트로 연동 방법을 안내합니다.
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
-**스마트로(구모듈) 연동 방법에 관한 매뉴얼**입니다.
-
-신규 연동 고객사이시거나 스마트로 신모듈로의 업그레이드를 원하신다면 [스마트로(신모듈) 연동 가이드](./smartro-v2/readme)를 참고하여 진행해주세요.
-구모듈에 비해 신모듈에서 다양한 기능 및 결제수단을 지원하고 있습니다. 신규 고객사의 경우 가급적 신모듈로 연동하는 것을 권장드립니다.
+ **스마트로(구모듈) 연동 방법에 관한 매뉴얼**입니다.
+ 신규 연동 고객사이시거나 스마트로 신모듈로의 업그레이드를 원하신다면 [스마트로(신모듈) 연동 가이드](./smartro-v2/readme)를 참고하여 진행해주세요.
+ 구모듈에 비해 신모듈에서 다양한 기능 및 결제수단을 지원하고 있습니다. 신규 고객사의 경우 가급적 신모듈로 연동하는 것을 권장드립니다.
## 1. 스마트로 채널 설정하기
@@ -27,55 +26,58 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
[JavaScript SDK](../../sdk/javascript-sdk/readme) `IMP.request_pay(param, callback)`을 호출하여
스마트로 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 `IMP.request_pay(param, callback)`
호출 후 **callback**으로 수신되고
-모바일의 경우 **m_redirect_url** 로 리디렉션됩니다.
+모바일의 경우 **m\_redirect\_url** 로 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg: "smartro.{상점 ID}",
- pay_method: "card",
- merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
- name: "주문명:결제테스트",
- amount: 1004,
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}"
-}, function(rsp) { // callback 로직
- /* ...중략... */
-});
-```
-
-**주요 파라미터 설명**
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "smartro.{상점 ID}",
+ pay_method: "card",
+ merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
+ name: "주문명:결제테스트",
+ amount: 1004,
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ // callback 로직
+ /* ...중략... */
+ },
+ );
+ ```
-**`pg` \*****string**
+ **주요 파라미터 설명**
-**PG사 구분코드**
+ **`pg` \*****string**
-**`smartro`** 로 지정하면 됩니다.
+ **PG사 구분코드**
-**`pay_method`** **\*** **string**
+ **`smartro`** 로 지정하면 됩니다.
-**결제수단 구분코드**
+ **`pay_method`** **\*** **string**
-- card (신용카드)
-- trans (실시간 계좌이체)
-- vbank(가상계좌)
+ **결제수단 구분코드**
-**`merchant_uid`** **\*** **string**
+ - card (신용카드)
+ - trans (실시간 계좌이체)
+ - vbank(가상계좌)
-**`고객사 주문번호`**
+ **`merchant_uid`** **\*** **string**
-매번 고유하게 채번되어야 합니다.
+ **`고객사 주문번호`**
-**`amount`** **\*** **`integer`**
+ 매번 고유하게 채번되어야 합니다.
-**결제금액**
+ **`amount`** **\*** **`integer`**
-**string** 이 아닌점에 유의하세요
+ **결제금액**
-
+ **string** 이 아닌점에 유의하세요
+
diff --git a/src/content/docs/ko/pg/payment-gateway/spb.mdx b/src/content/docs/ko/pg/payment-gateway/spb.mdx
index 38f0880a6..c3cf04a9a 100644
--- a/src/content/docs/ko/pg/payment-gateway/spb.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/spb.mdx
@@ -3,8 +3,8 @@ title: 페이팔(Smart Payment Buttons) 일반결제
description: 페이팔(Smart Payment Buttons) 일반결제 연동 방법을 안내합니다.
---
-import Details from "~/components/gitbook/Details.astro";
import Figure from "~/components/Figure.astro";
+import Details from "~/components/gitbook/Details.astro";
import Hint from "~/components/Hint.astro";
@@ -27,24 +27,26 @@ import Hint from "~/components/Hint.astro";
- `imp_uid`
- `merchant_uid`
- 해당 SDK를 사용하실때는 IMP.request\_pay로부터 응답된 객체(또는 쿼리 파라미터)에서 imp\_uid를 가지고 **포트원 REST API(GET /payments/imp\_uid)로 결제 상세 내역(승인 상태, 승인 결과 등등)을 조회**하여 응답 파라미터 중 status(결제 상태)파라미터에 따라 추가 로직을 구현해야 합니다.
+ 해당 SDK를 사용하실때는 IMP.request\_pay로부터 응답된 객체(또는 쿼리 파라미터)에서 imp\_uid를 가지고
+ **포트원 REST API(GET /payments/imp\_uid)로 결제 상세 내역(승인 상태, 승인 결과 등등)을 조회**하여
+ 응답 파라미터 중 status(결제 상태) 파라미터에 따라 추가 로직을 구현해야 합니다.
## 페이팔 일반결제 버튼 렌더링
-페이팔 일반결제는 고객사 체크아웃 페이지에 페이팔 일반결제 버튼(아래 이미지 참고)을 렌더링 한 후, 이 일반결제 버튼을 클릭해 페이팔 결제창을 호출하는 방식입니다.
+페이팔 일반결제는 고객사 체크아웃 페이지에 페이팔 일반결제 버튼(아래 이미지 참고)을 렌더링 한 후,
+이 일반결제 버튼을 클릭해 페이팔 결제창을 호출하는 방식입니다.
-따라서 다른 PG사와 결제 플로우가 상이하기 때문에 고객사는 **체크아웃 페이지가 렌더링 되는 시점에** `IMP.request_pay` 함수 대신 **`IMP.loadUI`라는 별도의 함수를 호출해 페이팔 일반결제 버튼을 렌더링 해야**합니다.
+따라서 다른 PG사와 결제 플로우가 상이하기 때문에 고객사는 **체크아웃 페이지가 렌더링 되는 시점에**
+`IMP.request_pay` 함수 대신 **`IMP.loadUI`라는 별도의 함수를 호출해 페이팔 일반결제 버튼을 렌더링 해야**합니다.
-
+
```html
웰컴페이먼츠 제공 기간 주기가 올바르지 않습니다. 1m 또는 1y만 허용됩니다.
-```
+
파라미터 예제 코드
+ ```json
+ // 옵션1. interval을 1m로 설정
+ {
+ "period": { "interval": "1m" }
+ }
+
+ // 옵션2. interval을 1y로 설정
+ {
+ "period": { "interval": "1y" }
+ }
+
+ // 옵션 3. interval을 1d로 설정
+ {
+ "period": { "interval": "1d" }
+ }
+ -> 웰컴페이먼츠 제공 기간 주기가 올바르지 않습니다. 1m 또는 1y만 허용됩니다.
+ ```
### 모바일 환경 - 휴대폰 결제시 제공 기간 파라미터(`period`)를 지원하지 않음
@@ -240,104 +219,95 @@ IOS 모바일 웹/인앱 브라우저에서 결제창 호출 후 카드사 앱
렌더링을 허용 할 통신사 리스트(`phone.detail`) 옵션과 기본 선택 될 통신사 옵션(`bypass.welcome.acceptmethod.hppdefaultcorp(통신사)`/`P_RESERVED.hpp_default_corp=통신사`)은 함께 사용할 경우 정상적으로 동작하지 않아 둘 중 하나만 사용해야 합니다.
-
+
+ ```json
+ {
+ "pg": "welcome",
+ "pay_method": "card",
+ "display": {
+ "card_quota": [2,3,4,5,6] // 일시불 + 2개월 ~ 6개월까지 결제창에 표기
+ }
+ }
+ ```
-### PC 환경에서는 할부 옵션을 설정하지 않는 경우 무조건 일시불로 결제 됨
+#### PC 환경에서는 할부 옵션을 설정하지 않는 경우 무조건 일시불로 결제 됨
웰컴페이먼츠의 경우 PC 환경에서 **할부 옵션을 전달하지 않는 경우 `무조건 일시불만 표기`**되니 주의하시기 바랍니다.
-
+
+ ```json
+ // 예. BC카드 5개월 할부
+ {
+ "pg": "welcome",
+ "pay_method": "card",
+ "card": {
+ "direct": {
+ // 다이렉트 호출 할 카드사 코드와 고정 할부 개월수를 모두 지정해야 함
+ "code": "361", // BC카드
+ "quota": 5 // 5개월 할부
+ }
+ }
}
-}
-// 예. 결제창에서 카드사와 할부 개월수 선택
-...중략
-pg: 'welcome',
-pay_method: 'card'
-// 다이렉트 호출 할 카드사와 고정 할부 개월수 모두 지정하지 않아야 함
-```
+ // 예. 결제창에서 카드사와 할부 개월수 선택
+ {
+ "pg": "welcome",
+ "pay_method": "card"
+ }
+ // 다이렉트 호출 할 카드사와 고정 할부 개월수 모두 지정하지 않아야 함
+ ```
-### 카드사 포인트 사용 불가 옵션 사용 불가능
+#### 카드사 포인트 사용 불가 옵션 사용 불가능
웰컴 페이먼츠에서 카드사 포인트 사용 불가 옵션(useCardPoint: false)은 지원하지 않기 때문에 카드사
포인트 사용(useCardPoint: true) 또는 기본값(=파라미터 전달하지 않음, 결제창에서 고객이 카드사 포인트
@@ -382,25 +354,25 @@ pay_method: 'card'
포인트 사용 불가 옵션은 사용할 수 없습니다.”라는 에러 메시지가 리턴되면서 결제창이 호출되지 않으니
참고 부탁드립니다.
-### 카카오뱅크 카드는 일시불만 지원함
+#### 카카오뱅크 카드는 일시불만 지원함
카카오뱅크 카드로 결제시 결제 금액이 5만원 이상이라고 하더라도 할부가 불가능하기 때문에 무조건 일시불로 결제됩니다.
-### ISP 계열 카드의 경우 할부 개월수에 무이자 표기 되지 않음
+#### ISP 계열 카드의 경우 할부 개월수에 무이자 표기 되지 않음
ISP 계열 카드의 경우, 결제 요청시 페이북 팝업/앱으로 넘어가는데 무이자 할부 적용 조건이 되더라도 할부 개월수 리스트에 (무) 표기가 되지 않습니다.
단, 해당 카드사, 결제 금액, 할부 개월수가 무이자 조건을 만족하는 경우 승인시 무이자가 자동 적용됩니다.
-### 모바일 환경에서 고정/리스트 할부 개월수 최대 값은 36
+#### 모바일 환경에서 고정/리스트 할부 개월수 최대 값은 36
모바일 환경에서 웰컴페이먼츠 카드 결제시, 고정/리스트할부 개월수 최대 값은 36으로 37 이상의 값을 입력할 경우 결제창이 호출되지 않으니 참고하시기 바랍니다.
PC 환경에서는 별도 제한이 없습니다.
-## 가상계좌 발급
+### 가상계좌 발급
-### `vbank_due` 파라미터는 "분" 까지만 유효하며 시간 값은 무시 됨
+#### `vbank_due` 파라미터는 "분" 까지만 유효하며 시간 값은 무시 됨
가상계좌 발급시 입금 기한을 의미하는 `vbank_due` 파라미터는 아래 4가지 형식 중 하나로 입력이 가능합니다.
@@ -412,52 +384,50 @@ PC 환경에서는 별도 제한이 없습니다.
단, 웰컴페이먼츠의 경우 전달 한 초 값은 무시되며 무조건 59초로 설정되니 유의하시기 바랍니다.
-
+ ```json
+ {
+ "vbank_due": "2023-01-01 12:34:56"
+ }
+ // 입금 기한이 "2023-01-01 12:34:59"로 설정 됨
+ ```
-## 상품권 결제
+### 상품권 결제
-### 문화 상품권(culturegift)만 지원
+#### 문화 상품권(culturegift)만 지원
웰컴페이먼츠의 경우 상품권 결제시 문화 상품권만 지원하며 북앤라이프, 컬쳐랜드, 해피머니 그리고 스마트 문상은 지원하지 않습니다.
-## 간편 결제
+### 간편 결제
-### 토스페이의 경우, 할부 개월수 리스트는 전달한 값과 카드사가 제공하는 무이자 할부 개월 수의 최대값까지 표기 됨
+#### 토스페이의 경우, 할부 개월수 리스트는 전달한 값과 카드사가 제공하는 무이자 할부 개월 수의 최대값까지 표기 됨
예를 들어 할부 개월수 리스트를 3개월까지 렌더링 되도록 설정했으나, 현재 해당 카드사에서 6개월까지 무이자 할부 이벤트가 진행되고 있다면 할부 개월수는 6개월까지 표기 됩니다.
-
+
+ ```json
+ // 예) 할부 개월수를 3개월까지 렌더링 되도록 설정
+ {
+ "pg": "welcome",
+ "pay_method": "card",
+ "display": {
+ "card_quota": [2,3]
+ }
+ }
-// 결과) 테스트 당시 우리카드가 6개월까지 무이자 할부 이벤트가 진행중이기 때문에 6개월까지 할부 개월수가 렌더링 됨
-```
+ // 결과) 테스트 당시 우리카드가 6개월까지 무이자 할부 이벤트가 진행중이기 때문에 6개월까지 할부 개월수가 렌더링 됨
+ ```
+
-### 카카오페이의 경우, 카드 정보를 제공하지 않음
+#### 카카오페이의 경우, 카드 정보를 제공하지 않음
카카오페이에 등록 된 카드로 결제시 카카오페이에서 카드 정보를 내려주지 않기 때문에 카드 정보를 확인할 수 없습니다.
-
-
-# 빌링키 발급 유의사항
+## 빌링키 발급 유의사항
### 빌링키 발급 수단(`pay_method`)은 필수 입력이며 카드(`card`)만 허용 됨
@@ -467,11 +437,11 @@ display: {
금액(amount) 파라미터는 필수 입력이며, **전달 한 금액(amount)만큼 실제로 승인이 되지 않고** 단순히 빌링키 발급 창에 표기 될 용도로만 사용됩니다.
-### 면세 금액(tax_free)과 부가세(vat_amount)는 지원하지 않음
+### 면세 금액(tax\_free)과 부가세(vat\_amount)는 지원하지 않음
빌링키 발급만 되고 실제 승인은 되지 않기 때문에 면세 금액과 부가세는 지원하지 않으며, 전달해도 무시됩니다.
-# 빌링키 발급과 동시에 결제 유의사항
+## 빌링키 발급과 동시에 결제 유의사항
### 빌링키 발급 및 결제 수단(`pay_method`)은 필수 입력이며 휴대폰(`phone`)만 허용 됨
@@ -481,7 +451,7 @@ display: {
금액(amount) 파라미터는 필수 입력이며, **전달 한 금액(amount)만큼 실제로 승인이 됩니다.**
-### 면세 금액(tax_free)과 부가세(vat_amount)는 지원하지 않음
+### 면세 금액(tax\_free)과 부가세(vat\_amount)는 지원하지 않음
웰컴페이먼츠의 경우 빌링키 발급과 동시에 결제시, 실제 승인이 되지만 면세 금액과 부가세는 지원하지 않으며, 전달해도 무시됩니다.
@@ -491,7 +461,7 @@ display: {
따라서 제공기간 파라미터는 지원되지 않으며, PG 창의 제공기간 영역에 무조건 "월 자동결제"로 표기됩니다.
-# 에스크로 유의사항
+## 에스크로 유의사항
### 에스크로 결제의 경우 고객사가 임의로 취소할 수 없음
diff --git a/src/content/docs/ko/pg/payment-gateway/welcome/readme.mdx b/src/content/docs/ko/pg/payment-gateway/welcome/readme.mdx
index 3457b6313..1292e7a56 100644
--- a/src/content/docs/ko/pg/payment-gateway/welcome/readme.mdx
+++ b/src/content/docs/ko/pg/payment-gateway/welcome/readme.mdx
@@ -31,649 +31,653 @@ import Hint from "~/components/Hint.astro";
[JavaScript SDK](../../../sdk/javascript-sdk/readme) `IMP.request_pay(param, callback)`을 호출하여
웰컴페이먼츠 결제/빌링키 발급/빌링키 발급과 동시에 결제창을 호출할 수 있습니다. **트랜잭션 결과**는
PC의 경우 **callback** 함수로 전달되고
-모바일의 경우 **m_redirect_url**로 302 리디렉션됩니다.
+모바일의 경우 **m\_redirect\_url**로 302 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg: 'welcome.{상점 ID}',
- pay_method: 'card',
- merchant_uid: "orderNo0001", // 고객사에서 채번한 주문 고유 번호입니다.
- name: '주문명:결제테스트',
- amount: 1004,
- buyer_email: 'test@portone.io',
- buyer_name: '구매자이름',
- buyer_tel: '010-1234-5678',
- m_redirect_url: '{모바일에서 결제 완료 후 리디렉션 될 URL}',
-}, function(rsp) { // callback 로직
- const { imp_uid, merchant_uid } = rsp;
-
- // 콜백 함수로 전달 받은 imp_uid로 포트원 결제 내역 조회 API를 통해 결제 상태를 판단합니다.
-});
-```
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "welcome.{상점 ID}",
+ pay_method: "card",
+ merchant_uid: "orderNo0001", // 고객사에서 채번한 주문 고유 번호입니다.
+ name: "주문명:결제테스트",
+ amount: 1004,
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ // callback 로직
+ const { imp_uid, merchant_uid } = rsp;
-
-
주요 파라미터 설명
+ // 콜백 함수로 전달 받은 imp_uid로 포트원 결제 내역 조회 API를 통해 결제 상태를 판단합니다.
+ },
+ );
+ ```
-**`pg`** **\*** **`welcome`**
+
+
주요 파라미터 설명
-**PG사 구분코드**
+ **`pg`** **\*** **`welcome`**
-**`pay_method`** **\*** **string**
+ **PG사 구분코드**
-**결제수단 구분코드**
+ **`pay_method`** **\*** **string**
-- card (신용카드)
-- trans (실시간 계좌이체)
-- vbank (가상계좌)
-- phone (휴대폰소액결제)
-- culturegift (문화상품권)
-- lpay (LPAY)
-- kakaopay (카카오페이)
-- payco (페이코)
-- tosspay (토스페이)
+ **결제수단 구분코드**
-**`merchant_uid`** **\*** **string**
+ - card (신용카드)
+ - trans (실시간 계좌이체)
+ - vbank (가상계좌)
+ - phone (휴대폰소액결제)
+ - culturegift (문화상품권)
+ - lpay (LPAY)
+ - kakaopay (카카오페이)
+ - payco (페이코)
+ - tosspay (토스페이)
-**주문 번호**
+ **`merchant_uid`** **\*** **string**
-매번 고유하게 채번되어야 합니다.
+ **주문 번호**
-**`amount`** **\*** **`integer`**
+ 매번 고유하게 채번되어야 합니다.
-**결제 금액**
+ **`amount`** **\*** **`integer`**
-**string** 이 아닌 점에 유의하세요.
+ **결제 금액**
-**`tax_free`** **number**
+ **string** 이 아닌 점에 유의하세요.
-**면세 금액**
+ **`tax_free`** **number**
-**`vat_amount`** **number**
+ **면세 금액**
-**부가세 금액**
+ **`vat_amount`** **number**
-상점 아이디가 “부가세 업체 정함”으로 설정 된 경우일때만 전달 가능합니다.
+ **부가세 금액**
-주의: 전체 금액의 10% 이하만 허용 됩니다.
+ 상점 아이디가 “부가세 업체 정함”으로 설정 된 경우일때만 전달 가능합니다.
-**`buyer_name`** **\*** **string**
+ 주의: 전체 금액의 10% 이하만 허용 됩니다.
-**구매자 이름**
+ **`buyer_name`** **\*** **string**
-주의: 웰컴페이먼츠의 경우 구매자 이름은 필수 입력입니다.
+ **구매자 이름**
-**`buyer_tel`** **\*** **string**
+ 주의: 웰컴페이먼츠의 경우 구매자 이름은 필수 입력입니다.
-**구매자 연락처**
+ **`buyer_tel`** **\*** **string**
-주의: 웰컴페이먼츠의 경우 구매자 연락처는 필수 입력입니다.
+ **구매자 연락처**
-**`buyer_email`** **string**
+ 주의: 웰컴페이먼츠의 경우 구매자 연락처는 필수 입력입니다.
-**구매자 이메일 주소**
+ **`buyer_email`** **string**
-**`m_redirect_url`** **string**
+ **구매자 이메일 주소**
-**모바일 환경에서 트랜잭션 종료 후 302 리디렉션 될 URL**
+ **`m_redirect_url`** **string**
-주의: 웰컴페이먼츠의 경우 **모바일 환경에서 필수 입력**입니다.
+ **모바일 환경에서 트랜잭션 종료 후 302 리디렉션 될 URL**
-**`notice_url`** **string** 또는 **string[]**
+ 주의: 웰컴페이먼츠의 경우 **모바일 환경에서 필수 입력**입니다.
-**트랜잭션 종료 후 웹훅이 발송 될 고객사 서버 URL**
+ **`notice_url`** **string** 또는 **string\[]**
-주의: notice_url 파라미터 설정시, 콘솔에 설정 된 웹훅 URL은 override 되며 notice_url에 전달 한 주소로만 웹훅이 발송됩니다.
+ **트랜잭션 종료 후 웹훅이 발송 될 고객사 서버 URL**
-**`confirm_url`** **string**
+ 주의: notice\_url 파라미터 설정시, 콘솔에 설정 된 웹훅 URL은 override 되며 notice\_url에 전달 한 주소로만 웹훅이 발송됩니다.
-**트랜잭션 승인 직전 최종 승인 여부를 질의 할 고객사 서버 URL**
+ **`confirm_url`** **string**
-트랜잭션 승인 직전, 포트원 서버에서 confirm_url로 트랜잭션 최종 승인 여부를 질의하게 되며 200 외의 응답을 받은 경우 트랜잭션은 중단됩니다.
+ **트랜잭션 승인 직전 최종 승인 여부를 질의 할 고객사 서버 URL**
-**`app_scheme`** **string**
+ 트랜잭션 승인 직전, 포트원 서버에서 confirm\_url로 트랜잭션 최종 승인 여부를 질의하게 되며 200 외의 응답을 받은 경우 트랜잭션은 중단됩니다.
-**IOS 앱에서 결제시 카드/은행 앱에서 인증 후 복귀 될 고객사 커스텀 앱 URL Scheme**
+ **`app_scheme`** **string**
-- 예: portone://
-- 주의: **IOS 앱 결제시 필수** 입력이며 **앱이 아닌 모바일 웹 결제시에는 입력하지 마세요.**
+ **IOS 앱에서 결제시 카드/은행 앱에서 인증 후 복귀 될 고객사 커스텀 앱 URL Scheme**
-**`currency`** **`KRW`**
+ - 예: portone://
+ - 주의: **IOS 앱 결제시 필수** 입력이며 **앱이 아닌 모바일 웹 결제시에는 입력하지 마세요.**
-**결제 통화**
+ **`currency`** **`KRW`**
-웰컴페이먼츠의 경우 KRW만 허용되며, 미 입력시 KRW로 자동 적용됩니다.
+ **결제 통화**
-**`language`** **string**
+ 웰컴페이먼츠의 경우 KRW만 허용되며, 미 입력시 KRW로 자동 적용됩니다.
-**결제창 언어 설정**
+ **`language`** **string**
-- ko(한국어, 기본값)
-- en(영어)
-- zh(중국어)
+ **결제창 언어 설정**
-**`digital`** **string**
+ - ko(한국어, 기본값)
+ - en(영어)
+ - zh(중국어)
-**휴대폰 소액결제시 실물/컨텐츠 여부**
+ **`digital`** **string**
-주의: **휴대폰 소액결제시 필수 입력**입니다.
+ **휴대폰 소액결제시 실물/컨텐츠 여부**
-**`vbank_due`** **\*** **string**
+ 주의: **휴대폰 소액결제시 필수 입력**입니다.
-**가상계좌 입금기한**
+ **`vbank_due`** **\*** **string**
-- YYYY-MM-DD
-- YYYY-MM-DD HH:mm:ss
-- YYYYMMDD
-- YYYYMMDDHHmmss
+ **가상계좌 입금기한**
-주의: 웰컴페이먼츠의 경우 무시되며 무조건 59초로 설정 됩니다.
+ - YYYY-MM-DD
+ - YYYY-MM-DD HH:mm:ss
+ - YYYYMMDD
+ - YYYYMMDDHHmmss
-**`escrow`** **boolean**
+ 주의: 웰컴페이먼츠의 경우 무시되며 무조건 59초로 설정 됩니다.
-**에스크로 결제 여부**
+ **`escrow`** **boolean**
-웰컴페이먼츠의 경우, 카드/계좌이체/가상계좌 결제시 에스크로 결제가 허용됩니다.
+ **에스크로 결제 여부**
-**`useCardPoint`** **boolean**
+ 웰컴페이먼츠의 경우, 카드/계좌이체/가상계좌 결제시 에스크로 결제가 허용됩니다.
-**카드사 포인트 사용 여부**
+ **`useCardPoint`** **boolean**
-웰컴페이먼츠의 경우, 카드사 포인트 사용 불가 옵션(useCardPoint: false)은 지원하지 않습니다.
+ **카드사 포인트 사용 여부**
-카드사 포인트 사용(useCardPoint: true) 또는 기본값(=파라미터 전달하지 않음, 결제창에서 고객이 카드사 포인트 사용 여부 결정)만 사용 가능합니다.
+ 웰컴페이먼츠의 경우, 카드사 포인트 사용 불가 옵션(useCardPoint: false)은 지원하지 않습니다.
-**`useFreeInterestFromMall`** **boolean**
+ 카드사 포인트 사용(useCardPoint: true) 또는 기본값(=파라미터 전달하지 않음, 결제창에서 고객이 카드사 포인트 사용 여부 결정)만 사용 가능합니다.
-**상점 부담 무이자 할부 사용 여부**
+ **`useFreeInterestFromMall`** **boolean**
-**`period`** **object**
+ **상점 부담 무이자 할부 사용 여부**
-**서비스 제공 기간**
+ **`period`** **object**
-(from과 to) 또는 interval 중 하나만 입력 가능합니다.
+ **서비스 제공 기간**
-주의: 모바일 환경 - 휴대폰 소액결제시엔 지원하지 않습니다.
+ (from과 to) 또는 interval 중 하나만 입력 가능합니다.
-- **`from`**: 서비스 제공 시작 시각
-- **`to`**: 서비스 제공 종료 시각
+ 주의: 모바일 환경 - 휴대폰 소액결제시엔 지원하지 않습니다.
- - YYYY-MM-DD
- - YYYY-MM-DD HH:mm:ss
- - YYYYMMDD
- - YYYYMMDDHHmmss
+ - **`from`**: 서비스 제공 시작 시각
- 웰컴페이먼츠의 경우
+ - **`to`**: 서비스 제공 종료 시각
- - PC: 날짜까지만 입력 가능하며 시간은 무시됩니다.
- - 모바일: 날짜와 시간 모두 입력 가능하며 초는 무시됩니다.
+ - YYYY-MM-DD
+ - YYYY-MM-DD HH:mm:ss
+ - YYYYMMDD
+ - YYYYMMDDHHmmss
-- **`interval`**: 서비스 제공 간격
- - 1m: 매월 정기결제
- - 1y: 매년 정기결제
+ 웰컴페이먼츠의 경우
-**`bypass.logo_url`** **string**
+ - PC: 날짜까지만 입력 가능하며 시간은 무시됩니다.
+ - 모바일: 날짜와 시간 모두 입력 가능하며 초는 무시됩니다.
-결제창에 노출 될 메인 로고 URL(크기: 89x19)로 **PC 전용** 파라미터입니다.
+ - **`interval`**: 서비스 제공 간격
+ - 1m: 매월 정기결제
+ - 1y: 매년 정기결제
-**`bypass.logo_2nd`** **string**
+ **`bypass.logo_url`** **string**
-결제창에 노출 될 서브 로고 URL(크기: 64x13)로 **PC 전용** 파라미터입니다.
+ 결제창에 노출 될 메인 로고 URL(크기: 89x19)로 **PC 전용** 파라미터입니다.
-**`bypass.P_CARD_OPTION`** **object**
+ **`bypass.logo_2nd`** **string**
-**모바일 카드/간편결제 전용** 파라미터입니다.
+ 결제창에 노출 될 서브 로고 URL(크기: 64x13)로 **PC 전용** 파라미터입니다.
-1. 신용카드 우선 선택 옵션
+ **`bypass.P_CARD_OPTION`** **object**
- 예) selcode=14
+ **모바일 카드/간편결제 전용** 파라미터입니다.
-- 해당 카드 코드에 해당하는 카드가 선택된 채로 Display
-- 간편결제는 불가능 (타 카드 선택 가능)
+ 1. 신용카드 우선 선택 옵션
-2. 선택적 표시 옵션
+ 예) selcode=14
- 예1) onlycard=visa3d
- 예2) selcode=14:onlycard=visa3d
+ - 해당 카드 코드에 해당하는 카드가 선택된 채로 Display
+ - 간편결제는 불가능 (타 카드 선택 가능)
-- 안심결제: visa3d
-- ISP: isp
-- 간편결제: easypay 중 선택 적 표시
+ 2. 선택적 표시 옵션
-**`bypass.P_ONLY_EASYPAYCODE`** **string**
+ 예1) onlycard=visa3d
+ 예2) selcode=14:onlycard=visa3d
-카드 결제창 내 렌더링 될 간편 결제 리스트를 의미하며 **모바일 전용** 파라미터입니다.
+ - 안심결제: visa3d
+ - ISP: isp
+ - 간편결제: easypay 중 선택 적 표시
-예) 카카오페이, 엘페이, 페이코만 렌더링 →
-”KAKAOPAY:LPAY:PAYCO” 전달
+ **`bypass.P_ONLY_EASYPAYCODE`** **string**
-- 카카오페이: KAKAOPAY
-- 엘페이: LPAY
-- 페이코: PAYCO
-- 토스페이: TOSSPAY
+ 카드 결제창 내 렌더링 될 간편 결제 리스트를 의미하며 **모바일 전용** 파라미터입니다.
-**`bypass.acceptmethod`** **array**
+ 예) 카카오페이, 엘페이, 페이코만 렌더링 →
+ ”KAKAOPAY:LPAY:PAYCO” 전달
-**PC - 카드 결제 전용 파라미터**
+ - 카카오페이: KAKAOPAY
+ - 엘페이: LPAY
+ - 페이코: PAYCO
+ - 토스페이: TOSSPAY
-|형식 |설명 |
-|---------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-|SKIN(색상코드) |결제 창의 배경 색상 - 기본값 : #c1272c - 예시: SKIN(#fc6b2d) |
-|below1000 |1,000원 미만 결제 허용 여부 - 기본값: 허용하지 않음 |
-|paypopup |안심클릭을 팝업 형태로 렌더링 시킬지 여부 - 기본값: 레이어 |
-|onlyeasypaycode(간편 결제 리스트)|카드 결제창 내 렌더링 될 간편 결제 리스트 예) 카카오페이, 엘페이, 페이코만 렌더링 → ”kakaopay:lpay:payco” 전달 - 카카오페이: `kakaopay` - 엘페이: `lpay` - 페이코: `payco` - 토스페이: `tosspay`|
-|SLIMQUOTA(슬림 할부 설정) |부분 무이자 설정. 슬림 할부 - 형식) SLIMQUOTA(코드-개월:개월^코드-개월:개월 - 예시) SLIMQUOTA(11-2:3^34-2:3) |
+ **`bypass.acceptmethod`** **array**
-**PC - 휴대폰 소액 결제 전용 파라미터**
+ **PC - 카드 결제 전용 파라미터**
-|형식 |설명 |
-|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-|hppdefaultcorp(통신사 코드)|휴대폰 소액결제시 기본 선택되어있는 통신사 - 기본: 기본 선택되어있는 통신사 없음 예) KT 기본 선택 → ”hppdefaultcorp(KT)” 전달 - SKT: `SKT` - KT: `KTF` - LG 유플러스: `LGT` - 알뜰폰 전체: `MVNO` - 알뜰폰 CJ 헬로 모바일: `CJH` - 알뜰폰 티플러스: `KCT` - 알뜰폰 SK 세븐모바일: `SKL` |
-|hppnofix(N 또는 Y) |휴대폰 소액결제창에 자동 입력되는 `buyer_tel`값을 수정할 수 있는지 여부 - 기본값: 수정 가능 - Y : 수정 불가능 - N : 수정 가능(기본) |
+ |형식 |설명 |
+ |---------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+ |SKIN(색상코드) |결제 창의 배경 색상 - 기본값 : #c1272c - 예시: SKIN(#fc6b2d) |
+ |below1000 |1,000원 미만 결제 허용 여부 - 기본값: 허용하지 않음 |
+ |paypopup |안심클릭을 팝업 형태로 렌더링 시킬지 여부 - 기본값: 레이어 |
+ |onlyeasypaycode(간편 결제 리스트)|카드 결제창 내 렌더링 될 간편 결제 리스트 예) 카카오페이, 엘페이, 페이코만 렌더링 → ”kakaopay:lpay:payco” 전달 - 카카오페이: `kakaopay` - 엘페이: `lpay` - 페이코: `payco` - 토스페이: `tosspay`|
+ |SLIMQUOTA(슬림 할부 설정) |부분 무이자 설정. 슬림 할부 - 형식) SLIMQUOTA(코드-개월:개월^코드-개월:개월 - 예시) SLIMQUOTA(11-2:3^34-2:3) |
-```javascript
-//
-...중략
-pg: 'welcome',
-bypass: {
- welcome: {
- acceptmethod: [
- "SKIN(#fc6b2d)", // 결제창 배경 색상 #fc6b2d
- "below1000", // 1,000원 이하 결제 허용
- "paypopup", // 안심 클릭을 팝업으로 렌더링
- "onlyeasypaycode(kakaopay:payco)", // 카드 결제창 내 간편결제는 카카오페이와 페이코만 렌더링
- "hppdefaultcorp(KT)", // 휴대폰 소액결제시 KT 기본 선택
- "hppnofix(Y)", // 휴대폰 소액결제시 결제 창 내에서 구매자 전화번호 수정 불가능
- ]
- }
-}
-```
+ **PC - 휴대폰 소액 결제 전용 파라미터**
-**`bypass.P_RESERVED`** **array**
-
-**모바일 - 카드 결제 전용 파라미터**
-
-|형식 |설명 |
-|-----------|----------------------------------------------------------|
-|below1000=Y|1,000원 미만 결제 허용 여부 - 기본값: 허용하지 않음|
-
-**모바일 - 휴대폰 소액 결제 전용 파라미터**
-
-|형식 |설명 |
-|----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-|hpp_default_corp=통신사 코드|휴대폰 소액결제시 기본 선택되어있는 통신사 - 기본: 기본 선택되어있는 통신사 없음 예) KT 기본 선택 → ”hpp_default_corp=KT” 전달 - SKT: `SKT` - KT: `KTF` - LG 유플러스: `LGT` - 알뜰폰 전체: `MVNO` - 알뜰폰 CJ 헬로 모바일: `CJH` - 알뜰폰 티플러스: `KCT` - 알뜰폰 SK 세븐모바일: `SKL`|
-|hpp_nofix=Y 또는 N |휴대폰 소액결제창에 자동 입력되는 buyer_tel값을 수정할 수 있는지 여부 - 기본: 수정 가능 - Y : 수정 불가능 - N : 수정 가능(기본) |
-
-```javascript
-//
-...중략
-pg: 'welcome',
-bypass: {
- welcome: {
- P_RESERVED: [
- "below1000=Y", // 1,000원 이하 결제 허용
- "hpp_default_corp=KT", // 휴대폰 소액결제시 KT 기본 선택
- "hppnofix=Y", // 휴대폰 소액결제시 결제 창 내에서 구매자 전화번호 수정 불가능
- ]
- }
-}
-```
+ |형식 |설명 |
+ |---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+ |hppdefaultcorp(통신사 코드)|휴대폰 소액결제시 기본 선택되어있는 통신사 - 기본: 기본 선택되어있는 통신사 없음 예) KT 기본 선택 → ”hppdefaultcorp(KT)” 전달 - SKT: `SKT` - KT: `KTF` - LG 유플러스: `LGT` - 알뜰폰 전체: `MVNO` - 알뜰폰 CJ 헬로 모바일: `CJH` - 알뜰폰 티플러스: `KCT` - 알뜰폰 SK 세븐모바일: `SKL` |
+ |hppnofix(N 또는 Y) |휴대폰 소액결제창에 자동 입력되는 `buyer_tel`값을 수정할 수 있는지 여부 - 기본값: 수정 가능 - Y : 수정 불가능 - N : 수정 가능(기본) |
-
+ ```json
+ {
+ "pg": "welcome",
+ "bypass": {
+ "welcome": {
+ "acceptmethod": [
+ "SKIN(#fc6b2d)", // 결제창 배경 색상 #fc6b2d
+ "below1000", // 1,000원 이하 결제 허용
+ "paypopup", // 안심 클릭을 팝업으로 렌더링
+ "onlyeasypaycode(kakaopay:payco)", // 카드 결제창 내 간편결제는 카카오페이와 페이코만 렌더링
+ "hppdefaultcorp(KT)", // 휴대폰 소액결제시 KT 기본 선택
+ "hppnofix(Y)" // 휴대폰 소액결제시 결제 창 내에서 구매자 전화번호 수정 불가능
+ ]
+ }
+ }
+ }
+ ```
-
-
- 웰컴페이먼츠 지원 결제 수단
-
+ **`bypass.P_RESERVED`** **array**
-- card + 에스크로, 다이렉트
-- vbank + 에스크로
-- trans + 에스크로
-- phone
-- culturegift
-- lpay
-- kakaopay
-- payco
-- tosspay
+ **모바일 - 카드 결제 전용 파라미터**
-
+ |형식 |설명 |
+ |-----------|----------------------------------------------------------|
+ |below1000=Y|1,000원 미만 결제 허용 여부 - 기본값: 허용하지 않음|
-
-
-
- 일반 결제 창 호출 파라미터에서 **customer\_uid**, **customer\_id**값을 추가하면 빌링키 발급 창을 호출할 수 있습니다.
- 빌링키 발급 창에서 빌링키를 발급 받은 후, 빌링 결제 API를 호출해 해당 빌링키로 결제를 할 수 있습니다.
- ```javascript title="Javascript SDK"
- IMP.request_pay({
- pg: "welcome.{MID}",
- pay_method: "card", // 빌링키 발급 수단입니다. 웰컴페이먼츠의 경우 'card'만 지원됩니다.
- merchant_uid: "orderMonthly0001", // 고객사에서 채번한 주문 고유 번호입니다.
- name: "빌링키 발급",
- amount: 1000, // 전달한 결제 금액 만큼 실제로 승인되지는 않으며, 단순히 빌링키 발급 창에 표기 용도입니다.
- customer_uid: "your-customer-unique-id", // 고객사가 구매자의 결제 수단을 특정하기 위해 채번한 고유 ID로 빌링키 발급시 필수 입력입니다.
- customer_id: "matthew", // 고객사가 회원에게 부여한 고유 ID입니다.
- buyer_email: "test@portone.io",
- buyer_name: "포트원",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{모바일에서 빌링키 발급 완료 후 리디렉션 될 URL}",
- }, function (rsp) {
- const { imp_uid, merchant_uid } = rsp;
-
- // 콜백 함수로 전달 받은 imp_uid로 포트원 결제 내역 조회 API를 통해 빌링키 발급 상태를 판단합니다.
- });
- ```
+ **모바일 - 휴대폰 소액 결제 전용 파라미터**
-
-
주요 파라미터 설명
+ |형식 |설명 |
+ |------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+ |hpp\_default\_corp=통신사 코드|휴대폰 소액결제시 기본 선택되어있는 통신사 - 기본: 기본 선택되어있는 통신사 없음 예) KT 기본 선택 → ”hpp\_default\_corp=KT” 전달 - SKT: `SKT` - KT: `KTF` - LG 유플러스: `LGT` - 알뜰폰 전체: `MVNO` - 알뜰폰 CJ 헬로 모바일: `CJH` - 알뜰폰 티플러스: `KCT` - 알뜰폰 SK 세븐모바일: `SKL`|
+ |hpp\_nofix=Y 또는 N |휴대폰 소액결제창에 자동 입력되는 buyer\_tel값을 수정할 수 있는지 여부 - 기본: 수정 가능 - Y : 수정 불가능 - N : 수정 가능(기본) |
-**`pg`** **\*** **`welcome`**
+ ```json
+ {
+ "pg": "welcome",
+ "bypass": {
+ "welcome": {
+ "P_RESERVED": [
+ "below1000=Y", // 1,000원 이하 결제 허용
+ "hpp_default_corp=KT", // 휴대폰 소액결제시 KT 기본 선택
+ "hppnofix=Y" // 휴대폰 소액결제시 결제 창 내에서 구매자 전화번호 수정 불가능
+ ]
+ }
+ }
+ }
+ ```
+
-**PG사 구분코드**
+
+
+ 웰컴페이먼츠 지원 결제 수단
+
-**`merchant_uid`** **\*** **string**
+ - card + 에스크로, 다이렉트
+ - vbank + 에스크로
+ - trans + 에스크로
+ - phone
+ - culturegift
+ - lpay
+ - kakaopay
+ - payco
+ - tosspay
+
+
-**주문 번호**
+
+ 일반 결제 창 호출 파라미터에서 **customer\_uid**, **customer\_id**값을 추가하면 빌링키 발급 창을 호출할 수 있습니다.
+ 빌링키 발급 창에서 빌링키를 발급 받은 후, 빌링 결제 API를 호출해 해당 빌링키로 결제를 할 수 있습니다.
-매번 고유하게 채번되어야 합니다.
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "welcome.{MID}",
+ pay_method: "card", // 빌링키 발급 수단입니다. 웰컴페이먼츠의 경우 'card'만 지원됩니다.
+ merchant_uid: "orderMonthly0001", // 고객사에서 채번한 주문 고유 번호입니다.
+ name: "빌링키 발급",
+ amount: 1000, // 전달한 결제 금액 만큼 실제로 승인되지는 않으며, 단순히 빌링키 발급 창에 표기 용도입니다.
+ customer_uid: "your-customer-unique-id", // 고객사가 구매자의 결제 수단을 특정하기 위해 채번한 고유 ID로 빌링키 발급시 필수 입력입니다.
+ customer_id: "matthew", // 고객사가 회원에게 부여한 고유 ID입니다.
+ buyer_email: "test@portone.io",
+ buyer_name: "포트원",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{모바일에서 빌링키 발급 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ const { imp_uid, merchant_uid } = rsp;
-**`amount`** **\*** **`integer`**
+ // 콜백 함수로 전달 받은 imp_uid로 포트원 결제 내역 조회 API를 통해 빌링키 발급 상태를 판단합니다.
+ },
+ );
+ ```
-**결제 금액**
+
+
주요 파라미터 설명
-**string** 이 아닌 점에 유의하세요.
+ **`pg`** **\*** **`welcome`**
-전달한 결제 금액 만큼 실제로 승인되지는 않으며, 단순히 빌링키 발급 창에 표기 용도입니다.
+ **PG사 구분코드**
-**`pay_method`** **\*** **`card`**
+ **`merchant_uid`** **\*** **string**
-**빌링키 발급 수단**
+ **주문 번호**
-웰컴페이먼츠의 경우, 빌링키 발급 수단은 `card`만 허용되며 **반드시 `card`를 필수로 입력해주셔야** 합니다.
+ 매번 고유하게 채번되어야 합니다.
-**`customer_uid`** **\*** **string**
+ **`amount`** **\*** **`integer`**
-**빌링키 발급 수단 고유 ID**
+ **결제 금액**
-고객사가 구매자의 빌링키 발급 수단을 특정하기 위해 채번한 고유 번호로 빌링키 발급시 필수 입력입니다.
+ **string** 이 아닌 점에 유의하세요.
-**`customer_id`** **string**
+ 전달한 결제 금액 만큼 실제로 승인되지는 않으며, 단순히 빌링키 발급 창에 표기 용도입니다.
-**구매자 고유 ID**
+ **`pay_method`** **\*** **`card`**
-고객사가 구매자를 특정하기 위해 채번한 고유 번호입니다.
+ **빌링키 발급 수단**
-**`buyer_name`** **\*** **string**
+ 웰컴페이먼츠의 경우, 빌링키 발급 수단은 `card`만 허용되며 **반드시 `card`를 필수로 입력해주셔야** 합니다.
-**구매자 이름**
+ **`customer_uid`** **\*** **string**
-주의: 웰컴페이먼츠의 경우 구매자 이름은 필수 입력입니다.
+ **빌링키 발급 수단 고유 ID**
-**`buyer_tel`** **\*** **string**
+ 고객사가 구매자의 빌링키 발급 수단을 특정하기 위해 채번한 고유 번호로 빌링키 발급시 필수 입력입니다.
-**구매자 연락처**
+ **`customer_id`** **string**
-주의: 웰컴페이먼츠의 경우 구매자 연락처는 필수 입력입니다.
+ **구매자 고유 ID**
-**`buyer_email`** **string**
+ 고객사가 구매자를 특정하기 위해 채번한 고유 번호입니다.
-**구매자 이메일 주소**
+ **`buyer_name`** **\*** **string**
-**`m_redirect_url`** **string**
+ **구매자 이름**
-**모바일 환경에서 트랜잭션 종료 후 302 리디렉션 될 URL**
+ 주의: 웰컴페이먼츠의 경우 구매자 이름은 필수 입력입니다.
-주의: 웰컴페이먼츠의 경우 **모바일 환경에서 필수 입력**입니다.
+ **`buyer_tel`** **\*** **string**
-**`notice_url`** **string** 또는 **string[]**
+ **구매자 연락처**
-**트랜잭션 종료 후 웹훅이 발송 될 고객사 서버 URL**
+ 주의: 웰컴페이먼츠의 경우 구매자 연락처는 필수 입력입니다.
-주의: notice_url 파라미터 설정시, 콘솔에 설정 된 웹훅 URL은 override 되며 notice_url에 전달 한 주소로만 웹훅이 발송됩니다.
+ **`buyer_email`** **string**
-**`period`** **object**
+ **구매자 이메일 주소**
-**서비스 제공 기간**
+ **`m_redirect_url`** **string**
-(from과 to) 또는 interval 중 하나만 입력 가능합니다.
+ **모바일 환경에서 트랜잭션 종료 후 302 리디렉션 될 URL**
-- **`from`**: 서비스 제공 시작 시각
-- **`to`**: 서비스 제공 종료 시각
+ 주의: 웰컴페이먼츠의 경우 **모바일 환경에서 필수 입력**입니다.
- - YYYY-MM-DD
- - YYYY-MM-DD HH:mm:ss
- - YYYYMMDD
- - YYYYMMDDHHmmss
+ **`notice_url`** **string** 또는 **string\[]**
- 웰컴페이먼츠의 경우
+ **트랜잭션 종료 후 웹훅이 발송 될 고객사 서버 URL**
- - PC: 날짜까지만 입력 가능하며 시간은 무시됩니다.
- - 모바일: 날짜와 시간 모두 입력 가능하며 초는 무시됩니다.
+ 주의: notice\_url 파라미터 설정시, 콘솔에 설정 된 웹훅 URL은 override 되며 notice\_url에 전달 한 주소로만 웹훅이 발송됩니다.
-- **`interval`**: 서비스 제공 간격
- - 1m: 매월 정기결제
- - 1y: 매년 정기결제
+ **`period`** **object**
-**`bypass.logo_url`** **string**
+ **서비스 제공 기간**
-결제창에 노출 될 메인 로고 URL(크기: 89x19)로 **PC 전용** 파라미터입니다.
+ (from과 to) 또는 interval 중 하나만 입력 가능합니다.
-**`bypass.logo_2nd`** **string**
+ - **`from`**: 서비스 제공 시작 시각
-결제창에 노출 될 서브 로고 URL(크기: 64x13)로 **PC 전용** 파라미터입니다.
+ - **`to`**: 서비스 제공 종료 시각
-
+ - YYYY-MM-DD
+ - YYYY-MM-DD HH:mm:ss
+ - YYYYMMDD
+ - YYYYMMDDHHmmss
-
-
- 웰컴페이먼츠 지원 빌링키 발급 수단
-
+ 웰컴페이먼츠의 경우
-- card
+ - PC: 날짜까지만 입력 가능하며 시간은 무시됩니다.
+ - 모바일: 날짜와 시간 모두 입력 가능하며 초는 무시됩니다.
-
+ - **`interval`**: 서비스 제공 간격
+ - 1m: 매월 정기결제
+ - 1y: 매년 정기결제
-
-
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg: 'welcome.{상점 ID}',
- pay_method: 'phone', // 빌링키 발급 및 결제 수단입니다. 웰컴페이먼츠의 경우 'phone'만 지원합니다.
- merchant_uid: "orderNo0001", // 고객사에서 채번한 주문 고유 번호입니다.
- name: '주문명:결제테스트',
- amount: 1000, // 전달한 금액 만큼 실제로 승인이 됩니다.
- customer_uid: "your-customer-unique-id", // 고객사가 구매자의 결제 수단을 특정하기 위해 채번한 고유 ID로 빌링키 발급시 필수 입력입니다.
- customer_id: "matthew", // 고객사가 회원에게 부여한 고유 ID입니다.
- buyer_email: 'test@portone.io',
- buyer_name: '구매자이름',
- buyer_tel: '010-1234-5678',
- m_redirect_url: '{모바일에서 결제 완료 후 리디렉션 될 URL}',
-}, function(rsp) { // callback 로직
- const { imp_uid, merchant_uid } = rsp;
-
- // 콜백 함수로 전달 받은 imp_uid로 포트원 결제 내역 조회 API를 통해 결제 상태를 판단합니다.
-});
-```
+ **`bypass.logo_url`** **string**
-
-
주요 파라미터 설명
+ 결제창에 노출 될 메인 로고 URL(크기: 89x19)로 **PC 전용** 파라미터입니다.
-**`pg`** **\*** **`welcome`**
+ **`bypass.logo_2nd`** **string**
-**PG사 구분코드**
+ 결제창에 노출 될 서브 로고 URL(크기: 64x13)로 **PC 전용** 파라미터입니다.
+
-**`merchant_uid`** **\*** **string**
+
+
+ 웰컴페이먼츠 지원 빌링키 발급 수단
+
-**주문 번호**
+ - card
+
+
-매번 고유하게 채번되어야 합니다.
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "welcome.{상점 ID}",
+ pay_method: "phone", // 빌링키 발급 및 결제 수단입니다. 웰컴페이먼츠의 경우 'phone'만 지원합니다.
+ merchant_uid: "orderNo0001", // 고객사에서 채번한 주문 고유 번호입니다.
+ name: "주문명:결제테스트",
+ amount: 1000, // 전달한 금액 만큼 실제로 승인이 됩니다.
+ customer_uid: "your-customer-unique-id", // 고객사가 구매자의 결제 수단을 특정하기 위해 채번한 고유 ID로 빌링키 발급시 필수 입력입니다.
+ customer_id: "matthew", // 고객사가 회원에게 부여한 고유 ID입니다.
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ // callback 로직
+ const { imp_uid, merchant_uid } = rsp;
-**`amount`** **\*** **`integer`**
+ // 콜백 함수로 전달 받은 imp_uid로 포트원 결제 내역 조회 API를 통해 결제 상태를 판단합니다.
+ },
+ );
+ ```
-**결제 금액**
+
+
주요 파라미터 설명
-**string** 이 아닌 점에 유의하세요.
+ **`pg`** **\*** **`welcome`**
-**`pay_method`** **\*** **`phone`**
+ **PG사 구분코드**
-**빌링키 발급 및 결제 수단을**
+ **`merchant_uid`** **\*** **string**
-- phone (휴대폰소액결제)
+ **주문 번호**
-웰컴페이먼츠의 경우, 빌링키 발급 동시에 결제 수단은 `phone`만 허용되며 **반드시 `phone`을 필수로 입력해주셔야** 합니다.
+ 매번 고유하게 채번되어야 합니다.
-**빌링키 발급 수단 고유 ID**
+ **`amount`** **\*** **`integer`**
-고객사가 구매자의 빌링키 발급 수단을 특정하기 위해 채번한 고유 번호로 빌링키 발급시 필수 입력입니다.
+ **결제 금액**
-**`customer_id`** **string**
+ **string** 이 아닌 점에 유의하세요.
-**구매자 고유 ID**
+ **`pay_method`** **\*** **`phone`**
-고객사가 구매자를 특정하기 위해 채번한 고유 번호입니다.
+ **빌링키 발급 및 결제 수단을**
-**`buyer_name`** **\*** **string**
+ - phone (휴대폰소액결제)
-**구매자 이름**
+ 웰컴페이먼츠의 경우, 빌링키 발급 동시에 결제 수단은 `phone`만 허용되며 **반드시 `phone`을 필수로 입력해주셔야** 합니다.
-주의: 웰컴페이먼츠의 경우 구매자 이름은 필수 입력입니다.
+ **빌링키 발급 수단 고유 ID**
-**`buyer_tel`** **\*** **string**
+ 고객사가 구매자의 빌링키 발급 수단을 특정하기 위해 채번한 고유 번호로 빌링키 발급시 필수 입력입니다.
-**구매자 연락처**
+ **`customer_id`** **string**
-주의: 웰컴페이먼츠의 경우 구매자 연락처는 필수 입력입니다.
+ **구매자 고유 ID**
-**`buyer_email`** **string**
+ 고객사가 구매자를 특정하기 위해 채번한 고유 번호입니다.
-**구매자 이메일 주소**
+ **`buyer_name`** **\*** **string**
-**`m_redirect_url`** **string**
+ **구매자 이름**
-**모바일 환경에서 트랜잭션 종료 후 302 리디렉션 될 URL**
+ 주의: 웰컴페이먼츠의 경우 구매자 이름은 필수 입력입니다.
-주의: 웰컴페이먼츠의 경우 **모바일 환경에서 필수 입력**입니다.
+ **`buyer_tel`** **\*** **string**
-**`notice_url`** **string** 또는 **string[]**
+ **구매자 연락처**
-**트랜잭션 종료 후 웹훅이 발송 될 고객사 서버 URL**
+ 주의: 웰컴페이먼츠의 경우 구매자 연락처는 필수 입력입니다.
-주의: notice_url 파라미터 설정시, 콘솔에 설정 된 웹훅 URL은 override 되며 notice_url에 전달 한 주소로만 웹훅이 발송됩니다.
+ **`buyer_email`** **string**
-**`confirm_url`** **string**
+ **구매자 이메일 주소**
-**트랜잭션 승인 직전 최종 승인 여부를 질의 할 고객사 서버 URL**
+ **`m_redirect_url`** **string**
-트랜잭션 승인 직전, 포트원 서버에서 confirm_url로 트랜잭션 최종 승인 여부를 질의하게 되며 200 외의 응답을 받은 경우 트랜잭션은 중단됩니다.
+ **모바일 환경에서 트랜잭션 종료 후 302 리디렉션 될 URL**
-**`currency`** **`KRW`**
+ 주의: 웰컴페이먼츠의 경우 **모바일 환경에서 필수 입력**입니다.
-**결제 통화**
+ **`notice_url`** **string** 또는 **string\[]**
-웰컴페이먼츠의 경우 KRW만 허용되며, 미 입력시 KRW로 자동 적용됩니다.
+ **트랜잭션 종료 후 웹훅이 발송 될 고객사 서버 URL**
-**`digital`** **\*** **string**
+ 주의: notice\_url 파라미터 설정시, 콘솔에 설정 된 웹훅 URL은 override 되며 notice\_url에 전달 한 주소로만 웹훅이 발송됩니다.
-**실물/컨텐츠 여부**
+ **`confirm_url`** **string**
-**`period`** **object**
+ **트랜잭션 승인 직전 최종 승인 여부를 질의 할 고객사 서버 URL**
-**서비스 제공 기간**
+ 트랜잭션 승인 직전, 포트원 서버에서 confirm\_url로 트랜잭션 최종 승인 여부를 질의하게 되며 200 외의 응답을 받은 경우 트랜잭션은 중단됩니다.
-(from과 to) 또는 interval 중 하나만 입력 가능합니다.
+ **`currency`** **`KRW`**
-주의: **모바일 환경에서는 지원하지 않습니다.**
+ **결제 통화**
-- **`from`**: 서비스 제공 시작 시각
-- **`to`**: 서비스 제공 종료 시각
+ 웰컴페이먼츠의 경우 KRW만 허용되며, 미 입력시 KRW로 자동 적용됩니다.
- - YYYY-MM-DD
- - YYYY-MM-DD HH:mm:ss
- - YYYYMMDD
- - YYYYMMDDHHmmss
+ **`digital`** **\*** **string**
- 웰컴페이먼츠의 경우
+ **실물/컨텐츠 여부**
- - PC: 날짜까지만 입력 가능하며 시간은 무시됩니다.
- - 모바일: 날짜와 시간 모두 입력 가능하며 초는 무시됩니다.
+ **`period`** **object**
-- **`interval`**: 서비스 제공 간격
- - 1m: 매월 정기결제
- - 1y: 매년 정기결제
+ **서비스 제공 기간**
-**`bypass.acceptmethod`** **array**
+ (from과 to) 또는 interval 중 하나만 입력 가능합니다.
-**PC - 휴대폰 소액 결제 전용 파라미터**
+ 주의: **모바일 환경에서는 지원하지 않습니다.**
-|형식 |설명 |
-|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-|hppdefaultcorp(통신사 코드)|휴대폰 소액결제시 기본 선택되어있는 통신사 - 기본: 기본 선택되어있는 통신사 없음 예) KT 기본 선택 → ”hppdefaultcorp(KT)” 전달 - SKT: `SKT` - KT: `KTF` - LG 유플러스: `LGT` - 알뜰폰 전체: `MVNO` - 알뜰폰 CJ 헬로 모바일: `CJH` - 알뜰폰 티플러스: `KCT` - 알뜰폰 SK 세븐모바일: `SKL` |
-|hppnofix(N 또는 Y) |휴대폰 소액결제창에 자동 입력되는 `buyer_tel`값을 수정할 수 있는지 여부 - 기본값: 수정 가능 - Y : 수정 불가능 - N : 수정 가능(기본) |
+ - **`from`**: 서비스 제공 시작 시각
-```javascript
-//
-...중략
-pg: 'welcome',
-bypass: {
- welcome: {
- acceptmethod: [
- "SKIN(#fc6b2d)", // 결제창 배경 색상 #fc6b2d
- "below1000", // 1,000원 이하 결제 허용
- "paypopup", // 안심 클릭을 팝업으로 렌더링
- "onlyeasypaycode(kakaopay:payco)", // 카드 결제창 내 간편결제는 카카오페이와 페이코만 렌더링
- "hppdefaultcorp(KT)", // 휴대폰 소액결제시 KT 기본 선택
- "hppnofix(Y)", // 휴대폰 소액결제시 결제 창 내에서 구매자 전화번호 수정 불가능
- ]
- }
-}
-```
+ - **`to`**: 서비스 제공 종료 시각
-**`bypass.P_RESERVED`** **array**
-
-**모바일 - 휴대폰 소액 결제 전용 파라미터**
-
-|형식 |설명 |
-|----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-|hpp_default_corp=통신사 코드|휴대폰 소액결제시 기본 선택되어있는 통신사 - 기본: 기본 선택되어있는 통신사 없음 예) KT 기본 선택 → ”hpp_default_corp=KT” 전달 - SKT: `SKT` - KT: `KTF` - LG 유플러스: `LGT` - 알뜰폰 전체: `MVNO` - 알뜰폰 CJ 헬로 모바일: `CJH` - 알뜰폰 티플러스: `KCT` - 알뜰폰 SK 세븐모바일: `SKL`|
-|hpp_nofix=Y 또는 N |휴대폰 소액결제창에 자동 입력되는 buyer_tel값을 수정할 수 있는지 여부 - 기본: 수정 가능 - Y : 수정 불가능 - N : 수정 가능(기본) |
-
-```javascript
-//
-...중략
-pg: 'welcome',
-bypass: {
- welcome: {
- P_RESERVED: [
- "below1000=Y", // 1,000원 이하 결제 허용
- "hpp_default_corp=KT", // 휴대폰 소액결제시 KT 기본 선택
- "hppnofix=Y", // 휴대폰 소액결제시 결제 창 내에서 구매자 전화번호 수정 불가능
- ]
- }
-}
-```
+ - YYYY-MM-DD
+ - YYYY-MM-DD HH:mm:ss
+ - YYYYMMDD
+ - YYYYMMDDHHmmss
-
+ 웰컴페이먼츠의 경우
-
-
- 웰컴페이먼츠 지원 빌링키 발급과 동시에 결제 수단
-
+ - PC: 날짜까지만 입력 가능하며 시간은 무시됩니다.
+ - 모바일: 날짜와 시간 모두 입력 가능하며 초는 무시됩니다.
-- phone
+ - **`interval`**: 서비스 제공 간격
+ - 1m: 매월 정기결제
+ - 1y: 매년 정기결제
-
+ **`bypass.acceptmethod`** **array**
+
+ **PC - 휴대폰 소액 결제 전용 파라미터**
+
+ |형식 |설명 |
+ |---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+ |hppdefaultcorp(통신사 코드)|휴대폰 소액결제시 기본 선택되어있는 통신사 - 기본: 기본 선택되어있는 통신사 없음 예) KT 기본 선택 → ”hppdefaultcorp(KT)” 전달 - SKT: `SKT` - KT: `KTF` - LG 유플러스: `LGT` - 알뜰폰 전체: `MVNO` - 알뜰폰 CJ 헬로 모바일: `CJH` - 알뜰폰 티플러스: `KCT` - 알뜰폰 SK 세븐모바일: `SKL` |
+ |hppnofix(N 또는 Y) |휴대폰 소액결제창에 자동 입력되는 `buyer_tel`값을 수정할 수 있는지 여부 - 기본값: 수정 가능 - Y : 수정 불가능 - N : 수정 가능(기본) |
-
+ ```json
+ {
+ "pg": "welcome",
+ "bypass": {
+ "welcome": {
+ "acceptmethod": [
+ "SKIN(#fc6b2d)", // 결제창 배경 색상 #fc6b2d
+ "below1000", // 1,000원 이하 결제 허용
+ "paypopup", // 안심 클릭을 팝업으로 렌더링
+ "onlyeasypaycode(kakaopay:payco)", // 카드 결제창 내 간편결제는 카카오페이와 페이코만 렌더링
+ "hppdefaultcorp(KT)", // 휴대폰 소액결제시 KT 기본 선택
+ "hppnofix(Y)" // 휴대폰 소액결제시 결제 창 내에서 구매자 전화번호 수정 불가능
+ ]
+ }
+ }
+ }
+ ```
+ **`bypass.P_RESERVED`** **array**
+
+ **모바일 - 휴대폰 소액 결제 전용 파라미터**
+
+ |형식 |설명 |
+ |------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+ |hpp\_default\_corp=통신사 코드|휴대폰 소액결제시 기본 선택되어있는 통신사 - 기본: 기본 선택되어있는 통신사 없음 예) KT 기본 선택 → ”hpp\_default\_corp=KT” 전달 - SKT: `SKT` - KT: `KTF` - LG 유플러스: `LGT` - 알뜰폰 전체: `MVNO` - 알뜰폰 CJ 헬로 모바일: `CJH` - 알뜰폰 티플러스: `KCT` - 알뜰폰 SK 세븐모바일: `SKL`|
+ |hpp\_nofix=Y 또는 N |휴대폰 소액결제창에 자동 입력되는 buyer\_tel값을 수정할 수 있는지 여부 - 기본: 수정 가능 - Y : 수정 불가능 - N : 수정 가능(기본) |
+
+ ```json
+ {
+ "pg": "welcome",
+ "bypass": {
+ "welcome": {
+ "P_RESERVED": [
+ "below1000=Y", // 1,000원 이하 결제 허용
+ "hpp_default_corp=KT", // 휴대폰 소액결제시 KT 기본 선택
+ "hppnofix=Y" // 휴대폰 소액결제시 결제 창 내에서 구매자 전화번호 수정 불가능
+ ]
+ }
+ }
+ }
+ ```
+
+
+
+
+ 웰컴페이먼츠 지원 빌링키 발급과 동시에 결제 수단
+
+
+ - phone
+
+
-
- 가능한 트랜잭션 환경
-
-
-- PC (iframe)
-- 모바일 (리디렉션)
+
+ 가능한 트랜잭션 환경
+
+ - PC (iframe)
+ - 모바일 (리디렉션)
diff --git a/src/content/docs/ko/pg/simple/alipay.mdx b/src/content/docs/ko/pg/simple/alipay.mdx
index 6b4da80b4..f53f6693e 100644
--- a/src/content/docs/ko/pg/simple/alipay.mdx
+++ b/src/content/docs/ko/pg/simple/alipay.mdx
@@ -4,66 +4,69 @@ description: 알리페이 결제 연동 방법을 안내합니다.
---
import Figure from "~/components/Figure.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-### 1. 알리페이 간편결제 PG 설정하기
+## 1. 알리페이 간편결제 PG 설정하기
[**알리페이 설정**](../../ready/2-pg/pg/alipay) 페이지의 내용을 참고하여 PG 설정을 진행합니다.
-### 2.결제 요청하기
+## 2.결제 요청하기
[JavaScript SDK](../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을 호출하여
알리페이 결제창을 호출할 수 있습니다.
**결제결과**는 **`m_redirect_url`** 로 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg: "alipay",
- merchant_uid: "order_no_0001", // 상점에서 관리하는 주문 번호
- name: "주문명:결제테스트",
- amount: 1.2, // USD 1.2 달러 결제
- currency: "USD" // Default USD
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456",
- m_redirect_url: "{결제 완료 후 리디렉션 될 URL}"
-}, function (rsp) { // callback 로직
- /* ...중략... */
-});
-```
-
-**주요 파라미터 설명**
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "alipay",
+ merchant_uid: "order_no_0001", // 상점에서 관리하는 주문 번호
+ name: "주문명:결제테스트",
+ amount: 1.2, // USD 1.2 달러 결제
+ currency: "USD", // Default USD
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ // callback 로직
+ /* ...중략... */
+ },
+ );
+ ```
-**`pg`** **string**
+ **주요 파라미터 설명**
-**PG사 구분코드**
+ **`pg`** **string**
-**`alipay`** 로 지정하면 됩니다.
+ **PG사 구분코드**
-**`merchant_uid`** **\*** **string**
+ **`alipay`** 로 지정하면 됩니다.
-**`고객사 고유주문번호`**
+ **`merchant_uid`** **\*** **string**
-매번 고유하게 채번되어야 합니다.
+ **`고객사 고유주문번호`**
-**`currency`** **`string`**
+ 매번 고유하게 채번되어야 합니다.
-**통화구분코드**
+ **`currency`** **`string`**
-누락시 USD 가 기본입니다. KRW 지원가능
+ **통화구분코드**
-**`amount`** **\*** **`integer`**
+ 누락시 USD 가 기본입니다. KRW 지원가능
-**결제금액**
+ **`amount`** **\*** **`integer`**
-**string** 이 아닌점에 유의하세요
+ **결제금액**
-
+ **string** 이 아닌점에 유의하세요
+
diff --git a/src/content/docs/ko/pg/simple/kakopay.mdx b/src/content/docs/ko/pg/simple/kakopay.mdx
index 392839323..cc4cb1204 100644
--- a/src/content/docs/ko/pg/simple/kakopay.mdx
+++ b/src/content/docs/ko/pg/simple/kakopay.mdx
@@ -3,11 +3,11 @@ title: 카카오페이
description: 카카오페이 연동 방법을 안내합니다.
---
-import Codepen from "~/components/gitbook/Codepen.astro";
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Codepen from "~/components/gitbook/Codepen.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 1. 카카오페이 채널 설정하기
@@ -23,125 +23,126 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
모바일의 경우 **`m_redirect_url`** 로 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg: "kakaopay.{CID}",
- pay_method: "card", // 생략가
- merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
- name: "주문명:결제테스트",
- amount: 1004,
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}"
-}, function (rsp) { // callback 로직
- /* ...중략... */
-});
-```
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "kakaopay.{CID}",
+ pay_method: "card", // 생략가
+ merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
+ name: "주문명:결제테스트",
+ amount: 1004,
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ // callback 로직
+ /* ...중략... */
+ },
+ );
+ ```
-**주요 파라미터 설명**
+ **주요 파라미터 설명**
-**`pg`** **string**
+ **`pg`** **string**
-**PG사 구분코드**
+ **PG사 구분코드**
-**`kakaopay`** 로 지정하면 됩니다.
+ **`kakaopay`** 로 지정하면 됩니다.
-**`pay_method`** **string**
+ **`pay_method`** **string**
-**결제수단 구분코드**
+ **결제수단 구분코드**
-생략가능
+ 생략가능
-(호출 시 선택된 값은 무시되며 카카오페이 앱에서 신용카드와 카카오머니 중 선택한 옵션으로 설정됩니다.)
+ (호출 시 선택된 값은 무시되며 카카오페이 앱에서 신용카드와 카카오머니 중 선택한 옵션으로 설정됩니다.)
-**`merchant_uid`** **\*** **string**
+ **`merchant_uid`** **\*** **string**
-**주문번호**
+ **주문번호**
-매번 고유하게 채번되어야 합니다.
+ 매번 고유하게 채번되어야 합니다.
-**`amount`** **integer**
+ **`amount`** **integer**
-**결제금액**
+ **결제금액**
-**string** 이 아닌점에 유의하세요
+ **string** 이 아닌점에 유의하세요
-
+
+
-
+
+ 인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 정기결제창을 호출할 수 있습니다.
-
-인증결제창 호출 파라미터에서 **customer\_uid** 값을 추가하면 정기결제창을 호출할 수 있습니다.
+
+ **amount 금액**
-
-**amount 금액**
+ 카카오페이 간편결제는 빌링키 발급시 amount 파라미터에 금액이 설정되는 경우 **실 결제와 동시에 빌링키가 발급**됩니다.
-카카오페이 간편결제는 빌링키 발급시 amount 파라미터에 금액이 설정되는 경우 **실 결제와 동시에 빌링키가 발급**됩니다.
+ 실결제를 원하지 않은 경우 amount 금액을 **0원**으로 설정합니다.
+
-실결제를 원하지 않은 경우 amount 금액을 **0원**으로 설정합니다.
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "kakaopay.{CID}",
+ merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
+ name: "최초인증결제",
+ amount: 0, // 결제창에 표시될 금액. 실제 승인이 이뤄지지는 않습니다.
+ customer_uid: "your-customer-unique-id", // 필수 입력.
+ buyer_email: "test@portone.io",
+ buyer_name: "포트원",
+ buyer_tel: "02-1234-1234",
+ m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ if (rsp.success) {
+ alert("빌링키 발급 성공");
+ } else {
+ alert("빌링키 발급 실패");
+ }
+ },
+ );
+ ```
-
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "kakaopay.{CID}",
- merchant_uid: "order_monthly_0001", // 상점에서 관리하는 주문 번호
- name: "최초인증결제",
- amount: 0, // 결제창에 표시될 금액. 실제 승인이 이뤄지지는 않습니다.
- customer_uid: "your-customer-unique-id", // 필수 입력.
- buyer_email: "test@portone.io",
- buyer_name: "포트원",
- buyer_tel: "02-1234-1234",
- m_redirect_url: "{모바일에서 결제 완료 후 리디렉션 될 URL}",
- },
- function (rsp) {
- if (rsp.success) {
- alert("빌링키 발급 성공");
- } else {
- alert("빌링키 발급 실패");
- }
- }
-);
-```
-
-**주요 파라미터 설명**
+ **주요 파라미터 설명**
-**`pg`** **string**
+ **`pg`** **string**
-**PG사 구분코드**
+ **PG사 구분코드**
-**`kakaopay`** 로 지정하면 됩니다.
+ **`kakaopay`** 로 지정하면 됩니다.
-**`customer_uid`** **string**
+ **`customer_uid`** **string**
-**카드 빌링키**
+ **카드 빌링키**
-비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
+ 비 인증 결제창에서 고객이 입력한 카드정보와 1:1로 매칭될 빌링키를 지정합니다.
-**`amount`** **Integer**
+ **`amount`** **Integer**
-**결제금액**
+ **결제금액**
-결제창에 표시될 금액으로 0원 이상 설정시 실 결제가 발생됩니다.
+ 결제창에 표시될 금액으로 0원 이상 설정시 실 결제가 발생됩니다.
-(실 결제를 원하지 않은 경우 amount 금액을 0원으로 설정합니다.)
+ (실 결제를 원하지 않은 경우 amount 금액을 0원으로 설정합니다.)
-**빌링키(customer_uid)로 결제 요청하기**
+ **빌링키(customer\_uid)로 결제 요청하기**
-빌링키 발급이 성공하면 실 빌링키는 customer_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. customer_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api)를 호출하시면 결제를 발생시킬 수 있습니다.
+ 빌링키 발급이 성공하면 실 빌링키는 customer\_uid 와 1:1 매칭되어 **포트원 서버에 저장**됩니다. customer\_uid를 고객사 내부서버에 저장하시고 [**비 인증 결제요청 REST API**](../../api/api-4/api)를 호출하시면 결제를 발생시킬 수 있습니다.
-```sh title="server-side"
-curl -H "Content-Type: application/json" \
- -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
- https://api.iamport.kr/subscribe/payments/again
-```
-
-
+ ```sh title="server-side"
+ curl -H "Content-Type: application/json" \
+ -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
+ https://api.iamport.kr/subscribe/payments/again
+ ```
+
@@ -156,6 +157,5 @@ curl -H "Content-Type: application/json" \
-**카카오페이 간편결제는 스마트폰 카카오 앱상에서 진행됩니다.**
-
+ **카카오페이 간편결제는 스마트폰 카카오 앱상에서 진행됩니다.**
diff --git a/src/content/docs/ko/pg/simple/naver.mdx b/src/content/docs/ko/pg/simple/naver.mdx
index 0434c6397..e99a441a8 100644
--- a/src/content/docs/ko/pg/simple/naver.mdx
+++ b/src/content/docs/ko/pg/simple/naver.mdx
@@ -3,11 +3,11 @@ title: 네이버페이(결제형)
description: 네이버페이 결제형 연동 방법을 안내합니다.
---
-import Details from "~/components/gitbook/Details.astro";
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Details from "~/components/gitbook/Details.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 1. 네이버페이 채널 설정하기
@@ -18,421 +18,411 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
## 2.결제 요청하기
[JavaScript SDK](../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을 호출하여
-네이버페이 결제형 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 IMP.request_pay(param,
+네이버페이 결제형 결제창을 호출할 수 있습니다. **결제결과**는 PC의 경우 IMP.request\_pay(param,
callback) 호출 후 **callback** 으로 수신 되며
-모바일의 경우 **m_redirect_url** 로 리디렉션됩니다.
+모바일의 경우 **m\_redirect\_url** 로 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg: "naverpay.{파트너 ID}",
- merchant_uid: "order_no_0001", // 상점에서 관리하는 주문 번호
- name: "주문명:결제테스트",
- amount: 1004,
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456",
- naverUseCfm: "20221231", // 이용완료일자(필요시 설정합니다)
- naverPopupMode: true, // 팝업모드 활성화
- m_redirect_url: "{결제 완료 후 리디렉션 될 URL}",
- naverPurchaserName: "구매자이름",
- naverPurchaserBirthday: "20151201",
- naverChainId: "sAMplEChAINid",
- naverMerchantUserKey: "고객사의 사용자 키",
- naverCultureBenefit:true // 문화비 소득공제 적용여부
- naverProducts: [
- {
- "categoryType": "BOOK",
- "categoryId": "GENERAL",
- "uid": "107922211",
- "name": "한국사",
- "payReferrer": "NAVER_BOOK",
- "sellerId": "sellerA",
- "count": 10
- },
- {
- "categoryType": "MUSIC",
- "categoryId": "CD",
- "uid": "299911002",
- "name": "러블리즈",
- "payReferrer": "NAVER_BOOK",
- "sellerId": "sellerB",
- "count": 1
- }
- ]
-}, function (rsp) { // callback 로직
- /* ...중략... */
-});
-```
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "naverpay.{파트너 ID}",
+ merchant_uid: "order_no_0001", // 상점에서 관리하는 주문 번호
+ name: "주문명:결제테스트",
+ amount: 1004,
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ naverUseCfm: "20221231", // 이용완료일자(필요시 설정합니다)
+ naverPopupMode: true, // 팝업모드 활성화
+ m_redirect_url: "{결제 완료 후 리디렉션 될 URL}",
+ naverPurchaserName: "구매자이름",
+ naverPurchaserBirthday: "20151201",
+ naverChainId: "sAMplEChAINid",
+ naverMerchantUserKey: "고객사의 사용자 키",
+ naverCultureBenefit: true, // 문화비 소득공제 적용여부
+ naverProducts: [
+ {
+ categoryType: "BOOK",
+ categoryId: "GENERAL",
+ uid: "107922211",
+ name: "한국사",
+ payReferrer: "NAVER_BOOK",
+ sellerId: "sellerA",
+ count: 10,
+ },
+ {
+ categoryType: "MUSIC",
+ categoryId: "CD",
+ uid: "299911002",
+ name: "러블리즈",
+ payReferrer: "NAVER_BOOK",
+ sellerId: "sellerB",
+ count: 1,
+ },
+ ],
+ },
+ function (rsp) {
+ // callback 로직
+ /* ...중략... */
+ },
+ );
+ ```
-**주요 파라미터 설명**
+ **주요 파라미터 설명**
-**`pg`** **string**
+ **`pg`** **string**
-**PG사 구분코드**
+ **PG사 구분코드**
-`naverpay` 로 지정하면 됩니다.
+ `naverpay` 로 지정하면 됩니다.
-\
-**`merchant_uid`** **\*** **string**
+ **`merchant_uid`** **\*** **string**
-**주문번호**
+ **주문번호**
-매번 고유하게 채번되어야 합니다.
+ 매번 고유하게 채번되어야 합니다.
-\
-**`amount`** **integer**
+ **`amount`** **integer**
-**결제금액**
+ **결제금액**
-**string** 이 아닌점에 유의하세요
+ **string** 이 아닌점에 유의하세요
-\
-**`naverUseCfm`** **string**
+ **`naverUseCfm`** **string**
-**이용 완료일** (`yyyyMMdd` 형식의 문자열로 **결제 당일 또는 미래의 일자**여야 함)
+ **이용 완료일** (`yyyyMMdd` 형식의 문자열로 **결제 당일 또는 미래의 일자**여야 함)
-- 상품 유형에 따라 네이버페이-고객사 간 필수값으로 계약되는 경우 입력합니다
+ - 상품 유형에 따라 네이버페이-고객사 간 필수값으로 계약되는 경우 입력합니다
-\
-**`name`** **\*** **string**
+ **`name`** **\*** **string**
-**제품명**
+ **제품명**
-네이버페이 내부적으로 `외 2개` 의 표현이 자동생성되므로 `xxxx 외 2개` 대신`naverProducts[0].name`(첫번째 상품명)으로 설정하길 권장합니다.
+ 네이버페이 내부적으로 `외 2개` 의 표현이 자동생성되므로 `xxxx 외 2개` 대신`naverProducts[0].name`(첫번째 상품명)으로 설정하길 권장합니다.
-\
-**`naverPopupMode`** **boolean**
+ **`naverPopupMode`** **boolean**
-**결제창 팝업여부**
+ **결제창 팝업여부**
-`false`인 경우 페이지 리디렉션 방식으로 진행되며 `m_redirect_url`을 설정해야 합니다
+ `false`인 경우 페이지 리디렉션 방식으로 진행되며 `m_redirect_url`을 설정해야 합니다
-\
-**`m_redirect_url`** **string**
+ **`m_redirect_url`** **string**
-**리다이렉트 URL**
+ **리다이렉트 URL**
-리디렉션 방식으로 진행(`naverPopupMode: false`)할 경우 결제 완료 후 리디렉션 될 URL
+ 리디렉션 방식으로 진행(`naverPopupMode: false`)할 경우 결제 완료 후 리디렉션 될 URL
-\
-**`naverPurchaserName`** **string**
+ **`naverPurchaserName`** **string**
-**구매자 이름**
+ **구매자 이름**
-결제 상품이 고위험 업종에 해당하여 네이버페이 계약 당시 별도의 안내를 받은 **대상 고객사만 필수 입력**합니다.
+ 결제 상품이 고위험 업종에 해당하여 네이버페이 계약 당시 별도의 안내를 받은 **대상 고객사만 필수 입력**합니다.
-\
-**`naverPurchaserBirthday`** **string**
+ **`naverPurchaserBirthday`** **string**
-**구매자 생년월일(yyyyMMdd)**
+ **구매자 생년월일(yyyyMMdd)**
-결제 상품이 고위험 업종에 해당하여 네이버페이 계약 당시 별도의 안내를 받은 **대상 고객사만 필수 입력**합니다.
+ 결제 상품이 고위험 업종에 해당하여 네이버페이 계약 당시 별도의 안내를 받은 **대상 고객사만 필수 입력**합니다.
-\
-**`naverProducts`** **\*** **array**
+ **`naverProducts`** **\*** **array**
-**상품정보**
+ **상품정보**
-네이버페이 매뉴얼의 **`productItems`** 파라미터와 동일합니다.
+ 네이버페이 매뉴얼의 **`productItems`** 파라미터와 동일합니다.
-(해당 파라미터 누락시 네이버페이 검수를 통과할 수 없습니다.)
+ (해당 파라미터 누락시 네이버페이 검수를 통과할 수 없습니다.)
-> `naverProducts`는 다음 6개의 속성으로 하나의 상품 정보를 표현하는 객체의 배열입니다.
->
-> - **`categoryType`** (필수) : [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product) 참고
-> - **`categoryId`** (필수) : [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product) 참고
-> - **`uid`** (필수) : 고객사 내부의 상품 고유 ID를 활용하는 것이 일반적이지만, 네이버페이 가이드 참고가 필요합니다. [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product)
-> - **`name`** (필수) : 주문상품의 명칭
-> - **`count`** (필수) : 상품 주문 개수
-> - **`sellerId`** (선택) : 고객사가 하위 판매자를 식별하기 위한 고유 ID(영문 대소문자 및 숫자 허용)
-> - 고객사의 업종이 통신판매중개업에 해당하여 네이버페이 계약 당시 별도의 안내를 받은 대상 고객사만 필수 입력합니다.
-> - 비대상 고객사는 입력하지 않습니다.
-> - **`payReferrer`** (선택) : 네이버 플랫폼의 타 서비스와 제휴계약 후 유입분석을 진행하는 경우에만 입력 [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product_ref)
+ > `naverProducts`는 다음 6개의 속성으로 하나의 상품 정보를 표현하는 객체의 배열입니다.
+ >
+ > - **`categoryType`** (필수) : [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product) 참고
+ >
+ > - **`categoryId`** (필수) : [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product) 참고
+ >
+ > - **`uid`** (필수) : 고객사 내부의 상품 고유 ID를 활용하는 것이 일반적이지만, 네이버페이 가이드 참고가 필요합니다. [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product)
+ >
+ > - **`name`** (필수) : 주문상품의 명칭
+ >
+ > - **`count`** (필수) : 상품 주문 개수
+ >
+ > - **`payReferrer`** (선택) : 네이버 플랫폼의 타 서비스와 제휴계약 후 유입분석을 진행하는 경우에만 입력 [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product_ref)
+ >
+ > - **`sellerId`** (선택) : 고객사가 하위 판매자를 식별하기 위한 고유 ID(영문 대소문자 및 숫자 허용)
+ > - 고객사의 업종이 통신판매중개업에 해당하여 네이버페이 계약 당시 별도의 안내를 받은 대상 고객사만 필수 입력합니다.
+ > - 비대상 고객사는 입력하지 않습니다.
-\
-**`naverChainId`** **string**
+ **`naverChainId`** **string**
-**네이버페이 그룹형 고객사용 chain id**
+ **네이버페이 그룹형 고객사용 chain id**
-- 같은 파트너 ID로 두개 이상의 서비스를 운영하는 그룹형 고객사의 경우에만 네이버페이로부터 전달받은 값을 필수 입력합니다.
-- 비 대상 고객사는 입력하지 않습니다.
+ - 같은 파트너 ID로 두개 이상의 서비스를 운영하는 그룹형 고객사의 경우에만 네이버페이로부터 전달받은 값을 필수 입력합니다.
+ - 비 대상 고객사는 입력하지 않습니다.
-\
-**`naverCultureBenefit`** **boolean**
+ **`naverCultureBenefit`** **boolean**
-**네이버페이 도서/공연 소득공제**
+ **네이버페이 도서/공연 소득공제**
-도서/공연 소득공제가 필요한 경우 해당 파라미터를 설정합니다.
+ 도서/공연 소득공제가 필요한 경우 해당 파라미터를 설정합니다.
-\
-**`naverMerchantUserKey`** **string**
+ **`naverMerchantUserKey`** **string**
-**고객사의 사용자 키**
+ **고객사의 사용자 키**
-- 개인 아이디와 같은 개인정보 데이터는 제외하여 전달해야 합니다.
-- 네이버페이 기준 **고위험군 제품을 판매하는 고객사의 경우 필수** 입력합니다.
-- 비 대상 고객사는 입력하지 않습니다.
+ - 개인 아이디와 같은 개인정보 데이터는 제외하여 전달해야 합니다.
+ - 네이버페이 기준 **고위험군 제품을 판매하는 고객사의 경우 필수** 입력합니다.
+ - 비 대상 고객사는 입력하지 않습니다.
+
-
+
+ **빌링키 발급받기**
-
-**빌링키 발급받기**
+ ```ts title="JavaScript SDK"
+ IMP.request_pay(
+ {
+ pg: "naverpay.{파트너 ID}",
+ customer_uid: "gildong_0001_1234", // 빌링, 필수 입력.
+ merchant_uid: "order_monthly_0001", // 상점에서 생성한 고유 주문번호
+ name: "Slim 요금제(1개월 단위)",
+ amount: 1004, // 실 결제는 발생되지 않습니다.
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678", // 필수 입력.
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ naverProductCode: "반복결제 상품코드",
+ naverProductCount: 5,
+ naverPopupMode: true, // 팝업모드 활성화
+ m_redirect_url: "{등록 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ // callback 로직
+ /* ...중략... */
+ },
+ );
+ ```
-```javascript title="JavaScript SDK"
-IMP.request_pay(
- {
- pg: "naverpay.{파트너 ID}",
- customer_uid: "gildong_0001_1234", // 빌링, 필수 입력.
- merchant_uid: "order_monthly_0001", // 상점에서 생성한 고유 주문번호
- name: "Slim 요금제(1개월 단위)",
- amount: 1004, // 실 결제는 발생되지 않습니다.
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678", // 필수 입력.
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456",
- naverProductCode: "반복결제 상품코드",
- naverProductCount: 5,
- naverPopupMode: true, // 팝업모드 활성화
- m_redirect_url: "{등록 완료 후 리디렉션 될 URL}",
- },
- function (rsp) {
- // callback 로직
- /* ...중략... */
- }
-);
-```
+ **주요 파라미터 설명**
-**주요 파라미터 설명**
+ **`pg`** **string**
-**`pg`** **string**
+ **PG사 구분코드**
-**PG사 구분코드**
+ `naverpay` 로 지정하면 됩니다.
-`naverpay` 로 지정하면 됩니다.
+ **`customer_uid`** **\*** **string**
-\
-**`customer_uid`** **\*** **string**
+ **빌링키**
-**빌링키**
+ - 정기/반복 결제 등록을 위해서 지정해야 합니다. 미 지정 시, 일반결제로 진행됩니다.
+ - 등록 후 해당 키를 사용해 반복결제 승인을 요청할 수 있습니다.
-- 정기/반복 결제 등록을 위해서 지정해야 합니다. 미 지정 시, 일반결제로 진행됩니다.
-- 등록 후 해당 키를 사용해 반복결제 승인을 요청할 수 있습니다.
+ **`merchant_uid`** **\*** **string**
-\
-**`merchant_uid`** **\*** **string**
+ **주문번호**
-**주문번호**
+ 매번 고유하게 채번되어야 합니다.
-매번 고유하게 채번되어야 합니다.
+ **`amount`** **integer**
-\
-**`amount`** **integer**
+ **결제금액**
-**결제금액**
+ **string** 이 아닌점에 유의하세요
-**string** 이 아닌점에 유의하세요
+ **정기/반복 결제 등록과정에서는 ****결제승인이 이뤄지지 않습니다****.**
-**정기/반복 결제 등록과정에서는 ****결제승인이 이뤄지지 않습니다****.**
+ **`naverProductCode`** **\*** **string**
-\
-**`naverProductCode`** **\*** **string**
+ **고객사의 상품코드**
-**고객사의 상품코드**
+ - 동일한 고객이 동일상품에 대해 중복으로 반복결제 등록하는 것을 방지하기 위한 파라미터입니다.
+ - 기본값은 random으로 자동 생성되어 중복결제가 가능하므로 값을 지정해 주세요.
-- 동일한 고객이 동일상품에 대해 중복으로 반복결제 등록하는 것을 방지하기 위한 파라미터입니다.
-- 기본값은 random으로 자동 생성되어 중복결제가 가능하므로 값을 지정해 주세요.
+ **`naverProductCount`** **integer**
-\
-**`naverProductCount`** **integer**
+ **결제대상 상품 수**
-**결제대상 상품 수**
+ **`name`** **\*** **string**
-\
-**`name`** **\*** **string**
+ **제품명**
-**제품명**
+ 네이버페이 내부적으로 **`외 2개`** 의 표현이 자동생성되므로 **"`xxxx 외 2개"`** 대신`naverProducts[0].name`(첫번째 상품명)으로 설정하길 권장합니다.
-네이버페이 내부적으로 **`외 2개`** 의 표현이 자동생성되므로 **"`xxxx 외 2개"`** 대신`naverProducts[0].name`(첫번째 상품명)으로 설정하길 권장합니다.
+ **`naverPopupMode`** **boolean**
-\
-**`naverPopupMode`** **boolean**
+ **결제창 팝업여부**
-**결제창 팝업여부**
+ `false`인 경우 페이지 리디렉션 방식으로 진행되며 `m_redirect_url`을 설정해야 합니다
-`false`인 경우 페이지 리디렉션 방식으로 진행되며 `m_redirect_url`을 설정해야 합니다
+ **`m_redirect_url`** **string**
-\
-**`m_redirect_url`** **string**
+ **리다이렉트 URL**
-**리다이렉트 URL**
+ 리디렉션 방식으로 진행(`naverPopupMode`: **false**)할 경우 결제 완료 후 리디렉션 될 URL
-리디렉션 방식으로 진행(`naverPopupMode`: **false**)할 경우 결제 완료 후 리디렉션 될 URL
+ **`naverActionType`** **string**
-\
-**`naverActionType`** **string**
+ **신규 등록/수단 변경 여부**
-**신규 등록/수단 변경 여부**
+ 네이버페이를 통해 발급한 빌링키의 결제 수단을 변경하고자 하는 경우 포트원 빌링키인 `customer_uid`를 동일하게 입력하고, `naverActionType` 파라미터를 `CHANGE`로 입력하여 빌링키를 재발급해야 합니다.
-네이버페이를 통해 발급한 빌링키의 결제 수단을 변경하고자 하는 경우 포트원 빌링키인 `customer_uid`를 동일하게 입력하고, `naverActionType` 파라미터를 `CHANGE`로 입력하여 빌링키를 재발급해야 합니다.
+ `naverActionType` 파라미터를 이용하지 않고 동일한 고객의 정보로 추가 빌링키를 발급 시도하면 이전의 결제 수단 정보가 구매자의 네이버페이 계정에 그대로 남아있어 문제가 발생할 수 있습니다.
-`naverActionType` 파라미터를 이용하지 않고 동일한 고객의 정보로 추가 빌링키를 발급 시도하면 이전의 결제 수단 정보가 구매자의 네이버페이 계정에 그대로 남아있어 문제가 발생할 수 있습니다.
+ - `NEW`(default) : 신규 등록
+ - `CHANGE` 결제 수단 변경
-- `NEW`(default) : 신규 등록
-- `CHANGE` 결제 수단 변경
+ **결제요청하기**
-**결제요청하기**
+ 빌링키 발급이 완료되면 설정한 **`customer_uid`** 를 이용하여 결제승인 API를 호출하여 결제를 요청하거나 결제를 예약할 수 있습니다
-빌링키 발급이 완료되면 설정한 **`customer_uid`** 를 이용하여 결제승인 API를 호출하여 결제를 요청하거나 결제를 예약할 수 있습니다
+ **결제 요청방법**
-**결제 요청방법**
+ REST API [**/subscribe/payments/again**](../../api/api-4/api) 를 호출하여 결제를 요청할 수 있습니다.
-REST API [**/subscribe/payments/again**](../../api/api-4/api) 를 호출하여 결제를 요청할 수 있습니다.
+ - `customer_uid`: 정기/반복결제 등록 시 사용된 해당 고객의 `customer_uid`
+ - `merchant_uid`: 고객사 주문번호
+ - `amount`: 결제승인 요청금액 (결제고객 등록 시 지정된 금액과 달라도 무방함)
+ - `tax_free`: `amount` 중 면세공급가액 (기본값: 0)
+ - `name`: 주문의 명칭
+ - `extra.naverUseCfm`: 이용 완료일(yyyyMMdd 형식의 문자열로 결제 당일 또는 미래의 일자여야 함) 상품 유형에 따라, 네이버페이-고객사 간 필수값으로 계약되는 경우 입력합니다.
-- `customer_uid`: 정기/반복결제 등록 시 사용된 해당 고객의 `customer_uid`
-- `merchant_uid`: 고객사 주문번호
-- `amount`: 결제승인 요청금액 (결제고객 등록 시 지정된 금액과 달라도 무방함)
-- `tax_free`: `amount` 중 면세공급가액 (기본값: 0)
-- `name`: 주문의 명칭
-- `extra.naverUseCfm`: 이용 완료일(yyyyMMdd 형식의 문자열로 결제 당일 또는 미래의 일자여야 함) 상품 유형에 따라, 네이버페이-고객사 간 필수값으로 계약되는 경우 입력합니다.
+ ```json title="sample json"
+ {
+ "customer_uid": "gildong_0001_1234",
+ "merchant_uid": "order_monthly_0002", //재사용 불가
+ "amount": 10000,
+ "name": "Slim 요금제(최초과금)",
+ "extra": {
+ "naverUseCfm": "20201001"
+ }
+ }
+ ```
-```json title="sample json"
-{
- "customer_uid": "gildong_0001_1234",
- "merchant_uid": "order_monthly_0002", //재사용 불가
- "amount": 10000,
- "name": "Slim 요금제(최초과금)",
- "extra": {
- "naverUseCfm": "20201001"
- }
-}
-```
+ ```http title="form-urlencoded"
+ customer_uid={고객사의 결제 고객을 특정하는 Unique Key}&merchant_uid={고객사 주문번호}&amount=10000&name=Slim 요금제(최초과금)&extra[naverUseCfm]=20201001
+ ```
-```title="form-urlencoded"
-customer_uid={고객사의 결제 고객을 특정하는 Unique Key}&merchant_uid={고객사 주문번호}&amount=10000&name=Slim 요금제(최초과금)&extra[naverUseCfm]=20201001
-```
+ **결제 예약방법**
-**결제 예약방법**
+ REST API [**/subscribe/payments/schedule**](../../api/api-3/api)를 호출하여 결제예약을 할 수 있습니다.
-REST API[ **/subscribe/payments/schedule**](../../api/api-3/api)를 호출하여 결제예약을 할 수 있습니다.
+ - `customer_uid` : 정기/반복결제 등록 시 사용된 해당 고객의 `customer_uid`
-- `customer_uid` : 정기/반복결제 등록 시 사용된 해당 고객의 `customer_uid`
-- `schedules` : 결제 예약 정보 객체 배열(1개 이상 설정 가능)
- - `merchant_uid` : 고객사 주문번호
- - `schedule_at` : 결제요청 예약시각 (UNIX timestamp)
- - `amount` : 결제승인 요청금액 (결제고객 등록 시 지정된 금액과 달라도 무방함)
- - `extra.naverUseCfm` : 이용 완료일(yyyyMMdd 형식의 문자열로 결제 당일 또는 미래의 일자여야 함) 상품 유형에 따라, 네이버페이-고객사 간 필수값으로 계약되는 경우 입력합니다.
+ - `schedules` : 결제 예약 정보 객체 배열(1개 이상 설정 가능)
+ - `merchant_uid` : 고객사 주문번호
+ - `schedule_at` : 결제요청 예약시각 (UNIX timestamp)
+ - `amount` : 결제승인 요청금액 (결제고객 등록 시 지정된 금액과 달라도 무방함)
+ - `extra.naverUseCfm` : 이용 완료일(yyyyMMdd 형식의 문자열로 결제 당일 또는 미래의 일자여야 함) 상품 유형에 따라, 네이버페이-고객사 간 필수값으로 계약되는 경우 입력합니다.
-```json title="sample json"
-{
- "customer_uid": "gildong_0001_1234",
- "schedules": [
+ ```json title="sample json"
{
- "merchant_uid": "order_monthly_0003", //재사용 불가
- "schedule_at": 1519862400,
- "amount": 10000,
- "extra": {
- "naverUseCfm": "20201001"
- }
+ "customer_uid": "gildong_0001_1234",
+ "schedules": [
+ {
+ "merchant_uid": "order_monthly_0003", //재사용 불가
+ "schedule_at": 1519862400,
+ "amount": 10000,
+ "extra": {
+ "naverUseCfm": "20201001"
+ }
+ }
+ ]
}
- ]
-}
-```
+ ```
-```title="form-urlencoded"
-customer_uid={고객사의 결제 고객을 특정하는 Unique Key}&schedules[0][merchant_uid]={고객사 주문번호}&schedules[0][schedule_at]={결제요청 예약시각 UNIX timestamp}&schedules[0][amount]=10000&schedules[0][extra][naverUseCfm]=20201001\
-```
-
-
+ ```http title="form-urlencoded"
+ customer_uid={고객사의 결제 고객을 특정하는 Unique Key}&schedules[0][merchant_uid]={고객사 주문번호}&schedules[0][schedule_at]={결제요청 예약시각 UNIX timestamp}&schedules[0][amount]=10000&schedules[0][extra][naverUseCfm]=20201001\
+ ```
+
-**연동 주의사항**
+ **연동 주의사항**
-#### 에레 메세지를 가공하지 않은 상태로 노출해야합니다.
+ ### 에러 메세지를 가공하지 않은 상태로 노출해야합니다.
-결제창 호출(IMP.request_pay 함수)후 결제창 하단의 "취소" 버튼 클릭 등으로 결제 프로세스가 중단되거나 잔액 부족, 한도 초과, 10원 미만 결제 등의 사유로 결제에 실패하면 콜백 함수(popup 방식)/m_redirect_url(리디렉션 방식)로 전달되는 결제 결과(response 객체/쿼리 파라미터)에 실패 사유(error_msg)가 전달됩니다.
-이 에러 메시지는 사용자에게 가공 없이 그대로 노출되어야 합니다. 해당 내용을 준수하지 않는 경우 네이버페이 검수 진행시 수정 요청이 있을 수 있습니다.
+ 결제창 호출(IMP.request\_pay 함수)후 결제창 하단의 "취소" 버튼 클릭 등으로 결제 프로세스가 중단되거나
+ 잔액 부족, 한도 초과, 10원 미만 결제 등의 사유로 결제에 실패하면
+ 콜백 함수(popup 방식)/m\_redirect\_url(리디렉션 방식)로 전달되는 결제 결과(response 객체/쿼리 파라미터)에 실패 사유(error\_msg)가 전달됩니다.
+ 이 에러 메시지는 사용자에게 가공 없이 그대로 노출되어야 합니다. 해당 내용을 준수하지 않는 경우 네이버페이 검수 진행시 수정 요청이 있을 수 있습니다.
-예) error_msg가 "잔액 부족"이라고 가정할때, "결제에 실패하였습니다. 실패 사유:" + "잔액 부족"과 같은 형태로 가공되면 안됨
+ 예) error\_msg가 "잔액 부족"이라고 가정할때, "결제에 실패하였습니다. 실패 사유:" + "잔액 부족"과 같은 형태로 가공되면 안됨
-#### 최소 결제 금액에 대해 예외 처리해야 합니다.
+ ### 최소 결제 금액에 대해 예외 처리해야 합니다.
-네이버페이 결제형의 경우 10원 이상부터 결제가 가능합니다. 10원 미만의 경우 결제 요청에 대해 예외 처리가 필요합니다.
+ 네이버페이 결제형의 경우 10원 이상부터 결제가 가능합니다. 10원 미만의 경우 결제 요청에 대해 예외 처리가 필요합니다.
-예) 사용자에게 최소 결제 금액이 10원이라 결제를 할 수 없다는 의미를 담는 에러 메시지가 노출되어야 함
+ 예) 사용자에게 최소 결제 금액이 10원이라 결제를 할 수 없다는 의미를 담는 에러 메시지가 노출되어야 함
-#### 환불 API 요청 시 추가 속성
+ ### 환불 API 요청 시 추가 속성
-아임포트 환불 API인 `POST /payments/cancel` 호출 시 다음 추가 속성를 설정해야 합니다.
+ 포트원 환불 API인 `POST /payments/cancel` 호출 시 다음 추가 속성를 설정해야 합니다.
-- `extra.requester` : API를 호출하는 출처. 다음 중 선택 :
- - customer : 구매자에 의한 요청
- - admin(기본값) : 어드민에 의한 요청
-- `reason`: 결제 취소 사유.
+ - `extra.requester` : API를 호출하는 출처. 다음 중 선택 :
+ - customer : 구매자에 의한 요청
+ - admin(기본값) : 어드민에 의한 요청
-**예시(json)**
+ - `reason`: 결제 취소 사유.
-```
-{
- "imp_uid" : "imp_123412341234", //환불처리할 아임포트 거래번호
- "amount" : 3000, //환불할 금액
- "reason": "결제 취소 사유", //실제 사유와 같아야 함
- "extra" : {
- "requester" : "customer"
- }
-}
-```
+ **예시(json)**
-**예시(form-urlencoded)**
+ ```json
+ {
+ "imp_uid": "imp_123412341234", //환불처리할 아임포트 거래번호
+ "amount": 3000, //환불할 금액
+ "reason": "결제 취소 사유", //실제 사유와 같아야 함
+ "extra": {
+ "requester": "customer"
+ }
+ }
+ ```
-```
-imp_uid=imp_123412341234&amount=3000&extra[requester]=customer
-```
+ **예시(form-urlencoded)**
+ ```http
+ imp_uid=imp_123412341234&amount=3000&extra[requester]=customer
+ ```
-**"API 호출 권한이 없습니다"**
-
-네이버페이 결제형 연동은 **네이버페이 검수진행이 시작되기 전까지는 운영환경에서 결제창 호출시**
+ **"API 호출 권한이 없습니다"**
-**위와 같은 오류가 도출**됩니다. 해당 부분은
-검수가 진행되면 해결되는 부분이기 때문에 무시해주시면 됩니다.
+ 네이버페이 결제형 연동은 **네이버페이 검수진행이 시작되기 전까지는 운영환경에서 결제창 호출시**
+ **위와 같은 오류가 도출**됩니다. 해당 부분은
+ 검수가 진행되면 해결되는 부분이기 때문에 무시해주시면 됩니다.
-
-**모듈 타입**
+ **`moduleType`** **\*** **string**
-브랜드페이의 경우 `toss-brandpay` 를 사용합니다.
+ **모듈 타입**
-**`userCode`** **\*** **string**
+ 브랜드페이의 경우 `toss-brandpay` 를 사용합니다.
-**고객사 식별코드**
+ **`userCode`** **\*** **string**
-`IMP` 로 시작하는 포트원 고객사 식별코드입니다.
+ **고객사 식별코드**
-**`tier_code`** **string**
+ `IMP` 로 시작하는 포트원 고객사 식별코드입니다.
-**하위상점(Tier)의 고유코드**
+ **`tier_code`** **string**
-[상점·계정 관리]-[하위 상점 관리]에서 하위 상점을 생성한 경우에만 사용 가능합니다. 하위상점 고유코드는 알파벳 대문자 또는 숫자만 입력가능하며, 3자까지 입력 가능합니다.
+ **하위상점(Tier)의 고유코드**
-**`loadBrandpayOptions`** **Object**
+ \[상점·계정 관리]-\[하위 상점 관리]에서 하위 상점을 생성한 경우에만 사용 가능합니다. 하위상점 고유코드는 알파벳 대문자 또는 숫자만 입력가능하며, 3자까지 입력 가능합니다.
-브랜드페이의 모듈 로딩에 필요한 추가 파라미터입니다.
-`moduleType`을 `toss-brandpay`로 설정하는 경우 필요합니다.
+ **`loadBrandpayOptions`** **Object**
-**`loadBrandpayOptions.customer_id`** **\*** **string**
+ 브랜드페이의 모듈 로딩에 필요한 추가 파라미터입니다.
+ `moduleType`을 `toss-brandpay`로 설정하는 경우 필요합니다.
-**구매자 ID**
+ **`loadBrandpayOptions.customer_id`** **\*** **string**
-고객 ID입니다. 다른사용자에게 노출될 경우, 악의적 사용에 대한 문제가 있음으로 자동 증가하는 숫자는 허용되지 않습니다.
-UUID 등 유추가 불가능한 무작위 값을 사용하시길 권장드립니다.
+ **구매자 ID**
-**`loadBrandpayOptions.ui`** **Object**
+ 고객 ID입니다. 다른사용자에게 노출될 경우, 악의적 사용에 대한 문제가 있음으로 자동 증가하는 숫자는 허용되지 않습니다.
+ UUID 등 유추가 불가능한 무작위 값을 사용하시길 권장드립니다.
-브랜드페이의 경우 결제창의 UI를 커스터마이징이 가능하며, 아래의 옵션들을 제공하고 있습니다.
-포트원을 통한 연동 후 `IMP.request_pay` 호출 시 `bypass.toss_brandpay.ui` 객체 정보를 추가하여 UI 커스터마이징 기능을 사용할 수 있습니다.
+ **`loadBrandpayOptions.ui`** **Object**
-**`loadBrandpayOptions.ui.buttonStyle`** **string**
+ 브랜드페이의 경우 결제창의 UI를 커스터마이징이 가능하며, 아래의 옵션들을 제공하고 있습니다.
+ 포트원을 통한 연동 후 `IMP.request_pay` 호출 시 `bypass.toss_brandpay.ui` 객체 정보를 추가하여 UI 커스터마이징 기능을 사용할 수 있습니다.
-**버튼스타일 구분코드**
+ **`loadBrandpayOptions.ui.buttonStyle`** **string**
-버튼 스타일입니다. 값을 넣지 않으면 기본값인 `default`로 설정됩니다.
-`default`로 설정하면 모서리가 둥글고 주변에 여백을 가진 버튼을 사용할 수 있고, `full`로 설정하면 하단 영역이 전부 채워지는 형태의 버튼을 사용할 수 있습니다.
+ **버튼스타일 구분코드**
-**`loadBrandpayOptions.ui.highlightColor`** **string**
+ 버튼 스타일입니다. 값을 넣지 않으면 기본값인 `default`로 설정됩니다.
+ `default`로 설정하면 모서리가 둥글고 주변에 여백을 가진 버튼을 사용할 수 있고, `full`로 설정하면 하단 영역이 전부 채워지는 형태의 버튼을 사용할 수 있습니다.
-**UI 메인 색상**
+ **`loadBrandpayOptions.ui.highlightColor`** **string**
-UI의 메인 색상입니다. 값을 넣지 않으면 기본 색상인 `#3182f6`로 설정됩니다. [웹에서 사용할 수 있는 색상 코드 형식](https://developer.mozilla.org/ko/docs/Web/CSS/color_value)을 모두 사용할 수 있습니다.
+ **UI 메인 색상**
-**`loadBrandpayOptions.ui.navigationBar.visible`** **boolean**
+ UI의 메인 색상입니다. 값을 넣지 않으면 기본 색상인 `#3182f6`로 설정됩니다. [웹에서 사용할 수 있는 색상 코드 형식](https://developer.mozilla.org/ko/docs/Web/CSS/color_value)을 모두 사용할 수 있습니다.
-**내비게이션 바 사용 여부**
+ **`loadBrandpayOptions.ui.navigationBar.visible`** **boolean**
-화면 뒤로 가기 기능을 제공하는 내비게이션 바 사용 여부입니다. 값을 넣지 않으면 기본값인 `true`로 설정됩니다. 내비게이션 바를 사용하지 않으려면 `false`로 설정해야 합니다.
+ **내비게이션 바 사용 여부**
-**`loadBrandpayOptions.ui.navigationBar.paddingTop`** **number**
+ 화면 뒤로 가기 기능을 제공하는 내비게이션 바 사용 여부입니다. 값을 넣지 않으면 기본값인 `true`로 설정됩니다. 내비게이션 바를 사용하지 않으려면 `false`로 설정해야 합니다.
-**내비게이션 바 상단 여백**
+ **`loadBrandpayOptions.ui.navigationBar.paddingTop`** **number**
-내비게이션 바 위쪽에 설정할 여백 값입니다. 값의 단위는 `px`입니다.
+ **내비게이션 바 상단 여백**
-**`loadBrandpayOptions.ui.labels.oneTouchPay`** **string**
+ 내비게이션 바 위쪽에 설정할 여백 값입니다. 값의 단위는 `px`입니다.
-**원터치결제 대체 텍스트**
+ **`loadBrandpayOptions.ui.labels.oneTouchPay`** **string**
-UI에 표시되는 `원터치결제`를 대신해 사용할 텍스트입니다. 값을 넣지 않으면 `원터치결제`로 표시됩니다.
+ **원터치결제 대체 텍스트**
-
-
+ UI에 표시되는 `원터치결제`를 대신해 사용할 텍스트입니다. 값을 넣지 않으면 `원터치결제`로 표시됩니다.
+
+
## 모듈로드 결과값 정의
-
-```javascript title="Javascript SDK"
-const brandpayModule = await IMP.loadModule(
- 'toss-brandpay',
- {
- userCode: 'imp00000000', //// 관리자 콘솔 - 결제 연동 페이지에서 확인 가능합니다.
- },
- {
- customerKey: 'd005f081-830a-4b9c-b5e2-73e56fbe6ac3',
- loadBrandpayOptions: {
- ui: {
- buttonStyle: "default",
- highlightColor: "#3182f6",
- navigationBar: {
- visible: true,
- paddingTop: 10,
- },
- labels: {
- oneTouchPay: "원터치결제",
+
+ ```ts title="Javascript SDK"
+ const brandpayModule = await IMP.loadModule(
+ "toss-brandpay",
+ {
+ userCode: "imp00000000", //// 관리자 콘솔 - 결제 연동 페이지에서 확인 가능합니다.
+ },
+ {
+ customerKey: "d005f081-830a-4b9c-b5e2-73e56fbe6ac3",
+ loadBrandpayOptions: {
+ ui: {
+ buttonStyle: "default",
+ highlightColor: "#3182f6",
+ navigationBar: {
+ visible: true,
+ paddingTop: 10,
+ },
+ labels: {
+ oneTouchPay: "원터치결제",
+ },
},
},
- }
- }
-);
-
-brandpayModule.setupPassword()
-brandpayModule.getPaymentMethods()
-brandpayModule.openSettings()
-
-````
-
-
-
-
setupPassword 설명
-
-결제할 때 사용할 비밀번호를 설정할 수 있는 메서드입니다. 비밀번호 등록・변경이 완료되면 Promise가 resolve됩니다.
+ },
+ );
-자세한 내용은 [토스페이먼츠의 개발자센터 문서](https://docs.tosspayments.com/reference/brandpay-sdk#setuppassword) 를 참고하세요.
+ brandpayModule.setupPassword();
+ brandpayModule.getPaymentMethods();
+ brandpayModule.openSettings();
+ ```
+
-```javascript title="Javascript SDK"
-brandpayModule.setupPassword()
- .catch(function (error) {
- if (error.code === 'USER_CANCEL') {
- // 사용자가 창을 닫아 취소한 경우에 대한 처리
- }
- })
-```
+
+
setupPassword 설명
-
-
-
getPaymentMethods 설명
+ 결제할 때 사용할 비밀번호를 설정할 수 있는 메서드입니다. 비밀번호 등록・변경이 완료되면 Promise가 resolve됩니다.
-등록되어 있는 결제 수단을 조회하는 메서드입니다. 조회가 성공했을 때 Promise가 resolve되고 고객의 결제수단 정보(BrandpayMethodResponse)가 반환됩니다.
-
-자세한 내용은 [토스페이먼츠의 개발자센터 문서](https://docs.tosspayments.com/reference/brandpay-sdk#getpaymentmethods) 를 참고하세요.
-
-```javascript title="Javascript SDK"
-brandpayModule
- .getPaymentMethods()
- .then(function (methods) {
- // 성공 처리
- })
- .catch(function (error) {
- if (error.code === 'USER_CANCEL') {
- // 사용자가 결제창을 닫은 경우 에러 처리
- }
- })
-```
-
-
-
-
openSettings 설명
-
-브랜드페이에서 사용하는 결제수단, 비밀번호 설정을 관리하는 결제 관리창을 열 수 있습니다.
-
-자세한 내용은 [토스페이먼츠의 개발자센터 문서](https://docs.tosspayments.com/reference/brandpay-sdk#opensettings) 를 참고하세요.
-
-```javascript title="Javascript SDK"
-brandpayModule.openSettings().catch(function (error) {
- if (error.code === 'USER_CANCEL') {
- // 사용자가 창을 닫아 취소한 경우에 대한 처리
- }
-})
-```
-
-
+ 자세한 내용은 [토스페이먼츠의 개발자센터 문서](https://docs.tosspayments.com/reference/brandpay-sdk#setuppassword) 를 참고하세요.
+ ```ts title="Javascript SDK"
+ brandpayModule.setupPassword().catch(function (error) {
+ if (error.code === "USER_CANCEL") {
+ // 사용자가 창을 닫아 취소한 경우에 대한 처리
+ }
+ });
+ ```
+
+
+
+
getPaymentMethods 설명
+
+ 등록되어 있는 결제 수단을 조회하는 메서드입니다. 조회가 성공했을 때 Promise가 resolve되고 고객의 결제수단 정보(BrandpayMethodResponse)가 반환됩니다.
+
+ 자세한 내용은 [토스페이먼츠의 개발자센터 문서](https://docs.tosspayments.com/reference/brandpay-sdk#getpaymentmethods) 를 참고하세요.
+
+ ```ts title="Javascript SDK"
+ brandpayModule
+ .getPaymentMethods()
+ .then(function (methods) {
+ // 성공 처리
+ })
+ .catch(function (error) {
+ if (error.code === "USER_CANCEL") {
+ // 사용자가 결제창을 닫은 경우 에러 처리
+ }
+ });
+ ```
+
+
+
+
openSettings 설명
+
+ 브랜드페이에서 사용하는 결제수단, 비밀번호 설정을 관리하는 결제 관리창을 열 수 있습니다.
+
+ 자세한 내용은 [토스페이먼츠의 개발자센터 문서](https://docs.tosspayments.com/reference/brandpay-sdk#opensettings) 를 참고하세요.
+
+ ```ts title="Javascript SDK"
+ brandpayModule.openSettings().catch(function (error) {
+ if (error.code === "USER_CANCEL") {
+ // 사용자가 창을 닫아 취소한 경우에 대한 처리
+ }
+ });
+ ```
+
-
-```
-````
diff --git a/src/content/docs/ko/pg/simple/toss-brandpay/readme.mdx b/src/content/docs/ko/pg/simple/toss-brandpay/readme.mdx
index 29b3a0ee8..c1fc8ad41 100644
--- a/src/content/docs/ko/pg/simple/toss-brandpay/readme.mdx
+++ b/src/content/docs/ko/pg/simple/toss-brandpay/readme.mdx
@@ -4,12 +4,11 @@ title: 토스페이먼츠 브랜드페이
description: 토스페이먼츠 브랜드페이 연동 방법을 안내합니다.
---
-import Codepen from "~/components/gitbook/Codepen.astro";
-import Details from "~/components/gitbook/Details.astro";
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Details from "~/components/gitbook/Details.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
## 1. 토스페이먼츠 브랜드페이 채널 설정하기
@@ -30,19 +29,18 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
-#### **기존에 deprecated된 콜백 응답은 모두 제거**됐습니다.
+ ## **기존에 deprecated된 콜백 응답은 모두 제거**됐습니다.
-신규 JS SDK는 기존 모듈에서 제공했던 CallBack 응답 파라미터가 대부분 삭제되었습니다.
-(특히 deprecated 로 명시된 파라미터는 모두 삭제되었습니다.)
+ 신규 JS SDK는 기존 모듈에서 제공했던 CallBack 응답 파라미터가 대부분 삭제되었습니다.
+ (특히 deprecated 로 명시된 파라미터는 모두 삭제되었습니다.)
-해당 JS SDK 사용시 Callback 으로 내려받을수 있는 데이터는 오직 아래 두가지 입니다.
+ 해당 JS SDK 사용시 Callback 으로 내려받을수 있는 데이터는 오직 아래 두가지 입니다.
-**`imp_uid`, `merchant_uid`**
-
-따라서 해당 SDK를 사용하실때는 `IMP.request_pay`로부터 응답된 객체(또는 쿼리 파라미터)에서
-`imp_uid`를 가지고 **아임포트 REST API(GET `/payments/imp_uid`)로 결제 상세 내역(승인 상태, 승인 결과 등등)을 조회**하여
-응답 파라미터 중 `status` 파라미터로 결제 상태를 파악하셔야 합니다.
+ **`imp_uid`, `merchant_uid`**
+ 따라서 해당 SDK를 사용하실때는 `IMP.request_pay`로부터 응답된 객체(또는 쿼리 파라미터)에서
+ `imp_uid`를 가지고 **아임포트 REST API(GET `/payments/imp_uid`)로 결제 상세 내역(승인 상태, 승인 결과 등등)을 조회**하여
+ 응답 파라미터 중 `status` 파라미터로 결제 상태를 파악하셔야 합니다.
[JavaScript SDK](../../../sdk/javascript-sdk/readme) 문서를 통해 최신 SDK를 설치해주세요.
@@ -56,78 +54,76 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
수신됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "toss_brandpay.{상점 ID}",
- pay_method: "toss_brandpay",
- merchant_uid: "orderNo0001",
- name: "주문명:결제테스트",
- amount: 1004,
- buyer_email: "test@portone.io",
- customer_id: "d005f081-830a-4b9c-b5e2-73e56fbe6ac3",
- bypass: {
- isCulturalExpense: true
- }
- },
- function (rsp) {
- // callback 로직
- }
-);
-```
-
-
-
-`toss_brandpay` 로 지정하면 됩니다.
+ **`pg`** **\*** **string**
-**`pay_method`** **\*** **string**
+ **PG사 구분코드**
-**결제수단 구분코드**
+ `toss_brandpay` 로 지정하면 됩니다.
-`toss_brandpay` 로 지정하면 됩니다.
+ **`pay_method`** **\*** **string**
-**`merchant_uid`** **\*** **string**
+ **결제수단 구분코드**
-**주문번호**
+ `toss_brandpay` 로 지정하면 됩니다.
-매번 고유하게 채번되어야 합니다.
+ **`merchant_uid`** **\*** **string**
-**`name`** **\*** **string**
+ **주문번호**
-**주문명**
+ 매번 고유하게 채번되어야 합니다.
-**`amount`** **\*** **integer**
+ **`name`** **\*** **string**
-**결제금액**
+ **주문명**
-브랜드페이는 원화 결제만 지원합니다. KRW 기준으로 금액을 입력해주세요.
+ **`amount`** **\*** **integer**
-**`buyer_email`** **string**
+ **결제금액**
-**구매자 email 주소**
+ 브랜드페이는 원화 결제만 지원합니다. KRW 기준으로 금액을 입력해주세요.
-**`customer_id`** **\*** **string**
+ **`buyer_email`** **string**
-**구매자 ID**
+ **구매자 email 주소**
-고객 ID입니다. 다른사용자에게 노출될 경우, 악의적 사용에 대한 문제가 있음으로 자동 증가하는 숫자는 허용되지 않습니다.
-UUID 등 유추가 불가능한 무작위 값을 사용하시길 권장드립니다.
+ **`customer_id`** **\*** **string**
-**`bypass.isCulturalExpense`** **\*** **string**
+ **구매자 ID**
-**도서 문화비 결제 여부**
+ 고객 ID입니다. 다른사용자에게 노출될 경우, 악의적 사용에 대한 문제가 있음으로 자동 증가하는 숫자는 허용되지 않습니다.\
+ UUID 등 유추가 불가능한 무작위 값을 사용하시길 권장드립니다.
-도서 문화비 소득 공제 결제 여부를 나타내는 파라미터입니다. 기본값은 `false`입니다.
+ **`bypass.isCulturalExpense`** **\*** **string**
-
+ **도서 문화비 결제 여부**
-
+ 도서 문화비 소득 공제 결제 여부를 나타내는 파라미터입니다. 기본값은 `false`입니다.
+
+
## 3. UI 커스터마이징
@@ -138,77 +134,75 @@ UUID 등 유추가 불가능한 무작위 값을 사용하시길 권장드립니
커스터마이징 기능을 사용할 수 있습니다.
-
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "toss_brandpay.{상점 ID}",
- pay_method: "toss_brandpay",
- merchant_uid: "orderNo0001",
- name: "주문명:결제테스트",
- amount: 1004,
- buyer_email: "test@portone.io",
- bypass: {
- toss_brandpay: {
- brandpayOptions: {
- ui: {
- buttonStyle: "default",
- highlightColor: "#3182f6",
- navigationBar: {
- visible: true,
- paddingTop: 10,
- },
- labels: {
- oneTouchPay: "원터치결제",
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "toss_brandpay.{상점 ID}",
+ pay_method: "toss_brandpay",
+ merchant_uid: "orderNo0001",
+ name: "주문명:결제테스트",
+ amount: 1004,
+ buyer_email: "test@portone.io",
+ bypass: {
+ toss_brandpay: {
+ brandpayOptions: {
+ ui: {
+ buttonStyle: "default",
+ highlightColor: "#3182f6",
+ navigationBar: {
+ visible: true,
+ paddingTop: 10,
+ },
+ labels: {
+ oneTouchPay: "원터치결제",
+ },
+ },
},
},
},
},
- },
- },
- function (rsp) {
- // callback 로직
- }
-);
-```
-
-**`buttonStyle`** **string**
+ function (rsp) {
+ // callback 로직
+ },
+ );
+ ```
-**버튼스타일 구분코드**
+ **`buttonStyle`** **string**
-- 버튼 스타일입니다. 값을 넣지 않으면 기본값인 `default`로 설정됩니다.
-- `default`로 설정하면 모서리가 둥글고 주변에 여백을 가진 버튼을 사용할 수 있고, `full`로 설정하면 하단 영역이 전부 채워지는 형태의 버튼을 사용할 수 있습니다.
+ **버튼스타일 구분코드**
-**`highlightColor`** **string**
+ - 버튼 스타일입니다. 값을 넣지 않으면 기본값인 `default`로 설정됩니다.
+ - `default`로 설정하면 모서리가 둥글고 주변에 여백을 가진 버튼을 사용할 수 있고, `full`로 설정하면 하단 영역이 전부 채워지는 형태의 버튼을 사용할 수 있습니다.
-**UI 메인 색상**
+ **`highlightColor`** **string**
-- UI의 메인 색상입니다.
-- 값을 넣지 않으면 기본 색상인 `#3182f6`로 설정됩니다.
-- [웹에서 사용할 수 있는 색상 코드 형식](https://developer.mozilla.org/ko/docs/Web/CSS/color_value)을 모두 사용할 수 있습니다.
+ **UI 메인 색상**
-**`navigationBar.visible`** **boolean**
+ - UI의 메인 색상입니다.
+ - 값을 넣지 않으면 기본 색상인 `#3182f6`로 설정됩니다.
+ - [웹에서 사용할 수 있는 색상 코드 형식](https://developer.mozilla.org/ko/docs/Web/CSS/color_value)을 모두 사용할 수 있습니다.
-**내비게이션 바 사용 여부**
+ **`navigationBar.visible`** **boolean**
-- 화면 뒤로 가기 기능을 제공하는 내비게이션 바 사용 여부입니다.
-- 값을 넣지 않으면 기본값인 `true`로 설정됩니다.
-- 내비게이션 바를 사용하지 않으려면 `false`로 설정해야 합니다.
+ **내비게이션 바 사용 여부**
-**`navigationBar.paddingTop`** **number**
+ - 화면 뒤로 가기 기능을 제공하는 내비게이션 바 사용 여부입니다.
+ - 값을 넣지 않으면 기본값인 `true`로 설정됩니다.
+ - 내비게이션 바를 사용하지 않으려면 `false`로 설정해야 합니다.
-**내비게이션 바 상단 여백**
+ **`navigationBar.paddingTop`** **number**
-- 내비게이션 바 위쪽에 설정할 여백 값입니다. 값의 단위는 `px`입니다.
+ **내비게이션 바 상단 여백**
-**`labels.oneTouchPay`** **string**
+ - 내비게이션 바 위쪽에 설정할 여백 값입니다. 값의 단위는 `px`입니다.
-**원터치결제 대체 텍스트**
+ **`labels.oneTouchPay`** **string**
-- UI에 표시되는 `원터치결제`를 대신해 사용할 텍스트입니다. 값을 넣지 않으면 `원터치결제`로 표시됩니다.
+ **원터치결제 대체 텍스트**
-
+ - UI에 표시되는 `원터치결제`를 대신해 사용할 텍스트입니다. 값을 넣지 않으면 `원터치결제`로 표시됩니다.
+
## 4. 결제수단 지정 바로 결제
@@ -222,135 +216,129 @@ IMP.request_pay(
있는, `getPaymentMethods()` 함수를 통해 확인할 수 있습니다.
-
-
-```javascript title="Javascript SDK"
-IMP.request_pay(
- {
- pg: "toss_brandpay.{상점 ID}",
- pay_method: "toss_brandpay",
- merchant_uid: "orderNo0001",
- name: "주문명:결제테스트",
- amount: 1004,
- buyer_email: "test@portone.io",
- customer_id: "d005f081-830a-4b9c-b5e2-73e56fbe6ac3",
- useCardPoint: true,
- display: {
- card_quota: [6],
- },
- bypass: {
- cashReceiptType: "personal",
- customerIdentifier: "01000000000",
- toss_brandpay: {
- methodId: "3nKLoSBV7l8zUHU14cZxK",
- discountCode: "001",
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "toss_brandpay.{상점 ID}",
+ pay_method: "toss_brandpay",
+ merchant_uid: "orderNo0001",
+ name: "주문명:결제테스트",
+ amount: 1004,
+ buyer_email: "test@portone.io",
+ customer_id: "d005f081-830a-4b9c-b5e2-73e56fbe6ac3",
+ useCardPoint: true,
+ display: {
+ card_quota: [6],
+ },
+ bypass: {
+ cashReceiptType: "personal",
+ customerIdentifier: "01000000000",
+ toss_brandpay: {
+ methodId: "3nKLoSBV7l8zUHU14cZxK",
+ discountCode: "001",
+ },
+ },
},
- },
- },
- function (rsp) {
- // callback 로직
- }
-);
-```
-
-### 기타 파라미터
-
-아래 파라미터를 사용하기 위해서는 결제 수단 ID인 `methodId`를 지정하여 함께 결제 요청해야 합니다.
-
-
+ function (rsp) {
+ // callback 로직
+ },
+ );
+ ```
-#### **브랜드페이 위젯에서 사용할 수 없는 파라미터** 가 포함되어 있습니다.
+ ### 기타 파라미터
-아래 파라미터는 브랜드페이 위젯에서는 사용할 수 없습니다.
+ 아래 파라미터를 사용하기 위해서는 결제 수단 ID인 `methodId`를 지정하여 함께 결제 요청해야 합니다.
-- **`display.card_quot`**
-- **`useCardPoint`**
-- **`bypass.cashReceiptType`**
-- **`bypass.customerIdentifier`**
+
+ #### **브랜드페이 위젯에서 사용할 수 없는 파라미터** 가 포함되어 있습니다.
-
+ 아래 파라미터는 브랜드페이 위젯에서는 사용할 수 없습니다.
-**`useCardPoint`** **boolean**
+ - **`display.card_quot`**
+ - **`useCardPoint`**
+ - **`bypass.cashReceiptType`**
+ - **`bypass.customerIdentifier`**
+
-**카드사 포인트 사용 여부**
+ **`useCardPoint`** **boolean**
-- 카드사 포인트를 사용 여부를 지정하는 값입니다.
-- `true` 입력 시 카드사 포인트 사용이 가능하며, 입력하지 않는 경우 기본값은 `false`입니다.
-- (단, 카드사 포인트를 사용하기 위해서는 사전에 토스페이먼츠를 통해 계약이 진행되어야 합니다.)
+ **카드사 포인트 사용 여부**
-**`display.card_quota`** **number array**
+ - 카드사 포인트를 사용 여부를 지정하는 값입니다.
+ - `true` 입력 시 카드사 포인트 사용이 가능하며, 입력하지 않는 경우 기본값은 `false`입니다.
+ - (단, 카드사 포인트를 사용하기 위해서는 사전에 토스페이먼츠를 통해 계약이 진행되어야 합니다.)
-**카드 할부 개월 수**
+ **`display.card_quota`** **number array**
-- 카드 결제 시 할부 개월 수를 지정할 수 있습니다.
-- `[3]` 형식으로 전달하면 3개월 할부로 결제가 진행됩니다.
-- (단, 일반적으로 결제금액이 5만원 이상일 때만 적용됩니다.)
+ **카드 할부 개월 수**
-**`bypass.cashReceiptType`** **string**
+ - 카드 결제 시 할부 개월 수를 지정할 수 있습니다.
+ - `[3]` 형식으로 전달하면 3개월 할부로 결제가 진행됩니다.
+ - (단, 일반적으로 결제금액이 5만원 이상일 때만 적용됩니다.)
-**현금영수증 발급 타입**
+ **`bypass.cashReceiptType`** **string**
-- `unable`로 설정시 현금영수증을 발행하지 않으며, `personal`로 설정 시에는 소득 공제용, `corporate`으로 설정 시에는 지출 증빙용으로 현금영수증을 발급합니다.
-- `anonymous`으로 설정하는 경우 현금영수증 자진발급됩니다. 기본값은 `unable`입니다.
+ **현금영수증 발급 타입**
-**`bypass.customerIdentifier`** **string**
+ - `unable`로 설정시 현금영수증을 발행하지 않으며, `personal`로 설정 시에는 소득 공제용, `corporate`으로 설정 시에는 지출 증빙용으로 현금영수증을 발급합니다.
+ - `anonymous`으로 설정하는 경우 현금영수증 자진발급됩니다. 기본값은 `unable`입니다.
-**현금영수증 발급 식별번호**
+ **`bypass.customerIdentifier`** **string**
-- 현금영수증 발급을 위한 식별번호입니다.
-- 현금영수증 종류에 따라 휴대폰번호, 사업자등록번호, 현금영수증 카드번호를 입력할 수 있습니다.
+ **현금영수증 발급 식별번호**
-**`bypass.toss_brandpay.discountCode`** **string**
+ - 현금영수증 발급을 위한 식별번호입니다.
+ - 현금영수증 종류에 따라 휴대폰번호, 사업자등록번호, 현금영수증 카드번호를 입력할 수 있습니다.
-**카드사 즉시 할인 코드**
+ **`bypass.toss_brandpay.discountCode`** **string**
-- 토스페이먼츠의 [카드혜택 조회 API](https://docs.tosspayments.com/reference#%EC%B9%B4%EB%93%9C-%ED%98%9C%ED%83%9D-%EC%A1%B0%ED%9A%8C-1)로 적용할 수 있는 할인 코드 목록을 조회할 수 있습니다.
-- 해당 API는 포트원을 통해 지원이 불가능하므로, 직접 토스페이먼츠 API를 연동하여 사용해야 합니다.
+ **카드사 즉시 할인 코드**
-### 브랜드페이 위젯 전용 파라미터
+ - 토스페이먼츠의 [카드혜택 조회 API](https://docs.tosspayments.com/reference#%EC%B9%B4%EB%93%9C-%ED%98%9C%ED%83%9D-%EC%A1%B0%ED%9A%8C-1)로 적용할 수 있는 할인 코드 목록을 조회할 수 있습니다.
+ - 해당 API는 포트원을 통해 지원이 불가능하므로, 직접 토스페이먼츠 API를 연동하여 사용해야 합니다.
-아래 파라미터를 사용하기 위해서는 결제 수단 ID인 `methodId`를 지정하여 함께 결제 요청해야 합니다.
+ ### 브랜드페이 위젯 전용 파라미터
-
+ 아래 파라미터를 사용하기 위해서는 결제 수단 ID인 `methodId`를 지정하여 함께 결제 요청해야 합니다.
-#### 브랜드페이 위젯에서만 사용 가능한 파라미터입니다.
-
-`bypass.toss_brandpay.widgetOptions` 에 설정되어야 합니다.
-
-
+
+ #### 브랜드페이 위젯에서만 사용 가능한 파라미터입니다.
-**`methodType`** **string**
+ `bypass.toss_brandpay.widgetOptions` 에 설정되어야 합니다.
+
-**위젯에 보여줄 결제 수단**
+ **`methodType`** **string**
-- 위젯에 보여줄 결제수단을 선택합니다.
-- `카드`, `계좌` 중 하나입니다. 예를 들어 `카드`를 선택하면 등록한 결제수단 중 `카드`만 노출됩니다.
+ **위젯에 보여줄 결제 수단**
-**`methodId`** **string**
+ - 위젯에 보여줄 결제수단을 선택합니다.
+ - `카드`, `계좌` 중 하나입니다. 예를 들어 `카드`를 선택하면 등록한 결제수단 중 `카드`만 노출됩니다.
-**위젯에서 기본 결제수단으로 선택할 결제수단의 ID**
+ **`methodId`** **string**
-- 위젯을 열었을때, 해당 methodId에 해당하는 결제수단이 가장 먼저 보여집니다.
-- 가장 최근에 결제한 카드를 보여주거나, 유저가 선호하는 카드를 보여줄 때 사용할 수 있습니다.
+ **위젯에서 기본 결제수단으로 선택할 결제수단의 ID**
-**`ui.promotionSection.summary.visible`** **boolean**
+ - 위젯을 열었을때, 해당 methodId에 해당하는 결제수단이 가장 먼저 보여집니다.
+ - 가장 최근에 결제한 카드를 보여주거나, 유저가 선호하는 카드를 보여줄 때 사용할 수 있습니다.
-**혜택 배지 영역 표시여부**
+ **`ui.promotionSection.summary.visible`** **boolean**
-- 해택 배지 영역에서는 즉시 할인 대상 카드 정보 등을 간략히 보여줍니다. 기본값은 `true`입니다.
+ **혜택 배지 영역 표시여부**
-**`ui.promotionSection.description.visible`** **boolean**
+ - 해택 배지 영역에서는 즉시 할인 대상 카드 정보 등을 간략히 보여줍니다. 기본값은 `true`입니다.
-**혜택 배지 영역 표시여부**
+ **`ui.promotionSection.description.visible`** **boolean**
-- 결제 해택 영역을 보여주거나 숨깁니다. 기본값은 `true`입니다.
+ **혜택 배지 영역 표시여부**
-**`ui.promotionSection.description.defaultOpen`** **boolean**
+ - 결제 해택 영역을 보여주거나 숨깁니다. 기본값은 `true`입니다.
-**결제 혜택 상세 설명 표시 여부**
+ **`ui.promotionSection.description.defaultOpen`** **boolean**
-- 결제 혜택의 상세 설명을 보여주거나 숨깁니다.
-- `true`인 경우, 결제 카드사의 결제 혜택을 자세히 설명합니다. 기본값은 `false`입니다.
+ **결제 혜택 상세 설명 표시 여부**
-
+ - 결제 혜택의 상세 설명을 보여주거나 숨깁니다.
+ - `true`인 경우, 결제 카드사의 결제 혜택을 자세히 설명합니다. 기본값은 `false`입니다.
+
diff --git a/src/content/docs/ko/pg/simple/toss-brandpay/warning.mdx b/src/content/docs/ko/pg/simple/toss-brandpay/warning.mdx
index d37048579..4a414a546 100644
--- a/src/content/docs/ko/pg/simple/toss-brandpay/warning.mdx
+++ b/src/content/docs/ko/pg/simple/toss-brandpay/warning.mdx
@@ -4,7 +4,6 @@ description: 토스페이먼츠 브랜드페이 연동 유의사항을 소개합
---
import Details from "~/components/gitbook/Details.astro";
-import Figure from "~/components/Figure.astro";
## 카드 결제
@@ -17,21 +16,22 @@ import Figure from "~/components/Figure.astro";
할부 개월 수로 결제가 진행됩니다.
-
파라미터 사용 예시
-
-- 예1. 6개월 할부로 결제를 하고자 하는 경우
-
-```jsx
-display: {
- card_quota: [6]
-},
-bypass: {
- toss_brandpay: {
- methodId: "c_j429K3djbS01dlk" // 브랜드페이에 등록된 결제 수단의 ID
+
+
+ ```json
+ {
+ "bypass": {
+ "cashReceiptType": "anonymous",
+ "toss_brandpay": {
+ "methodId": "c_j429K3djbS01dlk" // 브랜드페이에 등록된 결제 수단의 ID
+ }
+ }
}
-}
-```
-
+ ```
## 취소관련 유의사항
diff --git a/src/content/docs/ko/pg/simple/toss-brandpay/widget.mdx b/src/content/docs/ko/pg/simple/toss-brandpay/widget.mdx
index 3d3aea2a9..dfa3bfe71 100644
--- a/src/content/docs/ko/pg/simple/toss-brandpay/widget.mdx
+++ b/src/content/docs/ko/pg/simple/toss-brandpay/widget.mdx
@@ -4,16 +4,12 @@ title: 브랜드페이 위젯 연동
description: 토스페이먼츠 브랜드페이 위젯 연동 방법을 안내합니다.
---
-import Codepen from "~/components/gitbook/Codepen.astro";
-import Details from "~/components/gitbook/Details.astro";
import Figure from "~/components/Figure.astro";
import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-import Tab from "~/components/gitbook/tabs/Tab.astro";
-import screenshot1 from "./_assets/widget_example.png";
import screenshot2 from "./_assets/loadui.png";
import screenshot3 from "./_assets/updateloadui.png";
+import screenshot1 from "./_assets/widget_example.png";
- 브랜드페이의 경우 고객사의 주문 페이지에 바로 브랜드페이를 통한 결제가 가능하도록 브랜드페이 UI를
렌더링 할 수 있는 위젯 기능을 제공합니다.
@@ -69,20 +65,19 @@ import screenshot3 from "./_assets/updateloadui.png";
```
-### 위젯이 렌더링 되지 않을 때
-
-`portone-ui-container` 라는 class 이름을 갖는 div
-element를 찾지 못할 경우 **portone-ui-container를 찾을 수 없습니다.** 라는 에러가
-발생합니다.
+ ### 위젯이 렌더링 되지 않을 때
-`portone-ui-container` element가 2개 이상인데, `data-portone-ui-type`
-attribute가 `toss-brandpay-widget`인 element를 찾지 못할 경우, **data-portone-ui-type에
-올바른 UI 타입을 입력해주세요.** 라는 에러가 발생합니다.
+ `portone-ui-container` 라는 class 이름을 갖는 div
+ element를 찾지 못할 경우 **portone-ui-container를 찾을 수 없습니다.** 라는 에러가
+ 발생합니다.
-`portone-ui-container` element가 2개 이상이고, `data-portone-ui-type`
-attribute가 `oss-brandpay-widget`인 elemente도 2개 이상인 경우, **동일한 data-portone-ui-type을
-갖는 DOM element가 2개 이상 존재합니다.** 라는 에러가 발생합니다.
+ `portone-ui-container` element가 2개 이상인데, `data-portone-ui-type`
+ attribute가 `toss-brandpay-widget`인 element를 찾지 못할 경우, **data-portone-ui-type에
+ 올바른 UI 타입을 입력해주세요.** 라는 에러가 발생합니다.
+ `portone-ui-container` element가 2개 이상이고, `data-portone-ui-type`
+ attribute가 `oss-brandpay-widget`인 elemente도 2개 이상인 경우, **동일한 data-portone-ui-type을
+ 갖는 DOM element가 2개 이상 존재합니다.** 라는 에러가 발생합니다.
## 결제 요청 데이터 업데이트
@@ -157,4 +152,4 @@ attribute가 `oss-brandpay-widget`인 elemente도 2개 이상인 경우, **동
## loadUI 요청 객체
-loadUI 호출시 파라미터인 결제요청 데이터의 경우 IMP.request_pay의 요청데이터와 동일한 객체이므로, [브랜드페이 연동문서](readme)를 참고해주세요.
+loadUI 호출시 파라미터인 결제요청 데이터의 경우 IMP.request\_pay의 요청데이터와 동일한 객체이므로, [브랜드페이 연동문서](readme)를 참고해주세요.
diff --git a/src/content/docs/ko/pg/simple/toss.mdx b/src/content/docs/ko/pg/simple/toss.mdx
index b6f719988..3cfb03dbe 100644
--- a/src/content/docs/ko/pg/simple/toss.mdx
+++ b/src/content/docs/ko/pg/simple/toss.mdx
@@ -3,11 +3,11 @@ title: 토스페이(tosspay)
description: 토스페이 연동 방법을 안내합니다.
---
-import Codepen from "~/components/gitbook/Codepen.astro";
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Codepen from "~/components/gitbook/Codepen.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+import Hint from "~/components/Hint.astro";
토스페이(tosspay)는 일반결제만 지원됩니다. 일반결제 및 정기결제 모두 사용하시는 고객사께서는 [토스페이(tosspay\_v2) 연동 가이드](tosspay-v2/readme)를 참고하여 진행해주세요.
@@ -22,69 +22,69 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
## 2.결제 요청하기
-[JavaScript SDK](../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을 호출하여 토스간편결제 결제창을 호출할 수 있습니다.
-**결제결과**는 PC 환경은 **callback**, 모바일 환경은 **m_redirect_url** 로 리디렉션됩니다.
+[JavaScript SDK](../../sdk/javascript-sdk-old/readme) `IMP.request_pay(param, callback)`을 호출하여
+토스간편결제 결제창을 호출할 수 있습니다.
+**결제결과**는 PC 환경은 **callback**,
+모바일 환경은 **m\_redirect\_url** 로 리디렉션됩니다.
-
-```javascript title="Javascript SDK"
-IMP.request_pay({
- pg: "tosspay.{PG 상점아이디}",
- pay_method: "card",
- merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
- name: "주문명:결제테스트", // 필수 파라미터 입니다.
- amount: 1004,
- buyer_email: "test@portone.io",
- buyer_name: "구매자이름",
- buyer_tel: "010-1234-5678",
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_postcode: "123-456",
- m_redirect_url: "{결제 완료 후 리디렉션 될 URL}"
-}, function (rsp) { // callback 로직
- /* ...중략... */
-});
-```
+
+ ```ts title="Javascript SDK"
+ IMP.request_pay(
+ {
+ pg: "tosspay.{PG 상점아이디}",
+ pay_method: "card",
+ merchant_uid: "order_no_0001", // 상점에서 생성한 고유 주문번호
+ name: "주문명:결제테스트", // 필수 파라미터 입니다.
+ amount: 1004,
+ buyer_email: "test@portone.io",
+ buyer_name: "구매자이름",
+ buyer_tel: "010-1234-5678",
+ buyer_addr: "서울특별시 강남구 삼성동",
+ buyer_postcode: "123-456",
+ m_redirect_url: "{결제 완료 후 리디렉션 될 URL}",
+ },
+ function (rsp) {
+ // callback 로직
+ /* ...중략... */
+ },
+ );
+ ```
-**주요 파라미터 설명**
+ **주요 파라미터 설명**
-**`pg`** **string**
+ **`pg`** **string**
-**PG사 구분코드**
+ **PG사 구분코드**
-**`tosspay`** 로 지정하면 됩니다.
+ **`tosspay`** 로 지정하면 됩니다.
-**`pay_method`** **string**
+ **`pay_method`** **string**
-**결제수단 구분코드**
+ **결제수단 구분코드**
-신용카드 : `card` | 계좌이체 : `trans`
+ 신용카드 : `card` | 계좌이체 : `trans`
-**`name`** **\*** **`string`**
+ **`name`** **\*** **`string`**
-**제품명**
+ **제품명**
-**`merchant_uid`** **\*** **string**
+ **`merchant_uid`** **\*** **string**
-**주문번호**
+ **주문번호**
-매번 고유하게 채번되어야 합니다.
+ 매번 고유하게 채번되어야 합니다.
-**`amount`** **integer**
+ **`amount`** **integer**
-**결제금액**
+ **결제금액**
-**string** 이 아닌점에 유의하세요
+ **string** 이 아닌점에 유의하세요
-
-
-
+
+
-**토스페이 간편결제는 스마트폰 토스 앱상에서 결제가 진행됩니다.**
-
+ **토스페이 간편결제는 스마트폰 토스 앱상에서 결제가 진행됩니다.**
diff --git a/src/content/docs/ko/pg/simple/tosspay-v2/caution.mdx b/src/content/docs/ko/pg/simple/tosspay-v2/caution.mdx
index a08b5039e..bfaf39489 100644
--- a/src/content/docs/ko/pg/simple/tosspay-v2/caution.mdx
+++ b/src/content/docs/ko/pg/simple/tosspay-v2/caution.mdx
@@ -3,13 +3,13 @@ title: 연동 유의사항
description: (신) 토스페이 연동 유의사항을 소개합니다.
---
-# 토스페이와 사전 계약이 필요한 경우
+## 토스페이와 사전 계약이 필요한 경우
아래 기능을 사용하시려면 토스페이에 사전 신청 후 계약이 완료되어야 합니다.
- 비인증 결제
-# 공통사항
+## 공통사항
### 매출전표
@@ -17,10 +17,10 @@ description: (신) 토스페이 연동 유의사항을 소개합니다.
### 현금영수증 발급
-토스페이의 경우, 현금영수증 발급에 대한 정보를 따로 입력받지 않고, 앱에 저장된 식별정보로 현금영수증을 발급합니다.
+토스페이의 경우, 현금영수증 발급에 대한 정보를 따로 입력받지 않고, 앱에 저장된 식별정보로 현금영수증을 발급합니다.
이 떄문에 현금영수증 타입을 `personal`, `corporate`로 지정하더라도 실제로는 다른 타입의 현금영수증이 발급될 수 있습니다.
-# 비인증 결제 관련
+## 비인증 결제 관련
### 빌링키 발급 웹훅 연동 권장
@@ -33,7 +33,7 @@ description: (신) 토스페이 연동 유의사항을 소개합니다.
매핑관계를 따로 저장하고 웹훅으로 전달받은 `merchant_uid`와 매핑된 `customer_uid`를 이용해 빌링키
정보 조회 API를 호출하여 빌링키 정보를 가져올 수 있습니다.
-```javascript title="웹훅 바디 예시"
+```json title="웹훅 바디 예시"
{
"imp_uid": "imp_895265444670",
"merchant_uid": "oid_a12512basbasdasdfqwfasd",
@@ -41,7 +41,7 @@ description: (신) 토스페이 연동 유의사항을 소개합니다.
}
```
-### customer_uid 재사용 주의
+### customer\_uid 재사용 주의
새로운 빌링키를 발급할 때 기존에 발급했던 빌링키와 동일한 `customer_uid`를 사용하여 기존에 발급된
빌링키를 덮어씌우지 않도록 주의하세요. 토스페이의 경우 한번 빌링키를 발급했던 수단을 재사용 할 수
@@ -54,7 +54,7 @@ description: (신) 토스페이 연동 유의사항을 소개합니다.
빌링키에 연결된 결제수단을 서비스 내부적으로 사용하고 있다면 해당 정보를 보여주기 전 포트원의 빌링키
정보 조회 API를 호출하여 데이터를 최신화하기를 권장합니다.
-# 결제 취소 관련
+## 결제 취소 관련
### 부가세를 직접 지정한 결제의 부분 취소 요청 시 부가세 입력은 필수
diff --git a/src/content/docs/ko/pg/simple/tosspay-v2/readme.mdx b/src/content/docs/ko/pg/simple/tosspay-v2/readme.mdx
index 584da8698..d44408d0b 100644
--- a/src/content/docs/ko/pg/simple/tosspay-v2/readme.mdx
+++ b/src/content/docs/ko/pg/simple/tosspay-v2/readme.mdx
@@ -10,7 +10,8 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Hint from "~/components/Hint.astro";
- 토스페이(tosspay\_v2)에서는 일반결제 및 정기결제 모두 지원하고 있습니다. 신규 연동하시는 고객사께서는 해당 가이드를 참고하여 진행해주세요.
+ 토스페이(tosspay\_v2)에서는 일반결제 및 정기결제 모두 지원하고 있습니다.
+ 신규 연동하시는 고객사께서는 해당 가이드를 참고하여 진행해주세요.
## 1. 토스페이 채널 설정하기
@@ -42,7 +43,7 @@ import Hint from "~/components/Hint.astro";
- ```javascript title="Javascript SDK"
+ ```ts title="Javascript SDK"
IMP.request_pay(
{
pg: "tosspay_v2.{MID}",
@@ -125,7 +126,7 @@ import Hint from "~/components/Hint.astro";
인증결제창 호출 파라미터에서 **customer\_uid**, **customer\_id**값을 추가하면 비인증 결제창을 호출할 수 있습니다.
비인증 결제창에서 빌링키를 발급받은 후 해당 빌링키로 결제를 요청합니다.
- ```javascript title="Javascript SDK"
+ ```ts title="Javascript SDK"
IMP.request_pay(
{
pg: "tosspay_v2.{MID}",
@@ -200,7 +201,7 @@ import Hint from "~/components/Hint.astro";
빌링키 발급 시 전달한 `customer_uid`를 이용해서 재결제([**POST /subscribe/payments/again**](../../../api/api-4/api)) REST API를 다음과 같이 호출합니다.
- ```javascript
+ ```ts
await fetch("https://api.iamport.kr/subscribe/payments/again", {
method: "POST",
headers: {
diff --git a/src/content/docs/ko/release-note/api-sdk/2023-05-12.mdx b/src/content/docs/ko/release-note/api-sdk/2023-05-12.mdx
deleted file mode 100644
index 908631be7..000000000
--- a/src/content/docs/ko/release-note/api-sdk/2023-05-12.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: 2023-05-12 업데이트
-description: 2023년 5월 12일 업데이트 소식을 안내드립니다.
----
-
-import Banner from "~/components/release-note/Banner.astro";
-import Footer from "~/components/release-note/Footer.astro";
-
-
-
-## 주요 업데이트 사항
-
-### ✔️ 스마트로의 새로운 결제모듈을 이용할 수 있습니다
-
-기존 결제모듈을 통해 제공되는 결제기능은 제한적이었으나, 이번 업데이트를 통해 이용 가능한 결제기능이
-대폭 확대되었습니다. 그럼, 새로운 스마트로 결제모듈의 주요 기능을 바로 소개합니다.
-
-- REST API 를 이용해 연동합니다
-- 기존에 발급된 연동키값(MID, 서명, 결제취소 비밀번호)을 그대로 새로운 결제모듈에서 이용할 수 있습니다
-- 정기결제를 지원합니다
-- 허브형 간편결제를 지원합니다
-- KRW, USD 결제를 지원합니다
-- 카드사 결제창 다이렉트 호출이 가능합니다
-- 에스크로 결제를 지원합니다
-- 에스크로 배송 정보를 수정할 수 있습니다
-- 면세 금액을 직접 설정할 수 있습니다
-- 회전식/고정식 가상계좌를 발급할 수 있습니다
-
-본 기능 설정을 위한 자세한 내용은 관련 API 문서를 확인 바랍니다. [→ 스마트로 PG 설정하기](https://developers.portone.io/docs/ko/pg/payment-gateway/smartro-v2/readme)
-
-
diff --git a/src/content/docs/ko/result/webhook.mdx b/src/content/docs/ko/result/webhook.mdx
index 12ea764ce..a0455f3c6 100644
--- a/src/content/docs/ko/result/webhook.mdx
+++ b/src/content/docs/ko/result/webhook.mdx
@@ -81,7 +81,7 @@ URL은 관리자 콘솔에서 두 가지 형태로 지원하고 있습니다.
포트원 SDK의 `IMP.request_pay()` 함수 파라미터 중 `notice_url`를 통해 관리자콘솔에서 설정한 웹훅 수신 URL을 덮어쓸 수 있습니다.
-```javascript title="client-side"
+```ts title="client-side"
function requestPay() {
// IMP.request_pay(param, callback) 결제창 호출
IMP.request_pay(
@@ -142,7 +142,7 @@ curl -H "Content-Type: application/json" -X POST -d '{ "imp_uid": "imp_123456789
Webhook 이벤트의 `POST` 요청을 처리할 endpoint를 다음과 같이 생성하여 결제 정보를 조회하고 검증하여 저장합니다.
- ```javascript title="server-side"
+ ```ts title="server-side"
app.use(bodyParser.json());
// ...
// "/portone-webhook"에 대한 POST 요청을 처리
diff --git a/src/content/docs/ko/sdk/javascript-sdk-old/readme.mdx b/src/content/docs/ko/sdk/javascript-sdk-old/readme.mdx
index 4c316ce75..dcc09878a 100644
--- a/src/content/docs/ko/sdk/javascript-sdk-old/readme.mdx
+++ b/src/content/docs/ko/sdk/javascript-sdk-old/readme.mdx
@@ -6,11 +6,12 @@ description: 결제창 연동시 호출 및 응답 파라미터를 확인 할
import Hint from "~/components/Hint.astro";
포트원 JavaScript SDK를 사용하면 웹사이트 또는 앱에서 결제창 또는 본인인증창과 연동할 수 있습니다.
-버전 내역 및 각 버전의 주요 변경 사항은 [**릴리스 노트**](sdk-release-note)를 참조하세요.
-### SDK Library 로드하기
+## SDK Library 로드하기
-**포트원 JavaScript SDK**를 사용하기 위해서 먼저 해당 라이브러리를 다음과 같이 페이지에 추가해야 합니다. 해당 라이브러리는 CDN**(https://cdn.iamport.kr/js/iamport.payment-{SDK-최신버전}.js**)을 통한 사용을 권장합니다. 라이브러리가 로드되면, **IMP** 전역 객체를 **window** 객체의 프로퍼티로 접근하여 **IMP**의 함수들을 호출할 수 있습니다.
+**포트원 JavaScript SDK**를 사용하기 위해서 먼저 해당 라이브러리를 다음과 같이 페이지에 추가해야 합니다.
+해당 라이브러리는 CDN**([https://cdn.iamport.kr/js/iamport.payment-\{SDK-최신버전}.js](https://cdn.iamport.kr/js/iamport.payment-\{SDK-최신버전}.js)**)을 통한
+사용을 권장합니다. 라이브러리가 로드되면, **IMP** 전역 객체를 **window** 객체의 프로퍼티로 접근하여 **IMP**의 함수들을 호출할 수 있습니다.
```html title="HTML"
@@ -26,6 +27,5 @@ import Hint from "~/components/Hint.astro";
```
-**jQuery 1.0 이상이 설치**되어 있어야 합니다.
-
+ **jQuery 1.0 이상이 설치**되어 있어야 합니다.
diff --git a/src/content/docs/ko/sdk/javascript-sdk-old/sdk-release-note.mdx b/src/content/docs/ko/sdk/javascript-sdk-old/sdk-release-note.mdx
deleted file mode 100644
index 5c8859c02..000000000
--- a/src/content/docs/ko/sdk/javascript-sdk-old/sdk-release-note.mdx
+++ /dev/null
@@ -1,259 +0,0 @@
----
-title: SDK Release Note
-description: Javascript SDK 수정 사항 및 최신 반영 내용을 확인할 수 있습니다.
----
-
-import Details from "~/components/gitbook/Details.astro";
-
-### Version 1.2.0
-
-
-
내용 확인하기
-
-#### New
-
-- 신규 PG 스마트로(`smartro`) 신용카드, 실시간계좌이체, 가상계좌 지원 추가
-- 신규 PG 토스간편결제(`tosspay`) 지원 추가
-- 신규 PG KCP 퀵페이(`kcp_quick`) 지원 추가
-- 신규 PG 키움페이(구 페이조아, `daou`) 신용카드, 가상계좌 결제 지원 추가
-
-#### Feature
-
-- 차이페이(`chai`) 팝업 결제모드 지원 추가
-
- \-기존에는 무조건 redirect 방식으로 지원해왔으나 redirect와 팝업을 선택할 수 있도록 동작 지원
-- 토스페이먼츠 - 신모듈(`tosspayments`) 인증창으로 빌링키 발급 지원
-
-#### Fixed
-
-- 토스페이먼츠 JS 스크립트 inject 방식 변경
-
-
-
-### Version 1.1.8
-
-
-
내용 확인하기
-
-**카카오페이 모바일 결제 리디렉션 방식으로 변경**
-
-카카오페이 SDK의 iframe 방식 미지원 정책에 따라 카카오페이 모바일 결제를 iframe 대신 페이지 리디렉션 방식으로 변경하였습니다.기존 버전에서는 카카오페이 모바일 결제 프로세스가 완료되면 PC에서와 동일하게 `IMP.request_pay`에 지정된 콜백함수가 실행되어 결제가 이루어젔습니다. 안드로이드 내장 브라우저 및 특정 버전의 안드로이드 크롬에서 카카오페이 앱결제가 원활하지 않을 수 있는 이슈로 인해 모바일 환경에서는 리디렉션 방식으로 결제 연동을 하는 방식으로 변경되었습니다.
-
-**(주문형) 네이버페이 팝업 모드 추가 및 기본값 변경**
-
-결제창 요청 시 `popup : true` 옵션을 명시적으로 지정했을 때에만 팝업창(새탭)을 통해 (주문형)네이버페이 결제가 진행되며, 기본적으로는 페이지 리디렉션 방식으로 결제가 진행됩니다.브라우저 팝업차단 등의 이슈를 최대한 피하기 위해서 네이버페이에서는 PC 및 모바일 환경에서 페이지 리디렉션 방식을 권장하여 기본값으로 설정하였습니다.
-
-- **version >= 1.1.8**
- - PC/모바일 환경 : 현재 페이지 리디렉션 방식으로 진행되는 것을 기본값으로 하며, `popup : true` 옵션을 선언한 경우에만 팝업창(새탭)으로 결제가 진행됩니다.
-- **version < 1.1.8**
- - PC환경 : 팝업창(새탭) 방식으로 진행 (`popup` 파라미터 무관)
- - 모바일환경 : 현재 페이지 리디렉션 방식으로 진행 (`popup` 파라미터 무관)
-
-**Eximbay 리디렉션 방식 추가**
-
-결제창 요청 시 `popup : false` 옵션을 명시적으로 지정하면 리디렉션 방식으로 Eximbay 결제가 진행됩니다.모바일 앱 내 WebView로 결제를 진행할때 일반적으로 팝업이 차단되므로, 원할한 결제를 위해서 리디렉션 방식을 추가하였습니다.
-
-- **version >= 1.1.8**
- - PC/모바일 환경 : 팝업창 방식으로 진행되는 것을 기본값으로 하며, `popup : false` 옵션을 선언한 경우에만 리디렉션 방식으로 결제가 진행됩니다.
-- **version < 1.1.8**
- - PC/모바일 환경 : `popup`파라미터 무관하게 팝업창 방식으로 진행
-
-**본인인증 복수PG 설정 지원**
-
-기존 `다날-휴대폰 본인인증` 외 `이니시스-신용카드 본인인증` 수단이 추가됨에 따라, 휴대폰 본인인증도 복수PG 설정을 지원합니다.\
-또한, `다날-휴대폰 본인인증` 을 2개 이상의 CPID를 발급받아 사이트별로 사용하려는 경우에도 `pg : danal.{다날 CPID}` 복수PG 호출 방식을 지원합니다.
-
-```javascript title="다날-휴대폰 본인인증"
- IMP.certification({
- pg: "danal", //danal 또는 danal.{다날 CPID}, 이하 다른 파라미터는 생략
- ...
- ...
- }, function(rsp) {
- if ( rsp.success ) {
- //본인인증 성공 및 해당되는 imp_uid, merchant_uid 전달 (rsp.imp_uid, rsp.merchant_uid)
- } else {
- //본인인증 실패 및 중단
- }
- });
-```
-
-```javascript title="이니시스-신용카드 본인인증"
-// PC/모바일 환경 모두 popup : true가 기본값
-// PC환경 : popup 파라미터 무관하게 팝업창 방식으로 진행(이니시스 정책)
-// 모바일환경 : popup : false 선언된 경우 m_redirect_url 파라미터 필요
-IMP.certification({
- pg: "inicis", //inicis 또는 inicis.{이니시스 MID}, 이하 파라멤터는 생략
- m_redirect_url: "https://shop.yourservice.com/user-certificates/complete",
- ...
- ...
-});
-```
-
-#### 버그 수정
-
-**아이폰 Safari에서 리디렉션 방식으로 결제 중 브라우저의 Back 버튼 클릭 시 White Screen이 나타나는 현상**
-
-Safari 브라우저의 Back 버튼으로 이전 페이지로 돌아가면, 리디렉션되기 직전 상태의 DOM을 복원하여 출력하는 특성때문에 발생되는 버그로 확인되어서 수정하였습니다. (리디렉션 방식으로 진행되는 모든 PG사에 해당됨)
-
-
-
-### Version 1.1.7
-
-
-
내용 확인하기
-
-**페이팔 팝업 방식 추가**
-
-결제 요청 시 호출하는 `IMP.request_pay(param, callback)`함수의 `popup : true` 옵션을 지정하면, 결제창이 팝업창으로 열리며 결제 프로세스 완료 후 `callback` 함수가 호출됩니다. 이전 버전에서는 페이지 리디렉션 방식만 지원됩니다.
-
-```javascript title="javascript 팝업 방식"
- // popup : true 옵션과 콜백 함수 등록부분 참고 (그 외 파라미터 생략)
- IMP.request_pay({
- pg: "paypal",
- popup: true,
- ...
- ...
- }, function(rsp) {
- if ( rsp.success ) {
- //Paypal 결제 완료 및 결제검증로직 시작
- } else {
- //Paypal 결제 중단 혹은 실패
- }
- });
-```
-
-```javascript title="javascript redirect 방식"
- // m_redirect_url 지정 필요 (popup : false가 기본값이므로 생략됨)
- IMP.request_pay({
- pg: "paypal",
- m_redirect_url: "https://shop.yourservice.com/payments/complete",
- ...
- ...
- });
-```
-
-**본인인증(다날) 리디렉션 방식 추가**
-
-본인인증(다날) 요청 시, 본인인증 후 이동될 URL을 `m_redirect_url` 파라미터에 지정하면 리디렉션 방식으로 진행됩니다. 이전 버전에서는 팝업 방식만 지원됩니다.리디렉션 설정하는 방법은 휴대폰 본인인증 연동하기를 참고하세요.
-
-```javascript title="javascript (팝업 방식)"
- // popup : true 옵션
- IMP.certification({
- merchant_uid : "본인인증 건 트랜잭션 ID",
- popup: true
- }, function(rsp) {
- if ( rsp.success ) {
- //본인인증 성공
- } else {
- //본인인증 실패 혹은 중단(팝업창이 닫히거나 화면내 X버튼/취소버튼 클릭 시)
- }
- });
-```
-
-```javascript title="javascript (리디렉션 방식)"
-// m_redirect_url 지정 필요 (popup : false가 기본값이므로 생략됨)
- IMP.certification({
- merchant_uid : "본인인증 건 트랜잭션 ID"
- m_redirect_url: "https://shop.yourservice.com/payments/complete",
- });
-```
-
-#### 버그 수정
-
-**본인인증(다날) 팝업 내 닫힘 버튼 (X 버튼) 클릭 시 콜백 함수가 호출되지 않는 현상**
-
-본인인증(다날) 요청 시, 팝업방식에서 팝업창이 닫히거나 화면 내 취소 버튼이 클릭된 경우에는 `IMP.certification(param, handler)` 의 콜백함수(handler)가 호출되었지만, 아래 화면과 같이 화면 내 X 버튼을 클릭했을 때는 콜백함수(handler)가 호출되지 않는 버그가 있어서 수정되었습니다. X 버튼 클릭했을 때에도 콜백함수가 호출됩니다.
-
-
-
-
-
-### Version 1.1.5 및 이전 버전
-
-
-
내용 확인하기
-
-**iamport.payment-1.1.5.js**
-
-```html
-
-```
-
-**2017-04-03 배포**\
-\- 모바일 결제에서 `IMP.request_pay(param)`와 같이 callback function 이 누락된 채 호출되었으나, 결제프로세스 시작 전 사전 필터링 단계에서 실패사유가 발생한 경우에도 `m_redirect_url`로 이동하게 됩니다.\
-\_(결제프로세스가 시작된 후 성공/실패에 대한 경우에는 이전 버전에서도 ,\[object Object],로 이동이 이루어지고 있습니다.)\_
-
-**결제프로세스 시작 전에 발생할 수 있는 실패 사유**
-
-- 이미 결제된 merchant\_uid를 재시도하는 경우
-- 결제요청 파라미터가 올바르지 않은 경우
-
-**결제프로세스 시작 후 발생할 수 있는 실패 사유**
-
-- 카드 사용 정지, 한도초과
-- 비밀번호 오류 횟수 초과
-
-**iamport.payment-1.1.4.js**
-
-```html
-
-```
-
-**2016-11-14 배포**\
-\- Agency-Tier기능 제공, IMP.agency(고객사식별코드, Tier코드)함수 추가\
-\- SMS휴대폰본인인증 기능 제공, IMP.certification()함수 추가
-
-**iamport.payment-1.1.3.js**
-
-```html
-
-```
-
-**2016-07-13 배포**\
-\- 1.1.2버전 소스리팩토링, 성능개선된 버전
-
-**iamport.payment-1.1.2.js**
-
-```html
-
-```
-
-**2016-03-09 배포**\
-\- 복수의 PG설정정보를 호출하는 방법을 보다 개선한 버전
-
-**iamport.payment-1.1.1.js**
-
-```html
-
-```
-
-**2016-02-19 배포**\
-\- 동일한 PG의 MID를 여러개 사용할 수 있도록 pg파라미터 설정 규칙 확장. pg : '\{PG사}.\{MID}'
-
-**iamport.payment-1.1.0.js**
-
-```html
-
-```
-
-**2016-01-19 배포**\
-\- 하나의 계정으로 복수의 PG설정을 사용할 수 있도록 pg 파라미터를 추가. pg : '\{PG사}'
-
-**iamport.payment-1.0.0.js**
-
-```html
-
-```
-
-**2014-10-24 배포**\
-\- 최초 배포된 후 안정화된 버전
-
-**iamport.payment.js**
-
-```html
-
-```
-
-versioning되기 전 사용된 버전. iamport.payment-1.0.0.js와 동일하며 이후 내용 변경 없음
-
-
diff --git a/src/content/docs/ko/sdk/javascript-sdk/cft-rt.mdx b/src/content/docs/ko/sdk/javascript-sdk/cft-rt.mdx
index 19c2e58c8..af52f599f 100644
--- a/src/content/docs/ko/sdk/javascript-sdk/cft-rt.mdx
+++ b/src/content/docs/ko/sdk/javascript-sdk/cft-rt.mdx
@@ -3,7 +3,7 @@ title: 본인인증 결과 파라미터
description: 본인인증 요청에 대해 반환되는 응답 정보를 확인합니다.
---
-### rsp (Object)
+## rsp (Object)
> **`success`** **\*** **boolean**
>
diff --git a/src/content/docs/ko/sdk/javascript-sdk/cft.mdx b/src/content/docs/ko/sdk/javascript-sdk/cft.mdx
index 74381d1b9..569c5f51f 100644
--- a/src/content/docs/ko/sdk/javascript-sdk/cft.mdx
+++ b/src/content/docs/ko/sdk/javascript-sdk/cft.mdx
@@ -3,7 +3,7 @@ title: 본인인증 요청 파라미터
description: 본인인증 요청에 필요한 파라미터 정보를 확인합니다.
---
-### certification(param, callback)
+## certification(param, callback)
> **`merchant_uid`** **\*** **string**
>
@@ -47,7 +47,7 @@ description: 본인인증 요청에 필요한 파라미터 정보를 확인합
>
> **서비스 도메인 URL 또는 명칭**
>
-> - 서비스의 대표 도메인 URL(예 : https://portone.io) 또는 서비스 명칭(예 : 포트원)으로 설정
+> - 서비스의 대표 도메인 URL(예 : [https://portone.io](https://portone.io)) 또는 서비스 명칭(예 : 포트원)으로 설정
> - 본인인증 동작에 영향을 주지는 않지만, [KISA의 ePrivacy Clean 서비스](https://www.eprivacy.go.kr/) 연동을 위해 설정 권장
> - React Native / Ionic 등 앱 내 local html을 통해 본 함수가 호출되는 경우, URL 도메인을 인식할 수 없으므로 설정 권장(미 설정 시: `포트원`)
@@ -56,7 +56,6 @@ description: 본인인증 요청에 필요한 파라미터 정보를 확인합
> **리디렉션 URL**
>
> - 모바일 환경에서 본인인증 후 리디렉션될 URL
->
> - 리디렉션될 때 query string 으로 `imp_uid`, `merchant_uid`, `success` 가 전달됩니다.
> **popup** **boolean**
diff --git a/src/content/docs/ko/sdk/javascript-sdk/load-module-rt.mdx b/src/content/docs/ko/sdk/javascript-sdk/load-module-rt.mdx
index 537c51f7f..0e351ebe3 100644
--- a/src/content/docs/ko/sdk/javascript-sdk/load-module-rt.mdx
+++ b/src/content/docs/ko/sdk/javascript-sdk/load-module-rt.mdx
@@ -3,6 +3,6 @@ title: 모듈 로드 결과 파라미터
description: 모듈로드 요청에 대해 반환되는 응답정보를 확인합니다.
---
-### rsp (Object)
+## rsp (Object)
> **PG사별 module이 돌아옵니다. 결제연동 탭의 PG사별 모듈 연동 부분을 확인해주세요.**
diff --git a/src/content/docs/ko/sdk/javascript-sdk/load-module.mdx b/src/content/docs/ko/sdk/javascript-sdk/load-module.mdx
index 4f1447daf..e4c9877bf 100644
--- a/src/content/docs/ko/sdk/javascript-sdk/load-module.mdx
+++ b/src/content/docs/ko/sdk/javascript-sdk/load-module.mdx
@@ -4,45 +4,44 @@ description: PG사의 모듈 로딩에 필요한 파라미터 정보를 가져
---
import Details from "~/components/gitbook/Details.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
## 모듈로드 파라미터 정의
-
-```javascript title="Javascript SDK"
-await IMP.loadModule(
- 'moduleType',
- {
- userCode: 'Merchant ID', //// Example: imp00000000
- tierCode: 'Tier Code',
- },
- {
- //something loadModule option
- }
-);
-```
-
-
-
+
+ - naverpay
+ - kakopay
+ - payco
+ - samsungpay
+ - ssgpay
+ - lpay
+ - applepay
+ - pinpay
+ - tosspay
+ - skpay
+ - toss\_brandpay
> **`pg_tid`** **\*** **string**
@@ -210,13 +205,12 @@ PG사 또는 결제수단에 따라서 반환되는 속성들이 상이합니다
> **`paid_at`** **\*** **string**
>
-> **결제승인시각** **(UNIX timestamp)**
+> **결제승인시각 (UNIX timestamp)**
-**Unix timestamp 란?**
-
-**유닉스 시간**(영어: Unix time)은 시각을 나타내는 방식이다. **POSIX 시간**이나 **Epoch 시간**이라고 부르기도 한다. 1970년 1월 1일 00:00:00 협정 세계시(UTC) 부터의 경과 시간을 초로 환산하여 정수로 나타낸 것이다. 유닉스 시간에서 윤초는 무시된다. 유닉스 계열 운영 체제나 여러 다른 운영 체제, 그리고 파일 형식들에서 사용된다. 윤초 처리 방식 때문에 시간을 선형으로 표현하지 못하며 협정 세계시의 윤초를 표현할 수 없다..
+ **Unix timestamp 란?**
+ **유닉스 시간**(영어: Unix time)은 시각을 나타내는 방식이다. **POSIX 시간**이나 **Epoch 시간**이라고 부르기도 한다. 1970년 1월 1일 00:00:00 협정 세계시(UTC) 부터의 경과 시간을 초로 환산하여 정수로 나타낸 것이다. 유닉스 시간에서 윤초는 무시된다. 유닉스 계열 운영 체제나 여러 다른 운영 체제, 그리고 파일 형식들에서 사용된다. 윤초 처리 방식 때문에 시간을 선형으로 표현하지 못하며 협정 세계시의 윤초를 표현할 수 없다..
> **`receipt_url`** **string**
@@ -236,8 +230,7 @@ PG사 또는 결제수단에 따라서 반환되는 속성들이 상이합니다
> **가상계좌 입금 계좌번호**
-PG사로부터 전달된 정보 그대로 제공에 따라 숫자 외 dash(-) 또는 기타 기호가 포함되어 있을 수 있음
-
+ PG사로부터 전달된 정보 그대로 제공에 따라 숫자 외 dash(-) 또는 기타 기호가 포함되어 있을 수 있음
> **`vbank_name`** **string**
@@ -249,40 +242,38 @@ PG사로부터 전달된 정보 그대로 제공 **가상계좌 예금주**
-계약된 사업자명으로 표시됨, 단, 일부 PG사의 경우 null 을 반환하므로 자체 처리 필요
-
+ 계약된 사업자명으로 표시됨, 단, 일부 PG사의 경우 null 을 반환하므로 자체 처리 필요
> **`vbank_date`** **string**
>
-> **가상계좌 입금기한** **(UNIX timestamp)**
+> **가상계좌 입금기한 (UNIX timestamp)**
```json title="결제 응답 sample object"
{
- apply_num: "42827474",
- bank_name: null,
- buyer_addr: "서울특별시 강남구 삼성동",
- buyer_email: "test@portone.io",
- buyer_name: "포트원 기술지원팀",
- buyer_postcode: "123-456",
- buyer_tel: "010-1234-5678",
- card_name: "신한카드",
- card_number: "5428790000000294",
- card_quota: 0,
- currency: "KRW",
- custom_data: null,
- imp_uid: "imp_347242536261",
- merchant_uid: "57008833-33004",
- name: "당근 10kg",
- paid_amount: 1004,
- paid_at: 1648344363,
- pay_method: "card",
- pg_provider: "kcp",
- pg_tid: "22336466628585",
- pg_type: "payment",
- receipt_url: "https://admin8.kcp.co.kr/assist/bill.BillActionNew.do?cmd=card_bill&tno=22336466628585&order_no=imp_347242536261&trade_mony=1004",
- status: "paid",
- success: true
+ "apply_num": "42827474",
+ "bank_name": null,
+ "buyer_addr": "서울특별시 강남구 삼성동",
+ "buyer_email": "test@portone.io",
+ "buyer_name": "포트원 기술지원팀",
+ "buyer_postcode": "123-456",
+ "buyer_tel": "010-1234-5678",
+ "card_name": "신한카드",
+ "card_number": "5428790000000294",
+ "card_quota": 0,
+ "currency": "KRW",
+ "custom_data": null,
+ "imp_uid": "imp_347242536261",
+ "merchant_uid": "57008833-33004",
+ "name": "당근 10kg",
+ "paid_amount": 1004,
+ "paid_at": 1648344363,
+ "pay_method": "card",
+ "pg_provider": "kcp",
+ "pg_tid": "22336466628585",
+ "pg_type": "payment",
+ "receipt_url": "https://admin8.kcp.co.kr/assist/bill.BillActionNew.do?cmd=card_bill&tno=22336466628585&order_no=imp_347242536261&trade_mony=1004",
+ "status": "paid",
+ "success": true
}
```
-
diff --git a/src/content/docs/ko/sdk/javascript-sdk/readme.mdx b/src/content/docs/ko/sdk/javascript-sdk/readme.mdx
index c9cccb86e..a6643e223 100644
--- a/src/content/docs/ko/sdk/javascript-sdk/readme.mdx
+++ b/src/content/docs/ko/sdk/javascript-sdk/readme.mdx
@@ -6,11 +6,10 @@ description: 결제창 연동시 호출 및 응답 파라미터를 확인 할
import Hint from "~/components/Hint.astro";
-기존에 사용하신 JavaScript SDK의 문서를 원하시면 [javascript-sdk-old](../javascript-sdk-old/readme)를 참고해주세요.\
-
+ 기존에 사용하신 JavaScript SDK의 문서를 원하시면 [javascript-sdk-old](../javascript-sdk-old/readme)를 참고해주세요.
-## SDK Library 로드하기
+## SDK Library 로드하기
**포트원 JavaScript SDK**를 사용하기 위해서 SDK Script Tag를 다음과 같이 페이지 HTML에 추가해야
합니다. 라이브러리가 로드되면, **IMP** 전역 객체를 **window** 객체의 프로퍼티로 접근하여 **IMP**의
@@ -27,16 +26,15 @@ import Hint from "~/components/Hint.astro";
더 이상 포트원 SDK를 사용하기 위해 jQuery를 추가하실 필요가 없습니다.\
고객사 페이지에서 **jQuery를 추가로 사용하지 않으시는 경우 jQuery 의존성을 삭제해주세요.**
-### **2. request_pay 응답 객체에 \`success\`가 포함되지 않습니다.**
+### **2. request\_pay 응답 객체에 \`success\`가 포함되지 않습니다.**
기존에 제공되는 `success` 또는 `imp_success` 프로퍼티는 결제 성공 여부가 아닌 내부 트랜잭션 정상
종료 여부를 나타냈기에 의미가 모호하여 응답에 포함되지 않도록 수정되었습니다.
-**success**나 **error\_code**는 **결제 성공 여부를 나타내지 않습니다.**
-
-포트원 REST API로 [결제 상세 내역을 조회](../../api/api-1/api-7)해야 결제 성공 여부를 받을 수 있습니다.
+ **success**나 **error\_code**는 **결제 성공 여부를 나타내지 않습니다.**
-자세한 내용은 [5](../../auth/guide/5/ "mention")를 참고해주세요.
+ 포트원 REST API로 [결제 상세 내역을 조회](../../api/api-1/api-7)해야 결제 성공 여부를 받을 수 있습니다.
+ 자세한 내용은 [5](../../auth/guide/5/ "mention")를 참고해주세요.
diff --git a/src/content/docs/ko/shopify/readme.mdx b/src/content/docs/ko/shopify/readme.mdx
index 96647b269..7ec4bb3a7 100644
--- a/src/content/docs/ko/shopify/readme.mdx
+++ b/src/content/docs/ko/shopify/readme.mdx
@@ -14,7 +14,7 @@ import Hint from "~/components/Hint.astro";
본 서비스는 서비스 이용 계약서 작성 후 이용이 가능하오니 [작성 가이드](https://guide.portone.io/25072237-0bc7-41a4-b3c0-c0b22e95d2f7)를 참고 부탁드립니다.
-### 포트원의 Shopify plugin을 통해 이용하실 수 있는 국내PG사와 결제 수단은 아래와 같습니다.
+## 포트원의 Shopify plugin을 통해 이용하실 수 있는 국내PG사와 결제 수단은 아래와 같습니다.
|PG사 |지역 |타입 |결제수단 |
|-------------|------|--------|---------------------|
@@ -33,5 +33,4 @@ import Hint from "~/components/Hint.astro";
## 글로벌 포트원에서 지원하는 해외PSP 목록은 아래 링크를 참고해 주세요.
-https://www.docs.portone.cloud/docs/payment_channels/pmt_methods
-
+[https://www.docs.portone.cloud/docs/payment\_channels/pmt\_methods](https://www.docs.portone.cloud/docs/payment_channels/pmt_methods)
diff --git a/src/content/docs/ko/shopify/shopify/shopify-1.mdx b/src/content/docs/ko/shopify/shopify/shopify-1.mdx
index 7437bc344..cebe6e32f 100644
--- a/src/content/docs/ko/shopify/shopify/shopify-1.mdx
+++ b/src/content/docs/ko/shopify/shopify/shopify-1.mdx
@@ -7,6 +7,8 @@ import Figure from "~/components/Figure.astro";
1. 먼저 포트원(KR) 계정을 생성하고, 원하는 PG사에 대해 가입을 신청합니다.
+
2. 가입 신청 후 계약이 진행되는 과정에서 PG사의 Credential을 메일이나 PG사 어드민을 통해 획득하게 됩니다.
+
3. PG사로부터 Credential을 획득한 뒤 콘솔에 접속하여 연동을 원하는 PG사를 추가합니다.
diff --git a/src/content/docs/ko/shopify/shopify/shopify-4.mdx b/src/content/docs/ko/shopify/shopify/shopify-4.mdx
index 651331e48..1633de9f7 100644
--- a/src/content/docs/ko/shopify/shopify/shopify-4.mdx
+++ b/src/content/docs/ko/shopify/shopify/shopify-4.mdx
@@ -5,16 +5,16 @@ description: Shopify 스토어에 PortOne 연결방법을 설명합니다.
import Figure from "~/components/Figure.astro";
-## 1.Shopify 앱 추가
+## 1. Shopify 앱 추가
먼저 Shopify 앱스토어에서 [PortOne Payments](https://apps.shopify.com/chaiport-payments) 링크를 통해 앱을 추가합니다.
-(또는 지급(Payments) > 결제방법 추가 > 공급업체로 검색에서 [PortOne Payments]를 검색하여 설치하실 수 있습니다.)
+(또는 지급(Payments) > 결제방법 추가 > 공급업체로 검색에서 \[PortOne Payments]를 검색하여 설치하실 수 있습니다.)
-## 2.결제수단 선택
+## 2. 결제수단 선택
Shopify 스토어의 `Settings > Payments` 페이지에서 PortOne Payments 앱이 제공하는 결제수단을 선택해 줍니다.
이 부분은 엔드유저에게 스토어에서 제공하는 결제수단에 대한 마크를 노출시킵니다. 실제로 제공되는 결제수단과는 무관합니다.
diff --git a/src/content/docs/ko/support/code-info/readme.mdx b/src/content/docs/ko/support/code-info/readme.mdx
index dbd048ac0..ffe537115 100644
--- a/src/content/docs/ko/support/code-info/readme.mdx
+++ b/src/content/docs/ko/support/code-info/readme.mdx
@@ -6,9 +6,15 @@ description: PG사/카드사/택배사/은행별 코드들을 확인할 수 있
import ContentRef from "~/components/gitbook/ContentRef.astro";
+
+
+
+
+
+
diff --git a/src/content/docs/ko/tip/agency-and-tier.mdx b/src/content/docs/ko/tip/agency-and-tier.mdx
index 80a9cd057..b468b2899 100644
--- a/src/content/docs/ko/tip/agency-and-tier.mdx
+++ b/src/content/docs/ko/tip/agency-and-tier.mdx
@@ -30,7 +30,6 @@ import image2 from "./_assets/substore2.png";
**2. 결제 요청**
-
포트원 V1 결제 모듈의 경우 아래 방법으로 결제를 요청해야 합니다.
포트원 V2 결제 모듈의 경우 하위 상점 생성 시 채번되는 store id를 이용하여 대표상점과 동일하게 결제 요청/조회/취소를 진행할 수 있습니다.
@@ -42,12 +41,11 @@ import image2 from "./_assets/substore2.png";
`ex) IMP.agency('imp12345678', '001')`
-**REST API호출시 주의 사항**
-
-REST API호출시에는 Header에 Tier정보를 같이 보내야 해당 Tier에 대한 접근이 가능
+ **REST API호출시 주의 사항**
-HTTP Header 에 아래와 같은 파라미터 설정 필요
+ REST API호출시에는 Header에 Tier정보를 같이 보내야 해당 Tier에 대한 접근이 가능
-`"Tier" : "티어코드 3자리"`
+ HTTP Header 에 아래와 같은 파라미터 설정 필요
+ `"Tier" : "티어코드 3자리"`
diff --git a/src/content/docs/ko/tip/card-code.mdx b/src/content/docs/ko/tip/card-code.mdx
index 41a3693bc..5ee4a0079 100644
--- a/src/content/docs/ko/tip/card-code.mdx
+++ b/src/content/docs/ko/tip/card-code.mdx
@@ -3,7 +3,7 @@ title: 카드사 코드
description: PortOne 에서 처리하는 카드사별 코드목록 입니다.
---
-| 카드사명 |code |
+| 카드사명 | code|
|:--------:|:---:|
| BC |`361`|
| KB |`381`|
@@ -17,11 +17,11 @@ description: PortOne 에서 처리하는 카드사별 코드목록 입니다.
| 제주 |`373`|
| 광주 |`364`|
| 신한 |`366`|
-| KDB |`002`|
+| KDB |`002`|
| 수협 |`369`|
| 신협 |`048`|
| 씨티 |`370`|
| 우체국 |`071`|
-| K뱅크 |`089`|
+| K뱅크 |`089`|
| 전북 |`372`|
|카카오뱅크|`090`|
diff --git a/src/content/docs/ko/tip/code.mdx b/src/content/docs/ko/tip/code.mdx
index ef4ec74ad..f74ebb163 100644
--- a/src/content/docs/ko/tip/code.mdx
+++ b/src/content/docs/ko/tip/code.mdx
@@ -3,7 +3,7 @@ title: 택배사 코드
description: 에스크로 배송등록에 필요한 택배사 코드표를 확인합니다.
---
-### 이용하시는 PG사 상관없이 동일한 코드표가 적용됩니다.
+**이용하시는 PG사 상관없이 동일한 코드표가 적용됩니다.**
|택배사 코드|택배사 이름 |
|-----------|-------------------------------------------------------------------|
diff --git a/src/content/docs/ko/tip/flow.mdx b/src/content/docs/ko/tip/flow.mdx
index 8780bebbf..9b082e679 100644
--- a/src/content/docs/ko/tip/flow.mdx
+++ b/src/content/docs/ko/tip/flow.mdx
@@ -16,10 +16,11 @@ import image2 from "./_assets/flow/flow-2.png";
>
> 1. 결제요청을 위한 **인증키 획득**
> 2. **실 결제요청**
->
-> 백엔드 개발 포인트가 여러군데 존재하며 복잡한 형태의 연동 모듈과 샘플페이지 그리고 이해하기 어려운 연동메뉴얼 분석의 **삼중고**를 겪으시게 됩니다.
-## 2.포트원 결제 흐름도
+> 백엔드 개발 포인트가 여러군데 존재하며 복잡한 형태의 연동 모듈과 샘플페이지
+> 그리고 이해하기 어려운 연동메뉴얼 분석의 **삼중고**를 겪으시게 됩니다.
+
+## 2. 포트원 결제 흐름도
diff --git a/src/content/docs/ko/tip/pg-1.mdx b/src/content/docs/ko/tip/pg-1.mdx
index abb085557..5c78d247a 100644
--- a/src/content/docs/ko/tip/pg-1.mdx
+++ b/src/content/docs/ko/tip/pg-1.mdx
@@ -6,150 +6,144 @@ description: 각 PG사별 은행코드를 확인할 수 있습니다.
import Details from "~/components/gitbook/Details.astro";
-
+ - YYYY-MM-DDTHH:mm:ssZ
+ - YYYY-MM-DDTHH:mm:ss±hh:mm
-- 가상계좌 결제 건 결제취소(환불)은 06:00 ~ 23:00 까지만 가능하며, 이 외의 시간에 시도하면 에러를 리턴합니다. 이는 KSNET의 정책으로 포트원과 무관합니다.
+- 가상계좌 결제 건 결제취소(환불)은 06:00 \~ 23:00 까지만 가능하며, 이 외의 시간에 시도하면 에러를 리턴합니다. 이는 KSNET의 정책으로 포트원과 무관합니다.
- 가상계좌 결제 시 결제창에서 발급한 현금영수증의 경우 해당 거래가 취소되더라도 자동으로 취소되지
않습니다. 따라서, 직접 현금영수증 발급 취소를 진행해야 하므로 유의하시기 바랍니다.
@@ -366,18 +358,17 @@ async function schedulePayment() {
- 에스크로 결제 시 구매 확정을 위해 주문자 이메일(`customer.email`)을 필수로 입력해야 합니다.
- 에스크로 거래는 KSNET 관리자 페이지 (ksta.ksnet.co.kr > PG 거래내역 > 배송 에스크로 거래조회)에서
- 거래 후 30분~ 1시간 뒤 확인이 가능합니다. 에스크로 정보 수정의 경우도 등록이 완료된 이후부터
+ 거래 후 30분\~ 1시간 뒤 확인이 가능합니다. 에스크로 정보 수정의 경우도 등록이 완료된 이후부터
가능하오니 유의해서 사용이 필요합니다.
- 에스크로 배송정보 등록/변경 API (POST `/payments/${PAYMENT_ID_HERE}/escrow/logis`)에 사용되는
배송정보 발송일시 `logistics_form.send_at` 파라미터는 ISO8601 형식으로 입력해야 합니다.
-
+ - YYYY-MM-DDTHH:mm:ssZ
+ - YYYY-MM-DDTHH:mm:ss±hh:mm
### API 수기(키인) 결제
diff --git a/src/content/docs/ko/v2-payment/pg/naverpay.mdx b/src/content/docs/ko/v2-payment/pg/naverpay.mdx
index 5d16c87c8..a5f2725a2 100644
--- a/src/content/docs/ko/v2-payment/pg/naverpay.mdx
+++ b/src/content/docs/ko/v2-payment/pg/naverpay.mdx
@@ -63,21 +63,19 @@ import Details from "~/components/gitbook/Details.astro";
- 네이버페이의 상품 정보는 일반화된 Product 파라미터가 아닌 해당 파라미터로 넘겨주어야 합니다.
-
-
`productItem`의 배열을 넘겨야 합니다.
-
- `productItem` 은 다음 6개의 속성으로 하나의 상품 정보를 표현하는 객체의 배열입니다.
-
- - **`categoryType`** (필수) : [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product) 참고
- - **`categoryId`** (필수) : [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product) 참고
- - **`uid`** (필수) : 고객사 내부의 상품 고유 ID를 활용하는 것이 일반적이지만, 네이버페이 가이드 참고가 필요합니다. [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product)
- - **`name`** (필수) : 주문상품의 명칭
- - **`count`** (필수) : 상품 주문 개수
- - **`sellerId`** (선택) : 고객사가 하위 판매자를 식별하기 위한 고유 ID(영문 대소문자 및 숫자 허용)고객사의 업종이 통신판매중개업에 해당하여 네이버페이 계약 당시 별도의 안내를 받은 대상 고객사만 필수 입력합니다.비대상 고객사은 입력하지 않습니다.
- - **`payReferrer`** (선택) : 네이버 플랫폼의 타 서비스와 제휴계약 후 유입분석을 진행하는 경우에만 입력 [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product_ref)
- - `**startDate`** (선택) \*\***: 시작일(YYYYMMDD)
- - `**endDate`\*\* (선택) : 종료일(YYYYMMDD)
-
+
`productItem`의 배열을 넘겨야 합니다.
+
+ `productItem` 은 다음 6개의 속성으로 하나의 상품 정보를 표현하는 객체의 배열입니다.
+
+ - **`categoryType`** (필수) : [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product) 참고
+ - **`categoryId`** (필수) : [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product) 참고
+ - **`uid`** (필수) : 고객사 내부의 상품 고유 ID를 활용하는 것이 일반적이지만, 네이버페이 가이드 참고가 필요합니다. [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product)
+ - **`name`** (필수) : 주문상품의 명칭
+ - **`count`** (필수) : 상품 주문 개수
+ - **`sellerId`** (선택) : 고객사가 하위 판매자를 식별하기 위한 고유 ID(영문 대소문자 및 숫자 허용)고객사의 업종이 통신판매중개업에 해당하여 네이버페이 계약 당시 별도의 안내를 받은 대상 고객사만 필수 입력합니다.비대상 고객사은 입력하지 않습니다.
+ - **`payReferrer`** (선택) : 네이버 플랫폼의 타 서비스와 제휴계약 후 유입분석을 진행하는 경우에만 입력 [공식 매뉴얼](https://developer.pay.naver.com/docs/v2/api#etc-etc_product_ref)
+ - `**startDate`\*\* (선택) \*\*\*\*: 시작일(YYYYMMDD)
+ - `**endDate`\*\* (선택) : 종료일(YYYYMMDD)
- `deliveryFee`
@@ -87,21 +85,23 @@ import Details from "~/components/gitbook/Details.astro";
- 예를 들어 아래와 같이 `bypass` 파라미터를 넘겨줄 수 있습니다.
```json
- "bypass": {
- "naverpay": {
- "useCfmYmdt": "20230421",
- "productItems": [{
- "categoryType": "categoryType" // 결제 상품 유형
- "categoryId": "categoryId" // 결제 상품 분류
- "uid": "uid" // 결제 상품 식별값
- "name": "name" // 상품명
- "payReferrer": "NAVER_BOOK" // 결제 상품 유입경로
- "startDate": "20230421" // 시작일(YYYYMMDD)
- "endDate": "20230428" // 종료일(YYYYMMDD)
- "sellerId": "sellerId" // 하위 판매자 식별키
- "count": 5 // 결제 상품 개수
- }],
- "deliveryFee": 3000
+ {
+ "bypass": {
+ "naverpay": {
+ "useCfmYmdt": "20230421",
+ "productItems": [{
+ "categoryType": "categoryType", // 결제 상품 유형
+ "categoryId": "categoryId", // 결제 상품 분류
+ "uid": "uid", // 결제 상품 식별값
+ "name": "name", // 상품명
+ "payReferrer": "NAVER_BOOK", // 결제 상품 유입경로
+ "startDate": "20230421", // 시작일(YYYYMMDD)
+ "endDate": "20230428", // 종료일(YYYYMMDD)
+ "sellerId": "sellerId", // 하위 판매자 식별키
+ "count": 5 // 결제 상품 개수
+ }],
+ "deliveryFee": 3000
+ }
}
}
```
@@ -161,10 +161,10 @@ import Details from "~/components/gitbook/Details.astro";
- 결제창 호출(`requestPayment` 함수)후 결제창 하단의 “취소" 버튼 클릭 등으로 결제 프로세스가
중단되거나 잔액 부족, 한도 초과, 100원 미만 결제 등의 사유로 결제에 실패하면 콜백 함수(popup
방식)/`redirectUrl`(리디렉션 방식)로 전달되는 결제 결과(response 객체/쿼리 파라미터)에 실패
- 사유(error_msg)가 전달됩니다. 이 에러 메시지는 사용자에게 가공 없이 그대로 노출되어야 합니다.
+ 사유(error\_msg)가 전달됩니다. 이 에러 메시지는 사용자에게 가공 없이 그대로 노출되어야 합니다.
해당 규칙 미 준수시 네이버페이 실 검수 진행시 수정 요청을 받게 됩니다.
- - 예) error_msg가 “잔액 부족"이라고 가정할때, "결제에 실패하였습니다. 실패 사유:" + "잔액 부족"과
+ - 예) error\_msg가 “잔액 부족"이라고 가정할때, "결제에 실패하였습니다. 실패 사유:" + "잔액 부족"과
같은 형태로 가공되면 안됨
- **100원 미만 결제 처리**
diff --git a/src/content/docs/ko/v2-payment/pg/nice-v2.mdx b/src/content/docs/ko/v2-payment/pg/nice-v2.mdx
index 62fc7ddc9..6f890863c 100644
--- a/src/content/docs/ko/v2-payment/pg/nice-v2.mdx
+++ b/src/content/docs/ko/v2-payment/pg/nice-v2.mdx
@@ -7,8 +7,8 @@ import * as prose from "~/components/prose";
export const components = prose;
import Details from "~/components/gitbook/Details.astro";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
## 나이스페이먼츠 채널 설정하기
@@ -41,21 +41,20 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
- ```javascript
- import * as PortOne from '@portone/browser-sdk/v2';
+ ```ts
+ import * as PortOne from "@portone/browser-sdk/v2";
function requestPayment() {
PortOne.requestPayment({
- storeId: 'store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec', // 고객사 storeId로 변경해주세요.
+ storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
paymentId: `payment-${crypto.randomUUID()}`,
- orderName: '나이키 와플 트레이너 2 SD',
+ orderName: "나이키 와플 트레이너 2 SD",
totalAmount: 1000,
- currency: 'CURRENCY_KRW',
- channelKey: 'channel-key-9987cb87-6458-4888-b94e-68d9a2da896d', // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
- payMethod: 'CARD'
+ currency: "CURRENCY_KRW",
+ channelKey: "channel-key-9987cb87-6458-4888-b94e-68d9a2da896d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
+ payMethod: "CARD",
});
}
```
-
@@ -126,46 +125,45 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
- ```javascript
+ ```ts
// ... 수기(키인) 결제
const issueResponse = await axios({
url: `https://api.portone.io/payments/${PAYMENT_ID_HERE}/instant`,
method: "post",
- headers: { "Authorization": `PortOne ${PORTONE_API_SECRET}` },
+ headers: { Authorization: `PortOne ${PORTONE_API_SECRET}` },
data: {
- channelKey: 'channel-key-9987cb87-****-****-****-********896d', // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
- orderName: '나이키 와플 트레이너 2 SD',
+ channelKey: "channel-key-9987cb87-****-****-****-********896d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
+ orderName: "나이키 와플 트레이너 2 SD",
amount: {
total: 10000,
taxFree: 500,
},
- currency: 'KRW',
+ currency: "KRW",
customer: {
name: {
- full: '홍길동'
+ full: "홍길동",
},
- email: 'test@test.com',
- phoneNumber: '01012345678'
+ email: "test@test.com",
+ phoneNumber: "01012345678",
},
method: {
card: {
credential: {
- number: '1111111111111111',
- expiryMonth: '01',
- expiryYear: '20',
- birthOrBusinessRegistrationNumber: '900101',
- passwordTwoDigits: '00'
+ number: "1111111111111111",
+ expiryMonth: "01",
+ expiryYear: "20",
+ birthOrBusinessRegistrationNumber: "900101",
+ passwordTwoDigits: "00",
},
installmentMonth: 3, // 카드 할부 개월수
useFreeInterestFromMerchant: true, // 고객사 분담 무이자 설정
useCardPoint: true, // 카드 포인트 사용 설정
},
},
- }
+ },
});
```
-
### 주요 파라미터
@@ -213,7 +211,7 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
- 카드 비밀번호 앞 2자리로 2자리 숫자만 입력해야 합니다.
- `installmentMonth` **number**
- - 카드 할부 개월수로 0(일시불) 혹은 2~12개월까지의 숫자만 입력해야 합니다.
+ - 카드 할부 개월수로 0(일시불) 혹은 2\~12개월까지의 숫자만 입력해야 합니다.
- `useFreeInterestFromMerchant` **boolean**
- 고객사 부담 무이자 설정으로 `true` 혹은 `false`만 입력
@@ -224,13 +222,13 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
### 유의할 파라미터
- `method.card.InstallmentMonth`
- - 카드 할부 개월수로 0(일시불) 혹은 2~12개월까지의 숫자만 입력해야 합니다. 입력하지 않은 경우 일시불로 처리됩니다.
+ - 카드 할부 개월수로 0(일시불) 혹은 2\~12개월까지의 숫자만 입력해야 합니다. 입력하지 않은 경우 일시불로 처리됩니다.
- `method.useFreeInterestFromMerchant`
- 고객사 부담 무이자 설정으로 `true` 혹은 `false`만 입력.
- `method.card.useCardPoint`
- - 카드 할부 개월수로 0(일시불) 혹은 2~12개월까지의 숫자만 입력해야 합니다. 입력하지 않은 경우 일시불로 처리됩니다.
+ - 카드 할부 개월수로 0(일시불) 혹은 2\~12개월까지의 숫자만 입력해야 합니다. 입력하지 않은 경우 일시불로 처리됩니다.
## API 빌링키 발급 및 예약/반복 결제 요청하기
@@ -240,60 +238,58 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
- ```javascript
+ ```ts
const issueResponse = await axios({
url: "https://api.portone.io/billing-keys",
method: "post",
- headers: { "Authorization": `PortOne ${PORTONE_API_SECRET}` },
+ headers: { Authorization: `PortOne ${PORTONE_API_SECRET}` },
data: {
- channelKey: 'channel-key-9987cb87-****-****-****-********896d', // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
+ channelKey: "channel-key-9987cb87-****-****-****-********896d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
customer: {
- id: 'customer-1234', // 고객사에서 관리하는 고객 고유번호
+ id: "customer-1234", // 고객사에서 관리하는 고객 고유번호
},
method: {
card: {
credential: {
- number: '1111111111111111',
- expiryMonth: '01',
- expiryYear: '20',
- birthOrBusinessRegistrationNumber: '900101',
- passwordTwoDigits: '00'
+ number: "1111111111111111",
+ expiryMonth: "01",
+ expiryYear: "20",
+ birthOrBusinessRegistrationNumber: "900101",
+ passwordTwoDigits: "00",
},
},
},
- }
+ },
});
```
-
- ```javascript
+ ```ts
const response = await axios({
url: `https://api.portone.io/payments/${PAYMENT_ID_HERE}/schedule`,
method: "post",
headers: { Authorization: `PortOne ${PORTONE_API_SECRET}` },
data: {
payment: {
- billingKey: 'billing-key-1', // 빌링키 발급 API를 통해 발급받은 빌링키
- orderName: '월간 이용권 정기결제',
+ billingKey: "billing-key-1", // 빌링키 발급 API를 통해 발급받은 빌링키
+ orderName: "월간 이용권 정기결제",
customer: {
- id: 'customer-1234', // 고객사에서 관리하는 고객 고유번호
+ id: "customer-1234", // 고객사에서 관리하는 고객 고유번호
},
amount: {
total: 10000,
taxFree: 500,
},
- currency: 'KRW',
+ currency: "KRW",
useFreeInterestFromMerchant: true, // 고객사 분담 무이자 설정
InstallmentMonth: 3, // 카드 할부 개월수
useCardPoint: true, // 카드 포인트 사용 설정
},
- timeToPay: '2023-01-01 00:00:00', // 결제를 시도할 시각
+ timeToPay: "2023-01-01 00:00:00", // 결제를 시도할 시각
},
});
```
-
@@ -357,7 +353,8 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
### 나이스페이먼츠과 사전 계약이 필요한 경우
아래 기능을 사용하시려면 나이스페이먼츠에 사전 신청 후 계약이 완료되어야 합니다.
-그렇지 않은 상태에서 해당 기능 이용시 PG창 호출에 실패하거나, 승인에 실패하거나, 승인에 성공하더라도 의도한 바와는 다른 응답을 얻게 될 수 있으니 이 점 유의하시길 바랍니다.
+그렇지 않은 상태에서 해당 기능 이용시 PG창 호출에 실패하거나, 승인에 실패하거나,
+승인에 성공하더라도 의도한 바와는 다른 응답을 얻게 될 수 있으니 이 점 유의하시길 바랍니다.
- 모든 결제 수단(간편결제 포함)
@@ -432,7 +429,7 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
- 계좌이체 에스크로 결제시 결제창에 올바른 이메일을 입력해야 합니다.
- 존재하지 않는 이메일을 입력할 경우 **이메일 주소 오류**라는 에러 메시지와 함께 승인 실패됩니다.
또한 실제로 존재하는 이메일 도메인이더라도 나이스페이먼츠 정책상 유효하지 않다고 취급하는 이메일
- 주소((예) ex@portone.finance)를 입력한 경우 정상 승인되지만 **이후 에스크로 API를 이용하여 배송
+ 주소((예) [ex@portone.finance](mailto:ex@portone.finance))를 입력한 경우 정상 승인되지만 **이후 에스크로 API를 이용하여 배송
정보 등록 시 에스크로 구매 확정 이메일이 전송되지 않습니다.**
- 사파리 브라우저의 경우 미지원 대상으로 결제가 원활하지 않습니다.
@@ -528,7 +525,7 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
파라미터 예시
- ```javascript
+ ```ts
PortOne.requestPayment({
// ...중략
payMethod: "EASY_PAY",
@@ -536,11 +533,10 @@ import Tab from "~/components/gitbook/tabs/Tab.astro";
easyPayProvider: "SSGPAY",
availablePayMethods: "TRANSGER",
cashReceiptType: "PERSONAL",
- customerIdentifier: "01000000000"
- }
+ customerIdentifier: "01000000000",
+ },
});
```
-
### 일반결제 현금영수증 유의사항
diff --git a/src/content/docs/ko/v2-payment/pg/paypal-v2.mdx b/src/content/docs/ko/v2-payment/pg/paypal-v2.mdx
index f599f267f..04343e7ea 100644
--- a/src/content/docs/ko/v2-payment/pg/paypal-v2.mdx
+++ b/src/content/docs/ko/v2-payment/pg/paypal-v2.mdx
@@ -69,7 +69,7 @@ import image11 from "./_assets/paypal/screenshot9.png";
결제 성공 시의 동작을 `onPaymentSuccess` 콜백 함수에, 결제 실패 시의 동작을 `onPaymentFail`에 작성해야 합니다.
-```javascript
+```ts
const requestData = {
uiType: "PAYPAL_SPB",
storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceecl",
@@ -108,12 +108,12 @@ const response = await PortOne.loadPaymentUI(requestData, {
구매 정보 변경이 있을 경우 **`PortOne.updateLoadPaymentUIRequest`함수를 호출하여 결제 데이터를 업데이트**하시면
구매자가 페이팔 결제 버튼을 누를 때 최종적으로 변경된 결제 요청 데이터로 페이팔 결제창이 호출됩니다.
-```javascript title="SDK 일반 결제 요청"
+```ts title="SDK 일반 결제 요청"
import * as PortOne from "@portone/browser-sdk/v2";
const requestData = {
uiType: "PAYPAL_SPB",
orderName: "포트원 페이팔 테스트 결제",
- ...중략,
+ // ...중략
};
function loadPaymentUI() {
// loadPaymentUI의 파라미터로 결제 요청 데이터, 결제 프로세스 성공, 실패 시 호출될 "콜백 함수"를 전달해야 합니다.
@@ -141,7 +141,7 @@ function updateLoadPaymentUIRequest() {
발급 성공 시의 동작을 `onIssueBillingKeySuccess` 콜백 함수에, 발급 실패 시의 동작을 `onIssueBillingKeyFail`에 작성하셔야 합니다.
-```javascript
+```ts
const requestData = {
uiType: "PAYPAL_RT",
storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec",
@@ -179,7 +179,7 @@ const response = await PortOne.loadIssueBillingKeyUI(requestData, {
-```javascript title="SDK 빌링키 발급 요청"
+```ts title="SDK 빌링키 발급 요청"
import * as PortOne from "@portone/browser-sdk/v2";
const requestData = {
uiType: "PAYPAL_RT",
@@ -246,7 +246,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
결제 요청시 STC 적용하기
- ```javascript
+ ```ts
// 해당 파라미터들은 예시로 산업군에 따라 추가 또는 제외 가능한 파라미터들이 있습니다.
({
additional_data: [
@@ -489,7 +489,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
- 예를 들어 17달러인 상품 2개와 23달러인 상품 3개에 대한 구매 상품 정보를 기입한 경우 총 주문금액(`totalAmount`)을 `10300`로 입력해야 결제창이 정상적으로 호출됩니다.
- 페이팔의 경우 결제 요청 시 **해당 정보를 전달하는 것을 강력하게 권고**하고 있으니 가능한 입력하여 사용하시길 바랍니다.
- ```javascript title="예시 코드"
+ ```ts title="예시 코드"
({
//...중략
products: [
@@ -580,7 +580,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
- `hotizontal` 적용 시 버튼이 최대 2개까지 밖에 렌더링 되지 않습니다. 때문에 페이팔에서는 `layout`을 `horizontal`이 아닌 `vertical`로 설정하도록 권고하고 있습니다.
- 페이팔 버튼은 기본적으로 vertical(수직)로 렌더링 됩니다.
- ```javascript title="예시 코드"
+ ```ts title="예시 코드"
PortOne.loadPaymentUI(
{
//...중략
@@ -648,7 +648,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
결제 버튼 종류를 comma(,) separated string으로 지정하여 결제창을 호출하는 경우 해당 버튼을 포함하여 렌더링됩니다.
- ```javascript title="예시 코드"
+ ```ts title="예시 코드"
PortOne.loadPaymentUI(
{
// ...중략
@@ -746,7 +746,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
예시 2) 페이팔 회원으로 결제 시 `shipping.address` 정보를 입력한 경우
- ```javascript
+ ```ts
PortOne.loadPaymentUI(
{
bypass: {
@@ -806,7 +806,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
브라질(에서 접속한 또는 브라질 계정으로 로그인 한) 구매자인 경우 `bypass.paypal_v2.payer.tax_info` 정보를 필수로 입력해야 합니다.
- ```javascript title="예시 코드"
+ ```ts title="예시 코드"
({
tax_info: {
tax_id: "examplestring",
@@ -857,7 +857,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
입력된 정보는 무시되고 페이팔 가입 시 기입한 구매자의 청구 주소가 자동 입력됩니다.
- ```javascript title="예시 코드"
+ ```ts title="예시 코드"
({
bypass: {
paypal_v2: {
@@ -885,7 +885,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
입력된 정보가 구매자의 청구 주소지란에 자동 입력됩니다.
- ```javascript title="예시 코드"
+ ```ts title="예시 코드"
({
bypass: {
paypal_v2: {
@@ -913,7 +913,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
구매자의 청구 주소(`bypass.paypal_v2.payer.address`)를 입력하지 않고 배송 주소(`bypass.paypal_v2.pusrchase_units\[].shipping.address`)만 입력한 경우 청구 주소란에 배송 주소가 자동으로 입력됩니다.
- ```javascript title="예시 코드"
+ ```ts title="예시 코드"
({
bypass: {
paypal_v2: {
@@ -953,7 +953,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
구매자의 청구 주소(`bypass.paypal_v2.payer.address`)와 배송 주소(`bypass.paypal_v2.shipping.address`)를 모두 입력한 경우엔, **청구 주소와 동일한 배송주소** 체크박스를 해제했을 때 하단에 렌더링 되는 배송 정보란에 배송 주소가 자동 입력됩니다.
- ```javascript title="예시 코드"
+ ```ts title="예시 코드"
({
bypass: {
paypal_v2: {
@@ -1167,7 +1167,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
페이팔의 Pay Later(할부) 결제를 사용하려면 `enable-funding` 파라미터에 `paylater` 입력한 후 호출해야 합니다.
포트원의 경우 Pay Later를 버튼 형태로 제공하고 있으며, 위의 파라미터를 입력하지 않는 시 Pay Later를 지원하는 국가에서 접속하더라도 Pay Later 버튼이 표시되지 않습니다. (단, 미국의 경우 자동으로 표시됩니다.)
- ```javascript
+ ```ts
PortOne.loadPaymentUI({
// ...중략
bypass: {
@@ -1327,7 +1327,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
- `hotizontal` 적용 시 버튼이 최대 2개까지 밖에 렌더링 되지 않습니다. 때문에 페이팔에서는 `layout`을 `horizontal`이 아닌 `vertical`로 설정하도록 권고하고 있습니다.
- 페이팔 버튼은 기본적으로 vertical(수직)로 렌더링 됩니다.
- ```javascript title="예시 코드"
+ ```ts title="예시 코드"
PortOne.loadPaymentUI(
{
//...중략
@@ -1432,7 +1432,7 @@ STC 기능을 사용하기 위해 다음 정보를 확인해 주세요.
- 배송 정보 중 `line1`, `city` 그리고 `country_code`는 필수 입력해야 합니다. 전달하지
않을 경우 에러가 리턴되며 빌링키 발급창이 호출되지 않습니다.
- ```javascript title="예시 코드"
+ ```ts title="예시 코드"
PortOne.loadPaymentUI(
{
bypass: {
diff --git a/src/content/docs/ko/v2-payment/pg/smartro-v2.mdx b/src/content/docs/ko/v2-payment/pg/smartro-v2.mdx
index ea65ecfbf..a5b3fe4fd 100644
--- a/src/content/docs/ko/v2-payment/pg/smartro-v2.mdx
+++ b/src/content/docs/ko/v2-payment/pg/smartro-v2.mdx
@@ -68,7 +68,7 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
- ```javascript
+ ```ts
import * as PortOne from "@portone/browser-sdk/v2";
function requestPayment() {
PortOne.requestPayment({
@@ -91,111 +91,103 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
#### 주요 파라미터
+ - `storeId` **\*** **string**
-- `storeId` **\*** **string**
+ **스토어 아이디**
- **스토어 아이디**
+ 포트원 계정에 생성된 상점을 식별하는 고유한 값으로 관리자 콘솔에서 확인할 수 있습니다.
- 포트원 계정에 생성된 상점을 식별하는 고유한 값으로 관리자 콘솔에서 확인할 수 있습니다.
+ - `paymentId` **\*** **string**
-- `paymentId` **\*** **string**
+ **고객사 주문 고유 번호**
- **고객사 주문 고유 번호**
+ 고객사에서 채번하는 주문 고유 번호로 매번 고유하게 채번되어야 합니다. 이미 승인 완료된 `paymentId`로 결제를 시도하는 경우 에러가 발생합니다.
- 고객사에서 채번하는 주문 고유 번호로 매번 고유하게 채번되어야 합니다. 이미 승인 완료된 `paymentId`로 결제를 시도하는 경우 에러가 발생합니다.
+ - `orderName` \* **string**
-- `orderName` \* **string**
-
- **주문명**
-
- 주문명으로 고객사에서 자유롭게 입력합니다.
-
-- `channelKey` **\*** **string**
-
- **채널 키**
-
- 포트원 콘솔 내 \[결제연동] > \[채널관리] 화면에서 채널 추가 시 생성되는 값입니다. 결제 호출 시 채널을 지정할 때 사용됩니다.
-
-- `totalAmount` **\*** **number**
+ **주문명**
- **결제 금액**
+ 주문명으로 고객사에서 자유롭게 입력합니다.
- 결제 금액으로 결제를 원하는 통화(currency)별 scale factor(소수점 몇번째 자리까지 유효한지)를 고려한 number 형식만 허용됩니다.
+ - `channelKey` **\*** **string**
-- `currency` **\*** **string**
+ **채널 키**
- **결제 통화**
+ 포트원 콘솔 내 \[결제연동] > \[채널관리] 화면에서 채널 추가 시 생성되는 값입니다. 결제 호출 시 채널을 지정할 때 사용됩니다.
- 결제통화로 원화 결제 시 `KRW`로 입력해야 합니다.
+ - `totalAmount` **\*** **number**
-- `payMethod` **\*** **string**
+ **결제 금액**
- **결제수단 구분코드**
+ 결제 금액으로 결제를 원하는 통화(currency)별 scale factor(소수점 몇번째 자리까지 유효한지)를 고려한 number 형식만 허용됩니다.
- 결제 호출 시 결제수단을 지정할 때 사용됩니다.
+ - `currency` **\*** **string**
- - 신용카드 : `CARD`
- - 실시간 계좌이체 : `TRANSFER`
- - 가상계좌 : `VIRTUAL_ACCOUNT`
- - 휴대폰 소액결제 : `MOBILE`
- - 간편 결제 : `EASY_PAY`
+ **결제 통화**
-- `customer` **object**
+ 결제통화로 원화 결제 시 `KRW`로 입력해야 합니다.
- **고객 정보**
+ - `payMethod` **\*** **string**
-
+ **결제수단 구분코드**
- - `customerId` **string**
+ 결제 호출 시 결제수단을 지정할 때 사용됩니다.
- **구매자 고유 ID**
+ - 신용카드 : `CARD`
+ - 실시간 계좌이체 : `TRANSFER`
+ - 가상계좌 : `VIRTUAL_ACCOUNT`
+ - 휴대폰 소액결제 : `MOBILE`
+ - 간편 결제 : `EASY_PAY`
- - 스마트로의 경우 간편결제로 결제 요청시 필수로 입력해야 합니다.
- - 20자 이하로만 입력 가능합니다.
+ - `customer` **object**
- - `phoneNumber` **string**
+ **고객 정보**
- **구매자 연락처**
+
+ - `customerId` **string**
- - 스마트로의 경우 결제창 호출 시 필수로 입력합니다.
+ **구매자 고유 ID**
-
+ - 스마트로의 경우 간편결제로 결제 요청시 필수로 입력해야 합니다.
+ - 20자 이하로만 입력 가능합니다.
-- `bypass` **oneof object**
+ - `phoneNumber` **string**
- **PG사 결제창 호출 시 PG사로 그대로 bypass할 파라미터들의 모음**
+ **구매자 연락처**
-
+ - 스마트로의 경우 결제창 호출 시 필수로 입력합니다.
+
- - `smartro_v2` **object**
+ - `bypass` **oneof object**
- **스마트로에서 제공하는 파라미터 모음**
+ **PG사 결제창 호출 시 PG사로 그대로 bypass할 파라미터들의 모음**
+ - `smartro_v2` **object**
- - `GoodsCnt` **number**
+ **스마트로에서 제공하는 파라미터 모음**
- **결제 상품 품목 갯수**
+
+ - `GoodsCnt` **number**
- - `SkinColor` **string**
+ **결제 상품 품목 갯수**
- **UI 색상 스타일**
+ - `SkinColor` **string**
- - 미 설정시 기본으로 `RED`로 적용됩니다.
- - `RED`, `GREEN`, `BLUE`, `PURPLE`를 선택할 수 있습니다.
+ **UI 색상 스타일**
- - `OpenType` **string**
+ - 미 설정시 기본으로 `RED`로 적용됩니다.
+ - `RED`, `GREEN`, `BLUE`, `PURPLE`를 선택할 수 있습니다.
- **해외 카드 사용 설정**
+ - `OpenType` **string**
- - 국내 카드: `KR`, 해외 카드: `EN`
- - 미 설정시 기본으로 `KR`로 적용됩니다.
- - `EN`으로 설정 시 해외 카드만 결제가 가능합니다.
+ **해외 카드 사용 설정**
+ - 국내 카드: `KR`, 해외 카드: `EN`
+ - 미 설정시 기본으로 `KR`로 적용됩니다.
+ - `EN`으로 설정 시 해외 카드만 결제가 가능합니다.
+
-
-
-
- 예시 코드
@@ -221,7 +213,7 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
- ```javascript
+ ```ts
import * as PortOne from "@portone/browser-sdk/v2";
function requestIssueBillingKey() {
PortOne.requestIssueBillingKey({
@@ -237,77 +229,69 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
#### 주요 파라미터
+ - `storeId` **\*** **string**
-- `storeId` **\*** **string**
-
- **스토어 아이디**
-
- 포트원 계정에 생성된 상점을 식별하는 고유한 값으로 관리자 콘솔에서 확인할 수 있습니다.
-
-- `channelKey` **\*** **string**
-
- **채널 키**
+ **스토어 아이디**
- 포트원 콘솔 내 \[결제연동] > \[채널관리] 화면에서 채널 추가 시 생성되는 값입니다. 결제 호출 시 채널을 지정할 때 사용됩니다.
+ 포트원 계정에 생성된 상점을 식별하는 고유한 값으로 관리자 콘솔에서 확인할 수 있습니다.
-- `billingKeyMethod` **\*** **string**
+ - `channelKey` **\*** **string**
- **빌링키 발급수단**
+ **채널 키**
- 스마트로는 카드 이외 발급 수단은 지원하지 않아 `CARD`로 설정해야 합니다.
+ 포트원 콘솔 내 \[결제연동] > \[채널관리] 화면에서 채널 추가 시 생성되는 값입니다. 결제 호출 시 채널을 지정할 때 사용됩니다.
-- `issueId` **\*** **string**
+ - `billingKeyMethod` **\*** **string**
- **빌링키 발급 건 고유 ID**
+ **빌링키 발급수단**
- - 고객사에서 채번하여 사용해야 합니다.
- - 스마트로의 경우 필수 입력해야 하며, 특수문자는 사용이 불가합니다.
+ 스마트로는 카드 이외 발급 수단은 지원하지 않아 `CARD`로 설정해야 합니다.
-- `customer` **object**
+ - `issueId` **\*** **string**
- **고객 정보**
+ **빌링키 발급 건 고유 ID**
-
+ - 고객사에서 채번하여 사용해야 합니다.
+ - 스마트로의 경우 필수 입력해야 하며, 특수문자는 사용이 불가합니다.
- - `customerId` **string**
-
- **구매자 고유 ID**
-
- - 스마트로의 경우 빌링키 발급 시 필수로 입력해야 합니다.
- - 20자 이하로만 입력 가능합니다.
+ - `customer` **object**
-
+ **고객 정보**
-- `bypass` **oneof object**
+
+ - `customerId` **string**
- **PG사 결제창 호출 시 PG사로 그대로 bypass할 파라미터들의 모음**
+ **구매자 고유 ID**
-
+ - 스마트로의 경우 빌링키 발급 시 필수로 입력해야 합니다.
+ - 20자 이하로만 입력 가능합니다.
+
- - `smartro_v2` **object**
+ - `bypass` **oneof object**
- **스마트로에서 제공하는 파라미터 모음**
+ **PG사 결제창 호출 시 PG사로 그대로 bypass할 파라미터들의 모음**
+ - `smartro_v2` **object**
- - `SkinColor` **string**
+ **스마트로에서 제공하는 파라미터 모음**
- **UI 색상 스타일**
+
+ - `SkinColor` **string**
- - 미 설정시 기본으로 `RED`로 적용됩니다.
- - `RED`, `GREEN`, `BLUE`, `PURPLE`를 선택할 수 있습니다.
+ **UI 색상 스타일**
- - `IsPwdPass` **string**
+ - 미 설정시 기본으로 `RED`로 적용됩니다.
+ - `RED`, `GREEN`, `BLUE`, `PURPLE`를 선택할 수 있습니다.
- **결제 비밀번호 등록 Skip 여부**
+ - `IsPwdPass` **string**
- - 비밀번호 설정 미사용: `Y`, 비밀번호 설정 사용: `N`
- - 미 설정시 기본으로 `N`으로 적용됩니다.
+ **결제 비밀번호 등록 Skip 여부**
+ - 비밀번호 설정 미사용: `Y`, 비밀번호 설정 사용: `N`
+ - 미 설정시 기본으로 `N`으로 적용됩니다.
+
-
-
-
### SDK 연동 유의사항
@@ -373,7 +357,7 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
예시코드
- ```javascript
+ ```ts
import * as PortOne from "@portone/browser-sdk/v2";
function requestPayment() {
PortOne.requestPayment({
@@ -412,7 +396,7 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
결제창 빌링키 발급 시 한국어만 지원됩니다.
- 스마트로의 경우 결제창 호출 시 한국어 또는 영어로 지원됩니다만 \*\*빌링키 발급\*\*시에는 한국어만 지원합니다.
+ 스마트로의 경우 결제창 호출 시 한국어 또는 영어로 지원됩니다만 **빌링키 발급**시에는 한국어만 지원합니다.
@@ -434,7 +418,7 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
- V2 에스크로 + 카드사 다이렉트 호출
- ```javascript
+ ```ts
PortOne.requestPayment({
storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
channelKey: "channel-key-9987cb87-6458-4888-b94e-68d9a2da896d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
@@ -454,7 +438,7 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
- V2 에스크로 + 가상계좌 다이렉트 호출
- ```javascript
+ ```ts
PortOne.requestPayment({
storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
channelKey: "channel-key-9987cb87-6458-4888-b94e-68d9a2da896d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
@@ -482,7 +466,7 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
- V2 에스크로 + 계좌이체 + 현금영수증 정보 전달
- ```javascript
+ ```ts
PortOne.requestPayment({
storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
channelKey: "channel-key-9987cb87-6458-4888-b94e-68d9a2da896d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
@@ -551,7 +535,7 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
- ```javascript
+ ```ts
// ... 수기(키인) 결제
const issueResponse = await axios({
url: `https://api.portone.io/payments/${PAYMENT_ID_HERE}/instant`,
@@ -595,200 +579,178 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
#### 주요 파라미터
+ - `paymentId` **\*** **string**
-- `paymentId` **\*** **string**
-
- **고객사 주문 고유 번호**
-
- 고객사에서 채번하는 주문 고유 번호로 매번 고유하게 채번되어야 합니다. 이미 승인 완료된 `paymentId`로 결제를 시도하는 경우 에러가 발생합니다.
-
-- `orderName` \* **string**
-
- **주문명**
+ **고객사 주문 고유 번호**
- 주문명으로 고객사에서 자유롭게 입력합니다.
+ 고객사에서 채번하는 주문 고유 번호로 매번 고유하게 채번되어야 합니다. 이미 승인 완료된 `paymentId`로 결제를 시도하는 경우 에러가 발생합니다.
-- `channelKey` **\*** **string**
+ - `orderName` \* **string**
- **채널 키**
-
- 포트원 콘솔 내 \[결제연동] > \[채널관리] 화면에서 채널 추가 시 생성되는 값입니다. 결제 호출 시 채널을 지정할 때 사용됩니다.
-
-- `amount` **\*** **object**
+ **주문명**
- **결제 금액**
+ 주문명으로 고객사에서 자유롭게 입력합니다.
-
+ - `channelKey` **\*** **string**
- - `total` **\*** **number**
+ **채널 키**
- **총 결제 금액**
+ 포트원 콘솔 내 \[결제연동] > \[채널관리] 화면에서 채널 추가 시 생성되는 값입니다. 결제 호출 시 채널을 지정할 때 사용됩니다.
- 결제 금액으로 결제를 원하는 통화(currency)별 scale factor(소수점 몇번째 자리까지 유효한지)를 고려한 number 형식만 허용됩니다.
+ - `amount` **\*** **object**
-
+ **결제 금액**
-- `currency` **\*** **string**
+
+ - `total` **\*** **number**
- **결제 통화**
+ **총 결제 금액**
- 결제통화로 원화 결제 시 `KRW`로 입력해야 합니다.
+ 결제 금액으로 결제를 원하는 통화(currency)별 scale factor(소수점 몇번째 자리까지 유효한지)를 고려한 number 형식만 허용됩니다.
+
-- `method` **\*** **object**
+ - `currency` **\*** **string**
- **결제수단 정보**
+ **결제 통화**
- 스마트로의 경우 가상계좌만 지원합니다.
+ 결제통화로 원화 결제 시 `KRW`로 입력해야 합니다.
-
+ - `method` **\*** **object**
- - `virtualAccount` **\*** **object**
+ **결제수단 정보**
- **가상계좌 결제 시 파라미터**
+ 스마트로의 경우 가상계좌만 지원합니다.
+ - `virtualAccount` **\*** **object**
- - `bank` **\*** **string**
-
- **발급 은행**
-
- - 은행코드는 ENUM으로 정의되어 있습니다.
- - [BANK ENUM 바로가기](https://developers.portone.io/api/rest-v2/type-def#Bank)
-
- - `expiry` **\*** **object**
+ **가상계좌 결제 시 파라미터**
- **입금 만료 기한**
-
-
-
- - `validHours` **integer**
+
+ - `bank` **\*** **string**
- **유효 시간**
+ **발급 은행**
- - `dueDate` **string**
+ - 은행코드는 ENUM으로 정의되어 있습니다.
+ - [BANK ENUM 바로가기](https://developers.portone.io/api/rest-v2/type-def#Bank)
- **만료 시점**
+ - `expiry` **\*** **object**
- 시간은 ISO8601 형식으로 입력해야 합니다.
+ **입금 만료 기한**
-
+
+ - `validHours` **integer**
- - `option` **\*** **object**
+ **유효 시간**
- **가상계좌 발급 방식**
+ - `dueDate` **string**
-
+ **만료 시점**
- - `type` **\*** **string**
+ 시간은 ISO8601 형식으로 입력해야 합니다.
+
- **가상계좌 발급 유형**
+ - `option` **\*** **object**
- 발급 유형은 ENUM으로 정의되어 있습니다.
+ **가상계좌 발급 방식**
- - 회전식 가상계좌 : `NORMAL`
- - 고정식 가상계좌 : `FIXED`
- - 회전식 가상계좌는 일반적으로 사용되는 방식이며 PG사에서 직접 채번한 가상계좌번호를 사용합니다.
+
+ - `type` **\*** **string**
- - `fixed` **object**
+ **가상계좌 발급 유형**
- **고정식 가상계좌 발급 유형**
+ 발급 유형은 ENUM으로 정의되어 있습니다.
-
+ - 회전식 가상계좌 : `NORMAL`
+ - 고정식 가상계좌 : `FIXED`
+ - 회전식 가상계좌는 일반적으로 사용되는 방식이며 PG사에서 직접 채번한 가상계좌번호를 사용합니다.
- - `pgAccountId` **string**
+ - `fixed` **object**
- **고정식 가상계좌 ID**
+ **고정식 가상계좌 발급 유형**
- - 고객사가 가상계좌번호를 직접 관리하지 않고 PG사가 pgAccountId에 매핑되는 가상계좌번호를 내려주는 방식입니다.
- 동일한 pgAccountId로 가상계좌 발급 요청시에는 항상 같은 가상계좌번호가 내려옵니다.
+
+ - `pgAccountId` **string**
- - 스마트로의 경우 해당 방식만 지원합니다.
+ **고정식 가상계좌 ID**
-
+ - 고객사가 가상계좌번호를 직접 관리하지 않고 PG사가 pgAccountId에 매핑되는 가상계좌번호를 내려주는 방식입니다.
+ 동일한 pgAccountId로 가상계좌 발급 요청시에는 항상 같은 가상계좌번호가 내려옵니다.
-
+ - 스마트로의 경우 해당 방식만 지원합니다.
+
+
- - `cashReceipt` **object**
+ - `cashReceipt` **object**
- **현금영수증 정보**
+ **현금영수증 정보**
-
+
+ - `type` **string**
- - `type` **string**
+ **발급 유형**
- **발급 유형**
+ 발급 유형은 ENUM으로 정의되어 있습니다.
- 발급 유형은 ENUM으로 정의되어 있습니다.
+ - 소득공제용 : `PERSONAL`
+ - 지출증빙용 : `CORPORATE`
+ - 미발행 : `NO_RECEIPT`
- - 소득공제용 : `PERSONAL`
- - 지출증빙용 : `CORPORATE`
- - 미발행 : `NO_RECEIPT`
+ - `customerIdentityNumber` **string**
- - `customerIdentityNumber` **string**
+ **현금영수증 식별 번호**
- **현금영수증 식별 번호**
+ - 소득공제인 경우 주민등록번호 혹은 휴대폰 번호를 입력해야 합니다.
+ - 지출증빈인 경우 사업자등록번호를 입력해야 합니다.
+
- - 소득공제인 경우 주민등록번호 혹은 휴대폰 번호를 입력해야 합니다.
- - 지출증빈인 경우 사업자등록번호를 입력해야 합니다.
+ - `remitteeName` **string**
-
-
- - `remitteeName` **string**
-
- **예금주명**
-
-
+ **예금주명**
+
- - `customer` **object**
+ - `customer` **object**
- **고객 정보**
+ **고객 정보**
-
+
+ - `name` **object**
- - `name` **object**
+ **고객 이름**
- **고객 이름**
+
+ - `full` **string**
-
+ **한 줄 이름 형식 (ex. 김포트)**
- - `full` **string**
+ - `separated` **object**
- **한 줄 이름 형식 (ex. 김포트)**
+ **분리된 이름**
- - `separated` **object**
+
+ - `first` **string**
- **분리된 이름**
+ **이름**
-
+ - `last` **string**
- - `first` **string**
+ **성**
+
+
- **이름**
+ - `phoneNumber` **string**
- - `last` **string**
+ **구매자 연락처**
- **성**
+ - `email` **string**
+ **구매자 이메일**
-
-
- - `phoneNumber` **string**
-
- **구매자 연락처**
-
- - `email` **string**
-
- **구매자 이메일**
+ - `productCount` **integer**
+ **상품 개수**
-
- - `productCount` **integer**
-
- **상품 개수**
-
-
-
### API 빌링키 발급
@@ -799,7 +761,7 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
- ```javascript
+ ```ts
const issueResponse = await axios({
url: "https://api.portone.io/billing-keys",
method: "post",
@@ -829,73 +791,62 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
#### 빌링키 발급 주요 파라미터
-- `channelKey` **\*** **string**
+ - `channelKey` **\*** **string**
- **채널 키**
+ **채널 키**
- 포트원 콘솔 내 \[결제연동] > \[채널관리] 화면에서 채널 추가 시 생성되는 값입니다. 결제 호출 시 채널을 지정할 때 사용됩니다.
+ 포트원 콘솔 내 \[결제연동] > \[채널관리] 화면에서 채널 추가 시 생성되는 값입니다. 결제 호출 시 채널을 지정할 때 사용됩니다.
-- `method` **\*** **object**
+ - `method` **\*** **object**
- **결제수단 정보**
+ **결제수단 정보**
- 스마트로의 경우 가상계좌만 지원합니다.
+ 스마트로의 경우 가상계좌만 지원합니다.
- - `card` **object**
+ - `card` **object**
- **카드 결제 시 파라미터**
-
-
-
- - `credential` **string**
-
- **인증 관련 정보**
+ **카드 결제 시 파라미터**
+ - `credential` **string**
- - `number` **object**
+ **인증 관련 정보**
- **카드 번호**
+
+ - `number` **object**
- - `expiryYear` **object**
+ **카드 번호**
- **유효 기간 만료 연도 (YY 형식 ex. 24)**
+ - `expiryYear` **object**
- - `expiryMonth` **string**
+ **유효 기간 만료 연도 (YY 형식 ex. 24)**
- **유효기간 만료 월 (MM 형식 ex. 05)**
+ - `expiryMonth` **string**
- - `birthOrBusinessRegistrationNumber` **\*** **string**
+ **유효기간 만료 월 (MM 형식 ex. 05)**
- **생년월일 또는 사업자 등록 번호**
+ - `birthOrBusinessRegistrationNumber` **\*** **string**
- - `passwordTwoDigits` **\*** **string**
+ **생년월일 또는 사업자 등록 번호**
- **비밀번호 앞 두자리**
+ - `passwordTwoDigits` **\*** **string**
+ **비밀번호 앞 두자리**
+
-
-
-
-
- `customer` **object**
**고객 정보**
+ - `customerId` **string**
- - `customerId` **string**
-
- **구매자 고유 ID**
-
- - 스마트로의 경우 빌링키 발급 시 필수로 입력해야 합니다.
- - 20자 이하로만 입력 가능합니다.
+ **구매자 고유 ID**
+ - 스마트로의 경우 빌링키 발급 시 필수로 입력해야 합니다.
+ - 20자 이하로만 입력 가능합니다.
-
-
-
### API 빌링키 단건 결제 요청하기
@@ -906,7 +857,7 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
- ```javascript
+ ```ts
const response = await axios({
url: `https://api.portone.io/payments/${PAYMENT_ID_HERE}/schedule`,
method: "post",
@@ -934,91 +885,81 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
#### 빌링키 단건 결제 주요 파라미터
-
-
-- `paymentId` **\*** **string**
-
- **결제 주문 번호**
-
- - 고객사에서 채번하여 사용하는 주문번호로 고유한 값이여야 합니다.
- - URL path에 포함하여 요청해야 합니다.
-
-- `billingKey` **\*** **string**
-
- **빌링키 결제에 사용할 빌링키**
-
-- `orderName` **\*** **string**
+
+ - `paymentId` **\*** **string**
- **주문명**
+ **결제 주문 번호**
-- `amount` **\*** **object**
+ - 고객사에서 채번하여 사용하는 주문번호로 고유한 값이여야 합니다.
+ - URL path에 포함하여 요청해야 합니다.
- **결제 금액**
+ - `billingKey` **\*** **string**
-
+ **빌링키 결제에 사용할 빌링키**
- - `total` **\*** **number**
+ - `orderName` **\*** **string**
- **총 결제 금액**
+ **주문명**
- 결제 금액으로 결제를 원하는 통화(currency)별 scale factor(소수점 몇번째 자리까지 유효한지)를 고려한 number 형식만 허용됩니다.
+ - `amount` **\*** **object**
-
+ **결제 금액**
-- `currency` **\*** **string**
+
+ - `total` **\*** **number**
- **결제 통화**
+ **총 결제 금액**
- 결제통화로 원화 결제 시 `KRW`로 입력해야 합니다.
+ 결제 금액으로 결제를 원하는 통화(currency)별 scale factor(소수점 몇번째 자리까지 유효한지)를 고려한 number 형식만 허용됩니다.
+
-- `customer` **object**
+ - `currency` **\*** **string**
- **고객 정보**
+ **결제 통화**
-
+ 결제통화로 원화 결제 시 `KRW`로 입력해야 합니다.
- - `name` **object**
+ - `customer` **object**
- **고객 이름**
+ **고객 정보**
+ - `name` **object**
- - `full` **string**
-
- **한 줄 이름 형식 (ex. 김포트)**
-
- - `separated` **object**
-
- **분리된 이름**
+ **고객 이름**
-
+
+ - `full` **string**
- - `first` **string**
+ **한 줄 이름 형식 (ex. 김포트)**
- **이름**
+ - `separated` **object**
- - `last` **string**
+ **분리된 이름**
- **성**
+
+ - `first` **string**
-
-
-
+ **이름**
- - `phoneNumber` **string**
+ - `last` **string**
- **구매자 연락처**
+ **성**
+
+
- - `email` **string**
+ - `phoneNumber` **string**
- **구매자 이메일**
+ **구매자 연락처**
-
+ - `email` **string**
-- `productCount` **integer**
+ **구매자 이메일**
+
- **상품 개수**
+ - `productCount` **integer**
+ **상품 개수**
### API 빌링키 예약/반복 결제
@@ -1029,7 +970,7 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
- ```javascript
+ ```ts
const response = await axios({
url: `https://api.portone.io/payments/${PAYMENT_ID_HERE}/schedule`,
method: "post",
@@ -1056,52 +997,46 @@ import Tabs from "~/components/gitbook/tabs/Tabs.astro";
#### 빌링키 예약 결제 주요 파라미터
+ - `paymentId` **\*** **string**
-- `paymentId` **\*** **string**
+ **결제 주문 번호**
- **결제 주문 번호**
+ - 고객사에서 채번하여 사용하는 주문번호로 고유한 값이여야 합니다.
+ - URL path에 포함하여 요청해야 합니다.
- - 고객사에서 채번하여 사용하는 주문번호로 고유한 값이여야 합니다.
- - URL path에 포함하여 요청해야 합니다.
+ - `payment` **\*** **object**
-- `payment` **\*** **object**
+ **빌링키 결제 요청 입력정보**
- **빌링키 결제 요청 입력정보**
+
+ - `billingKey` **\*** **string**
-
+ **빌링키 결제에 사용할 빌링키**
- - `billingKey` **\*** **string**
+ - `orderName` **\*** **string**
- **빌링키 결제에 사용할 빌링키**
-
- - `orderName` **\*** **string**
+ **주문명**
- **주문명**
+ - `amount` **\*** **object**
- - `amount` **\*** **object**
+ **결제 금액**
- **결제 금액**
+
+ - `total` **\*** **number**
-
+ **총 결제 금액**
- - `total` **\*** **number**
+ 결제 금액으로 결제를 원하는 통화(currency)별 scale factor(소수점 몇번째 자리까지 유효한지)를 고려한 number 형식만 허용됩니다.
+
- **총 결제 금액**
+ - `currency` **\*** **string**
- 결제 금액으로 결제를 원하는 통화(currency)별 scale factor(소수점 몇번째 자리까지 유효한지)를 고려한 number 형식만 허용됩니다.
+ **결제 통화**
+ 결제통화로 원화 결제 시 `KRW`로 입력해야 합니다.
- - `currency` **\*** **string**
-
- **결제 통화**
-
- 결제통화로 원화 결제 시 `KRW`로 입력해야 합니다.
-
-
-
-- `timeToPay` **\*** **string**
-
- **결제 예정 시점**
+ - `timeToPay` **\*** **string**
+ **결제 예정 시점**
diff --git a/src/content/docs/ko/v2-payment/pg/tosspayments.mdx b/src/content/docs/ko/v2-payment/pg/tosspayments.mdx
index 907bc87b2..96cffca41 100644
--- a/src/content/docs/ko/v2-payment/pg/tosspayments.mdx
+++ b/src/content/docs/ko/v2-payment/pg/tosspayments.mdx
@@ -4,14 +4,15 @@ description: 토스페이먼츠 결제창 연동 방법을 안내합니다.
---
import Figure from "~/components/Figure.astro";
+import Details from "~/components/gitbook/Details.astro";
+import Tab from "~/components/gitbook/tabs/Tab.astro";
+import Tabs from "~/components/gitbook/tabs/Tabs.astro";
+
import image1 from "./_assets/tosspayments/tosspayments_1.webp";
import image2 from "./_assets/tosspayments/tosspayments_2.png";
import image3 from "./_assets/tosspayments/tosspayments_3.png";
import image4 from "./_assets/tosspayments/tosspayments_4.png";
import image5 from "./_assets/tosspayments/tosspayments_5.png";
-import Tabs from "~/components/gitbook/tabs/Tabs.astro";
-import Tab from "~/components/gitbook/tabs/Tab.astro";
-import Details from "~/components/gitbook/Details.astro";
## 토스페이먼츠 채널 설정하기
@@ -43,36 +44,35 @@ import Details from "~/components/gitbook/Details.astro";
토스페이먼츠 기준으로 작성한 예시 코드는 아래와 같습니다.
-
- ```javascript
- import * as PortOne from '@portone/browser-sdk/v2';
- function requestPayment() {
- PortOne.requestPayment({
- storeId: 'store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec', // 고객사 storeId로 변경해주세요.
- paymentId: `payment-{${crypto.randomUUID()}`,
- orderName: '나이키 와플 트레이너 2 SD',
- totalAmount: 1000,
- currency: 'CURRENCY_KRW',
- channelKey: 'channel-key-3b37819a-1c72-4deb-a245-8c810af5403d', // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
- payMethod: 'CARD'
- });
- }
+
+ ```ts
+ import * as PortOne from "@portone/browser-sdk/v2";
+ function requestPayment() {
+ PortOne.requestPayment({
+ storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
+ paymentId: `payment-{${crypto.randomUUID()}`,
+ orderName: "나이키 와플 트레이너 2 SD",
+ totalAmount: 1000,
+ currency: "CURRENCY_KRW",
+ channelKey: "channel-key-3b37819a-1c72-4deb-a245-8c810af5403d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
+ payMethod: "CARD",
+ });
+ }
```
-
-
-
-
- ```javascript
- import * as PortOne from '@portone/browser-sdk/v2';
- function requestIssueBillingKey() {
- PortOne.requestIssueBillingKey({
- storeId: 'store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec', // 고객사 storeId로 변경해주세요.
- channelKey: 'channel-key-3b37819a-1c72-4deb-a245-8c810af5403d', // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
- billingKeyMethod : 'CARD'
- });
- }
+
+
+
+ ```ts
+ import * as PortOne from "@portone/browser-sdk/v2";
+ function requestIssueBillingKey() {
+ PortOne.requestIssueBillingKey({
+ storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
+ channelKey: "channel-key-3b37819a-1c72-4deb-a245-8c810af5403d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
+ billingKeyMethod: "CARD",
+ });
+ }
```
-
+
## API 빌링키 발급 및 예약/반복 결제 요청하기
@@ -82,63 +82,62 @@ import Details from "~/components/gitbook/Details.astro";
결제를 예약합니다.
-
-
- ```javascript
- // ... 빌링키 발급
- const issueResponse = await axios({
- url: `https://api.portone.io/billing-keys`,
- method: "post",
- headers: { "Authorization": `PortOne ${PORTONE_API_SECRET}` },
- data: {
- channelKey,
- customer: {
- id: customerId,
- },
- method: {
- card: {
- credential: {
- number: cardNumber,
- expiryYear,
- expiryMonth,
- birthOrBusinessRegistrationNumber,
- passwordTwoDigits,
+
+ ```ts
+ // ... 빌링키 발급
+ const issueResponse = await axios({
+ url: `https://api.portone.io/billing-keys`,
+ method: "post",
+ headers: { Authorization: `PortOne ${PORTONE_API_SECRET}` },
+ data: {
+ channelKey,
+ customer: {
+ id: customerId,
+ },
+ method: {
+ card: {
+ credential: {
+ number: cardNumber,
+ expiryYear,
+ expiryMonth,
+ birthOrBusinessRegistrationNumber,
+ passwordTwoDigits,
+ },
},
},
},
- }
- });
- ```
-
-
-
- ```javascript
- async function schedulePayment() {
- // 포트원 결제 예약 API 호출
- const response = await axios({
- url: `https://api.portone.io/payments/${encodeURIComponent(PAYMENT_ID_HERE)}/schedules`,
- method: "post",
- headers: { Authorization: `PortOne ${PORTONE_API_SECRET}` },
- data: {
- payment: {
- billingKey: BILLING_KEY_HERE,
- orderName: "월간 이용권 정기결제",
- customer: {
- id: CUSTOMER_ID_HERE,
- // 고객 정보가 필요한 경우 API 명세에 따라 추가해주세요.
- },
- amount: {
- total: 8900,
- },
- currency: "KRW",
- },
- timeToPay: "2023-08-24T14:15:22Z", // 결제를 시도할 시각
- },
- });
- // 결제 예약 이후 로직을 구성해주세요.
-}
-```
-
+ });
+ ```
+
+
+
+ ```ts
+ async function schedulePayment() {
+ // 포트원 결제 예약 API 호출
+ const response = await axios({
+ url: `https://api.portone.io/payments/${encodeURIComponent(PAYMENT_ID_HERE)}/schedules`,
+ method: "post",
+ headers: { Authorization: `PortOne ${PORTONE_API_SECRET}` },
+ data: {
+ payment: {
+ billingKey: BILLING_KEY_HERE,
+ orderName: "월간 이용권 정기결제",
+ customer: {
+ id: CUSTOMER_ID_HERE,
+ // 고객 정보가 필요한 경우 API 명세에 따라 추가해주세요.
+ },
+ amount: {
+ total: 8900,
+ },
+ currency: "KRW",
+ },
+ timeToPay: "2023-08-24T14:15:22Z", // 결제를 시도할 시각
+ },
+ });
+ // 결제 예약 이후 로직을 구성해주세요.
+ }
+ ```
+
## 주요 파라미터
@@ -278,97 +277,95 @@ import Details from "~/components/gitbook/Details.astro";
- `card.installment.monthOption.availableMonthList` 파라미터의 경우 다른 PG사들과 다르게 동작합니다.
- 해당 파라미터로 결제창에 랜더링 될 할부 리스트를 제어할 수 있습니다. 다른 PG사의 경우 전달한
- 값만 랜더링 되지만, 토스페이먼츠의 경우에는 토스페이먼츠 자체 정책에 따라 **일시불 ~ 전달한 값
+ 값만 랜더링 되지만, 토스페이먼츠의 경우에는 토스페이먼츠 자체 정책에 따라 **일시불 \~ 전달한 값
중 최대값까지 모두** 랜더링됩니다.
+
-
- - 예1. 삼성카드 - 최대 3개월 무이자 할부 적용 -> 3개월까지 `무` 표기
-
-
+ - 예1. 삼성카드 - 최대 3개월 무이자 할부 적용 -> 3개월까지 `무` 표기
- - 예2. BC카드 - 최대 12개월 무이자 할부 적용 -> 표기되지 않음 -> 실제 결제 승인 시 무이자 할부 적용 됩니다. 이는 ISP 계열 카드사 결제 시 사용되는 페이북 앱 특성에 따른 것으로 실제 결제 승인시에는 정상적으로 무이자 할부가 적용됩니다.
-
+
+ - 예2. BC카드 - 최대 12개월 무이자 할부 적용 -> 표기되지 않음 -> 실제 결제 승인 시 무이자 할부 적용 됩니다. 이는 ISP 계열 카드사 결제 시 사용되는 페이북 앱 특성에 따른 것으로 실제 결제 승인시에는 정상적으로 무이자 할부가 적용됩니다.
+
- ISP 계열 카드 및 간편결제의 경우 해당 앱 내에서 할부 기간 선택이 가능합니다.
@@ -404,36 +399,34 @@ import Details from "~/components/gitbook/Details.astro";
- 카드사 다이렉트 호출 기능을 사용하고자 한다면 자체적으로 구매자가 할부 개월 수를 선택할 수 있는 UI/UX를 구현한 뒤 결제 요청 시 해당 값을 함께 요청해주셔야 합니다.
+
+
+ - PAYCO (페이코)
+ - SAMSUNGPAY (삼성페이)
+ - APPLEPAY (애플페이)
+ - SSGPAY (SSGPAY)
+ - KAKAOPAY (KAKAOPAY)
+ - NAVERPAY (NAVERPAY)
+ - CHAI (CHAI)
+ - LPAY (LPAY)
+ - KPAY (KPAY)
+ - TOSSPAY (TOSSPAY)
+ - LGPAY (LGPAY)
+
+
+ - **`useFreeInterestFromMall`** **boolean**
+
+ **상점분담 무이자 활성화 여부**
+
+ - **`useCardPoint`** **boolean**
+
+ **카드사 포인트 사용 여부**
+
+ - **`availableCards`** **string\[]**
+
+ **일부 카드사만 노출 설정**
+
+ 일부 카드사만을 선택 가능하게 하고 싶은 경우 사용하는 옵션입니다. `card` 섹션의 카드사 식별 값 항목을 참고해주세요.
+
+ - **`installment`** **object**
+
+ **할부 설정**
+
+
+ - **`freeInstallmentPlans`** **object\[]**
+
+ **무이자 할부 설정**
+
+ 고객사가 부담하는 무이자 할부 설정입니다.
+
+
+ - **`cardCompany`** **\*** **string**
+
+ **무이자 할부를 제공하는 카드사 식별 값**
+
+ 상단의 카드사 식별 값 항목을 참고해주세요.
+
+ - **`months`** **\*** **number\[]**
+
+ **무이자 할부를 제공하는 개월 수**
+
+
+ - **`monthOption`** **object**
+
+ **할부 개월 수 설정**
+
+ 할부 결제 시 할부 개월 수를 설정할 수 있습니다.
+
+ `fixedMonth`와 `availableMonthList` 중 하나만 제공해주세요.
+
+
+ - **`fixedMonth`** **\*** **number**
+
+ **구매자가 선택할 수 없도록 고정된 할부 개월수**
+
+ 구매자가 할부 개월 수를 선택할 수 있도록 하려면 `availableMonthList`를 사용해주세요.
+
+ - **`availableMonthList`** **\*** **number\[]**
+
+ **구매자가 선택할 수 있는 할부 개월수 리스트**
+
+
+
+ - **`cashReceiptType`** **string**
+
+ **결제창에서 발급 가능한 현금영수증 발급 유형**
+
+ PERSONAL: 소득공제용, CORPORATE: 지출증빙용, ANONYMOUS: 미발행
+
+ - **`customerIdentifier`** **string**
+
+ **현금영수증 발행 대상 식별 정보**
+
diff --git a/src/content/docs/ko/v2-payment/v2-sdk/payment-response.mdx b/src/content/docs/ko/v2-payment/v2-sdk/payment-response.mdx
index ff40c6e6b..23317cde6 100644
--- a/src/content/docs/ko/v2-payment/v2-sdk/payment-response.mdx
+++ b/src/content/docs/ko/v2-payment/v2-sdk/payment-response.mdx
@@ -7,30 +7,30 @@ description: 결제응답 파라미터를 확인할 수 있습니다.
### **`transactionType`** **string**
-> **트랜잭션 유형**
->
-> - 일반결제의 경우 무조건 `PAYMENT`로 전달됩니다.
+**트랜잭션 유형**
+
+- 일반결제의 경우 무조건 `PAYMENT`로 전달됩니다.
### **`txId`** **string**
-> **포트원에서 채번한 결제 트랜잭션 ID**
->
-> - 포트원에서 채번하는 결제 고유 번호입니다.
+**포트원에서 채번한 결제 트랜잭션 ID**
+
+- 포트원에서 채번하는 결제 고유 번호입니다.
### **`paymentId`** **string**
-> **고객사가 채번하는 주문 ID**
->
-> - 고객사가 채번하는 주문 고유 번호입니다.
+**고객사가 채번하는 주문 ID**
+
+- 고객사가 채번하는 주문 고유 번호입니다.
### **`code`** **string**
-> **에러 코드**
->
-> - `code`가 존재하는 경우 에러임을 나타냅니다.
+**에러 코드**
+
+- `code`가 존재하는 경우 에러임을 나타냅니다.
### **`message`** **string**
-> **에러 메시지**
->
-> - 에러 메시지입니다.
+**에러 메시지**
+
+- 에러 메시지입니다.
diff --git a/src/content/docs/ko/v2-payment/webhook.mdx b/src/content/docs/ko/v2-payment/webhook.mdx
index 7b99b652f..68d221a47 100644
--- a/src/content/docs/ko/v2-payment/webhook.mdx
+++ b/src/content/docs/ko/v2-payment/webhook.mdx
@@ -73,7 +73,7 @@ Webhook을 활용하면 커스텀 기능이나 다른 애플리케이션과 연
포트원 SDK의 `PortOne.requestPayment()` 함수 파라미터 중 `noticeUrls`를 통해 관리자콘솔에서 설정한 웹훅 수신 URL을 덮어쓸 수 있습니다.
-```javascript
+```ts
PortOne.requestPayment({
/* 객체 생략 */
noticeUrls: ["https://수신할-웹훅-URL"],
@@ -88,7 +88,7 @@ PortOne.requestPayment({
- `payment_id`: 주문 ID
- `status`: 결제 상태
-```javascript title="Express"
+```ts title="Express"
// Content-Type을 application/json으로 설정한 경우
app.use(bodyParser.json());
// POST 요청을 받는 /portone-webhook
diff --git a/src/content/docs/ko/wordpress/wordpress/button.mdx b/src/content/docs/ko/wordpress/wordpress/button.mdx
index 380398aeb..2a988cd19 100644
--- a/src/content/docs/ko/wordpress/wordpress/button.mdx
+++ b/src/content/docs/ko/wordpress/wordpress/button.mdx
@@ -39,14 +39,13 @@ import Hint from "~/components/Hint.astro";
숏코드(shortcode)란?
숏코드는 워드프레스 내에서 작동하는 매크로로써, 짧은 코드 덩어리를 작성하여 복잡한 기능을 페이지에 추가할 수 있는 기능입니다. 예를 들어, \[gallery] 숏코드를 페이지 편집란에 작성하면 사진 갤러리를 추가할 수 있습니다.
-
### 1. 결제버튼 숏코드 추가하기
아임포트 결제 버튼 숏코드를 다음과 같이 추가합니다. 버튼 레이블은 시작과 종료 숏코드 사이에 입력합니다.
-```
+```php
[iamport_payment_button]결제하기[/iamport_payment_button]
```
@@ -54,7 +53,7 @@ import Hint from "~/components/Hint.astro";
다음과 같이 `iamport_payment_button` 숏코드에 속성을 추가하여 결제창에 나타나는 항목을 설정할 수 있습니다
-```
+```php
[iamport_payment_button title="결제하기" description="아래의 정보를 입력해주세요." name="에스페란토 서울 2018 세미나" amount="10000" pay_method_list="kakaopay,samsung,card, trans,vbank,phone" field_list="name,email,phone"]참가비 결제하기[/iamport_payment_button]
```
@@ -62,22 +61,29 @@ import Hint from "~/components/Hint.astro";
iamport\_payment\_button 속성
- `title`: 결제창의 제목.
+
- `description`: 결제창의 소제목.
+
- `pay_method_list`: 결제 수단 목록.
- kakaopay(카카오페이), samsung(삼성페이), card(신용카드), trans(실시간 계좌 이체), vbank(가상계좌), phone(휴대폰 소액결제)중 입력.
+
- `field_list`: 입력필드 목록.
- name(이름), email(이메일), phone(휴대폰번호)중 입력.
+
- `name`: 결제의 주문명.
+
- `amount`: 결제에 청구하는 금액. 다음의 세가지 형태로 지정할 수 있습니다.
- amount="10000" : 고정 금액
- amount="10000,15000,20000" : 세가지 금액 중 하나를 선택
- amount="variable" : 사용자 지정 금액
+
- `style`: 결제버튼의 HTML style 속성.
- 기본값: ‘display:inline-block;padding:6px 12px;color:#fff;background-color:#2c3e50’
+
- `class`: 결제버튼의 CSS class 속성.
- 이 속성은 style 속성을 덮어 씁니다.
- - `redirect_after`: 결제완료 후 이동할 웹페이지 주소.
+ - `redirect_after`: 결제완료 후 이동할 웹페이지 주소.
## 결제 전 설문조사 필드 추가하기
@@ -88,15 +94,15 @@ import Hint from "~/components/Hint.astro";
결제버튼 숏코드(`iamport_payment_button`) 사이에 설문조사 필드(`iamport_payment_button_field`) 숏코드를 다음과 같이 삽입합니다.
-```
+```php
[iamport_payment_button]참가비 결제하기[iamport_payment_button_field]소속[/iamport_payment_button_field][iamport_payment_button_field]에스페란토 수준[/iamport_payment_button_field][iamport_payment_button_field]뒷풀이 참석 여부[/iamport_payment_button_field][iamport_payment_button_field]행사를 알게 된 경로[/iamport_payment_button_field][/iamport_payment_button]
```
### 2. 숏코드 속성 추가하기
-다음과 같이 iamport_payment_button_field 숏코드에 속성을 추가하여 설문조사 항목들을 설정할 수 있습니다.
+다음과 같이 iamport\_payment\_button\_field 숏코드에 속성을 추가하여 설문조사 항목들을 설정할 수 있습니다.
-```
+```php
[iamport_payment_button]참가비 결제하기[iamport_payment_button_field type="text"]소속[/iamport_payment_button_field][iamport_payment_button_field type="radio" options="상, 중, 하"]에스페란토 수준[/iamport_payment_button_field][iamport_payment_button_field type="select" options="참석, 불참"]뒷풀이 참석 여부[/iamport_payment_button_field][iamport_payment_button_field type="check" options="지인의 소개,페이스북,홈페이지"]행사를 알게된 경로[/iamport_payment_button_field][/iamport_payment_button]
```
@@ -105,17 +111,20 @@ import Hint from "~/components/Hint.astro";
- `type`: 입력란의 종류.
- text(텍스트 입력란), radio(라디오 버튼), select(선택 드롭다운), check(체크박스), address(주소검색 및 입력)
+
- `options`: 입력란의 옵션.
- radio, select, check type을 사용할 때 옵션 목록.
- 예: options="개발팀, 기획팀, 디자인팀, 영업팀"
+
- `required`: 필수 입력 여부.
- 예: required="true"
+
- `placeholder`: text type의 필드의 기본값(placeholder).
- 예: placeholder="이름을 입력해주세요."
+
- `datafor`: 이 필드의 값을 자동으로 입력할 결제 화면의 필드 이름.
- name(이름), email(이메일), phone(연락처) 중 선택.
- 예: datafor="name" - 이 필드의 값이 결제 화면의 이름(name)필드에 자동으로 채워집니다.
-
## 사용 예제
@@ -124,7 +133,7 @@ import Hint from "~/components/Hint.astro";
결제버튼과 결제창을 구성하는 숏코드의 예제입니다.
-```
+```php
[iamport_payment_button title="결제하기" description="아래의 정보를 입력해주세요." name="에스페란토 서울 2018 세미나" amount="10000" pay_method_list="kakaopay,samsung,card,trans,vbank,phone" field_list="name,email,phone"]참가비 결제하기[/iamport_payment_button]
```
@@ -134,7 +143,7 @@ import Hint from "~/components/Hint.astro";
결제버튼, 설문조사, 결제창을 구성하는 숏코드의 예제입니다.
-```
+```php
[iamport_payment_button title="결제하기" description="아래의 정보를 입력해주세요." name="에스페란토 서울 2018 세미나" amount="10000" pay_method_list="kakaopay,samsung,card,trans,vbank,phone" field_list="name,email,phone"]참가비 결제하기[iamport_payment_button_field type="text"]소속[/iamport_payment_button_field][iamport_payment_button_field type="radio" options="상, 중, 하"]에스페란토 수준[/iamport_payment_button_field][iamport_payment_button_field type="select" options="참석, 불참"]뒷풀이 참석 여부[/iamport_payment_button_field][iamport_payment_button_field type="check" options="지인의 소개,페이스북,홈페이지"]행사를 알게된 경로[/iamport_payment_button_field][/iamport_payment_button]
```
diff --git a/src/content/docs/ko/wordpress/wordpress/readme.mdx b/src/content/docs/ko/wordpress/wordpress/readme.mdx
index 6b2344bbd..7c596ed2e 100644
--- a/src/content/docs/ko/wordpress/wordpress/readme.mdx
+++ b/src/content/docs/ko/wordpress/wordpress/readme.mdx
@@ -7,9 +7,8 @@ import ContentRef from "~/components/gitbook/ContentRef.astro";
import Hint from "~/components/Hint.astro";
-워드프레스 플러그인은 현재 유지보수 되지 않으며, 신규 워드프레스 버전에서는 정상작동을 보장하지 않습니다.\
-연동과 관련하여 기술지원이 필요하신 경우 [support@portone.io](mailto:support@portone.io)로 문의바랍니다.
-
+ 워드프레스 플러그인은 현재 유지보수 되지 않으며, 신규 워드프레스 버전에서는 정상작동을 보장하지 않습니다.\
+ 연동과 관련하여 기술지원이 필요하신 경우 [support@portone.io](mailto:support@portone.io)로 문의바랍니다.
우커머스 플러그인을 통해 워드프레스에서 포트원을 사용할 수 있습니다.
diff --git a/src/content/release-notes/api-sdk/2023-05-08.mdx b/src/content/release-notes/api-sdk/2023-05-08.mdx
index 6891a79b9..629300243 100644
--- a/src/content/release-notes/api-sdk/2023-05-08.mdx
+++ b/src/content/release-notes/api-sdk/2023-05-08.mdx
@@ -14,7 +14,7 @@ writtenAt: 2023-05-11
## 기타 수정사항
-#### ✔️ 네이버페이 구매확정 API 에서 요청인을 설정할 수 있습니다
+### ✔️ 네이버페이 구매확정 API 에서 요청인을 설정할 수 있습니다
기존 네이버페이 구매확정 시 admin(store)이 기본값으로 구현되어 있었으나, `/requester` 파라미터를
추가하여 customer 로 구매확정할 수 있습니다.
diff --git a/src/content/release-notes/api-sdk/2023-05-22.mdx b/src/content/release-notes/api-sdk/2023-05-22.mdx
index 4a7810ff1..f56add3f6 100644
--- a/src/content/release-notes/api-sdk/2023-05-22.mdx
+++ b/src/content/release-notes/api-sdk/2023-05-22.mdx
@@ -13,8 +13,10 @@ import Figure from "~/components/Figure.astro";
그럼, 페이팔 정기결제를 이용하기 위한 주요 절차를 소개합니다.
- 포트원 SDK 1.3.0 부터 빌링키를 발급할 수 있습니다
+
- 빌링키 발급을 위해서는 포트원의 페이팔 파트너 계정으로 사전에 등록해야 합니다
- 기존 페이팔 SPB 를 이용 중인 고객은 바로 이용 가능합니다
+
- 결제창 호출을 위해서는 페이팔 SPB 버튼 렌더링이 필요합니다
본 기능 설정을 위한 자세한 내용은 관련 API 문서를 확인 바랍니다.
@@ -38,8 +40,8 @@ import Figure from "~/components/Figure.astro";
이번 업데이트를 통해 우커머스에서 배송지 정보를 간편하게 확인할 수 있습니다.
-구매자가 배송지 변경 시 주문 건의 [상세정보] - [상태] 항목은 ‘배송지 변경’으로 표시되며, [배송] 항목에서 변경된 배송지를 확인할 수 있습니다.
-이와 함께 [주문 메모]에 변경 내역이 기록됩니다.
+구매자가 배송지 변경 시 주문 건의 \[상세정보] - \[상태] 항목은 ‘배송지 변경’으로 표시되며, \[배송] 항목에서 변경된 배송지를 확인할 수 있습니다.
+이와 함께 \[주문 메모]에 변경 내역이 기록됩니다.
본 기능 이용을 위해서는 아임포트 우커머스 플러그인 `2.2.36` 버전으로 업데이트하시기 바랍니다.
diff --git a/src/content/release-notes/api-sdk/2023-07-10.mdx b/src/content/release-notes/api-sdk/2023-07-10.mdx
index a2d57814b..7bc3ea495 100644
--- a/src/content/release-notes/api-sdk/2023-07-10.mdx
+++ b/src/content/release-notes/api-sdk/2023-07-10.mdx
@@ -5,12 +5,12 @@ writtenAt: 2023-07-12
import * as prose from "~/components/prose";
import { PaymentV1 } from "~/components/release-note/badges";
-import Figure from "~/components/Figure.astro";
## 주요 업데이트 사항
+
✔️ 나이스페이먼츠의 새로운 결제창을 이용할 수 있습니다
diff --git a/src/content/release-notes/api-sdk/2023-07-17.mdx b/src/content/release-notes/api-sdk/2023-07-17.mdx
index 67f1f9162..8343f6834 100644
--- a/src/content/release-notes/api-sdk/2023-07-17.mdx
+++ b/src/content/release-notes/api-sdk/2023-07-17.mdx
@@ -10,6 +10,7 @@ import { PaymentV1 } from "~/components/release-note/badges";
+
✔️ KCP를 통해 PC환경에서 애플페이 허브형과 다이렉트형을 이용할수 있습니다
@@ -18,11 +19,12 @@ import { PaymentV1 } from "~/components/release-note/badges";
+
✔️ PG MID 복수조회 API (`GET /users/pg`) 호출시 `channel_name`과 `channel_key`를
받아볼 수 있습니다
-API를 통해 PG 설정 정보 호출시 channel_name과 channel_key 응답을 받아볼 수 있습니다.
+API를 통해 PG 설정 정보 호출시 channel\_name과 channel\_key 응답을 받아볼 수 있습니다.
본 기능 설정을 위한 자세한 내용은 관련 API 문서를 확인 바랍니다.
[→ PG MID 복수조회 API 호출하기](https://developers.portone.io/docs/ko/api/miscellaneous-api/pg/pg-mid-api)
@@ -33,6 +35,7 @@ API를 통해 PG 설정 정보 호출시 channel_name과 channel_key 응답을
+
✔️ 네이버페이 웹훅 수신 시점에 거래 취소시 콜백을 수신합니다
@@ -40,6 +43,7 @@ API를 통해 PG 설정 정보 호출시 channel_name과 channel_key 응답을
+
✔️ 페이먼트월 취소 요청 시점에 고객사 웹훅을 호출하지 않습니다
diff --git a/src/content/release-notes/api-sdk/2023-07-31.mdx b/src/content/release-notes/api-sdk/2023-07-31.mdx
index 61c8c9ba7..b8d9977ed 100644
--- a/src/content/release-notes/api-sdk/2023-07-31.mdx
+++ b/src/content/release-notes/api-sdk/2023-07-31.mdx
@@ -10,6 +10,7 @@ import { PaymentV1 } from "~/components/release-note/badges";
+
✔️ KCP 결제창 내 할인쿠폰 적용 여부 파라미터 기능 추가
diff --git a/src/content/release-notes/api-sdk/2023-08-31.mdx b/src/content/release-notes/api-sdk/2023-08-31.mdx
index adf4c92cf..430b93739 100644
--- a/src/content/release-notes/api-sdk/2023-08-31.mdx
+++ b/src/content/release-notes/api-sdk/2023-08-31.mdx
@@ -4,12 +4,13 @@ writtenAt: 2023-09-01
---
import * as prose from "~/components/prose";
-import { PaymentV1, Partner } from "~/components/release-note/badges";
+import { Partner,PaymentV1 } from "~/components/release-note/badges";
## 주요 업데이트 사항
+
✔️ 엑심베이 브라우저 팝업 차단 해제 문구 default 언어를 영문으로 변경
@@ -18,6 +19,7 @@ import { PaymentV1, Partner } from "~/components/release-note/badges";
+
✔️ NHN KCP 빌링키 발급 시 주민등록입력/생년월일 파라미터로 노출 여부
@@ -29,30 +31,28 @@ NHN KCP결제창을 통한 빌링키 발급시 파라미터를 통해 빌링키
+
✔️ 결제 URL 생성 API 지원 PG사 확대
이번 업데이트를 통해 아래 PG사도 결제 URL 생성 API를 통해 결제를 발생시킬수 있게되었습니다.
- (신)토스페이먼츠
-
- (신)스마트로
-
- KSNET
-
- (신)페이팔 일반결제/정기결제
-
- (신)나이스페이먼츠
- ✔️ 파트너정산 서비스 출시 (신규)
+
+ ✔️ 파트너정산 서비스 출시 (신규)
-플랫폼 및 마켓플레이스 사업자가 손쉽게 하위정산 할 수 있는 파트너정산 서비스가 런칭 되었습니다.
-파트너(셀러) 등록, 계약 등록, 정산등록 과 같은 정산의 세밀한 모든 부분을 관리자 콘솔로 관리하세요!
-해당 서비스는 유료 서비스입니다. 문의를 원하시면 신청(https://platform.contact.portone.io/) 하시면 영업일 2일안에 연락드리겠습니다.
+플랫폼 및 마켓플레이스 사업자가 손쉽게 하위정산 할 수 있는 파트너정산 서비스가 런칭 되었습니다.
+파트너(셀러) 등록, 계약 등록, 정산등록 과 같은 정산의 세밀한 모든 부분을 관리자 콘솔로 관리하세요!
+해당 서비스는 유료 서비스입니다. 문의를 원하시면 신청([https://platform.contact.portone.io/](https://platform.contact.portone.io/))하시면
+영업일 2일안에 연락드리겠습니다.
[→ 파트너 정산 서비스 소개](https://portone.io/korea/ko/service/platform)
[→ 파트너 정산 연동가이드 확인하기](https://developers.portone.io/platform/guide)
-
diff --git a/src/content/release-notes/api-sdk/2023-12-15.mdx b/src/content/release-notes/api-sdk/2023-12-15.mdx
index c2c51b91d..ee93c9fc4 100644
--- a/src/content/release-notes/api-sdk/2023-12-15.mdx
+++ b/src/content/release-notes/api-sdk/2023-12-15.mdx
@@ -3,15 +3,17 @@ releasedAt: 2023-12-15
writtenAt: 2023-12-15
---
-import * as prose from "~/components/prose";
-import { PaymentV1, Partner } from "~/components/release-note/badges";
import Figure from "~/components/Figure.astro";
+import * as prose from "~/components/prose";
+import { Partner,PaymentV1 } from "~/components/release-note/badges";
+
import screenshot1 from "./_assets/2023-12-11/screenshot-1.jpg";
## 주요 업데이트 사항
+
✔️ (신) 토스페이먼츠 SDK(결제창) 빌링키 발급 시 결제창 백그라운드 변경
@@ -21,6 +23,7 @@ import screenshot1 from "./_assets/2023-12-11/screenshot-1.jpg";
+
✔️ 정산 건을 삭제할 수 있도록 변경
diff --git a/src/content/release-notes/api-sdk/2024-01-08.mdx b/src/content/release-notes/api-sdk/2024-01-08.mdx
index 6a49749b4..4a2929e8d 100644
--- a/src/content/release-notes/api-sdk/2024-01-08.mdx
+++ b/src/content/release-notes/api-sdk/2024-01-08.mdx
@@ -5,12 +5,12 @@ writtenAt: 2024-01-08
import * as prose from "~/components/prose";
import { PaymentV2 } from "~/components/release-note/badges";
-import Figure from "~/components/Figure.astro";
## 주요 업데이트 사항
+
✔️ 포트원 V2 신모듈에서 나이스페이먼츠 결제를 지원합니다.
@@ -19,10 +19,15 @@ import Figure from "~/components/Figure.astro";
나이스페이먼츠에서 지원하는 결제수단 아래와 같습니다.
- 카드
+
- 실시간 계좌이체
+
- 가상계좌 (회전식/고정식)
+
- 휴대폰 소액결제
+
- 상품권 (컬쳐랜드)
+
- 간편결제 (허브형/다이렉트)
- 카카오페이
- 네이버페이
diff --git a/src/content/release-notes/api-sdk/2024-01-11.mdx b/src/content/release-notes/api-sdk/2024-01-11.mdx
index 9fb2a814d..bbbe70ec9 100644
--- a/src/content/release-notes/api-sdk/2024-01-11.mdx
+++ b/src/content/release-notes/api-sdk/2024-01-11.mdx
@@ -5,12 +5,12 @@ writtenAt: 2024-01-11
import * as prose from "~/components/prose";
import { PaymentV1 } from "~/components/release-note/badges";
-import Figure from "~/components/Figure.astro";
## 주요 업데이트 사항
+
✔️ 토스페이 정기결제 이용이 가능합니다.
@@ -18,7 +18,7 @@ import Figure from "~/components/Figure.astro";
이용하실 수 있습니다. 그럼, 토스페이 정기결제를 이용하기 위한 주요 절차를 소개합니다.
- 포트원 SDK 1.3.0 부터 빌링키 발급 및 정기결제를 사용할 수 있습니다.
-- 토스페이 일반결제 / 정기결제를 사용하시려면 (신)토스페이(tosspay_v2)로 연동해야 합니다.
+- 토스페이 일반결제 / 정기결제를 사용하시려면 (신)토스페이(tosspay\_v2)로 연동해야 합니다.
- (신)토스페이 결제 시 카드결제, 계좌결제를 지정할 수 있습니다.
(신)토스페이 연동에 대해 자세히 알고 싶다면
diff --git a/src/content/release-notes/api-sdk/2024-01-25.mdx b/src/content/release-notes/api-sdk/2024-01-25.mdx
index f9e9d65df..e0b11876b 100644
--- a/src/content/release-notes/api-sdk/2024-01-25.mdx
+++ b/src/content/release-notes/api-sdk/2024-01-25.mdx
@@ -4,13 +4,13 @@ writtenAt: 2024-01-25
---
import * as prose from "~/components/prose";
-import { PaymentV1, PaymentV2 } from "~/components/release-note/badges";
-import Figure from "~/components/Figure.astro";
+import { PaymentV1 } from "~/components/release-note/badges";
## 주요 업데이트 사항
+
✔️ 네이버페이 결제형에서 10원부터 결제할 수 있습니다.
@@ -22,6 +22,7 @@ import Figure from "~/components/Figure.astro";
+
✔️ Microsoft Edge 브라우저에서 adblock extension과 충돌하는 현상이 수정되었습니다.
@@ -31,6 +32,7 @@ Microsoft Edge 브라우저 환경에서 결제 모듈 호출 시 adblock extens
+
✔️ (신) 페이팔 결제 요청 시 컨텐츠 상품인 경우 배송지 입력란이 표시되지 않습니다.
diff --git a/src/content/release-notes/api-sdk/2024-01-30.mdx b/src/content/release-notes/api-sdk/2024-01-30.mdx
index 7167987f5..c04100c7a 100644
--- a/src/content/release-notes/api-sdk/2024-01-30.mdx
+++ b/src/content/release-notes/api-sdk/2024-01-30.mdx
@@ -4,13 +4,13 @@ writtenAt: 2024-02-01
---
import * as prose from "~/components/prose";
-import { PaymentV1, PaymentV2 } from "~/components/release-note/badges";
-import Figure from "~/components/Figure.astro";
+import { PaymentV2 } from "~/components/release-note/badges";
## 주요 업데이트 사항
+
✔️ easyPay.easyPayProvider(간편결제수단) 파라미터에 대한 동작이 변경되었습니다.
diff --git a/src/content/release-notes/api-sdk/2024-02-23.mdx b/src/content/release-notes/api-sdk/2024-02-23.mdx
index edfa95765..ed776af01 100644
--- a/src/content/release-notes/api-sdk/2024-02-23.mdx
+++ b/src/content/release-notes/api-sdk/2024-02-23.mdx
@@ -5,12 +5,12 @@ writtenAt: 2024-02-26
import * as prose from "~/components/prose";
import { PaymentV1, PaymentV2 } from "~/components/release-note/badges";
-import Figure from "~/components/Figure.astro";
## 주요 업데이트 사항
+
✔️ 포트원 V2 신모듈에서 페이팔 결제를 지원합니다.
@@ -22,6 +22,7 @@ import Figure from "~/components/Figure.astro";
+
✔️ 결제 취소 시 발송되는 웹훅에 취소내역 아이디 (`cancellation_id`)가 포함됩니다.
@@ -30,6 +31,7 @@ import Figure from "~/components/Figure.astro";
+
✔️ Schedule API의 `checking_amount` 파라미터 입력시 `currency`가 `KRW`로 자동 입력됩니다.
diff --git a/src/content/release-notes/console/2023-05-08.mdx b/src/content/release-notes/console/2023-05-08.mdx
index bb48eef08..af62e9cdd 100644
--- a/src/content/release-notes/console/2023-05-08.mdx
+++ b/src/content/release-notes/console/2023-05-08.mdx
@@ -4,11 +4,6 @@ writtenAt: 2023-05-11
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-
-## 수정사항
-
-### ✔️ \[내 정보 관리] 메뉴 진입 시 정확한 로그인 비밀번호를 입력해야 정보를 확인할 수 있습니다
import screenshot1 from "./_assets/2023-05-08/screenshot-1.png";
diff --git a/src/content/release-notes/console/2023-05-22.mdx b/src/content/release-notes/console/2023-05-22.mdx
index 8bd9206ab..0877cba74 100644
--- a/src/content/release-notes/console/2023-05-22.mdx
+++ b/src/content/release-notes/console/2023-05-22.mdx
@@ -4,15 +4,6 @@ writtenAt: 2023-05-25
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
-
-## 주요 업데이트 사항
-
-### ✔️ 엑심베이를 통한 결제가 실패하는 경우, 결제 실패 상세 사유를 확인할 수 있습니다
-
-관리자콘솔 [결제 상세 내역 조회] - 결제 실패 건 선택 - [상세 상태] 의 ⓘ아이콘으로 마우스를 옮겨보세요.
-
-어떤 사유로 인해 결제가 실패됐는지 자세히 알 수 있습니다.
import screenshot1 from "./_assets/2023-05-22/screenshot-1.png";
@@ -20,7 +11,9 @@ import screenshot1 from "./_assets/2023-05-22/screenshot-1.png";
+## 주요 업데이트 사항
+
### ✔️ 페이코 직연동을 이용 중인 경우, 판매자용 매출전표가 표시됩니다
이번 업데이트를 통해 판매자용 매출전표가 표시되도록 수정했습니다.
-관리자콘솔 [결제 상세 내역 조회] - 결제 건 선택 - ‘승인 영수증’을 선택해 확인해보세요.
+관리자콘솔 \[결제 상세 내역 조회] - 결제 건 선택 - ‘승인 영수증’을 선택해 확인해보세요.
diff --git a/src/content/release-notes/console/2023-07-05.mdx b/src/content/release-notes/console/2023-07-05.mdx
index 29c796211..34dd36880 100644
--- a/src/content/release-notes/console/2023-07-05.mdx
+++ b/src/content/release-notes/console/2023-07-05.mdx
@@ -4,7 +4,7 @@ writtenAt: 2023-07-05
---
import Figure from "~/components/Figure.astro";
-import Hint from "~/components/Hint.astro";
+
import screenshot1 from "./_assets/2023-07-05/screenshot-1.png";
import screenshot2 from "./_assets/2023-07-05/screenshot-2.png";
@@ -18,7 +18,7 @@ import screenshot2 from "./_assets/2023-07-05/screenshot-2.png";
가지를 제안합니다. 결제수단 선택시 포트원이 추천하는 결제대행사를 즉시 확인할 수 있습니다.
포트원 추천 패키지는 결제수단, 결제대행사 이용 비용, 결제형태와 연동방식을 종합적으로 고려하여
-선별했습니다. 특정 결제수단과 결제대행사를 이용을 원한다면 [전자결제 직접 선택하기]를 통해 자유롭게
+선별했습니다. 특정 결제수단과 결제대행사를 이용을 원한다면 \[전자결제 직접 선택하기]를 통해 자유롭게
골라보세요.
@@ -29,6 +29,6 @@ import screenshot2 from "./_assets/2023-07-05/screenshot-2.png";
앞으로는 한 페이지에서 결제수단별로 이용 가능한 결제대행사를 확인하고, 결제형태까지 선택해보세요. 선택한 결제서비스는 장바구니에 담겨 즉시 확인하고 수정할 수 있습니다.
-결제대행사별로 제공하는 결제수단이 궁금하다면, 우측 상단의 [모든 결제대행사 보기]를 통해 포트원에서 지원하는 모든 결제대행사와 결제수단, 수수료까지 한 눈에 살펴보세요.
+결제대행사별로 제공하는 결제수단이 궁금하다면, 우측 상단의 \[모든 결제대행사 보기]를 통해 포트원에서 지원하는 모든 결제대행사와 결제수단, 수수료까지 한 눈에 살펴보세요.
diff --git a/src/content/release-notes/console/2023-07-07.mdx b/src/content/release-notes/console/2023-07-07.mdx
index d445e995f..b68cdc5bd 100644
--- a/src/content/release-notes/console/2023-07-07.mdx
+++ b/src/content/release-notes/console/2023-07-07.mdx
@@ -3,19 +3,20 @@ releasedAt: 2023-07-07
writtenAt: 2023-07-10
---
+import Figure from "~/components/Figure.astro";
import * as prose from "~/components/prose";
import { Recon } from "~/components/release-note/badges";
-import Figure from "~/components/Figure.astro";
## 주요 업데이트 사항
+
✔️ 엑심베이의 정산내역을 확인할 수 있습니다
이번 업데이트를 통해 처음으로 해외결제건의 정산내역을 조회할 수 있습니다.
-관리자콘솔 [정산]메뉴 - [통합 내역 조회]에서 정산내역을 조회할 수 있으며, 엑심베이를 통한 7월 5일 결제건부터 확인할 수 있습니다.\
+관리자콘솔 \[정산]메뉴 - \[통합 내역 조회]에서 정산내역을 조회할 수 있으며, 엑심베이를 통한 7월 5일 결제건부터 확인할 수 있습니다.\
엑심베이는 결제일로부터 2일 후에 결제일의 정산내역을 수신합니다.
이용에 참고바랍니다.
@@ -26,11 +27,12 @@ import Figure from "~/components/Figure.astro";
+
✔️ 정산 통화별로 정산내역을 조회할 수 있습니다
기존에는 원화로만 정산내역을 조회할 수 있엇지만, 이번 업데이트를 통해 결제통화 및 정산통화별로 정산내역을 조회할 수 있습니다.
-또한 [통합 내역 조회] 메뉴의 조회 기준일이 정산예정일에 맞추어 자동으로 설정됩니다.
+또한 \[통합 내역 조회] 메뉴의 조회 기준일이 정산예정일에 맞추어 자동으로 설정됩니다.
import screenshot1 from "./_assets/2023-07-07/screenshot-1.png";
diff --git a/src/content/release-notes/console/2023-07-17.mdx b/src/content/release-notes/console/2023-07-17.mdx
index 87d192987..7956fbcbb 100644
--- a/src/content/release-notes/console/2023-07-17.mdx
+++ b/src/content/release-notes/console/2023-07-17.mdx
@@ -7,7 +7,7 @@ writtenAt: 2023-07-19
### ✔️ 이니시스 승인 영수증에서 신규 매출전표가 표시됩니다
-이번 업데이트를 통해 관리자콘솔의 [결제 내역 상세 조회] 메뉴에서 이니시스 결제건 선택시 승인 영수증에서 신규 매출전표가 표시됩니다.
+이번 업데이트를 통해 관리자콘솔의 \[결제 내역 상세 조회] 메뉴에서 이니시스 결제건 선택시 승인 영수증에서 신규 매출전표가 표시됩니다.
diff --git a/src/content/release-notes/console/2023-08-23.mdx b/src/content/release-notes/console/2023-08-23.mdx
index 1a9cde68a..73e9106c4 100644
--- a/src/content/release-notes/console/2023-08-23.mdx
+++ b/src/content/release-notes/console/2023-08-23.mdx
@@ -5,17 +5,17 @@ writtenAt: 2023-08-23
import * as prose from "~/components/prose";
import { Recon } from "~/components/release-note/badges";
-import Figure from "~/components/Figure.astro";
## 주요 업데이트 사항
+
✔️ 이니시스의 정산내역을 확인할 수 있습니다.
이번 업데이트를 통해 이니시스를 포함한 주요 10개 결제대행사(PG)/간편결제사의 정산 내역을 조회할 수 있습니다.
-관리자콘솔 메뉴 [결제사 정산] - [통합 내역 조회]에서 정산 내역을 조회할 수 있으며, 이니시스의 경우 8월 1일 결제건부터 조회가 가능하오니 이용에 참고하시기 바랍니다.
+관리자콘솔 메뉴 \[결제사 정산] - \[통합 내역 조회]에서 정산 내역을 조회할 수 있으며, 이니시스의 경우 8월 1일 결제건부터 조회가 가능하오니 이용에 참고하시기 바랍니다.
📍 정산 통합 조회 서비스의 기능이 궁금하다면
[→ 서비스 소개 보기](https://guide.portone.io/a89f61e5-4545-41ae-9b72-14f506adcac6)\
diff --git a/src/content/release-notes/console/2023-12-27.mdx b/src/content/release-notes/console/2023-12-27.mdx
index 71437dcac..5a2089380 100644
--- a/src/content/release-notes/console/2023-12-27.mdx
+++ b/src/content/release-notes/console/2023-12-27.mdx
@@ -10,11 +10,13 @@ import { PaymentV1, Recon } from "~/components/release-note/badges";
+
✔️ 헥토파이낸셜의 정산내역을 확인할 수 있습니다.
이번 업데이트를 통해 헥토파이낸셜을 포함한 11개 PG사와 간편결제사의 정산 내역을 조회할 수 있습니다.
-관리자콘솔 메뉴 [결제사 정산] - [통합 내역 조회]에서 정산 내역을 조회할 수 있으며, 헥토파이낸셜의 경우 8월 1일 결제건부터 조회가 가능하오니 이용에 참고하시기 바랍니다.
+관리자콘솔 메뉴 \[결제사 정산] - \[통합 내역 조회]에서 정산 내역을 조회할 수 있으며,
+헥토파이낸셜의 경우 8월 1일 결제건부터 조회가 가능하오니 이용에 참고하시기 바랍니다.
📍 정산 통합 조회 서비스의 기능이 궁금하다면
[→ 서비스 소개 보기](https://guide.portone.io/a89f61e5-4545-41ae-9b72-14f506adcac6)\
@@ -26,6 +28,7 @@ import { PaymentV1, Recon } from "~/components/release-note/badges";
+
✔️ KG이니시스 결제 시 결제 통화 위/변조 검사가 추가되었습니다.
diff --git a/src/content/release-notes/console/2024-01-25.mdx b/src/content/release-notes/console/2024-01-25.mdx
index 2d1866928..93081f892 100644
--- a/src/content/release-notes/console/2024-01-25.mdx
+++ b/src/content/release-notes/console/2024-01-25.mdx
@@ -4,8 +4,6 @@ writtenAt: 2024-01-25
---
import * as prose from "~/components/prose";
-import { PaymentV1, PaymentV2 } from "~/components/release-note/badges";
-import Figure from "~/components/Figure.astro";
## 주요 업데이트 사항
@@ -14,7 +12,7 @@ import Figure from "~/components/Figure.astro";
분류되어 표시됩니다.
-가상계좌 발급 후 입금 전에 API를 이용해 가상계좌를 말소한 경우, 관리자콘솔 [결제 상세 내역 조회]에서
+가상계좌 발급 후 입금 전에 API를 이용해 가상계좌를 말소한 경우, 관리자콘솔 \[결제 상세 내역 조회]에서
결제실패로 분류됩니다. 가상계좌 말소 건은 엑셀 다운로드시 실패 상세 항목에 **계좌말소**로 표시되어
구분할 수 있습니다.
@@ -22,4 +20,4 @@ import Figure from "~/components/Figure.astro";
✔️ 엑셀 내의 **PG계정** 컬럼명이 **PG상점아이디(MID)** 로 변경되었습니다.
-[결제 상세 내역 조회]에서 엑셀 다운로드시 기존에 PG계정으로 표시되던 컬럼명이 **PG상점아이디(MID)** 로 표시됩니다.
+\[결제 상세 내역 조회]에서 엑셀 다운로드시 기존에 PG계정으로 표시되던 컬럼명이 **PG상점아이디(MID)** 로 표시됩니다.
diff --git a/src/schema/v1.openapi.json b/src/schema/v1.openapi.json
index c31b5d0ef..7770ae4b0 100644
--- a/src/schema/v1.openapi.json
+++ b/src/schema/v1.openapi.json
@@ -4088,7 +4088,7 @@
"description": "
테스트 모드 특이사항\n - 체크카드 결제 건의 경우 전액 취소만 가능하며 부분취소는 불가능합니다.\n - 카카오페이에서 등록된 카드로 결제시, 결제 된 금액이 자동으로 취소되지 않으므로 반드시 포트 REST 결제취소 API(POST /payments/cancel)로 직접 취소하셔야 합니다.
\n
연동 특이사항\n - 가상 계좌 결제건 취소에 한해 취소 요청이후 즉시 환불 처리가 되는 것이 아니라 스마트로에서 입력한 환불계좌로 최종 환불 처리하면,\n 가맹점은 결과를 핑백(웹훅)으로 응답받은 후에 최종 취소 완료 처리를 해주셔야 합니다.\n - 현금영수증 미발행 가상 계좌 결제건은 스마트로에서 면세금액에 대한 검증을 따로 지원하지 않기 때문에, 취소시 정확한 취소 면세금액을 요청해야합니다.
\n"
},
"naverpay": {
- "description": "
API 호출시 아래 파라미터를 반드시 설정해 주셔야 합니다. (해당 파라미터 누락시 네이버페이 실 검수를 통과할 수 없습니다.)\n - extra.requester: API를 호출하는 출처\n - customer: 구매자에 의한 요청\n - admin(기본값): 어드민에 의한 요청\n - reason: 결제 취소 사유