Mobile 표준결제 연동하기
API 연동하기
NHN KCP에서 제공하는 API 연동 가이드를 안내합니다.
호출-인증-승인-결과 4STEP으로 진행되는 Mobile 표준결제 가이드를 확인해주세요
API Download
라이브러리와 샘플은 다운로드 자료실을 참조해주세요.
거래등록
NHN KCP 모바일 표준결제창 호출에 필요한 거래등록에 대해 확인 바랍니다.
거래등록은 주문자로부터 결제에 필요한 데이터를 입력 받고,
가맹점이 설정한 데이터를 체크한 후 NHN KCP 거래인증등록 서버를 통해 거래인증을 하는 페이지입니다.
json 요청으로 거래가 정상 등록되면 json 응답 값으로 데이터를 리턴해드립니다.
승인요청 데이터는 Json String 전송방식으로 요청 하세요.
kcp_cert_info 인증서 데이터 발급은 참고사항의 서버인증서페이지를 참고해주세요.
<!-- 거래등록 호출 -->
1https://spl.kcp.co.kr/std/tradeReg/register
테스트 환경 : https://stg-spl.kcp.co.kr/std/tradeReg/register
거래등록 파라미터 가이드
등록요청 파라미터
kcp_cert_info
KCP 발급 인증서정보
site_cd
상점ID
테스트코드 : T0000
ordr_idxx
주문번호
good_mny
주문금액
pay_method
결제수단
good_name
상품명
Ret_URL
인증 완료 후 데이터를 리턴받을 응답 주소
escw_used
에스크로 사용여부
user_agent
사용 OS
등록응답 파라미터
Code
응답코드
Message
응답메세지
approvalKey
거래인증 키
PayUrl
리턴 받은 결제 창 호출 주소
전달 받은 값 그대로 요청
hashData
해시정보
traceNo
추적번호
paymentMethod
결제 수단
request_URI
요청 주소
거래등록 샘플코드 예시
<%@ page language="java" contentType="text/html;charset=euc-kr"%>
<%!
/* null 값을 처리하는 메소드 */
public String f_get_parm( String val )
{
if ( val == null ) val = "";
return val;
}
%>
<%
request.setCharacterEncoding( "euc-kr" );
/*
==========================================================================
거래등록 API URL
--------------------------------------------------------------------------
*/
String target_URL = "https://stg-spl.kcp.co.kr/std/tradeReg/register"; //개발환경
//String target_URL = "https://spl.kcp.co.kr/std/tradeReg/register"; //운영환경
/*
==========================================================================
요청 정보
--------------------------------------------------------------------------
*/
String site_cd = f_get_parm( request.getParameter( "site_cd" )); // 사이트코드
// 인증서정보(직렬화)
String kcp_cert_info = "-----BEGIN CERTIFICATE-----MIIDgTCCAmmgAwIBAgIHBy4lYNG7ojANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJLUjEOMAwGA1UECAwFU2VvdWwxEDAOBgNVBAcMB0d1cm8tZ3UxFTATBgNVBAoMDE5ITktDUCBDb3JwLjETMBEGA1UECwwKSVQgQ2VudGVyLjEWMBQGA1UEAwwNc3BsLmtjcC5jby5rcjAeFw0yMTA2MjkwMDM0MzdaFw0yNjA2MjgwMDM0MzdaMHAxCzAJBgNVBAYTAktSMQ4wDAYDVQQIDAVTZW91bDEQMA4GA1UEBwwHR3Vyby1ndTERMA8GA1UECgwITG9jYWxXZWIxETAPBgNVBAsMCERFVlBHV0VCMRkwFwYDVQQDDBAyMDIxMDYyOTEwMDAwMDI0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAppkVQkU4SwNTYbIUaNDVhu2w1uvG4qip0U7h9n90cLfKymIRKDiebLhLIVFctuhTmgY7tkE7yQTNkD+jXHYufQ/qj06ukwf1BtqUVru9mqa7ysU298B6l9v0Fv8h3ztTYvfHEBmpB6AoZDBChMEua7Or/L3C2vYtU/6lWLjBT1xwXVLvNN/7XpQokuWq0rnjSRThcXrDpWMbqYYUt/CL7YHosfBazAXLoN5JvTd1O9C3FPxLxwcIAI9H8SbWIQKhap7JeA/IUP1Vk4K/o3Yiytl6Aqh3U1egHfEdWNqwpaiHPuM/jsDkVzuS9FV4RCdcBEsRPnAWHz10w8CX7e7zdwIDAQABox0wGzAOBgNVHQ8BAf8EBAMCB4AwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAg9lYy+dM/8Dnz4COc+XIjEwr4FeC9ExnWaaxH6GlWjJbB94O2L26arrjT2hGl9jUzwd+BdvTGdNCpEjOz3KEq8yJhcu5mFxMskLnHNo1lg5qtydIID6eSgew3vm6d7b3O6pYd+NHdHQsuMw5S5z1m+0TbBQkb6A9RKE1md5/Yw+NymDy+c4NaKsbxepw+HtSOnma/R7TErQ/8qVioIthEpwbqyjgIoGzgOdEFsF9mfkt/5k6rR0WX8xzcro5XSB3T+oecMS54j0+nHyoS96/llRLqFDBUfWn5Cay7pJNWXCnw4jIiBsTBa3q95RVRyMEcDgPwugMXPXGBwNoMOOpuQ==-----END CERTIFICATE-----";
String ordr_idxx = f_get_parm( request.getParameter( "ordr_idxx" )); // 주문번호
String good_mny = f_get_parm( request.getParameter( "good_mny" )); // 결제 금액
String good_name = f_get_parm( request.getParameter( "good_name" )); // 상품명
String pay_method = f_get_parm( request.getParameter( "pay_method" )); // 결제수단
String Ret_URL = f_get_parm( request.getParameter( "Ret_URL" )); // 리턴 URL
/* ============================================================================== */
String actionResult = f_get_parm( request.getParameter( "ActionResult" )); // pay_method에 매칭되는 값 (인증창 호출 시 필요)
String van_code = f_get_parm( request.getParameter( "van_code" )); // (포인트,상품권 인증창 호출 시 필요)
JSONObject json_req = new JSONObject();
json_req.put("site_cd", site_cd);
json_req.put("kcp_cert_info", kcp_cert_info);
json_req.put("ordr_idxx", ordr_idxx);
json_req.put("good_mny", good_mny);
json_req.put("good_name", good_name);
json_req.put("pay_method", pay_method);
json_req.put("Ret_URL", Ret_URL);
json_req.put("escw_used", "N");
json_req.put("user_agent", "");
String temp_req_param = json_req.toString();
String req_param = temp_req_param.replace(",",",\r\n");
String inputLine = null;
StringBuffer outResult = new StringBuffer();
try
{
// 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_param.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();
}
catch(Exception e)
{
e.printStackTrace();
}
String temp_result = outResult.toString();
String res_param = temp_result.replace(",",",\r\n");
/*
==========================================================================
거래등록 응답정보
--------------------------------------------------------------------------
*/
String res_cd = ""; // 응답코드
String res_msg = ""; // 응답메세지
String approvalKey = ""; // 거래등록키
String traceNo = ""; // 추적번호
String PayUrl = ""; // 거래등록 PAY URL
// RES JSON DATA Parsing
JSONParser parser = new JSONParser();
JSONObject json_res = (JSONObject)parser.parse(temp_result);
res_cd = (String)json_res.get("Code");
res_msg = (String)json_res.get("Message");
approvalKey = (String)json_res.get("approvalKey");
traceNo = (String)json_res.get("traceNo");
PayUrl = (String)json_res.get("PayUrl");
%>
<?php
header("Content-type: text/html; charset=utf-8");
/*
==========================================================================
거래등록 API URL
--------------------------------------------------------------------------
*/
$target_URL = "https://stg-spl.kcp.co.kr/std/tradeReg/register"; //개발환경
//$target_URL = "https://spl.kcp.co.kr/std/tradeReg/register"; //운영환경
/*
==========================================================================
요청 정보
--------------------------------------------------------------------------
*/
$site_cd = $_POST[ "site_cd" ]; // 사이트코드
// 인증서정보(직렬화)
$kcp_cert_info = "-----BEGIN CERTIFICATE-----MIIDgTCCAmmgAwIBAgIHBy4lYNG7ojANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJLUjEOMAwGA1UECAwFU2VvdWwxEDAOBgNVBAcMB0d1cm8tZ3UxFTATBgNVBAoMDE5ITktDUCBDb3JwLjETMBEGA1UECwwKSVQgQ2VudGVyLjEWMBQGA1UEAwwNc3BsLmtjcC5jby5rcjAeFw0yMTA2MjkwMDM0MzdaFw0yNjA2MjgwMDM0MzdaMHAxCzAJBgNVBAYTAktSMQ4wDAYDVQQIDAVTZW91bDEQMA4GA1UEBwwHR3Vyby1ndTERMA8GA1UECgwITG9jYWxXZWIxETAPBgNVBAsMCERFVlBHV0VCMRkwFwYDVQQDDBAyMDIxMDYyOTEwMDAwMDI0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAppkVQkU4SwNTYbIUaNDVhu2w1uvG4qip0U7h9n90cLfKymIRKDiebLhLIVFctuhTmgY7tkE7yQTNkD+jXHYufQ/qj06ukwf1BtqUVru9mqa7ysU298B6l9v0Fv8h3ztTYvfHEBmpB6AoZDBChMEua7Or/L3C2vYtU/6lWLjBT1xwXVLvNN/7XpQokuWq0rnjSRThcXrDpWMbqYYUt/CL7YHosfBazAXLoN5JvTd1O9C3FPxLxwcIAI9H8SbWIQKhap7JeA/IUP1Vk4K/o3Yiytl6Aqh3U1egHfEdWNqwpaiHPuM/jsDkVzuS9FV4RCdcBEsRPnAWHz10w8CX7e7zdwIDAQABox0wGzAOBgNVHQ8BAf8EBAMCB4AwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAg9lYy+dM/8Dnz4COc+XIjEwr4FeC9ExnWaaxH6GlWjJbB94O2L26arrjT2hGl9jUzwd+BdvTGdNCpEjOz3KEq8yJhcu5mFxMskLnHNo1lg5qtydIID6eSgew3vm6d7b3O6pYd+NHdHQsuMw5S5z1m+0TbBQkb6A9RKE1md5/Yw+NymDy+c4NaKsbxepw+HtSOnma/R7TErQ/8qVioIthEpwbqyjgIoGzgOdEFsF9mfkt/5k6rR0WX8xzcro5XSB3T+oecMS54j0+nHyoS96/llRLqFDBUfWn5Cay7pJNWXCnw4jIiBsTBa3q95RVRyMEcDgPwugMXPXGBwNoMOOpuQ==-----END CERTIFICATE-----";
$ordr_idxx = $_POST[ "ordr_idxx" ]; // 주문번호
$good_mny = $_POST[ "good_mny" ]; // 결제 금액
$good_name = $_POST[ "good_name" ]; // 상품명
$pay_method = $_POST[ "pay_method" ]; // 결제수단
$Ret_URL = $_POST[ "Ret_URL" ]; // 리턴 URL
/* ============================================================================== */
$actionResult = $_POST[ "ActionResult" ]; // pay_method에 매칭되는 값 (인증창 호출 시 필요)
$van_code = $_POST[ "van_code" ]; // (포인트,상품권 인증창 호출 시 필요)
$data = [
'site_cd' => $site_cd,
'kcp_cert_info' => $kcp_cert_info,
'ordr_idxx' => $ordr_idxx,
'good_mny' => $good_mny,
'good_name' => $$good_name,
'pay_method' => $pay_method,
'Ret_URL' => $Ret_URL,
'escw_used' => 'N',
'user_agent' => ''
];
$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_cd = ""; // 응답코드
$res_msg = ""; // 응답메세지
$approvalKey = ""; // 거래등록키
$traceNo = ""; // 추적번호
$PayUrl = ""; // 거래등록 PAY URL
// RES JSON DATA Parsing
$json_res = json_decode($res_data, true);
$res_cd = $json_res["Code"];
$res_msg = $json_res["Message"];
$approvalKey = $json_res["approvalKey"];
$traceNo = $json_res["traceNo"];
$PayUrl = $json_res["PayUrl"];
curl_close($ch);
?>
using System;
namespace Payment
{
public partial class Kcp_api_trade_reg : System.Web.UI.Page
{
protected string site_cd; // 사이트코드
protected string kcp_cert_info; // 인증서 정보
protected string ordr_idxx; // 주문번호
protected string good_mny; // 결제 금액
protected string good_name; // 상품명
protected string pay_method; // 결제수단
protected string Ret_URL; // 리턴 URL
protected string actionResult; // pay_method에 매칭되는 값 (인증창 호출 시 필요)
protected string van_code; // (포인트,상품권 인증창 호출 시 필요)
protected string target_URL;
protected string req_data;
protected string res_data;
protected string res_cd; // 응답코드
protected string res_msg; // 응답메세지
protected string approvalKey; // 거래등록키
protected string traceNo; // 추적번호
protected string PayUrl; // 거래등록 PAY URL
protected void Page_Load(object sender, EventArgs e)
{
/* ============================================================================== */
/* = 거래등록 API URL = */
/* = -------------------------------------------------------------------------- = */
target_URL = "https://stg-spl.kcp.co.kr/std/tradeReg/register"; // 개발서버
//target_URL = "https://spl.kcp.co.kr/std/tradeReg/register"; // 운영서버
/* ============================================================================== */
/* = 요청정보 = */
/* = -------------------------------------------------------------------------- = */
site_cd = Request.Form["site_cd"]; // 사이트코드
// 인증서정보(직렬화)
kcp_cert_info = "-----BEGIN CERTIFICATE-----MIIDgTCCAmmgAwIBAgIHBy4lYNG7ojANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJLUjEOMAwGA1UECAwFU2VvdWwxEDAOBgNVBAcMB0d1cm8tZ3UxFTATBgNVBAoMDE5ITktDUCBDb3JwLjETMBEGA1UECwwKSVQgQ2VudGVyLjEWMBQGA1UEAwwNc3BsLmtjcC5jby5rcjAeFw0yMTA2MjkwMDM0MzdaFw0yNjA2MjgwMDM0MzdaMHAxCzAJBgNVBAYTAktSMQ4wDAYDVQQIDAVTZW91bDEQMA4GA1UEBwwHR3Vyby1ndTERMA8GA1UECgwITG9jYWxXZWIxETAPBgNVBAsMCERFVlBHV0VCMRkwFwYDVQQDDBAyMDIxMDYyOTEwMDAwMDI0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAppkVQkU4SwNTYbIUaNDVhu2w1uvG4qip0U7h9n90cLfKymIRKDiebLhLIVFctuhTmgY7tkE7yQTNkD+jXHYufQ/qj06ukwf1BtqUVru9mqa7ysU298B6l9v0Fv8h3ztTYvfHEBmpB6AoZDBChMEua7Or/L3C2vYtU/6lWLjBT1xwXVLvNN/7XpQokuWq0rnjSRThcXrDpWMbqYYUt/CL7YHosfBazAXLoN5JvTd1O9C3FPxLxwcIAI9H8SbWIQKhap7JeA/IUP1Vk4K/o3Yiytl6Aqh3U1egHfEdWNqwpaiHPuM/jsDkVzuS9FV4RCdcBEsRPnAWHz10w8CX7e7zdwIDAQABox0wGzAOBgNVHQ8BAf8EBAMCB4AwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAg9lYy+dM/8Dnz4COc+XIjEwr4FeC9ExnWaaxH6GlWjJbB94O2L26arrjT2hGl9jUzwd+BdvTGdNCpEjOz3KEq8yJhcu5mFxMskLnHNo1lg5qtydIID6eSgew3vm6d7b3O6pYd+NHdHQsuMw5S5z1m+0TbBQkb6A9RKE1md5/Yw+NymDy+c4NaKsbxepw+HtSOnma/R7TErQ/8qVioIthEpwbqyjgIoGzgOdEFsF9mfkt/5k6rR0WX8xzcro5XSB3T+oecMS54j0+nHyoS96/llRLqFDBUfWn5Cay7pJNWXCnw4jIiBsTBa3q95RVRyMEcDgPwugMXPXGBwNoMOOpuQ==-----END CERTIFICATE-----";
ordr_idxx = Request.Form["ordr_idxx"];
good_mny = Request.Form["good_mny"];
good_name = Request.Form["good_name"];
pay_method = Request.Form["pay_method"];
Ret_URL = Request.Form["Ret_URL"];
/* ============================================================================== */
actionResult = Request.Form["ActionResult"];
van_code = Request.Form["van_code"];
req_data = "{\"site_cd\" : \"" + site_cd + "\"," +
"\"kcp_cert_info\":\"" + kcp_cert_info + "\"," +
"\"ordr_idxx\":\"" + ordr_idxx + "\"," +
"\"good_mny\":\"" + good_mny + "\"," +
"\"good_name\":\"" + good_name + "\"," +
"\"pay_method\":\"" + pay_method + "\"," +
"\"Ret_URL\":\"" + Ret_URL + "\"," +
"\"escw_used\":\"N\"," +
"\"user_agent\":\"\"}";
Console.WriteLine(req_data);
// SSL/ TLS 보안 채널을 만들수 없습니다. 오류 발생 시 추가 (프레임워크 버전을 올렸음에도 안될 경우 추가)
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
// 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["Code"].ToString();
res_msg = json_data["Message"].ToString();
approvalKey = json_data["approvalKey"].ToString();
traceNo = json_data["traceNo"].ToString();
PayUrl = json_data["PayUrl"].ToString();
}
}
}
<!--#include file="../lib/json2.asp"-->
<%
Response.CharSet = "UTF-8"
'==========================================================================
'거래등록 API URL
'--------------------------------------------------------------------------
target_URL = "https://stg-spl.kcp.co.kr/std/tradeReg/register" '개발환경
'target_URL = "https://spl.kcp.co.kr/std/tradeReg/register" '운영환경
'==========================================================================
'요청 정보
'--------------------------------------------------------------------------
site_cd = trim(request( "site_cd" ))' 사이트코드
' 인증서정보(직렬화)
kcp_cert_info = "-----BEGIN CERTIFICATE-----MIIDgTCCAmmgAwIBAgIHBy4lYNG7ojANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJLUjEOMAwGA1UECAwFU2VvdWwxEDAOBgNVBAcMB0d1cm8tZ3UxFTATBgNVBAoMDE5ITktDUCBDb3JwLjETMBEGA1UECwwKSVQgQ2VudGVyLjEWMBQGA1UEAwwNc3BsLmtjcC5jby5rcjAeFw0yMTA2MjkwMDM0MzdaFw0yNjA2MjgwMDM0MzdaMHAxCzAJBgNVBAYTAktSMQ4wDAYDVQQIDAVTZW91bDEQMA4GA1UEBwwHR3Vyby1ndTERMA8GA1UECgwITG9jYWxXZWIxETAPBgNVBAsMCERFVlBHV0VCMRkwFwYDVQQDDBAyMDIxMDYyOTEwMDAwMDI0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAppkVQkU4SwNTYbIUaNDVhu2w1uvG4qip0U7h9n90cLfKymIRKDiebLhLIVFctuhTmgY7tkE7yQTNkD+jXHYufQ/qj06ukwf1BtqUVru9mqa7ysU298B6l9v0Fv8h3ztTYvfHEBmpB6AoZDBChMEua7Or/L3C2vYtU/6lWLjBT1xwXVLvNN/7XpQokuWq0rnjSRThcXrDpWMbqYYUt/CL7YHosfBazAXLoN5JvTd1O9C3FPxLxwcIAI9H8SbWIQKhap7JeA/IUP1Vk4K/o3Yiytl6Aqh3U1egHfEdWNqwpaiHPuM/jsDkVzuS9FV4RCdcBEsRPnAWHz10w8CX7e7zdwIDAQABox0wGzAOBgNVHQ8BAf8EBAMCB4AwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAg9lYy+dM/8Dnz4COc+XIjEwr4FeC9ExnWaaxH6GlWjJbB94O2L26arrjT2hGl9jUzwd+BdvTGdNCpEjOz3KEq8yJhcu5mFxMskLnHNo1lg5qtydIID6eSgew3vm6d7b3O6pYd+NHdHQsuMw5S5z1m+0TbBQkb6A9RKE1md5/Yw+NymDy+c4NaKsbxepw+HtSOnma/R7TErQ/8qVioIthEpwbqyjgIoGzgOdEFsF9mfkt/5k6rR0WX8xzcro5XSB3T+oecMS54j0+nHyoS96/llRLqFDBUfWn5Cay7pJNWXCnw4jIiBsTBa3q95RVRyMEcDgPwugMXPXGBwNoMOOpuQ==-----END CERTIFICATE-----"
ordr_idxx = trim(request( "ordr_idxx" )) ' 주문번호
good_mny = trim(request( "good_mny" )) ' 결제 금액
good_name = trim(request( "good_name" )) ' 상품명
pay_method = trim(request( "pay_method" )) ' 결제수단
Ret_URL = trim(request( "Ret_URL" )) ' 리턴 URL
'==========================================================================
actionResult = trim(request( "ActionResult" )) ' pay_method에 매칭되는 값 (인증창 호출 시 필요)
van_code = trim(request( "van_code" )) ' (포인트,상품권 인증창 호출 시 필요)
req_data = "{""site_cd"":""" & site_cd & """,""kcp_cert_info"":""" & kcp_cert_info & """,""ordr_idxx"":""" & ordr_idxx & """,""good_mny"":""" & good_mny & """,""ordr_mony"":""" & ordr_mony & """,""good_name"":""" & good_name & """,""pay_method"":""" & pay_method & """,""Ret_URL"":""" & Ret_URL & """,""escw_used"":""N"",""user_agent"":""""}"
' 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_cd = "" ' 응답코드
res_msg = "" ' 응답메세지
approvalKey = "" ' 거래등록키
traceNo = "" ' 추적번호
PayUrl = "" ' 거래등록 PAY URL
' RES JSON DATA Parsing
'' RES JSON DATA Parsing
set json_data = JSON.parse(res_data)
res_cd = json_data.Code
res_msg = json_data.Message
approvalKey = json_data.approvalKey
traceNo = json_data.traceNo
PayUrl = json_data.PayUrl
%>
//MOBILE 거래등록 PAGE
router.get('/mobile_sample/trade_reg', function(req, res) {
res.render('mobile_sample/trade_reg');
});
//MOBILE 거래등록 API
router.post('/mobile_sample/kcp_api_trade_reg', function(req, res) {
// 거래등록처리 POST DATA
var actionResult = f_get_parm(req.body.ActionResult); // pay_method에 매칭되는 값 (인증창 호출 시 필요)
var van_code = f_get_parm(req.body.van_code); // (포인트,상품권 인증창 호출 시 필요)
var post_data = {
actionResult : actionResult,
van_code : van_code
};
// 거래등록 API REQ DATA
var req_data = {
site_cd : f_get_parm(req.body.site_cd),
kcp_cert_info : KCP_CERT_INFO,
ordr_idxx : f_get_parm(req.body.ordr_idxx),
good_mny : f_get_parm(req.body.good_mny),
good_name : f_get_parm(req.body.good_name),
pay_method : f_get_parm(req.body.pay_method),
Ret_URL : f_get_parm(req.body.Ret_URL),
escw_used : 'N',
user_agent : ''
};
// 거래등록 API URL
// 개발 : https://stg-spl.kcp.co.kr/std/tradeReg/register
// 운영 : https://spl.kcp.co.kr/std/tradeReg/register
fetch("https://stg-spl.kcp.co.kr/std/tradeReg/register", {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(req_data),
})
// 거래등록 API RES
.then(response => {
return response.json();
})
.then(data => {
res.render('mobile_sample/kcp_api_trade_reg', {
req_data : req_data,
res_data : data,
post_data : post_data
});
});
});
#MOBILE 거래등록 PAGE
@app.route('/mobile_sample/trade_reg')
def trade_reg():
return render_template('/mobile_sample/trade_reg.html')
# MOBILE 거래등록 API
@app.route('/mobile_sample/kcp_api_trade_reg', methods=['POST'])
def kcp_api_trade_reg():
#거래등록처리 POST DATA
actionResult = f_get_parm(request.form['ActionResult']) # pay_method에 매칭되는 값 (인증창 호출 시 필요)
van_code = f_get_parm(request.form['van_code']) # (포인트,상품권 인증창 호출 시 필요)
post_data = {
'actionResult' : actionResult,
'van_code': van_code
}
# 거래등록 API
target_URL = 'https://stg-spl.kcp.co.kr/std/tradeReg/register' #개발환경
#target_URL = 'https://spl.kcp.co.kr/std/tradeReg/register' #운영환경
headers = {'Content-Type': 'application/json', 'charset': 'UTF-8'}
# 거래등록 API REQ DATA
req_data = {
'site_cd' : f_get_parm(request.form['site_cd']),
'kcp_cert_info' : KCP_CERT_INFO,
'ordr_idxx' : f_get_parm(request.form['ordr_idxx']),
'good_mny' : f_get_parm(request.form['good_mny']),
'good_name' :f_get_parm(request.form['good_name']),
'pay_method' : f_get_parm(request.form['pay_method']),
'Ret_URL' : f_get_parm(request.form['Ret_URL']),
'escw_used' : 'N',
'user_agent' : ''
}
res = requests.post(target_URL, headers=headers, data=json.dumps(req_data, ensure_ascii=False, indent="\t").encode('utf8'))
return render_template('mobile_sample/kcp_api_trade_reg.html', res_data=json.loads(res.text), req_data=req_data, post_data=post_data)
결제창 실행 함수
NHN KCP 모바일 결제창 호출에 필요한 함수에 대해 안내합니다.
<!-- 호출 함수 예시-->
1<script type="text/javascript">
2 /* kcp web 결제창 호츨 (변경불가) */
3 function call_pay_form()
4 {
5 var v_frm = document.order_info;
6 var PayUrl = v_frm.PayUrl.value;
7 // 인코딩 방식에 따른 변경 -- Start
8 if(v_frm.encoding_trans == undefined)
9 {
10 v_frm.action = PayUrl;
11 }
12 else
13 {
14 // encoding_trans "UTF-8" 인 경우
15 if(v_frm.encoding_trans.value == "UTF-8")
16 {
17 v_frm.action = PayUrl.substring(0,PayUrl.lastIndexOf("/")) + "/jsp/encodingFilter/encodingFilter.jsp";
18 v_frm.PayUrl.value = PayUrl;
19 }
20 else
21 {
22 v_frm.action = PayUrl;
23 }
24 }
25
26 if (v_frm.Ret_URL.value == "")
27 {
28 /* Ret_URL값은 현 페이지의 URL 입니다. */
29 alert("연동시 Ret_URL을 반드시 설정하셔야 됩니다.");
30 return false;
31 }
32 else
33 {
34 v_frm.submit();
35 }
36 }
37</script>
Type : text/javascript
Ret_URL 인증데이터 리턴
Ret_URL은 kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL입니다.
Ret_URL을 통해 받으신 인증 데이터를 API URL로 요청 후 승인 처리 진행이 가능합니다.
<!-- Ret_URL 설정 예시 -->
1Ret_URL="http://test.kcp.co.kr/returnpage"
주문요청 파라미터 가이드
필수 파라미터
site_cd
KCP 발급 사이트(상점)코드
테스트코드 : T0000
ordr_idxx
상점관리 주문번호
(유니크한 값 설정 권장)
※ 주문번호는 영문과 숫자로 설정하셔야합니다.
pay_method
결제수단코드(영문 대문자)
- 신용카드 : CARD
- 계좌이체 : BANK
- 가상계좌 : VCNT
- 휴대폰 : MOBX
- 포인트 : TPNT
- 상품권 : GIFT
ActionResult
인증수단(영문 소문자)
- 신용카드 : card
- 계좌이체 : acnt
- 가상계좌 : vcnt
- 휴대폰 : mobx
- 도서문화상품권 : scbl
- 문화상품권 : sccl
- 해피머니상품권 : schm
- OK캐쉬백 : ocb
- 복지포인트 : tpnt
Ret_URL
NHN KCP 모바일 결제 창에서 인증완료 후 인증데이터를 리턴 받을 업체페이지
Ret_URL 뒤의 추가 파라미터는 허용되지 않습니다.
예) http://testpay.kcp.co.kr?test1=1&test2=2
추가 파라미터는 반드시 아래 옵션 파라미터인 param_opt_1 ~ 3 으로 활용하셔야 합니다.
approval_key
거래인증 코드(수정불가)
PayUrl
approval_key.js 를 통해 리턴 받은 결제 창 호출 주소
전달 받은 값 그대로 요청
good_name
상품명
※ 고객안내 및 주문정보 관리를 위해 정확한 상품명으로 설정하셔야 합니다.
good_mny
주문요청금액
결제 금액은 숫자 이외의 문자(콤마 등)는
허용 하지 않습니다.
결제창이 닫힌 후 리턴되는 금액정보가 변경되는지 체크
currency
화폐단위
※ 원화 - WON : 410 / 달러 - USD : 840
shop_user_id
쇼핑몰에서 관리하는 회원 ID
※ 유니크한 값으로 입력
기관에 따라 리스크 관리 조치를 위한 쇼핑몰 관리 ID를 필수로 요청
휴대폰 소액결제 - 40Byte
상품권결제 - 20Byte
선택 파라미터
shop_name
cfg 환경설정에 설정된 값
buyr_name
주문자이름
buyr_mail
주문자 이메일
buyr_tel1
주문자 전화번호
하이폰(-)포함 가능
buyr_tel2
주문자 휴대폰번호
하이폰(-)포함 가능
param_opt_1
NHN KCP 기본 파라미터 외 업체 추가 파라미터
param_opt_2
NHN KCP 기본 파라미터 외 업체 추가 파라미터
param_opt_3
NHN KCP 기본 파라미터 외 업체 추가 파라미터
옵션 파라미터
신용카드옵션
quotaopt
50,000원 이상 거래에 대한 할부 옵션. 기본값은 12개월. 0~12의 값을 설정하면 결제 창에 할부 개월 수가 최대값까지 표기됩니다.
kcp_noint
무이자할부 표시기능
“” : 상점관리자 설정에 따름
“Y” : kcp_noint_quota 값에 따라 무이자표시(단, 상점관리자에 설정이 되어야 함)
“N” : 상점관리자 값을 무시하고 일반할부로 처리됨
kcp_noint_quota
무이자할부 표시기능이 Y 일 경우 무이자 설정 값을 결제 창에 표기
무이자 설정은 카드사 별로 설정 가능
used_card_YN
결제 요청 시 원하는 신용카드사 확인
※ 해당 변수 값을 Y로 설정 후 used_card 변수 값에 원하는 신용카드사의 코드를 입력
※ 입력한 신용카드사만 결제 창에 노출
used_card
used_card_YN 변수 값을 Y로 설정한 후 사용하길 원하는 신용카드사의 코드 입력
카드 코드보기 ▼
카드코드 | 카드명 | 카드코드 | 카드명 |
---|---|---|---|
CCLG | 신한 | CCKJ | 광주 |
CCDI | 현대 | CCSU | 수협 |
CCLO | 롯데 | CCJB | 전북 |
CCKE | 외환 | CCCJ | 제주 |
CCSS | 삼성 | CCKD | KDB산업은행 |
CCKM | 국민 | CCSB | 저축 |
CCBC | 비씨 | CCCU | 신협 |
CCNH | 농협 | CCPB | 우체국 |
CCHN | 하나 | CCSM | MG새마을금고 |
CCCT | 씨티 | CCKA | 카카오뱅크 |
CCWR | 우리 | CMCF | 마스터 |
BC81 | 하나비씨 | CJCF | JCB |
CCKK | 케이뱅크 | ||
CCUF | 은련 | ||
CVSF | 비자 |
AppUrl
가맹점 APP 호출 URL
가맹점에서 APP으로 연동 시, 타 APP에서 가맹점 APP을 다시 호출하기 위한 값 ( 가맹점 APP 연동 시 필수 )
fix_inst
결제금액이 50,000원 이상일 경우 결제 창에서 선택 할 수 있는 할부 개월 수를 0~12 의 값 중 하나로 고정
<!-- 신용카드 옵션 설정 예제 -->
<input type=”hidden” name=”quotaopt” value=”6”> // 최대 할부 개월수
<input type=”hidden” name=”kcp_noint” value=”Y”> // 무이자할부 표시 여부
<input type=”hidden” name=”kcp_noint_quota” value=”CCBC-02:03:06,CCSS-03:06”>
//BC카드 2,3,6 무이자, 삼성카드 3,6 무이자
<input type=”hidden” name=”used_card_YN” value=”Y”> //원하는 카드사 설정 여부
<input type=”hidden” name=”used_card” value=”CCBC:CCKM:CCSS”> //결제창에 BC,국민,삼성카드만 노출
가상계좌옵션
ipgm_date
발급된 가상계좌에 입금할 예정일 입력
예시 : 20211231 또는 20211231235959
used_bank
NHN KCP에서 제공하는 은행 중 가맹점이 원하는 은행을 선택
vcnt_expire_term_time
가상계좌 유효기간 설정
vcnt_expire_term과 함께 부수적으로 설정되는 변수
<!-- 가상계좌 옵션 설정 예제 -->
<input type=”hidden” name=”ipgm_date” value=”20200131”> // 가상계좌 마감기한
<input type=”hidden” name=”used_bank” value=”BK03:BK04”> // 기업은행, 국민은행만 노출
휴대폰결제 옵션
hp_apply_yn
원하는 통신사만 노출시킬 수 있습니다.
※변수 값을 Y로 설정한 후 hp_commid 변수의 값에 통신사 코드를 입력하면 결제창에 해당 통신사만 노출됩니다.
hp_commid
하나의 통신사만 설정 가능
<!-- 휴대폰폰옵션 설정 예제 -->
<input type=”hidden” name=”hp_apply_yn” value=”Y”>
<input type=”hidden” name=”hp_commid” value=“SKT”> //SKT 통신사만 노출
※ 휴대폰 결제를 NHN KCP 테스트서버로 테스트할 경우에도 실제 결제가 이뤄지기 때문에 결제 테스트를 하신 후 반드시 당월 내에 취소를 하셔야 청구되지 않습니다. (예. 2021년 8월 31일 결제 시 반드시 8월 31일 내에 취소)
추가 옵션 변수
tax_flag
복합 과세 구문
TG01 : 과세 // TG02 : 비과세 // TG03 : 복합과세
comm_tax_mny
과세 승인금액 (공급가액)
과세 금액에 해당하는 공급가액 설정
과세 금액 = good_mny / 1.1
comm_free_mny
비과세 승인금액
비과세 금액에 해당하는 공급가액 설정
비과세 금액 = good_mny – 과세금액 – 부가가치세
comm_vat_mny
부가가치세
부가가치세는 과세금액 공금가액의 10%
부가가치세 = good_mny – 과세금액
disp_tax_yn
계좌이체, 가상계좌를 이용한 현금 결제 시 결제 금액이 1원 이상인 경우, 결제 창에 현금영수증 등록여부를 보여줌
현금영수증 자동등록을 원할 경우 해당 변수를 Y 로 설정. 가상계좌의 경우 입금 완료 후 현금영수증 등록됨
Y : 소득공제용, 지출증빙용 노출
N : 현금영수증 숨기기
R : 소득공제용만 노출
E : 지출증빙용만 노출
※ 현금영수증 자동 등록을 사용하시려면 사전에 가맹점 관리자 페이지 [결제관리 - 현금영수증] 에서 현금영수증 사용 등록을 해주셔야 합니다. 현금영수증 사용 옵션 ‘자진발급(자동)등록, 구매자 요청등록, 사용 안 함’ 중 [구매자 요청등록]이 설정되어 있어야 합니다.
결제(요청/인증리턴) 샘플코드 예시
<%@ page language="java" contentType="text/html;charset=euc-kr"%>
<%!
/*
==========================================================================
null 값을 처리하는 메소드
--------------------------------------------------------------------------
*/
public String f_get_parm( String val )
{
if ( val == null ) val = "";
return val;
}
/* ============================================================================== */
%>
<%
request.setCharacterEncoding( "euc-kr" );
// 거래등록 응답 값
String approvalKey = f_get_parm( request.getParameter( "approvalKey" ) ); // 거래등록키
String traceNo = f_get_parm( request.getParameter( "traceNo" ) ); // 추적번호
String PayUrl = f_get_parm( request.getParameter( "PayUrl" ) ); // 거래등록 PAY URL
// 인증시 필요한 결제수단 세팅 값
String pay_method = f_get_parm( request.getParameter( "pay_method" ) ); // 결제수단
String actionResult = f_get_parm( request.getParameter( "actionResult" ) );
String van_code = f_get_parm( request.getParameter( "van_code" ) );
// 가맹점 리턴 URL
String Ret_URL = f_get_parm( request.getParameter( "Ret_URL" ) );
/* kcp와 결제 통신후 kcp 서버에서 전송되는 결제 요청 정보 */
String req_tx = f_get_parm( request.getParameter( "req_tx" ) ); // 요청 종류
String res_cd = f_get_parm( request.getParameter( "res_cd" ) ); // 응답 코드
String site_cd = f_get_parm( request.getParameter( "site_cd" ) ); // 사이트코드
String tran_cd = f_get_parm( request.getParameter( "tran_cd" ) ); // 트랜잭션 코드
String ordr_idxx = f_get_parm( request.getParameter( "ordr_idxx" ) ); // 쇼핑몰 주문번호
String good_name = f_get_parm( request.getParameter( "good_name" ) ); // 상품명
String good_mny = f_get_parm( request.getParameter( "good_mny" ) ); // 결제 총금액
String buyr_name = f_get_parm( request.getParameter( "buyr_name" ) ); // 주문자명
String buyr_tel2 = f_get_parm( request.getParameter( "buyr_tel2" ) ); // 주문자 핸드폰 번호
String buyr_mail = f_get_parm( request.getParameter( "buyr_mail" ) ); // 주문자 E-mail 주소
String use_pay_method = f_get_parm( request.getParameter( "use_pay_method" ) ); // 결제 방법
String enc_info = f_get_parm( request.getParameter( "enc_info" ) ); // 암호화 정보
String enc_data = f_get_parm( request.getParameter( "enc_data" ) ); // 암호화 데이터
String cash_yn = f_get_parm( request.getParameter( "cash_yn" ) );
String cash_tr_code = f_get_parm( request.getParameter( "cash_tr_code" ) );
/* 기타 파라메터 추가 부분 - Start - */
String param_opt_1 = f_get_parm( request.getParameter( "param_opt_1" ) ); // 기타 파라메터 추가 부분
String param_opt_2 = f_get_parm( request.getParameter( "param_opt_2" ) ); // 기타 파라메터 추가 부분
String param_opt_3 = f_get_parm( request.getParameter( "param_opt_3" ) ); // 기타 파라메터 추가 부분
/* 기타 파라메터 추가 부분 - End - */
%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<meta http-equiv="x-ua-compatible" content="ie=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=yes, target-densitydpi=medium-dpi">
<script type="text/javascript">
/* kcp web 결제창 호츨 (변경불가) */
function call_pay_form()
{
var v_frm = document.order_info;
var PayUrl = v_frm.PayUrl.value;
// 인코딩 방식에 따른 변경 -- Start
if(v_frm.encoding_trans == undefined)
{
v_frm.action = PayUrl;
}
else
{
// encoding_trans "UTF-8" 인 경우
if(v_frm.encoding_trans.value == "UTF-8")
{
v_frm.action = PayUrl.substring(0,PayUrl.lastIndexOf("/")) + "/jsp/encodingFilter/encodingFilter.jsp";
v_frm.PayUrl.value = PayUrl;
}
else
{
v_frm.action = PayUrl;
}
}
if (v_frm.Ret_URL.value == "")
{
/* Ret_URL값은 현 페이지의 URL 입니다. */
alert("연동시 Ret_URL을 반드시 설정하셔야 됩니다.");
return false;
}
else
{
v_frm.submit();
}
}
/* kcp 통신을 통해 받은 암호화 정보 체크 후 결제 요청 (변경불가) */
function chk_pay()
{
self.name = "tar_opener";
var pay_form = document.pay_form;
if (pay_form.res_cd.value != "" )
{
if (pay_form.res_cd.value != "0000" )
{
if (pay_form.res_cd.value == "3001")
{
alert("사용자가 취소하였습니다.");
}
pay_form.res_cd.value = "";
location.href = "./trade_reg.html"; // 샘플에서는 거래등록 페이지로 이동
}
}
if (pay_form.enc_info.value)
pay_form.submit();
}
</script>
</head>
<body onload="chk_pay();">
<div class="wrap">
<!-- 주문정보 입력 form : order_info -->
<form name="order_info" method="post">
<input type="text" name="ordr_idxx" value="<%=ordr_idxx %>" maxlength="40" readonly />
<input type="text" name="good_name" value="<%=good_name %>" readonly />
<input type="text" name="good_mny" value="<%=good_mny %>" maxlength="9" readonly />
<input type="text" name="buyr_name" value="홍길동" />
<input type="text" name="buyr_tel2" value="010-0000-0000" />
<input type="text" name="buyr_mail" value="test@test.co.kr" />
<a href="#none" onclick="call_pay_form();" class="btn-type-2 pc-wd-3">결제요청</a>
<!-- 공통정보 -->
<input type="hidden" name="req_tx" value="pay" /> <!-- 요청 구분 -->
<input type="hidden" name="shop_name" value="TEST SITE" /> <!-- 사이트 이름 -->
<input type="hidden" name="site_cd" value="<%=site_cd %>" /> <!-- 사이트 코드 -->
<input type="hidden" name="currency" value="410"/> <!-- 통화 코드 -->
<!-- 인증시 필요한 파라미터(변경불가)-->
<input type="hidden" name="escw_used" value="N" />
<input type="hidden" name="pay_method" value="<%=pay_method %>" />
<input type="hidden" name="ActionResult" value="<%=actionResult %>" />
<input type="hidden" name="van_code" value="<%=van_code %>" />
<!-- 신용카드 설정 -->
<input type="hidden" name="quotaopt" value="12"/> <!-- 최대 할부개월수 -->
<!-- 가상계좌 설정 -->
<input type="hidden" name="ipgm_date" value="" />
<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
<input type="hidden" name="Ret_URL" value="<%=Ret_URL %>" />
<!-- 가맹점에서 APP으로 연동 시, 타 APP에서 가맹점 APP을 다시 호출하기 위한 값 ( 가맹점 APP 연동 시 필수 ) -->
<input type="hidden" name="AppUrl" value="<%=AppUrl %>" />
<!-- 화면 크기조정 -->
<input type="hidden" name="tablet_size" value="1.0 " />
<!-- 추가 파라미터 ( 가맹점에서 별도의 값전달시 param_opt 를 사용하여 값 전달 ) -->
<input type="hidden" name="param_opt_1" value="" />
<input type="hidden" name="param_opt_2" value="" />
<input type="hidden" name="param_opt_3" value="" />
<!-- 거래등록 응답값 -->
<input type="hidden" name="approval_key" id="approval" value="<%=approvalKey%>"/>
<input type="hidden" name="traceNo" value="<%=traceNo%>" />
<input type="hidden" name="PayUrl" value="<%=PayUrl%>" />
<!-- 인증창 호출 시 한글깨질 경우 encoding 처리 추가 (**인코딩 네임은 대문자)
<input type="hidden" name="encoding_trans" value="UTF-8" /> -->
</form>
</div>
<form name="pay_form" method="post" action="../kcp_api_pay.jsp">
<input type="hidden" name="req_tx" value="<%=req_tx%>" /> <!-- 요청 구분 -->
<input type="hidden" name="res_cd" value="<%=res_cd%>" /> <!-- 결과 코드 -->
<input type="hidden" name="site_cd" value="<%=site_cd%>" /> <!-- 사이트 코드 -->
<input type="hidden" name="tran_cd" value="<%=tran_cd%>" /> <!-- 트랜잭션 코드 -->
<input type="hidden" name="ordr_idxx" value="<%=ordr_idxx%>" /> <!-- 주문번호 -->
<input type="hidden" name="good_mny" value="<%=good_mny%>" /> <!-- 휴대폰 결제금액 -->
<input type="hidden" name="good_name" value="<%=good_name%>" /> <!-- 상품명 -->
<input type="hidden" name="buyr_name" value="<%=buyr_name%>" /> <!-- 주문자명 -->
<input type="hidden" name="buyr_tel2" value="<%=buyr_tel2%>" /> <!-- 주문자 휴대폰번호 -->
<input type="hidden" name="buyr_mail" value="<%=buyr_mail%>" /> <!-- 주문자 E-mail -->
<input type="hidden" name="enc_info" value="<%=enc_info%>" />
<input type="hidden" name="enc_data" value="<%=enc_data%>" />
<input type="hidden" name="use_pay_method" value="<%=use_pay_method%>" />
<input type="hidden" name="cash_yn" value="<%=cash_yn%>" /> <!-- 현금영수증 등록여부-->
<input type="hidden" name="cash_tr_code" value="<%=cash_tr_code%>" />
<!-- 추가 파라미터 -->
<input type="hidden" name="param_opt_1" value="<%=param_opt_1%>" />
<input type="hidden" name="param_opt_2" value="<%=param_opt_2%>" />
<input type="hidden" name="param_opt_3" value="<%=param_opt_3%>" />
</form>
<!--//wrap-->
</body>
</html>
<?php
header("Content-type: text/html; charset=utf-8");
// 거래등록 응답 값
$approvalKey = $_POST[ "approvalKey" ]; // 거래등록키
$traceNo = $_POST[ "traceNo" ]; // 추적번호
$PayUrl = $_POST[ "PayUrl" ]; // 거래등록 PAY URL
// 인증시 필요한 결제수단 세팅 값
$pay_method = $_POST[ "pay_method" ]; // 결제수단
$actionResult = $_POST[ "actionResult" ];
$van_code = $_POST[ "van_code" ];
// 가맹점 리턴 URL
$Ret_URL = $_POST[ "Ret_URL" ];
/* kcp와 통신후 kcp 서버에서 전송되는 결제 요청 정보 */
$req_tx = $_POST[ "req_tx" ]; // 요청 종류
$res_cd = $_POST[ "res_cd" ]; // 응답 코드
$site_cd = $_POST[ "site_cd" ]; // 사이트 코드
$tran_cd = $_POST[ "tran_cd" ]; // 트랜잭션 코드
$ordr_idxx = $_POST[ "ordr_idxx" ]; // 쇼핑몰 주문번호
$good_name = $_POST[ "good_name" ]; // 상품명
$good_mny = $_POST[ "good_mny" ]; // 결제 총금액
$buyr_name = $_POST[ "buyr_name" ]; // 주문자명
$buyr_tel2 = $_POST[ "buyr_tel2" ]; // 주문자 핸드폰 번호
$buyr_mail = $_POST[ "buyr_mail" ]; // 주문자 E-mail 주소
$use_pay_method = $_POST[ "use_pay_method" ]; // 결제 방법
$enc_info = $_POST[ "enc_info" ]; // 암호화 정보
$enc_data = $_POST[ "enc_data" ]; // 암호화 데이터
$cash_yn = $_POST[ "cash_yn" ];
$cash_tr_code = $_POST[ "cash_tr_code" ];
/* 기타 파라메터 추가 부분 - Start - */
$param_opt_1 = $_POST[ "param_opt_1" ]; // 기타 파라메터 추가 부분
$param_opt_2 = $_POST[ "param_opt_2" ]; // 기타 파라메터 추가 부분
$param_opt_3 = $_POST[ "param_opt_3" ]; // 기타 파라메터 추가 부분
/* 기타 파라메터 추가 부분 - End - */
?>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<meta http-equiv="x-ua-compatible" content="ie=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=yes, target-densitydpi=medium-dpi">
<script type="text/javascript">
/* kcp web 결제창 호츨 (변경불가) */
function call_pay_form()
{
var v_frm = document.order_info;
var PayUrl = v_frm.PayUrl.value;
// 인코딩 방식에 따른 변경 -- Start
if(v_frm.encoding_trans == undefined)
{
v_frm.action = PayUrl;
}
else
{
// encoding_trans "UTF-8" 인 경우
if(v_frm.encoding_trans.value == "UTF-8")
{
v_frm.action = PayUrl.substring(0,PayUrl.lastIndexOf("/")) + "/jsp/encodingFilter/encodingFilter.jsp";
v_frm.PayUrl.value = PayUrl;
}
else
{
v_frm.action = PayUrl;
}
}
if (v_frm.Ret_URL.value == "")
{
/* Ret_URL값은 현 페이지의 URL 입니다. */
alert("연동시 Ret_URL을 반드시 설정하셔야 됩니다.");
return false;
}
else
{
v_frm.submit();
}
}
/* kcp 통신을 통해 받은 암호화 정보 체크 후 결제 요청 (변경불가) */
function chk_pay()
{
self.name = "tar_opener";
var pay_form = document.pay_form;
if (pay_form.res_cd.value != "" )
{
if (pay_form.res_cd.value != "0000" )
{
if (pay_form.res_cd.value == "3001")
{
alert("사용자가 취소하였습니다.");
}
pay_form.res_cd.value = "";
location.href = "./trade_reg.html"; // 샘플에서는 거래등록 페이지로 이동
}
}
if (pay_form.enc_info.value)
pay_form.submit();
}
</script>
</head>
<body onload="chk_pay();">
<div class="wrap">
<!-- 주문정보 입력 form : order_info -->
<form name="order_info" method="post">
<input type="text" name="ordr_idxx" value="<?=ordr_idxx ?>" maxlength="40" readonly />
<input type="text" name="good_name" value="<?=good_name ?>" readonly />
<input type="text" name="good_mny" value="<?=good_mny ?>" maxlength="9" readonly />
<input type="text" name="buyr_name" value="홍길동" />
<input type="text" name="buyr_tel2" value="010-0000-0000" />
<input type="text" name="buyr_mail" value="test@test.co.kr" />
<a href="#none" onclick="call_pay_form();" class="btn-type-2 pc-wd-3">결제요청</a>
<!-- 공통정보 -->
<input type="hidden" name="req_tx" value="pay" /> <!-- 요청 구분 -->
<input type="hidden" name="shop_name" value="TEST SITE" /> <!-- 사이트 이름 -->
<input type="hidden" name="site_cd" value="<?=site_cd ?>" /> <!-- 사이트 코드 -->
<input type="hidden" name="currency" value="410"/> <!-- 통화 코드 -->
<!-- 인증시 필요한 파라미터(변경불가)-->
<input type="hidden" name="escw_used" value="N" />
<input type="hidden" name="pay_method" value="<?=pay_method ?>" />
<input type="hidden" name="ActionResult" value="<?=actionResult ?>" />
<input type="hidden" name="van_code" value="<?=van_code ?>" />
<!-- 신용카드 설정 -->
<input type="hidden" name="quotaopt" value="12"/> <!-- 최대 할부개월수 -->
<!-- 가상계좌 설정 -->
<input type="hidden" name="ipgm_date" value="" />
<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
<input type="hidden" name="Ret_URL" value="<?=Ret_URL ?>" />
<!-- 화면 크기조정 -->
<input type="hidden" name="tablet_size" value="1.0 " />
<!-- 추가 파라미터 ( 가맹점에서 별도의 값전달시 param_opt 를 사용하여 값 전달 ) -->
<input type="hidden" name="param_opt_1" value="" />
<input type="hidden" name="param_opt_2" value="" />
<input type="hidden" name="param_opt_3" value="" />
<!-- 거래등록 응답값 -->
<input type="hidden" name="approval_key" id="approval" value="<?=approvalKey?>"/>
<input type="hidden" name="traceNo" value="<?=traceNo?>" />
<input type="hidden" name="PayUrl" value="<?=PayUrl?>" />
<!-- 인증창 호출 시 한글깨질 경우 encoding 처리 추가 (**인코딩 네임은 대문자)
<input type="hidden" name="encoding_trans" value="UTF-8" /> -->
</form>
</div>
<form name="pay_form" method="post" action="../kcp_api_pay.jsp">
<input type="hidden" name="req_tx" value="<?=req_tx?>" /> <!-- 요청 구분 -->
<input type="hidden" name="res_cd" value="<?=res_cd?>" /> <!-- 결과 코드 -->
<input type="hidden" name="site_cd" value="<?=site_cd?>" /> <!-- 사이트 코드 -->
<input type="hidden" name="tran_cd" value="<?=tran_cd?>" /> <!-- 트랜잭션 코드 -->
<input type="hidden" name="ordr_idxx" value="<?=ordr_idxx?>" /> <!-- 주문번호 -->
<input type="hidden" name="good_mny" value="<?=good_mny?>" /> <!-- 휴대폰 결제금액 -->
<input type="hidden" name="good_name" value="<?=good_name?>" /> <!-- 상품명 -->
<input type="hidden" name="buyr_name" value="<?=buyr_name?>" /> <!-- 주문자명 -->
<input type="hidden" name="buyr_tel2" value="<?=buyr_tel2?>" /> <!-- 주문자 휴대폰번호 -->
<input type="hidden" name="buyr_mail" value="<?=buyr_mail?>" /> <!-- 주문자 E-mail -->
<input type="hidden" name="enc_info" value="<?=enc_info?>" />
<input type="hidden" name="enc_data" value="<?=enc_data?>" />
<input type="hidden" name="use_pay_method" value="<?=use_pay_method?>" />
<input type="hidden" name="cash_yn" value="<?=cash_yn?>" /> <!-- 현금영수증 등록여부-->
<input type="hidden" name="cash_tr_code" value="<?=cash_tr_code?>" />
<!-- 추가 파라미터 -->
<input type="hidden" name="param_opt_1" value="<?=param_opt_1?>" />
<input type="hidden" name="param_opt_2" value="<?=param_opt_2?>" />
<input type="hidden" name="param_opt_3" value="<?=param_opt_3?>" />
</form>
<!--//wrap-->
</body>
</html>
<%@ Page Language="C#" %>
<%
// 거래등록 응답 값
String approvalKey = Request.Form[ "approvalKey" ]; // 거래등록키
String traceNo = Request.Form[ "traceNo" ]; // 추적번호
String PayUrl = Request.Form[ "PayUrl" ]; // 거래등록 PAY URL
// 인증시 필요한 결제수단 세팅 값
String pay_method = Request.Form[ "pay_method" ]; // 결제수단
String actionResult = Request.Form[ "actionResult" ];
String van_code = Request.Form[ "van_code" ];
// 가맹점 리턴 URL
String Ret_URL = Request.Form[ "Ret_URL" ];
/* kcp와 결제 통신후 kcp 서버에서 전송되는 결제 요청 정보 */
String req_tx = Request.Form[ "req_tx" ]; // 요청 종류
String res_cd = Request.Form[ "res_cd" ]; // 응답 코드
String site_cd = Request.Form[ "site_cd" ]; // 사이트코드
String tran_cd = Request.Form[ "tran_cd" ]; // 트랜잭션 코드
String ordr_idxx = Request.Form[ "ordr_idxx" ]; // 쇼핑몰 주문번호
String good_name = Request.Form[ "good_name" ]; // 상품명
String good_mny = Request.Form[ "good_mny" ]; // 결제 총금액
String buyr_name = Request.Form[ "buyr_name" ]; // 주문자명
String buyr_tel2 = Request.Form[ "buyr_tel2" ]; // 주문자 핸드폰 번호
String buyr_mail = Request.Form[ "buyr_mail" ]; // 주문자 E-mail 주소
String use_pay_method = Request.Form[ "use_pay_method" ]; // 결제 방법
String enc_info = Request.Form[ "enc_info" ]; // 암호화 정보
String enc_data = Request.Form[ "enc_data" ]; // 암호화 데이터
String cash_yn = Request.Form[ "cash_yn" ];
String cash_tr_code = Request.Form[ "cash_tr_code" ];
/* 기타 파라메터 추가 부분 - Start - */
String param_opt_1 = Request.Form[ "param_opt_1" ]; // 기타 파라메터 추가 부분
String param_opt_2 = Request.Form[ "param_opt_2" ]; // 기타 파라메터 추가 부분
String param_opt_3 = Request.Form[ "param_opt_3" ]; // 기타 파라메터 추가 부분
/* 기타 파라메터 추가 부분 - End - */
%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<meta http-equiv="x-ua-compatible" content="ie=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=yes, target-densitydpi=medium-dpi">
<script type="text/javascript">
/* kcp web 결제창 호츨 (변경불가) */
function call_pay_form()
{
var v_frm = document.order_info;
var PayUrl = v_frm.PayUrl.value;
// 인코딩 방식에 따른 변경 -- Start
if(v_frm.encoding_trans == undefined)
{
v_frm.action = PayUrl;
}
else
{
// encoding_trans "UTF-8" 인 경우
if(v_frm.encoding_trans.value == "UTF-8")
{
v_frm.action = PayUrl.substring(0,PayUrl.lastIndexOf("/")) + "/jsp/encodingFilter/encodingFilter.jsp";
v_frm.PayUrl.value = PayUrl;
}
else
{
v_frm.action = PayUrl;
}
}
if (v_frm.Ret_URL.value == "")
{
/* Ret_URL값은 현 페이지의 URL 입니다. */
alert("연동시 Ret_URL을 반드시 설정하셔야 됩니다.");
return false;
}
else
{
v_frm.submit();
}
}
/* kcp 통신을 통해 받은 암호화 정보 체크 후 결제 요청 (변경불가) */
function chk_pay()
{
self.name = "tar_opener";
var pay_form = document.pay_form;
if (pay_form.res_cd.value != "" )
{
if (pay_form.res_cd.value != "0000" )
{
if (pay_form.res_cd.value == "3001")
{
alert("사용자가 취소하였습니다.");
}
pay_form.res_cd.value = "";
location.href = "./trade_reg.html"; // 샘플에서는 거래등록 페이지로 이동
}
}
if (pay_form.enc_info.value)
pay_form.submit();
}
</script>
</head>
<body onload="chk_pay();">
<div class="wrap">
<!-- 주문정보 입력 form : order_info -->
<form name="order_info" method="post">
<input type="text" name="ordr_idxx" value="<%=ordr_idxx %>" maxlength="40" readonly />
<input type="text" name="good_name" value="<%=good_name %>" readonly />
<input type="text" name="good_mny" value="<%=good_mny %>" maxlength="9" readonly />
<input type="text" name="buyr_name" value="홍길동" />
<input type="text" name="buyr_tel2" value="010-0000-0000" />
<input type="text" name="buyr_mail" value="test@test.co.kr" />
<a href="#none" onclick="call_pay_form();" class="btn-type-2 pc-wd-3">결제요청</a>
<!-- 공통정보 -->
<input type="hidden" name="req_tx" value="pay" /> <!-- 요청 구분 -->
<input type="hidden" name="shop_name" value="TEST SITE" /> <!-- 사이트 이름 -->
<input type="hidden" name="site_cd" value="<%=site_cd %>" /> <!-- 사이트 코드 -->
<input type="hidden" name="currency" value="410"/> <!-- 통화 코드 -->
<!-- 인증시 필요한 파라미터(변경불가)-->
<input type="hidden" name="escw_used" value="N" />
<input type="hidden" name="pay_method" value="<%=pay_method %>" />
<input type="hidden" name="ActionResult" value="<%=actionResult %>" />
<input type="hidden" name="van_code" value="<%=van_code %>" />
<!-- 신용카드 설정 -->
<input type="hidden" name="quotaopt" value="12"/> <!-- 최대 할부개월수 -->
<!-- 가상계좌 설정 -->
<input type="hidden" name="ipgm_date" value="" />
<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
<input type="hidden" name="Ret_URL" value="<%=Ret_URL %>" />
<!-- 화면 크기조정 -->
<input type="hidden" name="tablet_size" value="1.0 " />
<!-- 추가 파라미터 ( 가맹점에서 별도의 값전달시 param_opt 를 사용하여 값 전달 ) -->
<input type="hidden" name="param_opt_1" value="" />
<input type="hidden" name="param_opt_2" value="" />
<input type="hidden" name="param_opt_3" value="" />
<!-- 거래등록 응답값 -->
<input type="hidden" name="approval_key" id="approval" value="<%=approvalKey%>"/>
<input type="hidden" name="traceNo" value="<%=traceNo%>" />
<input type="hidden" name="PayUrl" value="<%=PayUrl%>" />
<!-- 인증창 호출 시 한글깨질 경우 encoding 처리 추가 (**인코딩 네임은 대문자)
<input type="hidden" name="encoding_trans" value="UTF-8" /> -->
</form>
</div>
<form name="pay_form" method="post" action="../kcp_api_pay.jsp">
<input type="hidden" name="req_tx" value="<%=req_tx%>" /> <!-- 요청 구분 -->
<input type="hidden" name="res_cd" value="<%=res_cd%>" /> <!-- 결과 코드 -->
<input type="hidden" name="site_cd" value="<%=site_cd%>" /> <!-- 사이트 코드 -->
<input type="hidden" name="tran_cd" value="<%=tran_cd%>" /> <!-- 트랜잭션 코드 -->
<input type="hidden" name="ordr_idxx" value="<%=ordr_idxx%>" /> <!-- 주문번호 -->
<input type="hidden" name="good_mny" value="<%=good_mny%>" /> <!-- 휴대폰 결제금액 -->
<input type="hidden" name="good_name" value="<%=good_name%>" /> <!-- 상품명 -->
<input type="hidden" name="buyr_name" value="<%=buyr_name%>" /> <!-- 주문자명 -->
<input type="hidden" name="buyr_tel2" value="<%=buyr_tel2%>" /> <!-- 주문자 휴대폰번호 -->
<input type="hidden" name="buyr_mail" value="<%=buyr_mail%>" /> <!-- 주문자 E-mail -->
<input type="hidden" name="enc_info" value="<%=enc_info%>" />
<input type="hidden" name="enc_data" value="<%=enc_data%>" />
<input type="hidden" name="use_pay_method" value="<%=use_pay_method%>" />
<input type="hidden" name="cash_yn" value="<%=cash_yn%>" /> <!-- 현금영수증 등록여부-->
<input type="hidden" name="cash_tr_code" value="<%=cash_tr_code%>" />
<!-- 추가 파라미터 -->
<input type="hidden" name="param_opt_1" value="<%=param_opt_1%>" />
<input type="hidden" name="param_opt_2" value="<%=param_opt_2%>" />
<input type="hidden" name="param_opt_3" value="<%=param_opt_3%>" />
</form>
<!--//wrap-->
</body>
</html>
<!--#include file="../lib/json2.asp"-->
<%
Response.CharSet = "UTF-8"
' 거래등록 응답 값
approvalKey = trim(request( "approvalKey" ) ) ' 거래등록키
traceNo = trim(request( "traceNo" ) ) ' 추적번호
PayUrl = trim(request( "PayUrl" ) ) ' 거래등록 PAY URL
' 인증시 필요한 결제수단 세팅 값
pay_method = trim(request( "pay_method" ) ) ' 결제수단
actionResult = trim(request( "actionResult" ) )
van_code = trim(request( "van_code" ) )
' 가맹점 리턴 URL
Ret_URL = trim(request( "Ret_URL" ) )
' kcp와 결제 통신후 kcp 서버에서 전송되는 결제 요청 정보 '
req_tx = trim(request( "req_tx" ) ) ' 요청 종류
res_cd = trim(request( "res_cd" ) ) ' 응답 코드
site_cd = trim(request( "site_cd" ) ) ' 사이트코드
tran_cd = trim(request( "tran_cd" ) ) ' 트랜잭션 코드
ordr_idxx = trim(request( "ordr_idxx" ) ) ' 쇼핑몰 주문번호
good_name = trim(request( "good_name" ) ) ' 상품명
good_mny = trim(request( "good_mny" ) ) ' 결제 총금액
buyr_name = trim(request( "buyr_name" ) ) ' 주문자명
buyr_tel2 = trim(request( "buyr_tel2" ) ) ' 주문자 핸드폰 번호
buyr_mail = trim(request( "buyr_mail" ) ) ' 주문자 E-mail 주소
use_pay_method = trim(request( "use_pay_method" ) ) ' 결제 방법
enc_info = trim(request( "enc_info" ) ) ' 암호화 정보
enc_data = trim(request( "enc_data" ) ) ' 암호화 데이터
cash_yn = trim(request( "cash_yn" ) )
cash_tr_code = trim(request( "cash_tr_code" ) )
' 기타 파라메터 추가 부분 - Start - '
param_opt_1 = trim(request( "param_opt_1" ) ) ' 기타 파라메터 추가 부분
param_opt_2 = trim(request( "param_opt_2" ) ) ' 기타 파라메터 추가 부분
param_opt_3 = trim(request( "param_opt_3" ) ) ' 기타 파라메터 추가 부분
' 기타 파라메터 추가 부분 - End - '
%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<meta http-equiv="x-ua-compatible" content="ie=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=yes, target-densitydpi=medium-dpi">
<script type="text/javascript">
/* kcp web 결제창 호츨 (변경불가) */
function call_pay_form()
{
var v_frm = document.order_info;
var PayUrl = v_frm.PayUrl.value;
// 인코딩 방식에 따른 변경 -- Start
if(v_frm.encoding_trans == undefined)
{
v_frm.action = PayUrl;
}
else
{
// encoding_trans "UTF-8" 인 경우
if(v_frm.encoding_trans.value == "UTF-8")
{
v_frm.action = PayUrl.substring(0,PayUrl.lastIndexOf("/")) + "/jsp/encodingFilter/encodingFilter.jsp";
v_frm.PayUrl.value = PayUrl;
}
else
{
v_frm.action = PayUrl;
}
}
if (v_frm.Ret_URL.value == "")
{
/* Ret_URL값은 현 페이지의 URL 입니다. */
alert("연동시 Ret_URL을 반드시 설정하셔야 됩니다.");
return false;
}
else
{
v_frm.submit();
}
}
/* kcp 통신을 통해 받은 암호화 정보 체크 후 결제 요청 (변경불가) */
function chk_pay()
{
self.name = "tar_opener";
var pay_form = document.pay_form;
if (pay_form.res_cd.value != "" )
{
if (pay_form.res_cd.value != "0000" )
{
if (pay_form.res_cd.value == "3001")
{
alert("사용자가 취소하였습니다.");
}
pay_form.res_cd.value = "";
location.href = "./trade_reg.html"; // 샘플에서는 거래등록 페이지로 이동
}
}
if (pay_form.enc_info.value)
pay_form.submit();
}
</script>
</head>
<body onload="chk_pay();">
<div class="wrap">
<!-- 주문정보 입력 form : order_info -->
<form name="order_info" method="post">
<input type="text" name="ordr_idxx" value="<%=ordr_idxx %>" maxlength="40" readonly />
<input type="text" name="good_name" value="<%=good_name %>" readonly />
<input type="text" name="good_mny" value="<%=good_mny %>" maxlength="9" readonly />
<input type="text" name="buyr_name" value="홍길동" />
<input type="text" name="buyr_tel2" value="010-0000-0000" />
<input type="text" name="buyr_mail" value="test@test.co.kr" />
<a href="#none" onclick="call_pay_form();" class="btn-type-2 pc-wd-3">결제요청</a>
<!-- 공통정보 -->
<input type="hidden" name="req_tx" value="pay" /> <!-- 요청 구분 -->
<input type="hidden" name="shop_name" value="TEST SITE" /> <!-- 사이트 이름 -->
<input type="hidden" name="site_cd" value="<%=site_cd %>" /> <!-- 사이트 코드 -->
<input type="hidden" name="currency" value="410"/> <!-- 통화 코드 -->
<!-- 인증시 필요한 파라미터(변경불가)-->
<input type="hidden" name="escw_used" value="N" />
<input type="hidden" name="pay_method" value="<%=pay_method %>" />
<input type="hidden" name="ActionResult" value="<%=actionResult %>" />
<input type="hidden" name="van_code" value="<%=van_code %>" />
<!-- 신용카드 설정 -->
<input type="hidden" name="quotaopt" value="12"/> <!-- 최대 할부개월수 -->
<!-- 가상계좌 설정 -->
<input type="hidden" name="ipgm_date" value="" />
<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
<input type="hidden" name="Ret_URL" value="<%=Ret_URL %>" />
<!-- 화면 크기조정 -->
<input type="hidden" name="tablet_size" value="1.0 " />
<!-- 추가 파라미터 ( 가맹점에서 별도의 값전달시 param_opt 를 사용하여 값 전달 ) -->
<input type="hidden" name="param_opt_1" value="" />
<input type="hidden" name="param_opt_2" value="" />
<input type="hidden" name="param_opt_3" value="" />
<!-- 거래등록 응답값 -->
<input type="hidden" name="approval_key" id="approval" value="<%=approvalKey%>"/>
<input type="hidden" name="traceNo" value="<%=traceNo%>" />
<input type="hidden" name="PayUrl" value="<%=PayUrl%>" />
<!-- 인증창 호출 시 한글깨질 경우 encoding 처리 추가 (**인코딩 네임은 대문자)
<input type="hidden" name="encoding_trans" value="UTF-8" /> -->
</form>
</div>
<form name="pay_form" method="post" action="../kcp_api_pay.jsp">
<input type="hidden" name="req_tx" value="<%=req_tx%>" /> <!-- 요청 구분 -->
<input type="hidden" name="res_cd" value="<%=res_cd%>" /> <!-- 결과 코드 -->
<input type="hidden" name="site_cd" value="<%=site_cd%>" /> <!-- 사이트 코드 -->
<input type="hidden" name="tran_cd" value="<%=tran_cd%>" /> <!-- 트랜잭션 코드 -->
<input type="hidden" name="ordr_idxx" value="<%=ordr_idxx%>" /> <!-- 주문번호 -->
<input type="hidden" name="good_mny" value="<%=good_mny%>" /> <!-- 휴대폰 결제금액 -->
<input type="hidden" name="good_name" value="<%=good_name%>" /> <!-- 상품명 -->
<input type="hidden" name="buyr_name" value="<%=buyr_name%>" /> <!-- 주문자명 -->
<input type="hidden" name="buyr_tel2" value="<%=buyr_tel2%>" /> <!-- 주문자 휴대폰번호 -->
<input type="hidden" name="buyr_mail" value="<%=buyr_mail%>" /> <!-- 주문자 E-mail -->
<input type="hidden" name="enc_info" value="<%=enc_info%>" />
<input type="hidden" name="enc_data" value="<%=enc_data%>" />
<input type="hidden" name="use_pay_method" value="<%=use_pay_method%>" />
<input type="hidden" name="cash_yn" value="<%=cash_yn%>" /> <!-- 현금영수증 등록여부-->
<input type="hidden" name="cash_tr_code" value="<%=cash_tr_code%>" />
<!-- 추가 파라미터 -->
<input type="hidden" name="param_opt_1" value="<%=param_opt_1%>" />
<input type="hidden" name="param_opt_2" value="<%=param_opt_2%>" />
<input type="hidden" name="param_opt_3" value="<%=param_opt_3%>" />
</form>
<!--//wrap-->
</body>
</html>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<meta http-equiv="x-ua-compatible" content="ie=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=yes, target-densitydpi=medium-dpi">
<script type="text/javascript">
/* kcp web 결제창 호츨 (변경불가) */
function call_pay_form()
{
var v_frm = document.order_info;
var PayUrl = v_frm.PayUrl.value;
// 인코딩 방식에 따른 변경 -- Start
if(v_frm.encoding_trans == undefined)
{
v_frm.action = PayUrl;
}
else
{
// encoding_trans "UTF-8" 인 경우
if(v_frm.encoding_trans.value == "UTF-8")
{
v_frm.action = PayUrl.substring(0,PayUrl.lastIndexOf("/")) + "/jsp/encodingFilter/encodingFilter.jsp";
v_frm.PayUrl.value = PayUrl;
}
else
{
v_frm.action = PayUrl;
}
}
if (v_frm.Ret_URL.value == "")
{
/* Ret_URL값은 현 페이지의 URL 입니다. */
alert("연동시 Ret_URL을 반드시 설정하셔야 됩니다.");
return false;
}
else
{
v_frm.submit();
}
}
/* kcp 통신을 통해 받은 암호화 정보 체크 후 결제 요청 (변경불가) */
function chk_pay()
{
self.name = "tar_opener";
var pay_form = document.pay_form;
if (pay_form.res_cd.value != "" )
{
if (pay_form.res_cd.value != "0000" )
{
if (pay_form.res_cd.value == "3001")
{
alert("사용자가 취소하였습니다.");
}
pay_form.res_cd.value = "";
location.href = "./trade_reg.html"; // 샘플에서는 거래등록 페이지로 이동
}
}
if (pay_form.enc_info.value)
pay_form.submit();
}
</script>
</head>
<body onload="chk_pay();">
<div class="wrap">
<!-- 주문정보 입력 form : order_info -->
<form name="order_info" method="post">
<input type="text" name="ordr_idxx" value="<%=ordr_idxx %>" maxlength="40" readonly />
<input type="text" name="good_name" value="<%=good_name %>" readonly />
<input type="text" name="good_mny" value="<%=good_mny %>" maxlength="9" readonly />
<input type="text" name="buyr_name" value="홍길동" />
<input type="text" name="buyr_tel2" value="010-0000-0000" />
<input type="text" name="buyr_mail" value="test@test.co.kr" />
<a href="#none" onclick="call_pay_form();" class="btn-type-2 pc-wd-3">결제요청</a>
<!-- 공통정보 -->
<input type="hidden" name="req_tx" value="pay" /> <!-- 요청 구분 -->
<input type="hidden" name="shop_name" value="TEST SITE" /> <!-- 사이트 이름 -->
<input type="hidden" name="site_cd" value="<%=site_cd %>" /> <!-- 사이트 코드 -->
<input type="hidden" name="currency" value="410"/> <!-- 통화 코드 -->
<!-- 인증시 필요한 파라미터(변경불가)-->
<input type="hidden" name="escw_used" value="N" />
<input type="hidden" name="pay_method" value="<%=pay_method %>" />
<input type="hidden" name="ActionResult" value="<%=actionResult %>" />
<input type="hidden" name="van_code" value="<%=van_code %>" />
<!-- 신용카드 설정 -->
<input type="hidden" name="quotaopt" value="12"/> <!-- 최대 할부개월수 -->
<!-- 가상계좌 설정 -->
<input type="hidden" name="ipgm_date" value="" />
<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
<input type="hidden" name="Ret_URL" value="<%=Ret_URL %>" />
<!-- 화면 크기조정 -->
<input type="hidden" name="tablet_size" value="1.0 " />
<!-- 추가 파라미터 ( 가맹점에서 별도의 값전달시 param_opt 를 사용하여 값 전달 ) -->
<input type="hidden" name="param_opt_1" value="" />
<input type="hidden" name="param_opt_2" value="" />
<input type="hidden" name="param_opt_3" value="" />
<!-- 거래등록 응답값 -->
<input type="hidden" name="approval_key" id="approval" value="<%=approvalKey%>"/>
<input type="hidden" name="traceNo" value="<%=traceNo%>" />
<input type="hidden" name="PayUrl" value="<%=PayUrl%>" />
<!-- 인증창 호출 시 한글깨질 경우 encoding 처리 추가 (**인코딩 네임은 대문자)
<input type="hidden" name="encoding_trans" value="UTF-8" /> -->
</form>
</div>
<form name="pay_form" method="post" action="../kcp_api_pay.jsp">
<input type="hidden" name="req_tx" value="<%=req_tx%>" /> <!-- 요청 구분 -->
<input type="hidden" name="res_cd" value="<%=res_cd%>" /> <!-- 결과 코드 -->
<input type="hidden" name="site_cd" value="<%=site_cd%>" /> <!-- 사이트 코드 -->
<input type="hidden" name="tran_cd" value="<%=tran_cd%>" /> <!-- 트랜잭션 코드 -->
<input type="hidden" name="ordr_idxx" value="<%=ordr_idxx%>" /> <!-- 주문번호 -->
<input type="hidden" name="good_mny" value="<%=good_mny%>" /> <!-- 휴대폰 결제금액 -->
<input type="hidden" name="good_name" value="<%=good_name%>" /> <!-- 상품명 -->
<input type="hidden" name="buyr_name" value="<%=buyr_name%>" /> <!-- 주문자명 -->
<input type="hidden" name="buyr_tel2" value="<%=buyr_tel2%>" /> <!-- 주문자 휴대폰번호 -->
<input type="hidden" name="buyr_mail" value="<%=buyr_mail%>" /> <!-- 주문자 E-mail -->
<input type="hidden" name="enc_info" value="<%=enc_info%>" />
<input type="hidden" name="enc_data" value="<%=enc_data%>" />
<input type="hidden" name="use_pay_method" value="<%=use_pay_method%>" />
<input type="hidden" name="cash_yn" value="<%=cash_yn%>" /> <!-- 현금영수증 등록여부-->
<input type="hidden" name="cash_tr_code" value="<%=cash_tr_code%>" />
<!-- 추가 파라미터 -->
<input type="hidden" name="param_opt_1" value="<%=param_opt_1%>" />
<input type="hidden" name="param_opt_2" value="<%=param_opt_2%>" />
<input type="hidden" name="param_opt_3" value="<%=param_opt_3%>" />
</form>
<!--//wrap-->
</body>
</html>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<meta http-equiv="x-ua-compatible" content="ie=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=yes, target-densitydpi=medium-dpi">
<script type="text/javascript">
/* kcp web 결제창 호츨 (변경불가) */
function call_pay_form()
{
var v_frm = document.order_info;
var PayUrl = v_frm.PayUrl.value;
// 인코딩 방식에 따른 변경 -- Start
if(v_frm.encoding_trans == undefined)
{
v_frm.action = PayUrl;
}
else
{
// encoding_trans "UTF-8" 인 경우
if(v_frm.encoding_trans.value == "UTF-8")
{
v_frm.action = PayUrl.substring(0,PayUrl.lastIndexOf("/")) + "/jsp/encodingFilter/encodingFilter.jsp";
v_frm.PayUrl.value = PayUrl;
}
else
{
v_frm.action = PayUrl;
}
}
if (v_frm.Ret_URL.value == "")
{
/* Ret_URL값은 현 페이지의 URL 입니다. */
alert("연동시 Ret_URL을 반드시 설정하셔야 됩니다.");
return false;
}
else
{
v_frm.submit();
}
}
/* kcp 통신을 통해 받은 암호화 정보 체크 후 결제 요청 (변경불가) */
function chk_pay()
{
self.name = "tar_opener";
var pay_form = document.pay_form;
if (pay_form.res_cd.value != "" )
{
if (pay_form.res_cd.value != "0000" )
{
if (pay_form.res_cd.value == "3001")
{
alert("사용자가 취소하였습니다.");
}
pay_form.res_cd.value = "";
location.href = "./trade_reg.html"; // 샘플에서는 거래등록 페이지로 이동
}
}
if (pay_form.enc_info.value)
pay_form.submit();
}
</script>
</head>
<body onload="chk_pay();">
<div class="wrap">
<!-- 주문정보 입력 form : order_info -->
<form name="order_info" method="post">
<input type="text" name="ordr_idxx" value="" maxlength="40" readonly />
<input type="text" name="good_name" value="" readonly />
<input type="text" name="good_mny" value="" maxlength="9" readonly />
<input type="text" name="buyr_name" value="홍길동" />
<input type="text" name="buyr_tel2" value="010-0000-0000" />
<input type="text" name="buyr_mail" value="test@test.co.kr" />
<a href="#none" onclick="call_pay_form();" class="btn-type-2 pc-wd-3">결제요청</a>
<!-- 공통정보 -->
<input type="hidden" name="req_tx" value="pay" /> <!-- 요청 구분 -->
<input type="hidden" name="shop_name" value="TEST SITE" /> <!-- 사이트 이름 -->
<input type="hidden" name="site_cd" value="" > <!-- 사이트 코드 -->
<input type="hidden" name="currency" value="410"/> <!-- 통화 코드 -->
<!-- 인증시 필요한 파라미터(변경불가)-->
<input type="hidden" name="escw_used" value="N" />
<input type="hidden" name="pay_method" value="" />
<input type="hidden" name="ActionResult" value="" />
<input type="hidden" name="van_code" value="" />
<!-- 신용카드 설정 -->
<input type="hidden" name="quotaopt" value="12"/> <!-- 최대 할부개월수 -->
<!-- 가상계좌 설정 -->
<input type="hidden" name="ipgm_date" value="" />
<!-- 리턴 URL (kcp와 통신후 결제를 요청할 수 있는 암호화 데이터를 전송 받을 가맹점의 주문페이지 URL) -->
<input type="hidden" name="Ret_URL" value="" />
<!-- 화면 크기조정 -->
<input type="hidden" name="tablet_size" value="1.0 " />
<!-- 추가 파라미터 ( 가맹점에서 별도의 값전달시 param_opt 를 사용하여 값 전달 ) -->
<input type="hidden" name="param_opt_1" value="" />
<input type="hidden" name="param_opt_2" value="" />
<input type="hidden" name="param_opt_3" value="" />
<!-- 거래등록 응답값 -->
<input type="hidden" name="approval_key" id="approval" value=""/>
<input type="hidden" name="traceNo" value="" />
<input type="hidden" name="PayUrl" value="" />
<!-- 인증창 호출 시 한글깨질 경우 encoding 처리 추가 (**인코딩 네임은 대문자)
<input type="hidden" name="encoding_trans" value="UTF-8" /> -->
</form>
</div>
<form name="pay_form" method="post" action="../kcp_api_pay.jsp">
<input type="hidden" name="req_tx" value="" /> <!-- 요청 구분 -->
<input type="hidden" name="res_cd" value="" /> <!-- 결과 코드 -->
<input type="hidden" name="site_cd" value="" /> <!-- 사이트 코드 -->
<input type="hidden" name="tran_cd" value="" /> <!-- 트랜잭션 코드 -->
<input type="hidden" name="ordr_idxx" value="" /> <!-- 주문번호 -->
<input type="hidden" name="good_mny" value="" /> <!-- 휴대폰 결제금액 -->
<input type="hidden" name="good_name" value="" /> <!-- 상품명 -->
<input type="hidden" name="buyr_name" value="" /> <!-- 주문자명 -->
<input type="hidden" name="buyr_tel2" value="" /> <!-- 주문자 휴대폰번호 -->
<input type="hidden" name="buyr_mail" value="" /> <!-- 주문자 E-mail -->
<input type="hidden" name="enc_info" value="" />
<input type="hidden" name="enc_data" value="" />
<input type="hidden" name="use_pay_method" value="" />
<input type="hidden" name="cash_yn" value="" /> <!-- 현금영수증 등록여부-->
<input type="hidden" name="cash_tr_code" value="" />
<!-- 추가 파라미터 -->
<input type="hidden" name="param_opt_1" value="" />
<input type="hidden" name="param_opt_2" value="" />
<input type="hidden" name="param_opt_3" value="" />
</form>
<!--//wrap-->
</body>
</html>
인증파라미터 가이드
리턴 파라미터
enc_data
결제창 인증결과 암호화 정보
통합 결제 창으로부터 전달 받는 인증결과 암호화 데이터
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.
enc_info
결제창 인증결과 암호화 정보
통합 결제 창으로부터 전달 받는 인증결과 암호화 데이터
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.
tran_cd
결제요청타입
통합 결제 창에서 처리하여 전달받는 상태 코드 값
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.
※ 해당 값은 KCP 시스템에서 추가 및 변경이 되는 값으로 상점에서 자체 관리가 불가한 값입니다.
인증 리턴 데이터
<!-- 인증 리턴 데이터 수신 예시 -->
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로 승인요청 하세요.
승인요청을 위한 kcp_cert_info 인증서 데이터 발급은 참고사항의 서버인증서 와 아래 가이드를 참고해주세요.
<!-- API 호출 -->
1https://spl.kcp.co.kr/gw/enc/v1/payment
테스트 환경 : https://stg-spl.kcp.co.kr/gw/enc/v1/payment
승인요청데이터
승인요청 데이터는 Json String 전송방식으로 요청 하세요.
<!-- 승인요청 데이터 -->
1{
2 "tran_cd":”00100000”,
3 "ordr_mony":"1004",
4 "kcp_cert_info":"-----BEGIN CERTIFICATE-----MIID3DCCAsSgAwIBAgIJAM...=-----END CERTIFICATE-----",
5 "site_cd":"T1234",
6 "enc_data":"SnvXdGftIEjAequorkpNhJXc4u3GRuotLHW9vyDDOhdeorM4DPXMJgJlIEoRo6divo=",
7 "enc_info":"A12345B12345"
8}
Type : json / application
결제 응답 전문의 경우 동일한 형태로 리턴됩니다.
서비스 인증서
NHN KCP 발급 인증서 내 데이터 값 추출,
가맹점 인증을 위해 KCP로부터 발급 받은 인증서 정보를 text 형식으로 전달해주셔야 하며,
인증서의 text 값을 데이터 직렬화하여 kcp_cert_info 의 value 값으로 전달하시기 바랍니다.
kcp_cert_info는 결제 승인 취소 거래등록 조회 시에 필요합니다.
KCP 서비스 인증서 관련 상세 내용은 서버 인증서 페이지를 참고 부탁 드립니다.
승인요청 파라미터 가이드
승인요청 파라미터
site_cd
KCP발급 사이트(상점)코드
가입 시 발송해드리는 연동메일 참조 / 테스트코드 : T0000
kcp_cert_info
KCP 인증서정보(직렬화)
관리자 페이지에서 발급받은 인증서 정보(직렬화 하여 요청)
enc_data
결제창 인증결과 암호화 정보
통합 결제 창으로부터 전달 받는 인증결과 암호화 데이터
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.
enc_info
결제창 인증결과 암호화 정보
통합 결제 창으로부터 전달 받는 인증결과 암호화 데이터
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.
tran_cd
결제요청타입
통합 결제 창에서 처리하여 전달받는 상태 코드 값
※ 절대 임의로 변경 불가하며 결제 창에서 내려 주는 값을 그대로 사용 부탁 드립니다.
※ 해당 값은 KCP 시스템에서 추가 및 변경이 되는 값으로 상점에서 자체 관리가 불가한 값입니다.
ordr_mony
실제 결제요청 금액
API 승인처리 예시
String target_URL = "https://stg-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);
json_req.put("ordr_mony",ordr_mony);
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 = [
'tran_cd' => $tran_cd,
'site_cd' => $site_cd,
'kcp_cert_info' => $kcp_cert_info,
'enc_data' => $enc_data,
'enc_info' => $enc_info,
'ordr_mony' => $ordr_mony
];
$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 = "{\"tran_cd\" : \"" + tran_cd + "\"," +
"\"site_cd\":\"" + site_cd + "\"," +
"\"kcp_cert_info\":\"" + KCP_CERT_INFO + "\"," +
"\"enc_data\":\"" + enc_data + "\"," +
"\"enc_info\":\"" + enc_info + "\"," +
"\"ordr_mony\":\"" + ordr_mony + "\"}";
// 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 = "{""tran_cd"":""" & tran_cd & """,""site_cd"":""" & site_cd & """,""kcp_cert_info"":""" & kcp_cert_info & """,""enc_data"":""" & enc_data & """,""enc_info"":""" & enc_info & """,""ordr_mony"":""" & ordr_mony & """}"
' 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),
ordr_mony : '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 = {
'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']),
'ordr_mony' : '1' # ** 1 원은 실제로 업체에서 결제하셔야 될 원 금액을 넣어주셔야 합니다. 결제금액 유효성 검증 **
}
res = requests.post(target_URL, headers=headers, data=json.dumps(req_data, ensure_ascii=False, indent="\t").encode('utf8'))
승인응답 파라미터 가이드
공통응답 파라미터
승인성공 파라미터
res_cd
결과코드
정상 승인이 이루어졌을 경우 ‘0000’ 값 리턴
res_msg
결과메세지
res_en_msg
영문 결과 메시지
pay_method
응답결제수단
신용카드 - PACA
계좌이체 - PABK
가상계좌 - PAVC
포인트 - PAPT
휴대폰 - PAMC
상품권 - PATK
카카오머니 - PAKM
네이버페이 포인트 - PANP
페이코 포인트 - PACP
tno
NHN KCP 거래 고유번호
※ 거래고유번호 전체로 사용 하시기 바랍니다.
(임의의 숫자나 파싱하여 사용 불가)
amount
결제 금액
결제 건의 총 결제 금액이 리턴 됩니다.
최종 결제 금액의 처리는 승인완료 후 리턴 데이터 중 amount 로 처리하여야 하며 반드시 업체의 DB금액과 비교하여 검증하시기 바랍니다
승인실패 파라미터
res_cd
결과코드
정상 승인이 이루어졌을 경우 ‘0000’ 값 리턴
res_msg
결과메세지
승인응답 파라미터
신용카드 결제 응답
card_cd
결제 건의 발급 사 코드
card_name
결제 건의 발급 사 명
card_no
결제 건의 카드번호 (카드번호 16자리 중 3번째구간은 마스킹)
app_no
결제 건의 승인번호
app_time
결제 건의 결제(승인) 시간
noinf
결제 건의 무이자 여부
noinf_type
noinf = Y 일 때 (무이자 결제인 경우)
카드사 이벤트 무이자인 경우 : CARD
상점 부담 무이자인 경우 : SHOP
quota
결제 건의 할부 기간
card_mny
결제 건의 총 결제금액 중 신용카드 결제금액
만약 총 결제금액(amount) 10000 원 중 쿠폰할인 2000 원 받았다면 card_mny=8000 이 됩니다.
*페이코 포인트, 쿠폰 100% 결제 시 card_mny=0 으로 리턴될 수 있으니 반드시
총 결제 금액 처리는 amount 금액으로 체크하시기 바랍니다.
coupon_mny
결제 건의 무이자 여부결제 건의 쿠폰 할인, 페이코 포인트 사용 금액
결제 건의 쿠폰 할인 금액 또는 페이코 포인트 사용 금액이 리턴됩니다.
만약 총 결제금액(amount) 10000 원 중 쿠폰 할인을 2000 원 받았다면 coupon_mny=2000 이 됩니다.
partcanc_yn
결제 건의 부분취소 가능 유무
card_bin_type_01
결제 건의 카드 구분 정보
개인 : 0 / 법인 : 1
card_bin_type_02
결제 건의 카드 구분 정보
일반 : 0 / 체크 : 1
isp_issuer_cd
ISP 계열 카드 발급 사 코드
BC96 : 케이뱅크카드
KM90 : 카카오뱅크카드
isp_issuer_nm
ISP 계열 카드 발급 사 명
카카오뱅크의 경우 카카오뱅크 케이뱅크의 경우 K뱅크카드로 리턴됨.
payco_point_mny
결제 건의 페이코 포인트 사용 금액
계좌이체 결제 응답
bankname
결제 건의 은행 명
※ 테스트서버에서 계좌이체 테스트 시 금융결제원과 협의된 은행 코드로 리턴됩니다.
bankcode
결제 건의 은행코드
※ 테스트서버에서 계좌이체 테스트 시 금융결제원과 협의된 은행 코드로 리턴됩니다.
cash_authno
현금영수증 승인번호
NHN KCP 결제 창에서 현금영수증 등록 요청한 결제 건의 현금영수증 승인번호
cash_no
NHN KCP 결제 창에서 현금영수증 등록 요청한 결제 건의 현금영수증 거래번호
bk_mny
결제 건의 계좌이체 결제 금액
app_time
결제건의 계좌발급 시간
가상계좌 결제 응답
bankname
결제 건의 은행 명
bankcode
결제 건의 은행코드
account
결제 건의 가상계좌 번호
va_date
가상계좌 입금마감일
app_time
결제건의 계좌발급 시간
휴대폰 결제 응답
van_cd
결제 건의 결제 사 코드
van_id
결제 건의 실물/컨텐츠 구분
commid
결제 건의 통신사 코드
mobile_no
결제 건의 휴대폰 번호
포인트 결제 응답
pnt_amount
결제 건의 포인트 결제 금액
pnt_issue
결제 건의 결제 사 코드
pnt_app_no
결제 건의 포인트 승인번호
pnt_app_time
결제 건의 포인트 승인시각
pnt_receipt_gubn
결제 건의 현금영수증 등록유무
cash_authno
결제 건의 현금영수증 승인번호
add_pnt
결제 건의 적립/사용 포인트
use_pnt
결제 건의 가용 포인트
rsv_pnt
결제 건의 총 포인트
상품권 결제 응답
tk_mny
결제 건의 상품권 결제 금액
tk_van_code
결제 건의 결제 사 코드
tk_app_no
결제 건의 승인번호
tk_app_time
결제 건의 승인시간
현금영수증 응답
cash_authno
현금영수증 승인번호
cash_no
현금영수증 거래번호
승인처리 구성하기
승인처리 페이지 구성시 승인요청 서명데이터생성 망취소 결과처리 로직을 포함 할 수 있습니다.
망취소 로직은 거래취소 페이지를 참고 부탁 드리겠습니다.
서명데이터생성 로직은 참고사항의 서버인증서 페이지를 참고 부탁 드리겠습니다.
결제창 호출, 승인처리를 포함한 전체 샘플이 필요하신 경우 다운로드 자료실을 이용해 주세요.