거래등록 API
해당 페이지는 표준결제, 휴대폰결제, 자동결제, 에스크로 가이드의 1. Mobile 거래등록 하기에 대해 설명합니다.
거래등록은 Mobile 환경에서 결제창 또는 배치키 발급 결제창을 호출하기 전에 주문 및 결제 정보를 NHN KCP 서버에 등록하는 API입니다.
먼저 Guide에서 전체 연동 흐름을 확인하고, 거래등록이 정상 처리되면 응답받은 approvalKey와 PayUrl을 결제창 호출 단계에서 사용하세요.
요약
대상 서비스
표준결제, 휴대폰결제, 자동결제, 에스크로
HTTP Method
POST 방식으로 JSON Body를 전송합니다.
Content-Type
application/json; charset=utf-8 형식으로 요청합니다.
통신 보안
TLS 1.2 이상 환경에서 통신합니다.
테스트 URL
https://testsmpay.kcp.co.kr/trade/register.do
운영 URL
https://smpay.kcp.co.kr/trade/register.do
정상 응답 기준
Code 값이 0000이면 정상 처리입니다.
요청 정보
Request Body 예시
{
"site_cd": "T0000",
"ordr_idxx": "TEST123456789",
"good_mny": "1004",
"good_name": "운동화",
"pay_method": "CARD",
"Ret_URL": "https://example.com/kcp/return",
"user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X)"
} 서비스별 요청 차이
표준결제
pay_method는 CARD, BANK, MOBX, TPNT, GIFT 중 하나를 사용합니다.
에스크로
pay_method에 VCNT 가상계좌가 추가됩니다.
에스크로 거래등록 시 escw_used는 필수이며, 에스크로 이용은 Y, 일반결제 처리는 N으로 설정합니다.
자동결제
pay_method는 일반 결제수단 코드가 아니라 AUTH 고정값을 사용합니다.
요청 파라미터
표준결제 : CARD(카드), BANK(계좌이체), MOBX(휴대폰), TPNT(포인트), GIFT(상품권)
휴대폰결제 : MOBX(휴대폰)
에스크로 : CARD(카드), BANK(계좌이체), VCNT(가상계좌), MOBX(휴대폰), TPNT(포인트), GIFT(상품권)
자동결제 : AUTH 고정값ex) pay_method: CARD
※ 거래등록 시 전송한 Ret_URL 값과 동일한 값을 결제창 호출 form에도 함께 전송해야 합니다.
※ 콜백 응답 Body는 EUC-KR로 인코딩되어 전달되므로, 가맹점 서버에서 디코딩 처리가 필요합니다.ex) Ret_URL: https://example.com/kcp/return
응답 정보
정상 처리 시 Code 값으로 0000이 리턴됩니다. 이후 결제창 호출 단계에서 approvalKey와 PayUrl을 사용합니다.
Response Body 예시
{
"Code": "0000",
"Message": "Success",
"approvalKey": "ockLyC3QH...iEPEo1cQ=",
"PayUrl": "https://testsmpay.kcp.co.kr/pay/mobileGW.kcp",
"hashData": "cn447332cab4...93f6736653bb",
"traceNo": "T0000LY89KT2OX12",
"paymentMethod": "CARD"
}응답 파라미터
구현 참고사항
JSP 샘플은 API 스펙 확인 후 실제 구현 흐름을 참고할 때 확인하세요.
JSP 샘플 구현 포인트 보기
JSP/PHP 샘플에서는 서버에서 거래등록 API를 호출하고, 정상 응답 시 approvalKey와 PayUrl을 결제창 호출 페이지로 전달합니다.
// 거래등록 API URL String target_URL = "https://testsmpay.kcp.co.kr/trade/register.do"; // 공통 요청 JSON 구성 json_req.put("site_cd", site_cd); json_req.put("ordr_idxx", ordr_idxx); json_req.put("good_mny", good_mny); json_req.put("good_name", good_name); // pay_method 서비스별 설정 // 표준결제: CARD, BANK, MOBX, TPNT, GIFT // 휴대폰결제: MOBX // 에스크로: CARD, BANK, VCNT, MOBX, TPNT, GIFT // 자동결제: AUTH 고정값 json_req.put("pay_method", pay_method); json_req.put("Ret_URL", Ret_URL); // 에스크로 사용 시 필수 json_req.put("escw_used", escw_used); // 선택값 json_req.put("user_agent", user_agent); // API 요청 Header conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Accept-Charset", "UTF-8"); // 정상 응답이면 approvalKey, PayUrl을 결제창 호출 단계로 전달 if ("0000".equals(Code)) { // approvalKey, PayUrl 등을 다음 페이지로 전달 }