KSNET

KSNET 결제창 연동 가이드입니다.

KSNET
KSNET

1. KSNET 채널 설정하기

결제대행사 채널 설정하기 페이지의 내용을 참고하여 채널 설정을 진행합니다.

2. 결제 요청하기

JavaScript SDK (신규)IMP.request_pay(param, callback)을 호출하여 KSNET 결제창을 호출할 수 있습니다. 결제결과는 PC의 경우 IMP.request_pay(param, callback) 호출 후 callback으로 수신되고 모바일의 경우 m_redirect_url로 리디렉션됩니다.

KSNET 결제는 최신 SDK에서만 지원됩니다. 기존 JavaScript SDK를 사용 중이신 경우 JavaScript SDK (신규) 문서를 참고하여 업데이트를 진행해주세요.

KSNET을 연동하기 위해서는 위에 안내된 JS SDK를 이용하셔야 합니다.

<script src="https://cdn.iamport.kr/v1/iamport.js"></script>

기존에 deprecated된 응답들은 모두 제거됐습니다.

KSNET 연동시에 사용되는 신규 JS SDK는 기존 모듈에서 제공했던 CallBack 파라미터가 대부분 삭제되었습니다.(특히 deprecated 로 명시된 파라미터는 모두 삭제되었습니다.)

해당 JS SDK 사용시 Callback 으로 내려받을수 있는 데이터는 오직 아래 두가지 입니다.

imp_uid, merchant_uid

따라서 해당 SDK를 사용하실때는 IMP.request_pay로부터 응답된 객체(또는 쿼리 파라미터)에서 imp_uid를 가지고 아임포트 REST API(GET /payments/imp_uid)로 결제 상세 내역(승인 상태, 승인 결과 등등)을 조회하여 응답 파라미터 중 status 파라미터로 결제 상태를 파악하셔야 합니다.

JavaScript SDK
IMP.request_pay( { channelKey: "{콘솔 내 연동 정보의 채널키}", 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 로직 //* ...중략... *// }, );

주요 파라미터 설명

channelKey * string

채널키

결제를 진행할 채널을 지정합니다.

포트원 콘솔 내 [결제 연동] - [연동 정보] - [채널 관리] 에서 확인 가능합니다.

(최신 JavaScript SDK 버전부터 사용 가능합니다.)

pg (deprecated) string

PG사 구분코드

ksnet.{PG 상점 아이디}

pg 파라미터는 지원 중단 예정입니다.

JS SDK를 가장 최신 버전으로 업그레이드 후 channelKey 파라미터로 채널 설정(PG사 구분)을 대체해주세요.

pay_method * string

결제수단 구분코드

  • card (신용카드)
  • vbank (가상계좌)
  • trans (계좌이체)
  • phone (휴대폰소액결제)
  • lpay (LPAY)
  • ssgpay (SSGPAY)
  • kakaopay (카카오페이)
  • naverpay (네이버페이)
  • payco (페이코)

merchant_uid * string

고객사 채번 주문 고유번호

고객사에서 매번 고유하게 채번되어야 합니다.

amount number

결제금액

지정하지 않은 경우 0원입니다.

tax_free number

면세금액

지정하지 않은 경우 0원입니다.

포트원을 통해 KSNET를 사용하는 경우 과세 설정이 복합과세이므로 면세금액을 반드시 입력해야 합니다.

buyer_name * string

구매자명

buyer_tel string

구매자 전화번호

currency * string

결제 통화

결제통화로 KSNET 카드 다이렉트의 경우 KRW 만 허용됩니다.

digital boolean

디지털 상품 유형 여부

해당 필드는 휴대폰 결제에서만 사용되며, 상점이 디지털 상품유형으로 설정된 경우 항상 true로 전달해야 합니다.

appCard boolean

카드 결제시, 카드 결제창에 앱카드만 선택 가능하도록 할지 여부 (기본값: false)

display object

결제창에 렌더링될 카드 할부 개월수 리스트 설정

card_quota number[]

할부 개월수 설정

[0] : 일시불 [2,3,4] : 2,3,4 개월

card object

카드 결제시 세부 설정 정보

direct object

카드사 다이렉트 호출시 설정 정보

code string

카드사 코드

storeDetails object

상점 세부 정보

businessName string

상점 사업자 명

businessRegistrationNumber string

상점 사업자 번호

  • 하이픈(-) 을 제외한, 숫자만 전달하여야합니다.

bypass oneof object

PG사 결제창 호출 시 PG사 그대로 bypass할 값들의 모음

ksnet string

KSNET 전용 파라미터

sndQpayType string

카드 결제 시 결제창에 간편 결제 수단 표시 여부

0 : 간편결제 수단 표시하지 않음 / 1 : 간편결제 수단 표시함

tcode string

통신사 구분

통신사에 따라 LG는 lgt, KT는 kgf, SKT는 skt로 입력해야 하며, 통신사 구분이 어려우신 경우 임의의 값을 입력하여 요청해도 무방합니다.

url string

고객사 url

  • 결제를 요청하는 사이트의 url을 입력하여야 합니다.

3. API 기능

승인 취소(환불)

결제 승인 완료 건에 대해 승인 취소(환불)를 할 수 있는 API입니다.
REST API POST /payments/cancel를 호출하여 승인 취소(환불)을 요청합니다.

현금영수증 등록

포트원을 통한 거래건이지만 결제창에서 현금영수증 등록을 하지 못한 경우 API를 통해 현금영수증을 등록할 수 있습니다.
REST API POST /receipts/{imp_uid}를 호출하여 현금영수증을 요청합니다.

  • product_type(디지털: "digital", 실물: "real"), buyer_name 파라미터는 KSNET 필수 입력 대상입니다.
curl -H "Content-Type: application/json" \
     -X POST -d '{"identifier": "1178178260", "identifier_type": "business", "type": "company", "product_type": "digital"}' \
     https://api.iamport.kr/receipts/{imp_uid}

외부 현금영수증 등록

포트원을 통한 거래건이 아닌 현금성 거래의 경우에도 API를 통해 현금영수증을 등록할 수 있습니다.
REST API POST /receipts/external/{merchant_uid}를 호출하여 현금영수증을 요청합니다.

  • product_type, pg, buyer_name 파라미터는 KSNET 필수 입력 대상입니다.
curl -H "Content-Type: application/json" \
     -X POST -d '{"merchant_uid": "order_id_1667643230720", "name": "나이키 와플 트레이너 2 SD", "amount": 109000, "identifier": "1178178260",  "identifier_type": "business", "type": "company", "product_type": "digital", "tax_free": "3000", "pg": "ksnet"}' \
     https://api.iamport.kr/receipts/external/{merchant_uid}

4. 부가기능

할부개월수 렌더링

결제창 호출 시 표시할 할부개월수를 설정할 수 있습니다.

{
  //...중략
  "display": {
    "card_quota": [5, 6] // 할부개월 5,6개월만 활성화
  }
}

파라미터 설명

display object

결제창에 렌더링될 카드 할부 개월수 리스트 설정

  • card_quota number[]

    할부 개월수 설정

    [0] : 일시불 [2,3,4] : 2,3,4 개월

할부 결제는 5만원 이상 결제 요청시에만 이용 가능합니다. (현대카드의 경우 1만원 이상 결제 요청시 사용 가능)

카드사 다이렉트 호출

카드사 다이렉트 호출 시 결제대행사의 통합결제창을 거치지 않고, 지정한 카드사의 결제화면이 호출됩니다.

{
  //...중략
  "card": {
    "direct": {
      "code": "361" // 카드사 지정
    }
  }
}

파라미터 설명

card object

카드 결제시 세부 설정 정보

유의사항

간편결제 다이렉트 호출

{
  //...중략
  "bypass": {
    "ksnet": {
      "easyPayDirect": true
    }
  },
  "pay_method": "naverpay",
  "storeDetails": {
    "ceoFullName": "홍길동",
    "address": "서울시 ...",
    "phoneNumber": "01000000000",
    "businessName": "상호명",
    "businessRegistrationNumber": "000000000"
  }
}
  • KSNET 간편결제 다이렉트는 아래의 결제 방식을 지원합니다.

    • 네이버페이 카드
    • 카카오페이 카드 및 머니
    • 페이코
    • L페이 카드
  • 네이버페이 머니·포인트의 경우 현재 KSNET에서는 다이렉트 호출을 지원하지 않습니다.

  • 간편결제 다이렉트를 사용하기 위해서는 bypass.ksnet.easyPayDirecttrue로 설정하고, pay_methodnaverpay, kakaopay, payco, lpay 중 하나로 지정합니다.

  • 구매자 이름(buyer_name)을 입력해야 합니다.

  • 네이버페이의 경우

    • 현재 카드 결제만 가능
    • 상점명(storeDetails.businessName) 필수
    • buyer_email, buyer_tel 선택
    • 할부 개월 수 표시 설정 가능
    • 이용 가능 카드사 설정 가능 (신한, BC, 국민, 농협, 롯데, 삼성, 시티, 우리, 하나, 현대)
  • 카카오페이의 경우

    • 상점 대표자명(storeDetails.ceoFullName) 필수
    • 상점 주소(storeDetails.address) 필수
    • 상점 전화번호(storeDetails.phoneNumber) 필수
    • buyer_email, buyer_tel 필수
    • 할부 개월 수 표시 설정 가능
    • 이용 가능 카드사 설정 가능 (신한, BC, 국민, 농협, 롯데, 삼성, 시티, 우리, 하나, 현대)
  • 페이코의 경우

    • 상점명(storeDetails.businessName) 필수
    • 사업자등록번호(storeDetails.businessRegistrationNumber) 필수
    • buyer_email, buyer_tel 필수
  • L페이의 경우

    • buyer_email, buyer_tel 선택