PC 자동결제 연동하기


API 연동하기

NHN KCP에서 제공하는 API 연동 가이드를 안내합니다.

호출-인증-배치키발급-자동결제승인-결과 5STEP으로 진행되는 PC 자동결제 가이드를 확인해주세요

API Download

라이브러리와 샘플은 다운로드 자료실을 참조해주세요.


배치키 발급 결제창 호출 함수 실행

NHN KCP 배치키 발급 결제창 호출에 필요한 스크립트에 대해 안내합니다.

<!-- 결제 호출 JS -->

1https://spay.kcp.co.kr/plugin/kcp_spay_hub.js

테스트 환경 : https://testspay.kcp.co.kr/plugin/kcp_spay_hub.js


배치키 발급 결제창 실행 함수

NHN KCP 배치키 발급 결제창 호출에 필요한 함수에 대해 안내합니다.

<!-- 호출함수(실행) -->

1<script type="text/javascript">
2function jsf_pay(form)
3{
4   try
5   {
6     KCP_Pay_Execute_Web(form);
7   }
8     catch (e)
9   {
10     /* IE 에서 결제 정상종료시 throw로 스크립트 종료 */
11   }
12}
13</script>
Type : text/javascript

인증데이터 재귀함수

결제 인증 후 리턴받는 데이터에 대해 확인 부탁 드립니다.

해당 함수는 결제 창 인증 완료 후 승인요청 처리를 위한 함수입니다. (함수 명 임의 변경 불가)

FormOrJson은 가맹점 임의 활용 금지,
frm 값에 FormOrJson 값이 설정 되므로 frm 값으로 활용 하셔야 됩니다

m_Completepayment 함수의 위치는 결제 창 호출 js_url보다 반드시 상단에 선언 되어야합니다.

표준웹 방식의 경우 리턴 값이 form으로 리턴 처리 됩니다.

<!-- m_Completepayment 함수 예시 -->

1<script type="text/javascript">
2function m_Completepayment( FormOrJson, closeEvent )
3   {
4     var frm = document.order_info; // submit  시킬 폼데이터 지정
5     GetField( frm, FormOrJson );
6       if( frm.res_cd.value == "0000"
7       {
8         /* 가맹점 리턴값 처리 영역 */
9         frm.submit();
10       }
11      else
12      {
13        alert( "[" + frm.res_cd.value + "] " + frm.res_msg.value );
14        closeEvent();
15      }
16  }
17</script>
Type : text/javascript

배치키 발급 PC 결제창 요청 파라미터 가이드

필수 파라미터

string5

site_cd

KCP 발급 사이트(상점)코드
테스트코드 : A52Q7


string40

ordr_idxx

상점관리 주문번호
(유니크한 값 설정 권장)
※ 주문번호는 영문과 숫자로 설정하셔야합니다.


string12

kcpgroup_id

가맹점 그룹 아이디
※ 자동결제 그룹 아이디 생성 방법
NHN KCP 상점관리자 페이지 접속 → 결제 관리 → → 일반결제 → 자동결제 → 그룹관리를 통해 그룹 아이디 생성
ex)A52Q71000489


string12

pay_method

결제수단코드
인증키 요청 서비스 종류
AUTH:CARD : 고정값


string5

card_cert_type

인증 방식 설정 값
BATCH : 고정값


string2

module_type

PLUGIN 설정 정보
01 : 고정값


string1

batch_soc

Y : 고정값

선택 파라미터

string20

site_name

상점이름(영문으로 작성권장)
예시 : site_name="NHNKCP"


string30

buyr_name

주문자이름


string3

good_expr

NHN KCP 배치키 발급창에 노출되는 제공기간 설정 변수
배치키발급 창을 호출하는 주문 페이지 영역에 good_expr 변수를 추가한 후, 값을 아래와 같이 입력 바랍니다.
자동결제 상품 설정 방법
<input type="hidden" name="good_expr" value="2:1m"/>
위의 값을 넘기지 않을 경우 NHN KCP 결제창에 [자동결제]만 노출 됩니다.
ex) 2:1m

옵션 파라미터

string1

batch_soc_choice

결제창에서 주민번호/사업자 번호 고정여부 설정
S: 주민번호만 표시
C: 사업자번호만 표시
ex) S


string1

batch_cardno_return_yn

배치키 발급 시 사용한 카드의 카드번호 리턴 여부 설정
KCP 결제창에서 card_mask_no 로 리턴 됩니다.
"Y"로 요청 시 : 12345******8910
"L"로 요청 시 : 8910
ex ) Y / L

배치키 발급(요청/인증리턴) 샘플코드 예시

<html>

<head>
<!-- 결제창 호출 JS -->
<script type="text/javascript" src="https://testspay.kcp.co.kr/plugin/kcp_spay_hub.js"></script>
<script type="text/javascript">

  /* 인증완료시 재귀 함수  */
  function m_Completepayment( FormOrJson, closeEvent )
  {
    var frm = document.order_info;
      GetField( frm, FormOrJson );

      if( frm.res_cd.value == "0000" )
      {
        frm.submit();
      }
      else
      {
        alert( "[" + frm.res_cd.value + "] " + frm.res_msg.value );
        closeEvent();
      }
  }
  /* 결제창 실행 함수 */
  function jsf__pay( form )
  {
      try
      {
         KCP_Pay_Execute_Web( form );
      }
      catch (e)
      {
        /* IE 에서 결제 정상종료시 throw로 스크립트 종료 */
      }
  }
</script>
</head>
<body>

<form name="order_info" method="post" action="..배치키 발급 요청 url">
<!-- 주문정보 세팅 -->
<input type="text" name="ordr_idxx" value="TEST12345" maxlength="40" />
<input type="text" name="buyr_name" value="홍길동" />
<input type="text" name="kcpgroup_id" value="A52Q71000489" />
<!-- 가맹점 정보 설정 -->
<input type="hidden" name="site_cd" value="A52Q7" />
<input type="hidden" name="site_name" value="TEST SITE" />
<!-- 상품 제공 기간 설정 -->
<input type="hidden" name="good_expr" value="2:1m"/>
<!-- 결제 방법 : 인증키 요청 -->
<input type="hidden" name="pay_method" value="AUTH:CARD" />
<input type="hidden" name="card_cert_type" value="BATCH" />
<!-- 배치키 발급시 주민번호 입력을 결제창 안에서 진행 -->
<input type="hidden" name="batch_soc" value="Y"/>
<!-- 필수항목 : 표준웹에서 값을 설정하는 부분으로 반드시 포함 되어야 합니다. 값 설정 하지 마십시오/ -->
<!-- 배치키 발급 요청  -->
<a href="#none" onclick="jsf__pay(document.order_info);">인증 요청</a>
<!-- 필수항목 : 표준웹에서 값을 설정하는 부분으로 반드시 포함 되어야 합니다. 값 설정 하지 마십시오/ -->
<input type="hidden" name="module_type" value="01"/>
<input type="hidden" name="res_cd" value=""/>
<input type="hidden" name="res_msg" value=""/>
<input type="hidden" name="enc_info" value=""/>
<input type="hidden" name="enc_data" value=""/>
<input type="hidden" name="ret_pay_method" value=""/>
<input type="hidden" name="tran_cd" value=""/>
<input type="hidden" name="use_pay_method" value=""/>
</form>
</body>
</html>

인증파라미터 가이드

리턴 파라미터

string가변

enc_data

결제창 인증결과 암호화 정보
통합 결제 창으로부터 전달 받는 인증결과 암호화 데이터
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.


string가변

enc_info

결제창 인증결과 암호화 정보
통합 결제 창으로부터 전달 받는 인증결과 암호화 데이터
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.


string가변

tran_cd

배치키 발급 창으로부터 전달 받는 결제 타입

인증 callback 데이터

<!-- 인증 callback 데이터 수신 예시 -->

1<input type="hidden" name="enc_info"        value=""/>
2<input type="hidden" name="enc_data"        value=""/>
3<input type="hidden" name="tran_cd"         value=""/>

배치키 발급 요청하기

인증데이터를 API URL로 배치키 발급 요청 하세요.

<!-- API 호출 -->

1https://spl.kcp.co.kr/gw/enc/v1/payment

테스트 환경 : https://stg-spl.kcp.co.kr/gw/enc/v1/payment


배치키 발급 요청 데이터

배치키 발급 요청 데이터는 Json String 전송방식으로 요청 하세요.

승인요청을 위한 kcp_cert_info 인증서 데이터 발급은 참고사항의 서버인증서페이지와 아래 가이드를 참고해주세요.

<!-- 배치키 발급 요청 데이터 -->

1{
2"site_cd":”A52Q7",
3"kcp_cert_info":"-----BEGIN CERTIFICATE-----MIID3DCCAsSgAwIBAgIJAM...=-----END CERTIFICATE-----",
4"enc_data":"SnvXdGftIEjAequorkpNhJXc4u3GRuotLHW9vyDDOhdeorM4DPXMJgJlIEoRo6divo=",
5"enc_info":"A12345B12345"
6"tran_cd":"00300001"
7}
Type : json / application

결제 응답 전문의 경우 동일한 형태로 리턴됩니다.


서비스 인증서

NHN KCP 발급 인증서 내 데이터 값 추출,
가맹점 인증을 위해 KCP로부터 발급 받은 인증서 정보를 text 형식으로 전달해주셔야 하며,
인증서의 text 값을 데이터 직렬화하여 kcp_cert_info 의 value 값으로 전달하시기 바랍니다.

kcp_cert_info는 결제 승인 취소 거래등록 조회 시에 필요합니다.

KCP 서비스 인증서 관련 상세 내용은 서버 인증서 페이지를 참고 부탁 드립니다.


배치키 발급 요청 파라미터 가이드

배치키 발급 요청 파라미터

string5

site_cd

KCP발급 사이트(상점)코드
가입 시 발송해드리는 연동메일 참조 / 테스트코드 : A52Q7


string가변

kcp_cert_info

KCP 인증서정보(직렬화)
관리자 페이지에서 발급받은 인증서 정보(직렬화 하여 요청)


string가변

enc_data

결제창 인증결과 암호화 정보
통합 결제 창으로부터 전달 받는 인증결과 암호화 데이터
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.


string가변

enc_info

결제창 인증결과 암호화 정보
통합 결제 창으로부터 전달 받는 인증결과 암호화 데이터
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.


string가변

tran_cd

배치키 발급 창으로부터 전달 받는 결제 타입

API 배치키 발급 요청 처리 예시


String target_URL = "https://stg-spl.kcp.co.kr/gw/enc/v1/payment";  // 개발서버
// String target_URL = "https://spl.kcp.co.kr/gw/enc/v1/payment"; // 운영서버

  JSONObject json_req = new JSONObject();

  json_req.put("tran_cd", tran_cd);
  json_req.put("site_cd", site_cd);
  json_req.put("kcp_cert_info", kcp_cert_info);
  json_req.put("enc_data", enc_data);
  json_req.put("enc_info", enc_info);

  String temp_req_data = json_req.toString();
  String req_data = temp_req_data.replace(",",",\r\n");

  String inputLine = null;
  StringBuffer outResult = new StringBuffer();

  // API REQ
  URL url = new URL(target_URL);
  HttpURLConnection conn = (HttpURLConnection)url.openConnection();
  conn.setDoOutput(true);
  conn.setRequestMethod("POST");
  conn.setRequestProperty("Content-Type", "application/json");
  conn.setRequestProperty("Accept-Charset", "UTF-8");

  OutputStream os = conn.getOutputStream();
  os.write(req_data.getBytes("UTF-8"));
  os.flush();

  // API RES
  BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
  while ((inputLine = in.readLine()) != null)
  {
    outResult.append(inputLine);
  }
  conn.disconnect();

  String temp_result = outResult.toString();
  String res_data = temp_result.replace(",",",\r\n");
header("Content-type: text/html; charset=utf-8");

  $target_URL = "https://stg-spl.kcp.co.kr/gw/enc/v1/payment"; // 개발서버
  // $target_URL = "https://spl.kcp.co.kr/gw/enc/v1/payment"; // 운영서버

  $data = [
            'tran_cd'        => $tran_cd,
            'site_cd'        => $site_cd,
            'kcp_cert_info'  => $kcp_cert_info,
            'enc_data'       => $enc_data,
            'enc_info'       => $enc_info
          ];

  $req_data = json_encode($data);

  $header_data = array( "Content-Type: application/json", "charset=utf-8" );

  // API REQ
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $target_URL);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $header_data);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  curl_setopt($ch, CURLOPT_POSTFIELDS, $req_data);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  // API RES
  $res_data  = curl_exec($ch);

  // RES JSON DATA Parsing
  $json_res = json_decode($res_data, true);

  $res_cd = $json_res["res_cd"];
  $res_msg = $json_res["res_msg"];

  curl_close($ch);


  target_URL = "https://stg-spl.kcp.co.kr/gw/enc/v1/payment"; // 개발서버
  // target_URL = "https://spl.kcp.co.kr/gw/enc/v1/payment"; // 운영서버

  req_data = "{\"tran_cd\" : \"" + tran_cd + "\"," +
              "\"site_cd\":\"" + site_cd + "\"," +
              "\"kcp_cert_info\":\"" + KCP_CERT_INFO + "\"," +
              "\"enc_data\":\"" + enc_data + "\"," +
              "\"enc_info\":\"" + enc_info + "\"}";
  // API REQ
  HttpWebRequest req = (HttpWebRequest)WebRequest.Create(target_URL);
  req.Method = "POST";
  req.ContentType = "application/json";

  byte[] byte_req = Encoding.UTF8.GetBytes(req_data);
  req.ContentLength = byte_req.Length;

  Stream st = req.GetRequestStream();
  st.Write(byte_req, 0, byte_req.Length);
  st.Close();

  // API RES
  HttpWebResponse res = (HttpWebResponse)req.GetResponse();
  StreamReader st_read = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("utf-8"));
  res_data = st_read.ReadToEnd();

  st_read.Close();
  res.Close();

  // RES JSON DATA Parsing
  JObject json_data = JObject.Parse(res_data);
  res_cd = json_data["res_cd"].ToString();
  res_msg = json_data["res_msg"].ToString();


  target_URL = "https://stg-spl.kcp.co.kr/gw/enc/v1/payment" '개발서버
  'target_URL = "https://spl.kcp.co.kr/gw/enc/v1/payment" '운영서버

  req_data = "{""tran_cd"":""" & tran_cd & """,""site_cd"":""" & site_cd & """,""kcp_cert_info"":""" & kcp_cert_info & """,""enc_data"":""" & enc_data & """,""enc_info"":""" & enc_info & """}"

  ' API REQ
  set req = Server.CreateObject("MSXML2.ServerXMLHTTP")
  req.open "POST", target_URL, false
  req.setRequestHeader "Content-Type", "application/json;charset=UTF-8"
  req.send req_data

  ' API RES
  '요청 성공인 경우
  if req.status = 200 then
      res_data = req.ResponseText
  '요청 실패인 경우
  else
      res_data = "http error code : " & req.status
  end if
  set req = nothing

  '' RES JSON DATA Parsing
  set json_data = JSON.parse(res_data)

  res_cd = json_data.res_cd
  res_msg = json_data.res_msg
// 결제 REQ DATA
    var req_data = {
      tran_cd : f_get_parm(req.body.tran_cd),
      site_cd : site_cd,
      kcp_cert_info : KCP_CERT_INFO,
      enc_data : f_get_parm(req.body.enc_data),
      enc_info : f_get_parm(req.body.enc_info)
    };

    // fetch("https://spl.kcp.co.kr/gw/enc/v1/payment", { // 운영서버
    fetch("https://stg-spl.kcp.co.kr/gw/enc/v1/payment", { //개발서버
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify(req_data),
      })
      // 결제 API RES
      .then(response => {
        return response.json();
      })
      .then(data => {

    res.render('kcp_api_pay', {
      req_data : JSON.stringify(req_data),
      res_data : JSON.stringify(data),
      });
  });
# 결제요청 API
  target_URL = 'https://stg-spl.kcp.co.kr/gw/enc/v1/payment' # 개발서버
  # target_URL = 'https://spl.kcp.co.kr/gw/enc/v1/payment' # 운영서버
  headers = {'Content-Type': 'application/json', 'charset': 'UTF-8'}

  site_cd = f_get_parm(request.form['site_cd'])

  # 결제 REQ DATA
  req_data = {
    'tran_cd' : f_get_parm(request.form['tran_cd']),
    'site_cd' : site_cd,
    'kcp_cert_info' : KCP_CERT_INFO,
    'enc_data' : f_get_parm(request.form['enc_data']),
    'enc_info' : f_get_parm(request.form['enc_info'])
  }

  res = requests.post(target_URL, headers=headers, data=json.dumps(req_data, ensure_ascii=False, indent="\t").encode('utf8'))

배치키 발급 응답 파라미터 가이드

배치키 발급 성공 파라미터

string

res_cd

결과코드
정상 승인이 이루어졌을 경우 ‘0000’ 값 리턴


string100

res_msg

결과메세지


string16

batch_key

인증 후에 결과로 받는 인증키
이 키를 가맹점 측에 저장(DB 또는 파일로 저장)해두었다가, 자동결제 요청에 이용할 수 있습니다.
ex)11113011327740F3


string4

card_cd

배치키 발급 시 요청한 카드사 코드


string20

card_name

배치키 발급 시 요청한 카드사명

배치키 발급 처리 구성하기

배치키 발급 처리 페이지 구성시 결과처리 로직을 포함 할 수 있습니다.

결제창 호출, 승인처리를 포함한 전체 샘플이 필요하신 경우 다운로드 자료실을 이용해 주세요.


자동 결제 요청 하기

인증데이터를 API URL로 자동 결제 요청 하세요.

<!-- 결제 호출 JS -->

1https://spl.kcp.co.kr/gw/hub/v1/payment

테스트 환경 : https://stg-spl.kcp.co.kr/gw/hub/v1/payment


자동 결제 요청 데이터

자동 결제 요청 데이터는 Json String 전송방식으로 요청 하세요.

자동 결제 요청을 위한 kcp_cert_info 인증서 데이터 발급은 참고사항의 서버인증서페이지와 위의 가이드를 참고해주세요.

<!-- 배치 결제 요청 데이터 -->

1{
2"site_cd":”A52Q7",
3"kcp_cert_info":"-----BEGIN CERTIFICATE-----MIID3DCCAsSgAwIBAgIJAM...=-----END CERTIFICATE-----",
4"ordr_idxx":"TEST123456789",
5"amount":"1000",
6"card_mny":"1000",
7"good_name":"운동화",
8"buyr_name":"홍길동",
9"buyr_mail":"test@test.co.kr",
10"buyr_tel2":"010-0000-0000",
11"pay_method":"CARD",
12"bt_batch_key":"2112151156695850",
13"bt_group_id":"A52Q71000489",
14"currency":"410",
15"quota":"00",
16"media_type":"MC01",
17"card_tx_type":"11511000"
18}
Type : json / application

결제 응답 전문의 경우 동일한 형태로 리턴됩니다.


자동 결제 요청 파라미터 가이드

필수 파라미터

string5

site_cd

KCP 발급 사이트(상점)코드
테스트코드 : A52Q7


string가변

kcp_cert_info

KCP 인증서정보(직렬화)
관리자 페이지에서 발급받은 인증서 정보(직렬화 하여 요청)


string12

pay_method

결제수단코드
인증키 요청 서비스 종류
CARD : 고정값


number12

amount

총 결제 금액
결제금액은 숫자 이외의 문자(콤마 등)는 허용하지 않습니다.


number12

card_mny

카드 결제 금액
결제금액은 숫자 이외의 문자(콤마 등)는 허용하지 않습니다.


number3

currency

거래 화폐 단위 설정 변수
원화 : 410


number12

quota

할부개월 수
00 : 고정값


string40

ordr_idxx

상점관리 주문번호
(유니크한 값 설정 권장)
※ 주문번호는 영문과 숫자로 설정하셔야합니다.


string8

card_tx_type

카드 전문 유형
11511000 : 고정값


string16

bt_batch_key

인증 후 결과로 받는 인증 키
ex)21123011327740F3


string12

bt_group_id

가맹점 그룹 아이디
※ 자동결제 그룹 아이디 생성 방법
NHN KCP 상점관리자 페이지 접속 → 결제 관리 → 일반결제 → 자동결제 → 그룹관리를 통해 그룹 아이디 생성
ex)A52Q71000489

선택 파라미터

string15

cust_ip

요청자 ip


string4

media_type

매체 구분
ex)=MC01, 모바일=MC02


string100

good_name

상품명
상품의 정보를 간략하게(100byte 이내) 입력해주시기 바랍니다.
*필수 정보는 아니지만 고객 안내 및 주문정보 관리를 위하여 정확한 상품명을 넘겨야 합니다.


string30

buyr_name

주문자이름


string50

buyr_mail

주문자 E-Mail


string20

buyr_tel2

주문자 전화번호
하이폰(-)포함 가능

자동 결제 API 처리 예시

String target_URL = "https://stg-spl.kcp.co.kr/gw/enc/v1/payment";  // 개발서버

JSONObject json_req = new JSONObject();

json_req.put("site_cd", site_cd);
json_req.put("kcp_cert_info", kcp_cert_info);
json_req.put("bt_group_id", bt_group_id);
json_req.put("bt_batch_key", bt_batch_key);
json_req.put("good_mny", good_mny);

String temp_req_data = json_req.toString();
String req_data = temp_req_data.replace(",",",\r\n");

String inputLine = null;
StringBuffer outResult = new StringBuffer();

// API REQ
URL url = new URL(target_URL);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept-Charset", "UTF-8");

OutputStream os = conn.getOutputStream();
os.write(req_data.getBytes("UTF-8"));
os.flush();

// API RES
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
while ((inputLine = in.readLine()) != null)
{
  outResult.append(inputLine);
}
conn.disconnect();

String temp_result = outResult.toString();
String res_data = temp_result.replace(",",",\r\n");
header("Content-type: text/html; charset=utf-8");

$target_URL = "https://stg-spl.kcp.co.kr/gw/enc/v1/payment"; // 승인요청 개발서버

$data = [
          'site_cd'        => $site_cd,
          'kcp_cert_info'  => $kcp_cert_info,
          'bt_group_id'    => $bt_group_id,
          'bt_batch_key'   => $bt_batch_key,
          'good_mny'   =>  $good_mny
        ];

$req_data = json_encode($data);

$header_data = array( "Content-Type: application/json", "charset=utf-8" );

// API REQ
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target_URL);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header_data);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $req_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// API RES
$res_data  = curl_exec($ch);

// RES JSON DATA Parsing
$json_res = json_decode($res_data, true);

$res_cd = $json_res["res_cd"];
$res_msg = $json_res["res_msg"];

curl_close($ch);
target_URL = "https://stg-spl.kcp.co.kr/gw/enc/v1/payment"; // 승인요청 개발서버

req_data = "{"\"site_cd\":\"" + site_cd + "\"," +
            "\"kcp_cert_info\":\"" + KCP_CERT_INFO + "\"," +
            "\"bt_group_id\":\"" + bt_group_id + "\"," +
            "\"bt_batch_key\":\"" + bt_batch_key + "\"," +
            "\"good_mny\":\"" + good_mny + "\"}";
// API REQ
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(target_URL);
req.Method = "POST";
req.ContentType = "application/json";

byte[] byte_req = Encoding.UTF8.GetBytes(req_data);
req.ContentLength = byte_req.Length;

Stream st = req.GetRequestStream();
st.Write(byte_req, 0, byte_req.Length);
st.Close();

// API RES
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader st_read = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("utf-8"));
res_data = st_read.ReadToEnd();

st_read.Close();
res.Close();

// RES JSON DATA Parsing
JObject json_data = JObject.Parse(res_data);
res_cd = json_data["res_cd"].ToString();
res_msg = json_data["res_msg"].ToString();
target_URL = "https://stg-spl.kcp.co.kr/gw/enc/v1/payment" '개발서버

req_data = "{""site_cd"":""" & site_cd & """,""kcp_cert_info"":""" & kcp_cert_info & """,""bt_group_id"":""" & bt_group_id & """,""bt_batch_key"":""" & bt_batch_key & """,""good_mny"":""" & good_mny & """}"

' API REQ
set req = Server.CreateObject("MSXML2.ServerXMLHTTP")
req.open "POST", target_URL, false
req.setRequestHeader "Content-Type", "application/json;charset=UTF-8"
req.send req_data

' API RES
'요청 성공인 경우
if req.status = 200 then
    res_data = req.ResponseText
'요청 실패인 경우
else
    res_data = "http error code : " & req.status
end if
set req = nothing

'' RES JSON DATA Parsing
set json_data = JSON.parse(res_data)

res_cd = json_data.res_cd
res_msg = json_data.res_msg
// 결제 REQ DATA
  var req_data = {
    site_cd : site_cd,
    kcp_cert_info : KCP_CERT_INFO,
    bt_group_id : bt_group_id,
    bt_batch_key : bt_batch_key,
    good_mny : '1' // 결제요청금액   ** 1 원은 실제로 업체에서 결제하셔야 될 원 금액을 넣어주셔야 합니다. 결제금액 유효성 검증 **
  };

  fetch("https://stg-spl.kcp.co.kr/gw/enc/v1/payment", {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(req_data),
    })
    // 결제 API RES
    .then(response => {
      return response.json();
    })
    .then(data => {

  res.render('kcp_api_pay', {
    req_data : JSON.stringify(req_data),
    res_data : JSON.stringify(data),
    });
});
# 결제요청 API
target_URL = 'https://stg-spl.kcp.co.kr/gw/enc/v1/payment' # 승인요청 API 개발환경
headers = {'Content-Type': 'application/json', 'charset': 'UTF-8'}

site_cd = f_get_parm(request.form['site_cd'])

# 결제 REQ DATA
req_data = {
  'site_cd' : site_cd,
  'kcp_cert_info' : KCP_CERT_INFO,
  'bt_group_id' : bt_group_id,
  'bt_batch_key' : bt_batch_key,
  'good_mny' : '1' # ** 1 원은 실제로 업체에서 결제하셔야 될 원 금액을 넣어주셔야 합니다. 결제금액 유효성 검증 **
}

res = requests.post(target_URL, headers=headers, data=json.dumps(req_data, ensure_ascii=False, indent="\t").encode('utf8'))

자동결제 응답/승인 파라미터 가이드

공통응답 파라미터

string4

res_cd

결과코드


string100

res_msg

결과 메시지


string100

res_en_msg

영문 결과 메시지


string14

tno

NHN KCP 거래번호
해당 값으로 거래건의 상태를 조회/변경/취소가 가능하니 처리 페이지에서 tno를 반드시 저장 해주시기 바랍니다.


number12

amount

결제 금액


String16

trace_no

NHN KCP 거래 추적번호

승인응답 파라미터

신용카드 결제 응답


string4

card_cd

결제 건의 발급 사 코드


string32

card_name

결제 건의 발급 사 명


string16

card_no

결제 건의 카드번호 (카드번호 16자리 중 3번째구간은 마스킹)


string8

app_no

결제 건의 승인번호


number14

app_time

결제 건의 결제(승인) 시간


string1

noinf

결제 건의 무이자 여부


number12

quota

결제 건의 할부 기간


number12

card_mny

결제 건의 총 결제금액 중 신용카드 결제금액


string4

acqu_cd

결제 건의 매입사 코드


string20

acqu_name

결제 건의 매입사 명


string1

partcanc_yn

결제 건의 부분취소 가능 유무


number1

card_bin_type_01

결제 건의 카드 구분 정보
개인 : 0 / 법인 : 1


number1

card_bin_type_02

결제 건의 카드 구분 정보
일반 : 0 / 체크 : 1


string4

card_bin_bank_cd

카드발급사 은행코드

승인처리 구성하기

승인처리 페이지 구성시 승인요청 서명데이터생성 망취소 결과처리 로직을 포함 할 수 있습니다.

망취소 로직은 거래취소 페이지를 참고 부탁 드리겠습니다.

서명데이터생성 로직은 참고사항의 서버인증서 페이지를 참고 부탁 드리겠습니다.

결제창 호출, 승인처리를 포함한 전체 샘플이 필요하신 경우 다운로드 자료실을 이용해 주세요.