CookiePay API 매뉴얼

PG사 정산대사 API

주의사항

이용 가능 PG사 : 키움페이

PG사 정산대사 요청전문

기본도메인(요청도메인)
라이브 : https://www.cookiepayments.com [POST] 
테스트 : https://sandbox.cookiepayments.com [POST] 
TOKEN 발행 URL
{요청도메인}/payAuth/token [POST]
TOKEN 요청 전문 파라미터
항목명 길이 내용 구분 비고
pay2_id 30 cookiepayments에서 발급받은 ID 필수 cookiepayments사에서 부여
pay2_key 50 cookiepayments에서 발급받은 연동키 필수 cookiepayments사에서 부여
PG사 정산대사 요청 URL
{요청도메인}/api/settlement [POST]
PG사 정산대사 요청 전문 파라미터
항목명 길이 내용 구분 비고
API_ID 30 COOKIEPAY에서 발급받은 ID 필수 COOKIEPAY사에서 부여
TID 20 PG 거래번호 선택 조회를 원하는 거래번호
DATE 8 지급일 필수 조회를 원하는 지급일 ex)20240101
CURL
/* 토큰 발급 API */
curl -H "Content-Type: application/json" \
     -d '{
         "pay2_id": "cookiepayments에서 발급받은 ID",
         "pay2_key": "cookiepayments에서 발급받은 연동키"
         }' \
     -X POST "{요청도메인}/payAuth/token"

/* 발급 받은 TOKEN으로 PG사 정산대사 API 통신 */
curl -H "Content-Type: application/json" \
     -H "TOKEN: TOKEN API통해 발행된 TOKEN 값" \
     -d '{
        "API_ID": "cookiepayments에서 발급받은 ID",
        "TID": "조회를 원하는 PG사 거래번호",
        "DATE": "조회를 원하는 지급일 ex)20240101",
        }' \
     -X POST "{요청도메인}/api/settlement"
PHP

샘플 예제

 /* 토큰 발행 API */
$tokenheaders = array(); 
array_push($tokenheaders, "content-type: application/json; charset=utf-8");

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

$token_request_data = array(
    'pay2_id' => 'COOKIEPAY에서 발급받은 ID',
    'pay2_key'=> 'COOKIEPAY에서 발급받은 연동키',
);

$req_json = json_encode($token_request_data, TRUE);

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

curl_setopt($ch,CURLOPT_URL, $token_url);
curl_setopt($ch,CURLOPT_POST, false);
curl_setopt($ch,CURLOPT_POSTFIELDS, $req_json);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($ch,CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_HTTPHEADER, $tokenheaders);
$RES_STR = curl_exec($ch);
curl_close($ch);
$RES_STR = json_decode($RES_STR,TRUE);
/* 여기 까지 */

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

    $headers = array(); 
    array_push($headers, "content-type: application/json; charset=utf-8");
    array_push($headers, "TOKEN: TOKEN API통해 발행된 TOKEN 값");

    $cookiepayments_url = "{요청도메인}/api/settlement";

    $request_data_array = array(
        'API_ID' => 'cookiepayments에서 발급받은 ID',
        'TID' => '조회를 원하는 PG사 거래번호',
        'DATE' => '조회를 원하는 지급일 ex)20240101',        
    );

    $cookiepayments_json = json_encode($request_data_array, TRUE);

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

    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 ,3);
    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";

        //PG사 정산대사 API 전문
        public ActionResult PayList()
        {
            //토큰 발행 요청
            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);
            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")
            {
                //PG사 정산대사 API 요청
                string LIST_URL = "{요청도메인}/api/settlement ";  //요청 URL
                string TOKEN = Convert.ToString(token_result["TOKEN"]);                //응답 받은 토큰 값
                //요청 HEADER 세팅
                HttpWebRequest list_request = (HttpWebRequest)WebRequest.Create(LIST_URL);
                list_request.Method = "POST";
                list_request.ContentType = "application/json";
                list_request.Headers.Add("TOKEN", TOKEN);

                //전송 데이터 JSON 형식 만들기
                var list_json = new JObject();
                list_json.Add("API_ID", API_ID);            //쿠키페이 결제 연동 ID
                list_json.Add("TID", "조회를 원하는 PG사 거래번호");
                list_json.Add("DATE", "조회를 원하는 지급일 ex)20240101");

                //데이터 전송
                byte[] list_bytes = Encoding.UTF8.GetBytes(list_json.ToString());
                list_request.ContentLength = list_bytes.Length;
                Stream list_reqStream = list_request.GetRequestStream();
                list_reqStream.Write(list_bytes, 0, list_bytes.Length);
                list_reqStream.Flush();
                list_reqStream.Close();

                //응답
                HttpWebResponse list_response = (HttpWebResponse)list_request.GetResponse();
                HttpStatusCode list_status = list_response.StatusCode;
                Stream list_res_stream = list_response.GetResponseStream();
                StreamReader list_read_stream = new StreamReader(list_res_stream);
                string list_resp_data = list_read_stream.ReadToEnd();
                list_read_stream.Close();
                list_res_stream.Close();
                list_response.Close();

                //응답 정보
                var list_result = JArray.Parse(list_resp_data);
                foreach (var json in list_result)
                {
                    System.Diagnostics.Trace.WriteLine(json);
                }
            }

            return View();
        }
    }
}

PG사 정산대사 응답전문

응답 전문 파라미터(반복문)
항목명
길이 내용 구분 비고
RESULTCODE 4 PG 사 응답코드 필수(JSON) 정상 : 0000, 그외 에러
RESULTMSG 100 PG 사 응답메시지 필수(JSON)
DATA 데이터 목록 필수(JSON) 아래 형식의 반목문
AUTHAMT
승인금액 필수(JSON)
FEERATE
수수료율 필수(JSON)
PAYMENTSTATUS
2 결제상태 필수(JSON) 11:승인, 21:당일취소, 22:일반취소
FEE
수수료 필수(JSON) 취소시 "-"로 표시
VAT
부가세 필수(JSON)
SETTLE_CYCLE_CD
정산주기 필수(JSON)
PAYTYPE
결제수단 필수(JSON)
ACQUIRER
4 매입사코드 필수(JSON) CCLG(신한크드), CCBC(BC카드), CCKM(국민카드),
CCSS(삼성카드), CCDI(현대카드), CCLO(롯데카드),
CCKE(외환(하나)카드), CCHN(하나카드), CCNH(NH농협카드)
PAYMENTAMT
지급금액 필수(JSON) 취소시 "-"로 표시
TRXID
20 PG사 거래번호 필수(JSON) PG사 거래번호
CPID
CPID 필수(JSON)
ORDERNO
가맹점 주문번호 필수(JSON)
AUTHDT
8 거래일자 필수(JSON) 승인인 경우 승인일자, 취소인 경우 취소일자를 표시합니다.
FINALAMT
정산대사금액 필수(JSON) 취소시 "-"로 표시
PAYOFFDT
8 지급일 필수(JSON)
STATUS_CD
2 지급상태 필수(JSON) 01:지급대기, 03:지급완료