KCP 퀵페이 (자체 간편결제)

NHN KCP 퀵페이 결제 연동 방법을 안내합니다.

이 문서는 V1(구 아임포트) 연동 고객사 대상입니다. 신규 연동의 경우 V2 버전 사용을 권장합니다.

퀵페이 (자체 간편 결제)

퀵페이 호출하기

퀵페이의 경우 결제 기능을 포함하여 결제수단 등록 및 삭제, PIN 변경 및 초기화, 탈퇴 기능을 지원합니다.

KCP 퀵페이 기준으로 작성한 예시 코드는 아래와 같습니다.

간편결제 서비스 결제수단을 등록합니다. 최초 결제수단 등록 시 간편결제 서비스 등록이 진행됩니다.

IMP.request_pay(
  {
    channelKey: "{콘솔 내 연동 정보의 채널키}",
    pay_method: "card",
    merchant_uid: "order_no_0001",
    name: "결제수단 등록",
    customer_uid: "use_your_unique_id_with_pay_method_0",
    bypass: {
      kcpQuick: {
        actionType: "Register",
        encryptedCI: "encrypted_ci",
        memberID: "use_your_unique_id",
      },
    },
    m_redirect_url: "https://redirection.url",
  },
  function (rsp) {
    // callback 로직
  },
);

등록된 간편결제 서비스 결제수단을 삭제합니다.

IMP.request_pay(
  {
    channelKey: "{콘솔 내 연동 정보의 채널키}",
    merchant_uid: "order_no_0001",
    name: "결제수단 삭제",
    customer_uid: "use_your_unique_id_with_pay_method_0",
    bypass: {
      kcpQuick: {
        actionType: "Deregister",
        encryptedCI: "encrypted_ci",
        memberID: "use_your_unique_id",
      },
    },
    m_redirect_url: "https://redirection.url",
  },
  function (rsp) {
    // callback 로직
  },
);

등록된 간편결제 결제수단을 사용하여 결제를 진행합니다.

IMP.request_pay(
  {
    channelKey: "{콘솔 내 연동 정보의 채널키}",
    pay_method: "card", //즉시 출금 이용 시 'trans' 입력
    merchant_uid: "order_no_0001",
    name: "결제",
    amount: 1000,
    buyer_email: "test@portone.io",
    buyer_name: "구매자이름",
    buyer_tel: "010-1234-5678",
    buyer_addr: "서울특별시 강남구 삼성동",
    buyer_postcode: "123-456",
    customer_uid: "use_your_unique_id_with_pay_method_0",
    bypass: {
      kcpQuick: {
        actionType: "Pay",
        encryptedCI: "encrypted_ci",
        memberID: "use_your_unique_id",
      },
    },
    m_redirect_url: "https://redirection.url",
  },
  function (rsp) {
    // callback 로직
  },
);

간편결제 서비스의 PIN을 변경합니다.

IMP.request_pay(
  {
    channelKey: "{콘솔 내 연동 정보의 채널키}",
    merchant_uid: "order_no_0001",
    name: "PIN 변경",
    bypass: {
      kcpQuick: {
        actionType: "PinChange",
        encryptedCI: "encrypted_ci",
        memberID: "use_your_unique_id",
      },
    },
    m_redirect_url: "https://redirection.url",
  },
  function (rsp) {
    // callback 로직
  },
);

간편결제 서비스의 PIN을 초기화합니다. 기존 등록된 모든 결제수단이 삭제됩니다.

IMP.request_pay(
  {
    channelKey: "{콘솔 내 연동 정보의 채널키}",
    pay_method: "card",
    merchant_uid: "order_no_0001",
    name: "PIN 초기화",
    bypass: {
      kcpQuick: {
        actionType: "PinReset",
        encryptedCI: "encrypted_ci",
        memberID: "use_your_unique_id",
      },
    },
    m_redirect_url: "https://redirection.url",
  },
  function (rsp) {
    // callback 로직
  },
);

간편결제 서비스의 PIN을 확인합니다.

IMP.request_pay(
  {
    channelKey: "{콘솔 내 연동 정보의 채널키}",
    pay_method: "card",
    merchant_uid: "order_no_0001",
    name: "PIN 확인",
    bypass: {
      kcpQuick: {
        actionType: "PinCheck",
        encryptedCI: "encrypted_ci",
        memberID: "use_your_unique_id",
      },
    },
    m_redirect_url: "https://redirection.url",
  },
  function (rsp) {
    // callback 로직
  },
);

간편결제 서비스에 등록된 전화번호를 변경합니다.

IMP.request_pay(
  {
    channelKey: "{콘솔 내 연동 정보의 채널키}",
    merchant_uid: "order_no_0001",
    name: "전화번호 변경",
    bypass: {
      kcpQuick: {
        actionType: "PhoneChange",
        encryptedCI: "encrypted_ci",
        memberID: "use_your_unique_id",
      },
    },
    m_redirect_url: "https://redirection.url",
  },
  function (rsp) {
    // callback 로직
  },
);

선불머니와 간편결제 서비스를 함께 이용할 수 있도록 유저를 등록합니다. 기 간편결제 서비스 유저에서 호출 시 선불머니 서비스 가입으로 진행합니다.

이 기능은 KCP와 사전 협의된 특정 고객만 사용 가능합니다.

IMP.request_pay(
  {
    channelKey: "{콘솔 내 연동 정보의 채널키}",
    pay_method: "card",
    merchant_uid: "order_no_0001",
    name: "선불머니+간편결제 서비스 유저 등록",
    bypass: {
      kcpQuick: {
        actionType: "SignUp",
        encryptedCI: "encrypted_ci",
        memberID: "use_your_unique_id",
      },
    },
    m_redirect_url: "https://redirection.url",
  },
  function (rsp) {
    // callback 로직
  },
);

간편결제 서비스를 해지합니다. 등록된 모든 결제수단이 삭제됩니다.

IMP.request_pay(
  {
    channelKey: "{콘솔 내 연동 정보의 채널키}",
    merchant_uid: "order_no_0001",
    name: "간편결제 서비스 해지",
    bypass: {
      kcpQuick: {
        actionType: "Terminate",
        encryptedCI: "encrypted_ci",
        memberID: "use_your_unique_id",
      },
    },
    m_redirect_url: "https://redirection.url",
  },
  function (rsp) {
    // callback 로직
  },
);

선불머니와 간편결제 서비스를 모두 해지합니다. 선불머니 잔액이 남아있는 경우 사전에 환급 요청을 완료해야 합니다.

이 기능은 KCP와 사전 협의된 특정 고객만 사용 가능합니다.

IMP.request_pay(
  {
    channelKey: "{콘솔 내 연동 정보의 채널키}",
    merchant_uid: "order_no_0001",
    name: "선불머니+간편결제 서비스 해지",
    bypass: {
      kcpQuick: {
        actionType: "Leave",
        encryptedCI: "encrypted_ci",
        memberID: "use_your_unique_id",
      },
    },
    m_redirect_url: "https://redirection.url",
  },
  function (rsp) {
    // callback 로직
  },
);

선불머니 환급을 위한 계좌 정보를 등록하거나 변경합니다.

이 기능은 KCP와 사전 협의된 특정 고객만 사용 가능합니다.

IMP.request_pay(
  {
    channelKey: "{콘솔 내 연동 정보의 채널키}",
    merchant_uid: "order_no_0001",
    name: "선불머니 환급계좌 등록 및 변경",
    bypass: {
      kcpQuick: {
        actionType: "PrepaidRefundAccount",
        encryptedCI: "encrypted_ci",
        memberID: "use_your_unique_id",
      },
    },
    m_redirect_url: "https://redirection.url",
  },
  function (rsp) {
    // callback 로직
  },
);

선불머니 잔액을 등록된 계좌로 환급 요청합니다.

이 기능은 KCP와 사전 협의된 특정 고객만 사용 가능합니다.

IMP.request_pay(
  {
    channelKey: "{콘솔 내 연동 정보의 채널키}",
    merchant_uid: "order_no_0001",
    name: "선불머니 환급 요청",
    bypass: {
      kcpQuick: {
        actionType: "PrepaidRefund",
        encryptedCI: "encrypted_ci",
        memberID: "use_your_unique_id",
      },
    },
    m_redirect_url: "https://redirection.url",
  },
  function (rsp) {
    // callback 로직
  },
);

선불머니 현장결제 상세내역 조회 페이지를 호출합니다.

  • 선불머니 현장결제 상세내역 조회 요청은 포트원 거래내역이 생성되지 않습니다.
  • 조회 요청이 성공하는 경우 거래상세내역 페이지로 이동하며, 실패하는 경우 callback이 호출됩니다.
IMP.request_pay(
  {
    channelKey: "channel-key-test", // 선불머니 현장거래가 발생한 채널키
    bypass: {
      kcpQuick: {
        actionType: "PrepaidOfflinePaymentInfo",
        memberID: "use_your_unique_id", // 선불머니 현장거래 결제 유저 ID
        prepaidOfflinePaymentInfoRequest: {
          tradeId: "20260414000006584",
          tradeNo: "202604140000006583",
          point: 9000,
          useDt: "20260414093305",
          btid: "TEST1234567890123",
        },
      },
    },
  },
  function (rsp) {
    // 조회 요청이 실패하는 경우에만 callback이 호출됩니다.
  },
);

퀵페이의 경우 m_redirect_url시 다음과 같이 4개의 파라미터가 Query String으로 전달됩니다.

  • imp_uid
  • merchant_uid
  • imp_status : true 또는 false
  • kcp_action : 인증창 유형 (요청 시 입력한 bypass.kcpQuick.actionType 값)

kcp_action이 Register 이고 imp_status가 true인 경우 결제수단 등록에 성공하였다는 것을 의미합니다.

주요 파라미터

channelKey: string

채널키

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

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

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

pg(deprecated)?: string

PG사 구분코드

포트원 콘솔 내 [연동 관리] > [연동 정보] > [채널 관리] 화면에서 채널 추가 후 kcp_quick.{mid(사이트코드)} 형식으로 채널을 지정할 때 사용됩니다.

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

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

pay_method?: string

결제수단 구분코드

결제 요청 시 혹은 결제수단 등록 시 결제수단을 지정할 때 사용됩니다. 결제(actionType:Pay), 결제수단등록(actionType:Register) 시 필수로 입력해야합니다.

  • card (카드)
  • trans (즉시출금)
merchant_uid: string

고객사 주문 고유 번호

고객사에서 채번하는 주문 고유 번호로 매번 고유하게 채번되어야 합니다.

amount?: integer

결제금액

결제 요청 시 필수 입력입니다.

customer_uid?: string

결제 수단에 대한 고유 식별값

퀵페이에 등록된 결제수단과 1:1 맵핑됩니다. 결제수단 등록, 결제, 결제수단 해지 시 필수로 입력해야 합니다.

bypass?: oneof object

PG사 결제창 호출 시 PG사로 그대로 bypass할 파라미터들의 모음

kcpQuick?: object

KCP 퀵페이 설정정보

퀵페이 결제시 필수로 입력해야 합니다.

actionType: string

호출 유형

  • Register : 결제 수단 등록
  • UserRegister : 결제 수단 등록 없이 간편결제 서비스 유저 등록
  • RegisterAutoPay: 자동결제 Key 발급
  • Deregister : 결제 수단 삭제
  • Pay : 결제
  • PinChange : PIN 변경
  • PinReset : PIN 초기화
  • PinCheck : PIN 확인
  • PhoneChange : 전화번호 변경
  • Terminate : 간편결제 서비스 해지
  • RegisterFido : 생체인증 등록
  • SignUp : 간편결제+선불머니 서비스 유저 등록 (사전 협의 필요)
  • Leave : 간편결제+선불머니 서비스 해지 (사전 협의 필요)
  • PrepaidRefundAccount: 선불머니 환급계좌 등록 및 변경 (사전 협의 필요)
  • PrepaidRefund: 선불머니 환급 요청 (사전 협의 필요)
  • PrepaidLimitRaise: 선불머니 보유한도 상향 요청 (사전 협의 필요)
  • PrepaidKYC: 선불머니 고객 확인 재이행 (사전 협의 필요)
  • PrepaidAuth: 선불머니 결제 인증 (사전 협의 필요)
  • PrepaidOfflineUse: 선불머니 현장결제 요청 (바코드 결제 요청)
  • PrepaidOfflinePaymentInfo: 선불머니 현장결제 상세내역 조회
encryptedCI: string

암호화된 본인인증 CI

암호화 방법은 encryptedCI 파라미터 안내를 참고하세요.

memberCI: string

본인인증 CI

보안상의 이유로 memberCI 파라미터는 지원 중단 되었습니다. encryptedCI 파라미터를 사용해야합니다.

memberID: string

사용자 식별값

고객사에서 결제유저를 식별하기 위한 값 최대 16글자까지 입력가능하며, 하나의 유저가 여러 개의 결제수단을 등록하는 경우 동일한 memberID를 입력해야 합니다.

deviceID?: string

디바이스 식별값

고객 단말기별 고유한 아이디를 전달해주시면 됩니다. 미 입력시 고객이 사용한 브라우저 정보(User-Agent)가 입력됩니다.

noAuth?: boolean

무인증 등록/결제 여부

true로 입력한 경우 무인증 키가 발급되며, 이후 결제시 PIN 인증 과정이 생략됩니다.

  • true : 무인증 결제
  • false : 인증 결제
installment?: number

할부 개월수

입력하지 않는 경우 일시불로 진행됩니다.

useCardPoint?: boolean

카드사 포인트 결제 여부

입력하지 않는 경우 미사용으로 진행됩니다.

  • true : 카드사 포인트 사용
  • false : 카드사 포인트 미사용
registerAutoPay?: boolean

자동결제 Key 발급 여부

결제수단 등록(actionType:Register 호출) 시 자동결제 Key 발급 여부를 결정합니다.

  • true : 자동결제 Key 발급
  • false : 자동결제 Key 미발급 (default)
sdkVersion?: string

퀵페이 SDK 버전 식별자

로드할 KCP 퀵페이 SDK의 버전을 지정합니다. KCP와 사전 협의하여 전달받은 버전 토큰(예: v2)만 입력합니다.

  • 입력하지 않으면 기본 SDK가 로드됩니다.
  • 버전 토큰만 입력하며, 앞에 _ 등 구분자나 파일명을 붙이지 않습니다.
  • 영문자, 숫자, _, - 조합만 허용되며, 그 외 형식의 값을 입력하면 요청이 실패합니다.
prepaidOfflinePaymentInfoRequest?: object

선불머니 현장결제 내역 상세 조회 요청

tradeId: string

선불머니 거래내역조회 응답의 tradeId

tradeNo: string

KCP 거래 고유번호

point: number

결제 금액 (사용된 선불머니 금액)

useDt: string

선불머니 거래일시

btid: string

고객사 생성 거래 등록번호

거래 상세 조회 요청 시 고객사에서 btid 값을 생성하여 전달해 주시기 바랍니다. 전달해 주신 btid 값으로 KCP에서 고객사 서버를 호출하여 유효성 검증이 진행됩니다.

유의사항