PC 자동결제 연동하기
API 연동하기
NHN KCP에서 제공하는 API 연동 가이드를 안내합니다.
호출-인증-배치키발급-자동결제승인-결과 5STEP으로 진행되는 PC 자동결제 가이드를 확인해주세요
배치키 발급 결제창 호출 함수 실행
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 결제창 요청 파라미터 가이드
필수 파라미터
site_cd
KCP 발급 사이트(상점)코드
테스트코드 : A52Q7
ordr_idxx
상점관리 주문번호
(유니크한 값 설정 권장)
※ 주문번호는
영문과 숫자로 설정하셔야합니다.
kcpgroup_id
가맹점 그룹 아이디
※ 자동결제 그룹 아이디 생성 방법
NHN
KCP 상점관리자 페이지 접속 → 결제 관리 →
→ 일반결제 →
자동결제
→ 그룹관리를 통해 그룹 아이디 생성
ex)A52Q71000489
pay_method
결제수단코드
인증키 요청 서비스 종류
AUTH:CARD :
고정값
card_cert_type
인증 방식 설정 값
BATCH : 고정값
module_type
PLUGIN 설정 정보
01 : 고정값
batch_soc
Y : 고정값
선택 파라미터
site_name
상점이름(영문으로 작성권장)
예시 :
site_name="NHNKCP"
buyr_name
주문자이름
good_expr
NHN KCP 배치키 발급창에 노출되는 제공기간 설정 변수
배치키발급 창을 호출하는 주문 페이지 영역에 good_expr 변수를 추가한 후, 값을
아래와 같이 입력 바랍니다.
자동결제 상품 설정 방법
<input type="hidden" name="good_expr"
value="2:1m"/>
위의 값을 넘기지 않을 경우 NHN KCP 결제창에 [자동결제]만 노출 됩니다.
ex) 2:1m
옵션 파라미터
batch_soc_choice
결제창에서 주민번호/사업자 번호 고정여부 설정
S: 주민번호만 표시
C: 사업자번호만 표시
ex) S
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>
인증파라미터 가이드
리턴 파라미터
enc_data
결제창 인증결과 암호화 정보
통합 결제
창으로부터 전달 받는 인증결과 암호화 데이터
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.
enc_info
결제창 인증결과 암호화 정보
통합 결제
창으로부터 전달 받는 인증결과 암호화 데이터
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.
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 서비스 인증서 관련 상세 내용은 서버 인증서 페이지를 참고 부탁 드립니다.
배치키 발급 요청 파라미터 가이드
배치키 발급 요청 파라미터
site_cd
KCP발급 사이트(상점)코드
가입 시
발송해드리는 연동메일 참조 / 테스트코드 : A52Q7
kcp_cert_info
KCP 인증서정보(직렬화)
관리자 페이지에서 발급받은 인증서 정보(직렬화 하여 요청)
enc_data
결제창 인증결과 암호화 정보
통합 결제
창으로부터 전달 받는 인증결과 암호화 데이터
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.
enc_info
결제창 인증결과 암호화 정보
통합 결제
창으로부터 전달 받는 인증결과 암호화 데이터
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.
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'))
배치키 발급 응답 파라미터 가이드
배치키 발급 성공 파라미터
res_cd
결과코드
정상 승인이 이루어졌을 경우 ‘0000’ 값 리턴
res_msg
결과메세지
batch_key
인증 후에 결과로 받는 인증키
이 키를 가맹점 측에 저장(DB 또는 파일로 저장)해두었다가, 자동결제 요청에 이용할
수 있습니다.
ex)11113011327740F3
card_cd
배치키 발급 시 요청한 카드사 코드
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
결제 응답 전문의 경우 동일한 형태로 리턴됩니다.
자동 결제 요청 파라미터 가이드
필수 파라미터
site_cd
KCP 발급 사이트(상점)코드
테스트코드 : A52Q7
kcp_cert_info
KCP 인증서정보(직렬화)
관리자 페이지에서 발급받은 인증서 정보(직렬화 하여 요청)
pay_method
결제수단코드
인증키 요청 서비스 종류
CARD : 고정값
amount
총 결제 금액
결제금액은 숫자 이외의 문자(콤마 등)는 허용하지
않습니다.
card_mny
카드 결제 금액
결제금액은 숫자 이외의 문자(콤마 등)는 허용하지
않습니다.
currency
거래 화폐 단위 설정 변수
원화 : 410
quota
할부개월 수
00 : 고정값
ordr_idxx
상점관리 주문번호
(유니크한 값 설정 권장)
※ 주문번호는
영문과 숫자로 설정하셔야합니다.
card_tx_type
카드 전문 유형
11511000 : 고정값
bt_batch_key
인증 후 결과로 받는 인증 키
ex)21123011327740F3
bt_group_id
가맹점 그룹 아이디
※ 자동결제 그룹 아이디 생성 방법
NHN
KCP 상점관리자 페이지 접속 → 결제 관리
→ 일반결제 →
자동결제
→ 그룹관리를 통해 그룹 아이디 생성
ex)A52Q71000489
선택 파라미터
cust_ip
요청자 ip
media_type
매체 구분
ex)=MC01, 모바일=MC02
good_name
상품명
상품의 정보를 간략하게(100byte 이내) 입력해주시기
바랍니다.
*필수 정보는 아니지만 고객 안내 및 주문정보 관리를 위하여 정확한 상품명을 넘겨야
합니다.
buyr_name
주문자이름
buyr_mail
주문자 E-Mail
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'))
자동결제 응답/승인 파라미터 가이드
공통응답 파라미터
res_cd
결과코드
res_msg
결과 메시지
res_en_msg
영문 결과 메시지
tno
NHN KCP 거래번호
해당 값으로 거래건의 상태를 조회/변경/취소가
가능하니 처리 페이지에서 tno를 반드시
저장 해주시기
바랍니다.
amount
결제 금액
trace_no
NHN KCP 거래 추적번호
승인응답 파라미터
신용카드 결제 응답
card_cd
결제 건의 발급 사 코드
card_name
결제 건의 발급 사 명
card_no
결제 건의 카드번호 (카드번호 16자리 중 3번째구간은 마스킹)
app_no
결제 건의 승인번호
app_time
결제 건의 결제(승인) 시간
noinf
결제 건의 무이자 여부
quota
결제 건의 할부 기간
card_mny
결제 건의 총 결제금액 중 신용카드 결제금액
acqu_cd
결제 건의 매입사 코드
acqu_name
결제 건의 매입사 명
partcanc_yn
결제 건의 부분취소 가능 유무
card_bin_type_01
결제 건의 카드 구분 정보
개인 : 0 / 법인
: 1
card_bin_type_02
결제 건의 카드 구분 정보
일반 : 0 / 체크
: 1
card_bin_bank_cd
카드발급사 은행코드
승인처리 구성하기
승인처리 페이지 구성시 승인요청 서명데이터생성 망취소 결과처리 로직을 포함 할 수 있습니다.
망취소 로직은 거래취소 페이지를 참고 부탁 드리겠습니다.
서명데이터생성 로직은 참고사항의 서버인증서 페이지를 참고 부탁 드리겠습니다.
결제창 호출, 승인처리를 포함한 전체 샘플이 필요하신 경우 다운로드 자료실을 이용해 주세요.