CookiePay API 매뉴얼

인증 결제

인증결제 요청전문

인증(일반), 해외원화, 해외달러 결제 > 공통전문

기본도메인(요청도메인)
라이브 : https://www.cookiepayments.com [POST] 
테스트 : https://sandbox.cookiepayments.com [POST] 
URL
{요청도메인}/pay/ready [POST]
JAVASCRIPT

쿠키페이 라이브러리 추가

jQuery 1.0 이상이 설치되어 있어야 합니다

<script type="text/javascript" src="{요청도메인}/js/cookiepayments-1.1.3.js"></script>

결제 준비하기

cookiepayments.init({
    api_id : 'abcde12345', //쿠키페이 결제 연동 id
});

결제 요청하기

cookiepayments.payrequest({
    ORDERNO: $("#ORDERNO").val(), //주문번호 (필수)
    PRODUCTNAME: $("#PRODUCTNAME").val(), //상품명 (필수)
    AMOUNT: $("#AMOUNT").val(), //결제 금액 (필수)
    BUYERNAME: $("#BUYERNAME").val(), //고객명 (필수)
    BUYEREMAIL: $("#BUYEREMAIL").val(), //고객 e-mail (선택)
    PAYMETHOD: $("#PAYMETHOD").val(), //결제 수단 (선택, 미입력시 CARD)
    PRODUCTCODE : $("#PRODUCTCODE").val(), //상품 코드 (선택)
    BUYERID : $("#BUYERID").val(), //고객 아이디 (선택)
    BUYERADDRESS : $("#BUYERADDRESS").val(), //고객 주소 (선택)
    BUYERPHONE : $("#BUYERPHONE").val(), //고객 휴대폰번호 (선택, 웰컴페이는 필수)
    PAY_TYPE : $("#PAY_TYPE").val(), // 원화결제: 7, 달러결제: 5  > 키움(원화결제 사용가능), 모빌(원화, 달러결제 사용가능)
    CARDLIST : $("#CARDLIST").val(), // PC 인자값: CCXX:CCUF, 모바일 인자값 : CVSF:CMCF:CJCF:CCUF
    RETURNURL : $("#RETURNURL").val(), //결제 완료 후 리다이렉트 url (필수)
    ETC1 : $("#ETC1").val(), //사용자 추가필드1 (선택)
    ETC2 : $("#ETC2").val(), //사용자 추가필드2 (선택)
    ETC3 : $("#ETC3").val(), //사용자 추가필드3 (선택)
    ETC4 : $("#ETC4").val(), //사용자 추가필드4 (선택)
    ETC5 : $("#ETC5").val(), //사용자 추가필드5 (선택)
});

샘플 예제

<!DOCTYPE html>
<html>
<head></head>
<body>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="{요청도메인}/js/cookiepayments-1.1.3.js"></script>
<script>
cookiepayments.init({
    api_id: 'abcde12345', //쿠키페이 결제 연동 id
});

function pay() {
    cookiepayments.payrequest({
        ORDERNO: $("#ORDERNO").val(), //주문번호 (필수)
        PRODUCTNAME: $("#PRODUCTNAME").val(), //상품명 (필수)
        AMOUNT: $("#AMOUNT").val(), //결제 금액 (필수)
        BUYERNAME: $("#BUYERNAME").val(), //고객명 (필수)
        BUYEREMAIL: $("#BUYEREMAIL").val(), //고객 e-mail (선택)
        PAYMETHOD: $("#PAYMETHOD").val(), //결제 수단 (선택)
        PRODUCTCODE: $("#PRODUCTCODE").val(), //상품 코드 (선택)
        BUYERID: $("#BUYERID").val(), //고객 아이디 (선택)
        BUYERADDRESS: $("#BUYERADDRESS").val(), //고객 주소 (선택)
        BUYERPHONE : $("#BUYERPHONE").val(), //고객 휴대폰번호 (선택, 웰컴페이는 필수)
        PAY_TYPE : $("#PAY_TYPE").val(), // 원화결제: 7, 달러결제: 5  > 키움(원화결제 사용가능), 모빌(원화, 달러결제 사용가능)
        CARDLIST : $("#CARDLIST").val(), // PC 인자값: CCXX:CCUF, 모바일 인자값 : CVSF:CMCF:CJCF:CCUF
        RETURNURL: $("#RETURNURL").val(), //결제 완료 후 리다이렉트 url (필수)
        ETC1 : $("#ETC1").val(), //사용자 추가필드1 (선택)
        ETC2 : $("#ETC2").val(), //사용자 추가필드2 (선택)
        ETC3 : $("#ETC3").val(), //사용자 추가필드3 (선택)
        ETC4 : $("#ETC4").val(), //사용자 추가필드4 (선택)
        ETC5 : $("#ETC5").val(), //사용자 추가필드5 (선택)
    });
}
</script>

<form name="payform">
    <input type="text" name="ORDERNO" id="ORDERNO" placeholder="주문번호" value="">
    <input type="text" name="PRODUCTNAME" id="PRODUCTNAME" placeholder="상품명" value="">
    <input type="text" name="AMOUNT" id="AMOUNT" placeholder="금액" value="">
    <input type="text" name="BUYERNAME" id="BUYERNAME" placeholder="고객명" value="">
    <input type="text" name="BUYEREMAIL" id="BUYEREMAIL" placeholder="고객 e-mail" value="">
    <input type="text" name="PAYMETHOD" id="PAYMETHOD" placeholder="결제수단" value="CARD">
    <input type="text" name="PRODUCTCODE" id="PRODUCTCODE" placeholder="상품 코드" value="">
    <input type="text" name="BUYERID" id="BUYERID" placeholder="고객 ID" value="">
    <input type="text" name="BUYERADDRESS" id="BUYERADDRESS" placeholder="고객 주소" value="">
    <input type="text" name="BUYERPHONE" id="BUYERPHONE" placeholder="고객 휴대폰번호" value="">
    <input type="text" name="PAY_TYPE" id="PAY_TYPE" placeholder="해외결제 쿠키페이 API_ID 사용시에 사용" value=""> <!-- 원화결제: 7, 달러결제: 5  > 키움(원화결제 사용가능), 모빌(원화, 달러결제 사용가능) -->
    <input type="text" name="CARDLIST" id="CARDLIST" placeholder="PAY_TYPE 사용시 > 해외 결제창에 해외카드 결제 버튼만 보이기" value=""> <!-- PC 인자값: CCXX:CCUF, 모바일 인자값 : CVSF:CMCF:CJCF:CCUF -->
    <input type="text" name="RETURNURL" id="RETURNURL" placeholder="결제 완료 후 리다이렉트 url" value="">
    <input type="text" name="ETC1" id="ETC1" placeholder="사용자 추가필드 1" value="">
    <input type="text" name="ETC2" id="ETC2" placeholder="사용자 추가필드 2" value="">
    <input type="text" name="ETC3" id="ETC3" placeholder="사용자 추가필드 3" value="">
    <input type="text" name="ETC4" id="ETC4" placeholder="사용자 추가필드 4" value="">
    <input type="text" name="ETC5" id="ETC5" placeholder="사용자 추가필드 5" value="">
</form>

<button type="button" onclick="pay();">결제하기</button>

</body>
</html>
CURL

샘플 예제

curl -H "Content-Type: application/json" \
     -d '{ "API_ID": "{쿠키페이 결제 연동 id}",
           "ORDERNO": "{주문번호}",
           "PRODUCTNAME": "{상품명}",
           "AMOUNT": "{결제금액}",
           "BUYERNAME": "{고객명}",
           "BUYEREMAIL":"{고객 e-mail}",
           "PRODUCTCODE":"{상품 코드}",
           "PAYMETHOD":"{결제 수단}",
           "BUYERID":"{고객 ID}",
           "BUYERADDRESS":"{고객 주소}",
           "BUYERPHONE":"{고객 휴대폰번호}",
           "PAY_TYPE":"해외결제 쿠키페이 API_ID 사용시에 사용",  // 원화결제: 7, 달러결제: 5  > 키움(원화결제 사용가능), 모빌(원화, 달러결제 사용가능) 
           "CARDLIST":"PAY_TYPE 사용시 > 해외 결제창에 해외카드 결제 버튼만 보이기", // PC 인자값: CCXX:CCUF, 모바일 인자값 : CVSF:CMCF:CJCF:CCUF
           "RETURNURL": "{결제 완료 후 리다이렉트 url}",
           "ETC1": "{사용자 추가필드 1}",
           "ETC2": "{사용자 추가필드 2}",
           "ETC3": "{사용자 추가필드 3}",
           "ETC4": "{사용자 추가필드 4}",
           "ETC5": "{사용자 추가필드 5}"
        }' \
    -X POST "{요청도메인}/pay/ready"
PHP

샘플 예제

$headers = array(); 

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

$cookiepayments_url = "{요청도메인}/pay/ready";

$request_data_array = array(
    'API_ID' => '{쿠키페이 결제 연동 id}',
    'ORDERNO' => '{주문번호}',
    'PRODUCTNAME' => '{상품명}',
    'AMOUNT' => '{결제 금액}',
    'BUYERNAME' => '{고객명}',
    'BUYEREMAIL' => '{고객 e-mail}',
    'PRODUCTCODE' => '{상품 코드}',
    'PAYMETHOD' => '{결제 수단}',
    'BUYERID' => '{고객 ID}',
    'BUYERADDRESS' => '{고객 주소}',
    'BUYERPHONE' => '{고객 휴대폰번호}',
    'PAY_TYPE' => '해외결제 쿠키페이 API_ID 사용시에 사용', // 원화결제: 7, 달러결제: 5  > 키움(원화결제 사용가능), 모빌(원화, 달러결제 사용가능)
    'CARD_LIST' => 'PAY_TYPE 사용시 > 해외 결제창에 해외카드 결제 버튼만 보이기', // PC 인자값: CCXX:CCUF, 모바일 인자값 : CVSF:CMCF:CJCF:CCUF
    'RETURNURL' => '' //결제 완료 후 리다이렉트 url
    'ETC1' => '{사용자 추가필드 1}',
    'ETC2' => '{사용자 추가필드 2}',
    'ETC3' => '{사용자 추가필드 3}',
    'ETC4' => '{사용자 추가필드 4}',
    'ETC5' => '{사용자 추가필드 5}',
);

$cookiepayments_json = json_encode($request_data_array, JSON_UNESCAPED_UNICODE);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $cookiepayments_url);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $cookiepayments_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
C#

샘플 예제

// 인증요청 서버통신 CALL

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
using System.Text;
using System.IO;
using System.Text.Json;
using Newtonsoft.Json.Linq;
using System.Web.Mvc;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;

namespace pay.Controllers
{
    public class HomeController : Controller
    {

        string API_ID = "쿠키페이 결제 연동 id";

        public ContentResult ReadyCall()
        {
            string URL = "{요청도메인}/pay/ready";

            //전송 데이터 JSON 형식 만들기
            var json = new JObject();
            json.Add("API_ID", API_ID);  //쿠키페이 결제 연동 ID
            json.Add("ORDERNO", "");     //주문번호
            json.Add("PRODUCTNAME", ""); //상품명
            json.Add("AMOUNT", 100);       //결제 금액
            json.Add("BUYERNAME", "");   //고객명
            json.Add("BUYEREMAIL", "");  //고객 E-MAIL
            json.Add("PRODUCTCODE", ""); //상품 코드
            json.Add("PAYMETHOD", "");   //결제 수단
            json.Add("BUYERID", "");     //고객 ID
            json.Add("BUYERADDRESS", "");//고객 주소
            json.Add("BUYERPHONE", "");  //고객 휴대폰번호
            json.Add("PAY_TYPE", "");    //해외결제 쿠키페이 API_ID 사용시에 사용, 원화결제: 7, 달러결제: 5  > 키움(원화결제 사용가능), 모빌(원화, 달러결제 사용가능)
            json.Add("CARD_LIST", "");   //PAY_TYPE 사용시 > 해외 결제창에 해외카드 결제 버튼만 보이기, PC 인자값: CCXX:CCUF, 모바일 인자값 : CVSF:CMCF:CJCF:CCUF
            json.Add("RETURNURL", "");   //결제 완료 후 리다이렉트 url
            json.Add("ETC1", "");        //사용자 추가필드 1
            json.Add("ETC2", "");        //사용자 추가필드 2
            json.Add("ETC3", "");        //사용자 추가필드 3
            json.Add("ETC4", "");        //사용자 추가필드 4
            json.Add("ETC5", "");        //사용자 추가필드 5

            //요청 HEADER 세팅
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.Headers.Add("ApiKey", API_KEY);

            //데이터 전송
            byte[] bytes = Encoding.UTF8.GetBytes(json.ToString());
            request.ContentLength = bytes.Length;
            Stream reqStream = request.GetRequestStream();
            reqStream.Write(bytes, 0, bytes.Length);
            reqStream.Flush();
            reqStream.Close();

            //응답
            string response_data = "";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            HttpStatusCode status = response.StatusCode;
            Stream response_stream = response.GetResponseStream();
            using (StreamReader read_stream = new StreamReader(response_stream))
            {
                response_data = read_stream.ReadToEnd();
                System.Diagnostics.Trace.WriteLine(response_data);
                read_stream.Close();
                response_stream.Close();
                response.Close();
            }

            return Content(response_data);
        }
    }

}
JSP

샘플 예제

<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.security.MessageDigest" %>
<%

String ORDERNO          = "1234"; //주문번호
String PRODUCTNAME      = "상품명"; //상품명              
int    AMOUNT           = 1004;   //결제 금액               
String BUYERNAME        = "고객명"; //고객명                      
String BUYEREMAIL       = "id@email.com"; //이메일     
String PAYMETHOD        = "CARD"; //결제 수단               
String PRODUCTCODE      = ""; //상품코드        
String BUYERID          = "guest"; //고객 ID  
String BUYERADDRESS     = "인천 남동구..."; //고객주소
String BUYERPHONE       = "0100001234"; //고객 연락처
String PAY_TYPE         = ""; //해외결제 쿠키페이 API_ID 사용시에 사용 | 원화결제: 7, 달러결제: 5  > 키움(원화결제 사용가능), 모빌(원화, 달러결제 사용가능)
String CARDLIST         = ""; //PAY_TYPE 사용시 > 해외 결제창에 해외카드 결제 버튼만 보이기, PC 인자값: CCXX:CCUF, 모바일 인자값 : CVSF:CMCF:CJCF:CCUF
String RETURNURL        = "https://결제완료 결과값을 받을 주소"; // 결제 완료 후 리다이렉트 url
String ETC1             = ""; //사용자 추가필드 1
String ETC2             = ""; //사용자 추가필드 2
String ETC3             = ""; //사용자 추가필드 3
String ETC4             = ""; //사용자 추가필드 4
String ETC5             = ""; //사용자 추가필드 5

%>

<!DOCTYPE html>
<html>
<head>
<title>Cookiepayments JSP CARD_AUTH API</title>
<meta charset="utf-8">
<style>
    html,body {height: 100%;}
    form {overflow: hidden;}
</style>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="{요청도메인}/js/cookiepayments-1.1.3.js"></script>
<script>
cookiepayments.init({
    api_id: '쿠키페이 결제 연동 id', 
});

function pay() {

    cookiepayments.payrequest({
        ORDERNO: $("#ORDERNO").val(), //주문번호 (필수)
        PRODUCTNAME: $("#PRODUCTNAME").val(), //상품명 (필수)
        AMOUNT: $("#AMOUNT").val(), //결제 금액 (필수)
        BUYERNAME: $("#BUYERNAME").val(), //고객명 (필수)
        BUYEREMAIL: $("#BUYEREMAIL").val(), //고객 e-mail (선택)
        PAYMETHOD: $("#PAYMETHOD").val(), //결제 수단 (선택)
        PRODUCTCODE: $("#PRODUCTCODE").val(), //상품 코드 (선택)
        BUYERID: $("#BUYERID").val(), //고객 아이디 (선택)
        BUYERADDRESS: $("#BUYERADDRESS").val(), //고객 주소 (선택)
        BUYERPHONE : $("#BUYERPHONE").val(), //고객 휴대폰번호 (선택, 웰컴페이는 필수)
        PAY_TYPE : $("#PAY_TYPE").val(), // 해외결제 쿠키페이 API_ID 사용시에 사용 | 원화결제: 7, 달러결제: 5  > 키움(원화결제 사용가능), 모빌(원화, 달러결제 사용가능)
        CARDLIST : $("#CARDLIST").val(), // PAY_TYPE 사용시 > 해외 결제창에 해외카드 결제 버튼만 보이기, PC 인자값: CCXX:CCUF, 모바일 인자값 : CVSF:CMCF:CJCF:CCUF
        RETURNURL: $("#RETURNURL").val(), //결제 완료 후 리다이렉트 url (필수)
        ETC1 : $("#ETC1").val(), //사용자 추가필드1 (선택)
        ETC2 : $("#ETC2").val(), //사용자 추가필드2 (선택)
        ETC3 : $("#ETC3").val(), //사용자 추가필드3 (선택)
        ETC4 : $("#ETC4").val(), //사용자 추가필드4 (선택)
        ETC5 : $("#ETC5").val(), //사용자 추가필드5 (선택)
    });

}

</script>
</head>
<body>
    <div id="cookiepayform"></div>

    <form name="payform">
        <input type="text" name="ORDERNO" id="ORDERNO" placeholder="주문번호" value="<%=ORDERNO%>"><br>
        <input type="text" name="PRODUCTNAME" id="PRODUCTNAME" placeholder="상품명" value="<%=PRODUCTNAME%>"><br>        
        <input type="text" name="AMOUNT" id="AMOUNT" placeholder="금액" value="<%=AMOUNT%>"><br>
        <input type="text" name="BUYERNAME" id="BUYERNAME" placeholder="고객명" value="<%=BUYERNAME%>"><br>
        <input type="text" name="EMAIL" id="BUYEREMAIL" placeholder="고객 e-mail" value="<%=BUYEREMAIL%>"><br>
        <input type="text" name="PAYMETHOD" id="PAYMETHOD" placeholder="결제수단" value="<%=PAYMETHOD%>"><br>
        <input type="text" name="PRODUCTCODE" id="PRODUCTCODE" placeholder="상품 코드" value="<%=PRODUCTCODE%>"><br>
        <input type="text" name="BUYERID" id="BUYERID" placeholder="고객 ID" value="<%=BUYERID%>"><br>
        <input type="text" name="BUYERADDRESS" id="BUYERADDRESS" placeholder="고객 주소" value="<%=BUYERADDRESS%>"><br>
        <input type="text" name="BUYERPHONE" id="BUYERPHONE" placeholder="고객 휴대폰번호" value="<%=BUYERPHONE%>"><br>
        <input type="text" name="PAY_TYPE" id="PAY_TYPE" placeholder="PAY_TYPE" value="<%=PAY_TYPE%>"><br>
        <input type="text" name="CARDLIST" id="CARDLIST" placeholder="CARDLIST" value="<%=CARDLIST%>"><br>
        <input type="text" name="RETURNURL" id="RETURNURL" placeholder="결제 완료 후 리다이렉트 url" value="<%=RETURNURL%>"><br>
        <input type="text" name="ETC1" id="ETC1" placeholder="사용자 추가필드 1" value="<%=ETC1%>"><br>
        <input type="text" name="ETC2" id="ETC2" placeholder="사용자 추가필드 2" value="<%=ETC2%>"><br>
        <input type="text" name="ETC3" id="ETC3" placeholder="사용자 추가필드 3" value="<%=ETC3%>"><br>
        <input type="text" name="ETC4" id="ETC4" placeholder="사용자 추가필드 4" value="<%=ETC4%>"><br>
        <input type="text" name="ETC5" id="ETC5" placeholder="사용자 추가필드 5" value="<%=ETC5%>"><br>
    </form>

    <br>
    <a href="javascript:pay();">결제하기</button>

</body>
</html>
요청 전문 파라미터

요청 시 주의사항 (필독)

요청 시 ORDERNO(주문번호)는 유니크 한 값이어야 합니다. 결제 시 마다 새로 생성된 값을 넘겨주셔야 합니다. 중복 된 주문번호일 경우 결제 실패가 일어나거나 결제 데이터가 부정확할 수 있습니다.

항목명 길이 내용 구분 비고
API_ID 20 쿠키페이 결제 연동 id 필수 쿠키페이에서 발급받은 결제 연동 id
ORDERNO 50 주문번호 필수 각 주문마다 유니크해야 합니다
PRODUCTNAME 40 상품명 필수 & 문자 포함시 오류 발생
AMOUNT 10 결제 금액 필수 숫자만 사용합니다
TAXFREE_AMOUNT 10 비과세 금액 선택 숫자만 사용합니다(복합과세 가맹점만 이용)
※ 키움페이,모빌페이,웰컴페이 > 복합과세 가맹점만 사용가능합니다.
BUYERNAME 20 고객명 필수 결제자 이름
BUYEREMAIL 50 고객 e-mail 선택
RETURNURL 100 결제 결과 값 받는 주소 필수 결제 완료 후 리다이렉트 할 URL(새창)
HOMEURL 100 결제 결과 값 받는 주소 필수 결제 완료 후 리다이렉트 할 URL(결제창에서 이동)
(웹뷰 방식의 화면활성화시 HOMEURL을 사용하시기 바랍니다)
키움페이 PG만 사용
DIRECTRESULTFLAG 1 크로스도메인 이슈 선택 키움페이 PG만 사용
파이어폭스 사용시 DIRECTRESULTFLAG: Y 사용하고,
리턴값은 RETURNURL를 사용하지 마시고,
HOMEURL 사용하십시요.(필수)

파이어폭스는 IE와 크롬과 달리 호출창, 팝업창 간에
크로스도메인 이슈 문제 해결을 위한 것입니다.
MTYPE 1 웹뷰 사용시 선택 키움페이 PG만 사용( M : 앱뷰 활성화 )
CANCELURL 100 결제 중지 시 리다이렉트 url 선택 웰컴페이/키움페이
PRODUCTCODE 10 상품 코드 선택
PAYMETHOD 20 결제수단 선택 CARD(카드), KAKAOPAY(카카오페이)
NAVERPAY(네이버페이), BANK(계좌이체)
VACCT(가상계좌), MOBILE(휴대폰)

(KAKAOPAY,NAVERPAY : 키움페이만 사용)
(그외 PG사의 카카오페이, 네이버페이 이용시
PAYMETHOD : CARD 로 요청바랍니다.)
BUYERID 20 고객 ID 선택
BUYERADDRESS 100 고객 주소 선택
BUYERPHONE 20 고객 휴대폰번호 선택 웰컴페이 PG는 필수값
TAXYN 1 과세/비과세 선택 Y:과세, N:비과세, M:복합과세 - default : 과세
└ 복합과세는 키움페이,모빌리언스,웰컴페이만 사용가능
CLOSEURL 100 취소 후 이동할 URL 선택 카카오페이 결제만 사용
FAILURL 100 실패 후 이동할 URL 선택 카카오페이 결제만 사용
ESCROW 1 에스크로 결제여부 선택 에스크로 결제 사용: Y (키움페이:계좌이체 이용시)
ENG_FLAG 1 해외 원화 결제창 영문 출력여부 선택 영문출력: Y (키움페이:해외원화 결제 이용시)
PAY_TYPE 1 해외결제 사용
ㄴ 해외결제 쿠키페이 API_ID
    사용시에 사용
선택 원화결제 : 7, 달러결제 : 5
키움(원화결제 사용가능), 모빌(원화, 달러결제 사용가능)
CARDLIST 50 해외 원화 이용할 카드종류 선택
PAY_TYPE 사용시
선택 키움페이만 사용가능(카드 종류를 선택하여 노출 가능합니다.)
- PC 기반 > CCXX:CCUF
- 모바일 기반 > CVSF:CMCF:CJCF:CCUF 값을 넣어주십시요.
노출카드종류 : 비자, 마스터, JCB, 은련(유니온페이)
ETC1 100 사용자 추가 필드1 선택 입력시 응답파라미터에 값을 전달합니다
ETC2 100 사용자 추가 필드2 선택 입력시 응답파라미터에 값을 전달합니다
ETC3 100 사용자 추가 필드3 선택 입력시 응답파라미터에 값을 전달합니다
ETC4 100 사용자 추가 필드4 선택 입력시 응답파라미터에 값을 전달합니다
ETC5 100 사용자 추가 필드5 선택 입력시 응답파라미터에 값을 전달합니다
  • 키움페이의 경우 RETURNURL, HOMEURL 을 같이 사용시 RETURNURL 값만 전송됩니다.

인증결제 응답전문(암호화 리턴)

응답 전문 파라미터(암호화 리턴)

결과값은 Form Data로 전송됩니다.

항목명 길이 내용 구분 비고
RESULTCODE 4 결과 코드 필수 암호화 리턴 응답 코드 (성공시 "0000", 그외 에러)
RESULTMSG 100 결과 메세지 필수 암호화 리턴 응답 메시지 ("성공" 또는 오류 메세지)
ENC_DATA 암호호된 리턴값 필수 암호회된 리턴값

인증결제 응답전문 > 복호화

응답 전문 파라미터 > 복호화 (암호화 전문 복호화하기 참조)

결과값은 Form Data로 전송됩니다.

항목명 길이 내용 구분 비고
decryptData 복호화된 데이터 필수
   RESULTCODE 4 결과 코드 필수 PG사 응답 코드 (성공시 "0000", 그외 에러)
   RESULTMSG 100 결과 메세지 필수 PG사 응답 메시지 ("성공" 또는 오류 메세지)
   ORDERNO 50 주문번호 필수 주문번호
   AMOUNT 10 결제 된 금액 필수
   TID 20 PG 거래 고유번호 필수 PG사 결제 거래고유번호 (전표출력 및 결제취소에 사용됩니다)
   ACCEPTDATE 20 승인일시 필수 PG사 결제 승인일시
   ACCEPTNO 10 승인번호 필수 PG사 결제 승인번호
   CASH_BILL_NO 10 현금영수증일련번호 필수 가상계좌 및 계좌이체 시 현금영수증 일련번호
   CARDNAME 10 입금할 은행명 필수 가상계좌 및 계좌이체 시 입금할 은행명
   ACCOUNTNO 10 입금할 계좌번호 필수 가상계좌 시 입금할 계좌번호
   RECEIVERNAME 10 입금할 예금주 필수 가상계좌 시 입금할 예금주
   DEPOSITENDDATE 10 입금마감일 필수 가상계좌 시 입금마감일
   CARDCODE 10 입금할 은행코드 필수 가상계좌 시 입금할 은행코드
   QUOTA 2 할부기간 필수 카드 할부결제시 할부기간 (00:일시불, 01:1개월)
   ETC1 100 사용자 추가 필드1 선택 결제 요청시 입력한 값
   ETC2 100 사용자 추가 필드2 선택 결제 요청시 입력한 값
   ETC3 100 사용자 추가 필드3 선택 결제 요청시 입력한 값
   ETC4 100 사용자 추가 필드4 선택 결제 요청시 입력한 값
   ETC5 100 사용자 추가 필드5 선택 결제 요청시 입력한 값
복호화 응답데이터 예
{
  "RESULTCODE": "0000",         // 복호화 응답 코드
  "RESULTMSG": "성공",            // 복호화 응답 메시지
  "decryptData": {
      "RESULTCODE": "0000", // PG사 응답 코드 (성공시 "0000", 그외 에러)
      "RESULTMSG": "성공", //     PG사 응답 메시지 ("성공" 또는 오류 메세지)
      "ORDERNO": "주문번호",
      "AMOUNT": "1004",
      "TID": "PG 거래 고유번호",
      "ACCEPTDATE": "승인일시",
      "ACCEPTNO": "승인번호",
      "CASH_BILL_NO": "현금영수증일련번호",
      "CARDNAME": "결제카드사 이름",
      "ACCOUNTNO": "계좌번호",
      "RECEIVERNAME": "입금할 예금주",
      "DEPOSITENDDATE": "입금마감일",
      "CARDCODE": "입금할 은행코드 OR 결제카드코드",
      "QUOTA": "할부기간",
      "ETC1": "사용자 추가 필드1",
      "ETC2": "사용자 추가 필드2",
      "ETC3": "사용자 추가 필드3",
      "ETC4": "사용자 추가 필드4",
      "ETC5": "사용자 추가 필드5",
  }
}


PHP (인증결제응답) > 복호화후 응답필드 값으로 디비처리하기

// 결제정보 수신 후 데이터베이스에 입력되는 필드값은 고객님의 홈페이지 결제 테이블에 맞게 입력하셔야 합니다. 
// 결제요청시 결제시도 데이터는 디비에 우선 저장하신후 [인증 결제 응답 전문] 신호를 받으신후 결제완료 정보를 업데이트합니다.
// 계좌이체, 가상계좌의 경우 ACCEPT_NO 승인번호의 리턴 값이 없으므로 예외 처리하여 주시기 바랍니다.
// 결제 테이블 설계의 경우 비즈니스 로직에 때라 상이하므로 아래 예제 코드는 참조만 하여 주시기 바랍니다.
// 응답전문의 경우 기본 암호화 되어 리턴되므로 > 암호화 전문 복호화하기 api(전문)을 사용하시어 복호화후 디비처리하여 주십시요.

$headers = array(); 
array_push($headers, "content-type: application/json; charset=utf-8");
array_push($headers, "ApiKey: COOKIEPAY에서 발급받은 연동키");

$cookiepay_api_url = "{요청도메인}/EdiAuth/cookiepay_edi_decrypt";

$edi_date = date('YmdHis');
$request_data_array = array(
    'API_ID' => 'cookiepayments에서 발급받은 ID', // 쿠키페이 결제 연동 id
    'ENC_DATA' => '암호화된 응답값',
);

$cookiepay_api_json = json_encode($request_data_array, TRUE);

$ch = curl_init(); // curl 초기화

curl_setopt($ch,CURLOPT_URL, $cookiepay_api_url);
curl_setopt($ch,CURLOPT_POST, false);
curl_setopt($ch,CURLOPT_POSTFIELDS, $cookiepay_api_json);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($ch,CURLOPT_TIMEOUT, 20);
curl_setopt($ch,CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch); // 응답값을 $response 변수 넣는다.
curl_close($ch);

$result_array = json_decode($response, true);
$params_decode = $result_array['decryptData'];

if( !empty($params_decode['ACCEPT_NO']) && !empty($params_decode['TID']) && !empty($params_decode['ORDERNO']) ) {

    /*
    [API_ID] => xxxxxxx
    [ORDERNO] => 20230206020000000
    [AMOUNT] => 100
    [TID] => CEH11111111111111111
    [USERID] => guest
    [BUYERNAME] => test
    [BUYEREMAIL] => 
    [PRODUCTCODE] => test
    [PRODUCTNAME] => test
    [ACCEPT_DATE] => 20230206110242
    [ACCEPT_NO] => 11111111
    [CARDCODE] => CCBC
    [CARDNAME] => 케이뱅크체크
    [CARDNO] => **********002163
    [QUOTA] => 00
    [ETC1] => 사용자 추가 필드1
    [ETC2] => 사용자 추가 필드2
    [ETC3] => 사용자 추가 필드3
    [ETC4] => 사용자 추가 필드4
    [ETC5] => 사용자 추가 필드5
    [PAY_METHOD] => CARD
    */

    /* 전달받은 결제정보로 결제완료 처리 예제코드 */
    $SQL = "UPDATE '결제테이블' set ";
    $SQL .= "ACCEPT_DATE    = '".$params_decode['ACCEPT_DATE']."', ";
    $SQL .= "ACCEPT_NO      = '".$params_decode['ACCEPT_NO']."', ";
    $SQL .= "TID            = '".$params_decode['TID']."',";
    $SQL .= "CARDCODE       = '".$params_decode['CARDNO']."',";
    $SQL .= "CARDNAME       = '".$params_decode['CARDNAME']."',";
    $SQL .= "QUOTA          = '".$params_decode['QUOTA']."',";
    $SQL .= "PAY_STATUS     = '결제성공' ";

    $SQL .= "WHERE ORDERNO  = '".$params_decode['ORDERNO']."' ";
    $SQL .= "AND AMOUNT     = '".$params_decode['AMOUNT']."' ";
    $SQL .= "AND PAY_STATUS = '결제대기' ";
    $SQL .= "LIMIT 1 ";

    $result = mysql_query($SQL, 'Connect_Info');

}

결제 완료 통지 전문

통지 전문(Noti) 파라미터

통지 전문(Noti)은 JSON POST 형식으로 전송됩니다.

통지 전문(Noti)은 결제승인 파라미터에 대하여 쿠키페이먼트에서 고객사로 Server To Server로 전송됩니다.
개발한 통지 URL 입력방법 : 쿠키페이먼츠 접속 후 > API 연동 메뉴 > PG사 조회 및 연동 설정 > PG 연동 버튼 클릭 > 통지 URL 입력란에 입력 후 설정 저장하시면 됩니다.

결제승인 전문 파라미터
항목명 길이 내용 구분 비고
PAY_METHOD 20 결제수단 필수(json) CARD:카드결제, BANK:계좌이체, VACCT:가상계좌
API_ID 20 쿠키페이 결제 연동 id 필수(json) 쿠키페이에서 발급받은 결제 연동 id
ORDERNO 50 주문번호 필수(json) 주문번호
AMOUNT 10 결제 된 금액 필수(json)
TID 20 PG 거래 고유번호 필수(json) PG사 결제 거래고유번호 (전표출력 및 결제취소에 사용됩니다)
BUYEREMAIL 50 구매자 이메일 선택(json)
BUYERNAME 20 구매자 이름 필수(json)
USERID 20 고객 ID 선택(json) 고객아이디
PRODUCTCODE 10 상품 코드 필수(json)
PRODUCTNAME 40 상품명 필수(json)
ACCEPT_DATE 10 승인일시 필수(json) PG사 결제 승인일시
ACCEPT_NO 10 승인번호 필수(json) PG사 결제 승인번호
CARDCODE 10 카드 코드 필수(json) 사용 카드 카드번호/가상계좌 시 입금할 은행코드
CARDNAME 10 카드사명 필수(json) 사용 카드사명/가상계좌시 입금할 은행명
CARDNO 20 카드번호 필수(json) 예) **000111
QUOTA 2 할부기간 필수(json) 카드 할부결제시 할부기간 (00:일시불, 01:1개월)
ACCOUNTNO 10 입금할 계좌번호 필수(json) 가상계좌 시 입금할 계좌번호
RECEIVERNAME 10 입금할 예금주 필수(json) 가상계좌 시 입금할 예금주
DEPOSITENDDATE 10 입금마감일 필수(json) 가상계좌 시 입금마감일
DEPOSITNAME 30 입금자 선택(json) 가상계좌 > 입금자명 (지원 PG사 : 모빌페이, 이지페이, 토스페이)
SMS_INPUT 30 청구서 URLKEY 값 선택(json) 청구서 생성시 리턴받은 URLKEY 값
ETC1 100 사용자 추가 필드1 선택 결제 요청시 입력한 값
ETC2 100 사용자 추가 필드2 선택 결제 요청시 입력한 값
ETC3 100 사용자 추가 필드3 선택 결제 요청시 입력한 값
ETC4 100 사용자 추가 필드4 선택 결제 요청시 입력한 값
ETC5 100 사용자 추가 필드5 선택 결제 요청시 입력한 값
취소완료 전문 파라미터 (취소노티) > 쿠키페이 거래내역관리 > 거래내역 메뉴에서 취소시 전송됩니다.
항목명 길이 내용 구분 비고
paymethod 20 결제수단 필수(json) CARD(카드), KAKAOPAY(카카오페이), NAVERPAY(네이버페이)
BANK(계좌이체)
orderno 50 주문번호 필수(json) 주문번호
noti_type 10 통지유형 필수(json) cancel : 취소노티
cancel_amount 20 취소요청 금액 필수(json)
tid 50 PG 거래 고유번호 필수(json) PG사 결제 거래고유번호 (전표출력 및 결제취소에 사용됩니다)
cancel_date 20 취소일시 필수(json) 취소완료일시(YmdHis)
입금후 취소완료 전문 파라미터 (취소노티) > 입금후 취소 계좌로 입금후 > 취소가 완료된경우 전송됩니다.
항목명 길이 내용 구분 비고
paymethod 20 결제수단 필수(json) CARD(카드), KAKAOPAY(카카오페이), NAVERPAY(네이버페이)
orderno 50 주문번호 필수(json) 주문번호
noti_type 10 통지유형 필수(json) deposit_cancel : 입금후 취소 노티
cancel_amount 20 취소요청 금액 필수(json)
tid 50 PG 거래 고유번호 필수(json) PG사 결제 거래고유번호 (전표출력 및 결제취소에 사용됩니다)
cancel_date 20 취소일시 필수(json) 취소완료일시(YmdHis)
PHP (결제완료통지)

// 결제정보 수신 후 데이터베이스에 입력되는 필드값은 고객님의 홈페이지 결제 테이블에 맞게 입력하셔야 합니다. 
// 결제요청시 결제시도 데이터는 디비에 우선 저장하신후 [결제완료전문] 신호를 받으신후 결제완료 정보를 업데이트합니다.
// 계좌이체, 가상계좌의 경우 ACCEPT_NO 승인번호의 리턴 값이 없으므로 예외 처리하여 주시기 바랍니다.
// 결제 테이블 설계의 경우 비즈니스 로직에 때라 상이하므로 아래 예제 코드는 참조만 하여 주시기 바랍니다.

$params = json_decode(file_get_contents('php://input'), true); 

if( !empty($params['ACCEPT_NO']) && !empty($params['TID']) && !empty($params['ORDERNO']) ) {

    /*
    [API_ID] => xxxxxxx
    [ORDERNO] => 20230206020000000
    [AMOUNT] => 100
    [TID] => CEH11111111111111111
    [USERID] => guest
    [BUYERNAME] => test
    [BUYEREMAIL] => 
    [PRODUCTCODE] => test
    [PRODUCTNAME] => test
    [ACCEPT_DATE] => 20230206110242
    [ACCEPT_NO] => 11111111
    [CARDCODE] => CCBC
    [CARDNAME] => 케이뱅크체크
    [CARDNO] => **********002163
    [QUOTA] => 00
    [ETC1] => 사용자 추가 필드1
    [ETC2] => 사용자 추가 필드2
    [ETC3] => 사용자 추가 필드3
    [ETC4] => 사용자 추가 필드4
    [ETC5] => 사용자 추가 필드5
    [PAY_METHOD] => CARD
    */

    /* 전달받은 결제정보로 결제완료 처리 예제코드 */
    $SQL = "UPDATE '결제테이블' set ";
    $SQL .= "ACCEPT_DATE    = '".$params['ACCEPT_DATE']."', ";
    $SQL .= "ACCEPT_NO      = '".$params['ACCEPT_NO']."', ";
    $SQL .= "TID            = '".$params['TID']."',";
    $SQL .= "CARDCODE       = '".$params['CARDNO']."',";
    $SQL .= "CARDNAME       = '".$params['CARDNAME']."',";
    $SQL .= "QUOTA          = '".$params['QUOTA']."',";
    $SQL .= "PAY_STATUS     = '결제성공' ";

    $SQL .= "WHERE ORDERNO  = '".$params['ORDERNO']."' ";
    $SQL .= "AND AMOUNT     = '".$params['AMOUNT']."' ";
    $SQL .= "AND PAY_STATUS = '결제대기' ";
    $SQL .= "LIMIT 1 ";

    $result = mysql_query($SQL, 'Connect_Info');

}
C# (결제완료통지)
// 결제정보 수신 후 데이터베이스에 입력되는 필드값은 고객님의 홈페이지 결제 테이블에 맞게 입력하셔야 합니다. 
// 결제요청시 결제시도 데이터는 디비에 우선 저장하신후 [결제완료 통지전문] 신호를 받으신후 결제완료 정보를 업데이트합니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
using System.Text;
using System.IO;
using System.Text.Json;
using Newtonsoft.Json.Linq;
using System.Web.Mvc;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;

namespace pay.Controllers
{
    public class HomeController : Controller
    {

        //인증결제 완료전문 MS-SQL DB 입력
        public void CompleteMssql(ResponseVo param)
        {
            //데이터 DB 입력            
            using (SqlConnection connection = new SqlConnection("Server=localhost; Uid=; Pwd =; database=;"))
            {
                SqlCommand command = new SqlCommand();
                command.Connection = connection;
                command.CommandText = @"UPDATE '결제 테이블'
                                           SET ACCEPT_DATE = @ACCEPT_DATE
                                              ,ACCEPT_NO = @ACCEPT_NO
                                              ,TID = @TID
                                              ,CARDCODE = @CARDCODE
                                              ,CARDNAME = @CARDNAME
                                              ,QUOTA = @QUOTA
                                              ,PAY_STATUS = @PAY_STATUS
                                         WHERE ORDERNO = @ORDERNO
                                           AND AMOUNT = @AMOUNT
                                           AND PAY_STATUS = @PAY_STATUS2";

                command.Parameters.AddWithValue("@ACCEPT_DATE", param.ACCEPTDATE);
                command.Parameters.AddWithValue("@ACCEPT_NO", param.ACCEPTNO);
                command.Parameters.AddWithValue("@TID", param.TID);
                command.Parameters.AddWithValue("@CARDCODE", param.CARDCODE);
                command.Parameters.AddWithValue("@CARDNAME", param.CARDNAME);
                command.Parameters.AddWithValue("@QUOTA", param.QUOTA);
                command.Parameters.AddWithValue("@PAY_STATUS", "결제성공");
                command.Parameters.AddWithValue("@ORDERNO", param.ORDERNO);
                command.Parameters.AddWithValue("@AMOUNT", param.AMOUNT);
                command.Parameters.AddWithValue("@PAY_STATUS2", "결제대기");

                connection.Open();
                int result = command.ExecuteNonQuery();
                connection.Close();
            }

            Response.Redirect("/Home/Index");
        }
    }
}

결제정보 검증

결제정보 검증

최종 결제 요청이 브라우저에서 이루어지는 경우 결제 금액을 위변조하여 결제요청을 할 수 있습니다. 이 경우 결제 완료 후 처음 요청했던 금액과 실제로 결제된 금액이 일치하는지 확인하는 과정이 필요합니다.

기본도메인(요청도메인)
라이브 : https://www.cookiepayments.com [POST] 
테스트 : https://sandbox.cookiepayments.com [POST] 
URL
{요청도메인}/api/paycert [POST] 
TOKEN 발행 URL
{요청도메인}/payAuth/token [POST]
TOKEN 요청 전문 파라미터
항목명 길이 내용 구문 비고
pay2_id 30 cookiepayments에서 발급받은 ID 필수 cookiepayments사에서 부여
pay2_key 50 cookiepayments에서 발급받은 연동키 필수 cookiepayments사에서 부여
결제검증 요청 전문 파라미터
항목명 길이 내용 구문 비고
tid 50 PG사 거래 고유번호 필수 PG사에서 부여
CURL
/* 토큰 발급 API */
curl -H "Content-Type: application/json" \
     -d '{
         "pay2_id": "{쿠키페이 결제 연동 id}",
         "pay2_key": "{쿠키페이 결제 연동 key}"
         }' \
     -X POST "{요청도메인}/payAuth/token"

/* 발급 받은 TOKEN으로 결제 취소 API 통신 */
curl -H "Content-Type: application/json" \
     -H "TOKEN: {TOKEN API통해 발행된 TOKEN 값}" \
     -d '{"tid": "{결제 후 응답받은 PG 거래 고유번호}"}' \
     -X POST "{요청도메인}/api/paycert"
PHP
/* 토큰 발행 API */
$headers = array(
    'Content-Type: application/json; charset=utf-8',
);

$token_url = "{요청도메인}payAuth/token";

$request_data = array(
    'pay2_id' => '{쿠키페이 결제 연동 id}',
    'pay2_key'=> '{쿠키페이 결제 연동 key}',
);

$request_data = json_encode($request_data, JSON_UNESCAPED_UNICODE);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $token_url);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result, true);

if($result['RTN_CD'] == '0000') {

    $paycert_url = "{요청도메인}/api/paycert";

    $headers = array(
        'content-type: application/json; charset=utf-8',
        'TOKEN: ' . $result['TOKEN'],
    );

    $request_data = array(
        'tid' => '{결제 후 응답받은 PG사 거래 고유번호}',
    );

    $request_data = json_encode($request_data, JSON_UNESCAPED_UNICODE);

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $paycert_url);
    curl_setopt($ch, CURLOPT_POST, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $request_data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT, 20);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $response = curl_exec($ch);
    curl_close($ch);

    // 결과 처리
    var_dump($response);
}
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
using System.Text;
using System.IO;
using System.Text.Json;
using Newtonsoft.Json.Linq;
using System.Web.Mvc;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;

namespace pay.Controllers
{
    public class HomeController : Controller
    {

        string API_ID = "쿠키페이 결제 연동 key";
        string API_KEY = "쿠키페이 결제 연동 key";

        public ActionResult Paycert()
        {
            //토큰 발행 요청
            string TOKEN_URL = "{요청도메인}/payAuth/token";

            //전송 데이터 JSON 형식 만들기
            var token_json = new JObject();
            token_json.Add("pay2_id", API_ID);     //쿠키페이 결제 연동 ID
            token_json.Add("pay2_key", API_KEY);   //쿠키페이 연동 키

            //요청 HEADER 세팅
            HttpWebRequest token_request = (HttpWebRequest)WebRequest.Create(TOKEN_URL);
            token_request.Method = "POST";
            token_request.ContentType = "application/json";

            //데이터 전송
            byte[] token_bytes = Encoding.UTF8.GetBytes(token_json.ToString());
            token_request.ContentLength = token_bytes.Length;
            Stream token_reqStream = token_request.GetRequestStream();
            token_reqStream.Write(token_bytes, 0, token_bytes.Length);
            token_reqStream.Flush();
            token_reqStream.Close();

            //응답
            HttpWebResponse token_response = (HttpWebResponse)token_request.GetResponse();
            HttpStatusCode status = token_response.StatusCode;
            Stream token_res_stream = token_response.GetResponseStream();
            StreamReader token_read_stream = new StreamReader(token_res_stream);
            string token_resp_data = token_read_stream.ReadToEnd();
            //응답 토근 정보
            var token_result = JObject.Parse(token_resp_data);
            System.Diagnostics.Trace.WriteLine(token_result["TOKEN"]);
            token_read_stream.Close();
            token_res_stream.Close();
            token_response.Close();

            //0000: 성공
            string rtn_cd = Convert.ToString(token_result["RTN_CD"]);
            if (rtn_cd == "0000")
            {
                //결제 검증 요청
                string CERT_URL = "{요청도메인}/api/paycert";
                string TOKEN = Convert.ToString(token_result["TOKEN"]);
                HttpWebRequest cert_request = (HttpWebRequest)WebRequest.Create(CERT_URL);
                cert_request.Method = "POST";
                cert_request.ContentType = "application/json";
                cert_request.Headers.Add("TOKEN", TOKEN);

                var cert_json = new JObject();
                cert_json.Add("tid", "tid 값");     //결제 후 응답받은 PG사 거래 고유번호

                byte[] cert_bytes = Encoding.UTF8.GetBytes(cert_json.ToString());
                cert_request.ContentLength = cert_bytes.Length;
                Stream cert_stream = cert_request.GetRequestStream();
                cert_stream.Write(cert_bytes, 0, cert_bytes.Length);
                cert_stream.Flush();
                cert_stream.Close();

                //응답
                HttpWebResponse cert_response = (HttpWebResponse)cert_request.GetResponse();
                HttpStatusCode cert_status = cert_response.StatusCode;
                Stream cert_rep_stream = cert_response.GetResponseStream();
                StreamReader cert_read_stream = new StreamReader(cert_rep_stream);
                //결과처리
                string cert_result = cert_read_stream.ReadToEnd();
                System.Diagnostics.Trace.WriteLine(cert_result);
                cert_read_stream.Close();
                cert_rep_stream.Close();
                cert_response.Close();
            }

            return View();
        }

    }
}
결제검증 응답 전문 파라미터
항목명 길이 내용 구분 비고
RESULTCODE 4 PG 사 응답코드 필수(json) 응답 코드 (성공시 "0000", 그외 에러)
RESULTMSG 100 PG 사 응답메시지 필수(json) 응답 메시지 ("성공" 또는 오류 메세지)
ORDERNO 50 주문번호 필수(json) 결제한 주문번호
AMOUNT 10 결제 된 금액 필수(json) 문자 및 특수문자 허용 불가
BUYERNAME 20 고객명 필수(json)
BUYEREMAIL 50 고객 e-mail 선택(json)
PRODUCTNAME 40 상품명 필수(json) '&' 문자 포함시 오류 발생
PRODUCTCODE 10 상품코드 필수(json)
PAYMETHOD 20 결제수단 필수(json) CARD(카드), KAKAOPAY(카카오페이), BANK(계좌이체)
VACCT(가상계좌), MOBILE(휴대폰)
BUYERID 20 고객 ID 필수(json)
TID 50 PG 거래 고유번호 필수(json) PG사 결제 거래고유번호 (전표출력 및 결제취소에 사용됩니다)
ACCEPTNO 10 승인번호 필수(json) PG사 결제 승인번호
ACCEPTDATE 20 승인일시 필수(json) PG사 결제 승인일시
CANCELDATE 20 취소날짜 필수(json) 결제 취소한 경우 취소일시
CANCELMSG 50 취소메시지 필수(json) 결제 취소한 경우 취소메세지
ACCOUNTNO 50 가상계좌번호 (json) 가상계좌 이용 시 리턴 값
RECEIVERNAME 50 예금주성명 (json) 가상계좌 이용 시 리턴 값
DEPOSITENDDATE 50 계좌사용만료일 (json) 가상계좌 이용 시 리턴 값
CARDNAME 50 은행명 (json) 가상계좌 이용 시 리턴 값
CARDCODE 50 은행코드 (json) 가상계좌 이용 시 리턴 값