라이브 : https://www.cookiepayments.com [POST]
테스트 : https://sandbox.cookiepayments.com [POST]
{요청도메인}/api/paylist [POST]
| 항목명 | 길이 | 내용 | 구분 | 비고 |
|---|---|---|---|---|
| API_ID | 30 | COOKIEPAY에서 발급받은 ID | 필수 | COOKIEPAY사에서 부여 |
| STD_DT | 10 | 결제내역 조회 일자 | 필수 | ex) 2021-01-01 |
| END_DT | 10 | 결제내역 조회 마감일자 | 필수 | ex) 2021-01-03 (STD_DT로 부터 최대 6개월까지 가능) |
| PAGE | 8 | 목록 페이지 번호 | 필수 | ex) 1 |
| PERPAGE | 3 | 페이지당 표시할 목록 개수 | 필수 | ex) 20 ( 최대100개 ) |
| LISTTYPE | 10 | 결제내역 조회 종류 | 선택 | 조회 종류 • 선택하지 않을시 API_ID의 결제 내역만 조회 • "LOGINID" : API_ID를 사용하고 있는 로그인ID의 전체 결제 내역을 조회 • "LICENSENO" : API_ID를 사용하고 있는 사업자(사업자번호)의 전체 결제 내역을 조회 |
/* 토큰 발급 API */
curl -H "Content-Type: application/json" \
-d '{
"pay2_id": "cookiepayments에서 발급받은 ID",
"pay2_key": "cookiepayments에서 발급받은 연동키"
}' \
-X POST "{요청도메인}/payAuth/token"
/* 발급 받은 TOKEN으로 결제내역 조회 API 통신 */
curl -H "Content-Type: application/json" \
-H "TOKEN: TOKEN API통해 발행된 TOKEN 값" \
-d '{
"API_ID": "cookiepayments에서 발급받은 ID",
"STD_DT": "결제조회 시작일자 ex)2021-01-01",
"END_DT": "결제조회 마감일자 ex)2021-01-31",
"PAGE": "1",
"PERPAGE": "20",
"LISTTYPE": ""
}' \
-X POST "{요청도메인}/api/paylist"
/* 토큰 발행 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/paylist";
$request_data_array = array(
'API_ID' => 'cookiepayments에서 발급받은 ID',
'STD_DT' => '결제조회 시작일자 ex)2021-01-01',
'END_DT' => '결제조회 마감일자 ex)2021-01-03',
'PAGE' => '1',
'PERPAGE' => '20',
'LISTTYPE' => ''
);
$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);
}
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 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")
{
//결제내역 조회 요청
string LIST_URL = "{요청도메인}/api/paylist"; //요청 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("STD_DT", "2023-03-01");
list_json.Add("END_DT", "2023-03-03");
list_json.Add("PAGE", "1");
list_json.Add("PERPAGE", "20");
list_json.Add("LISTTYPE", "");
//데이터 전송
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();
}
}
}
| 항목명 | 길이 | 내용 | 구분 | 비고 |
|---|---|---|---|---|
| RESULTCODE | 4 | PG 사 응답코드 | 필수(JSON) | 정상 : 0000, 그외 에러 |
| RESULTMSG | 100 | PG 사 응답메시지 | 필수(JSON) | |
| STD_DT | 10 | 결제내역 조회 시작일자 | 필수(JSON) | |
| END_DT | 10 | 결제내역 조회 마감일자 | 필수(JSON) | 최대 6개월까지 가능 |
| PAGE | 8 | 현재 페이지 | 필수(JSON) | |
| PERPAGE | 3 | 페이지당 목록 수 | 필수(JSON) | |
| TOTAL_CNT | 10 | 전체 목록 갯수 | 필수(JSON) | 조회 일자 간 전체 목록 갯수 |
| LIST_CNT | 3 | 현재 페이지 목록 갯수 | 필수(JSON) | |
| LIST | 암호호된 결제 목록 | 필수(JSON) | 암호회된 리턴값 (성공시 존재) |
{
"RESULTCODE": "0000",
"RESULTMSG": "SUCCESS",
"STD_DT": "2025-03-26",
"END_DT": "2025-04-07",
"PAGE": 1,
"PERPAGE": 20,
"TOTAL_CNT": "3",
"LIST_CNT": "3",
"LIST": "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"
}
| 항목명 | 길이 | 내용 | 구분 | 비고 |
|---|---|---|---|---|
| RESULTCODE | 4 | 결과 코드 | 필수(JSON) | 복호화 응답 코드 (성공시 "0000", 그외 에러) |
| RESULTMSG | 100 | 결과 메시지 | 필수(JSON) | 복호화 응답 메시지 ("성공" 또는 오류 메세지) |
| decryptData | 조회된 목록 | 필수(JSON) | ||
| decryptData[n]['ORDERNO'] | 50 | 주문번호 | 필수(JSON) | 결제한 주문번호 |
| decryptData[n]['AMOUNT'] | 10 | 결제/취소 된 금액 | 필수(JSON) | PAYSTATUS가 1일때는 승인금액, 2일때는 취소금액 |
| decryptData[n]['BUYERNAME'] | 20 | 고객명 | 필수(JSON) | |
| decryptData[n]['BUYEREMAIL'] | 50 | 고객 E-MAIL | 필수(JSON) | |
| decryptData[n]['PRODUCTNAME'] | 40 | 상품명 | 필수(JSON) | |
| decryptData[n]['PRODUCTCODE'] | 10 | 상품코드 | 필수(JSON) | |
| decryptData[n]['PAYMETHOD'] | 20 | 결제수단 | 필수(JSON) | CARD(카드), KAKAOPAY(카카오페이), CARD_SUGI(수기결제),CARD_BATCH(정기결제), BANK(계좌이체), VACCT(가상계좌) MOBILE(휴대폰) |
| decryptData[n]['PAYSTATUS'] | 20 | 결제상태 | 필수(JSON) | 1 : 승인, 2 : 취소 |
| decryptData[n]['USERID'] | 20 | 고객 ID | 필수(JSON) | |
| decryptData[n]['TID'] | 50 | PG 거래 고유번호 | 필수(JSON) | 전표출력 및 결제취소에 반드시 필요한 값 |
| decryptData[n]['ACCEPTNO'] | 10 | 승인번호 | 필수(JSON) | |
| decryptData[n]['ACCEPTDATE'] | 20 | 승인일시 | 필수(JSON) | |
| decryptData[n]['CANCEL_SUM_AMOUNT'] | 20 | 총 취소 금액 | 필수(JSON) | 부분취소의 경우 부분취소 한 합계금액 |
| decryptData[n]['CANCELDATE'] | 20 | 취소날짜 | 필수(JSON) | |
| decryptData[n]['CANCELMSG'] | 50 | 취소메시지 | 필수(JSON) | |
| decryptData[n]['TAXYN'] | 2 | 과세여부 | 필수(JSON) | Y: 과세, N: 비과세, M: 복합과세 |
| decryptData[n]['QUOTA'] | 2 | 할부개월수 | 필수(JSON) | 00:일시불 |
| decryptData[n]['ACCOUNTNO'] | 50 | 가상계좌번호 | (JSON) | 가상계좌 이용 시 리턴 값 |
| decryptData[n]['RECEIVERNAME'] | 50 | 예금주성명 | (JSON) | 가상계좌 이용 시 리턴 값 |
| decryptData[n]['DEPOSITENDDATE'] | 50 | 계좌사용만료일 | (JSON) | 가상계좌 이용 시 리턴 값 |
| decryptData[n]['CARDNAME'] | 50 | 은행명 | (JSON) | 가상계좌 이용 시 리턴 값 |
| decryptData[n]['CARDCODE'] | 50 | 은행코드 | (JSON) | 가상계좌 이용 시 리턴 값 |
| decryptData[n]['BUYERHP'] | 20 | 고객 휴대폰 번호 | (JSON) | 결제시 휴대폰 번호입력한 고객에 대해서만 값이 존재 |
| decryptData[n]['BILLKEY'] | 12 | 빌링키 | (JSON) | 정기결제 빌링키, 정기결제일 경우 갑이 존재 |
| decryptData[n]['RESERVE_ID'] | 36 | 반복결제 등록ID | (JSON) | 반복결제 일경우 값이 존재 |
| decryptData[n]['RESERVE_ORDERNO'] | 50 | 반복결제 등록 주문번호 |
(JSON) | 반복결제 일경우 값이 존재 |
| decryptData[n]['PAY_CNT'] | 3 | 반복결제 결제 회차 | (JSON) | 반복결제 일경우 값이 존재 |
| decryptData[n]['TRY_CNT'] | 3 | 반복결제 시도 횟수 | (JSON) | 반복결제 일경우 값이 존재 |
| decryptData[n]['LAST_PAY_CNT'] | 3 | 반복결제 종료 회차 | (JSON) | 반복결제 일경우 값이 존재 |
| decryptData[n]['ETC1'] | 100 | 사용자 추가 필드1 | (JSON) | 결제 요청시 입력한 값 |
| decryptData[n]['ETC2'] | 100 | 사용자 추가 필드2 | (JSON) | 결제 요청시 입력한 값 |
| decryptData[n]['ETC3'] | 100 | 사용자 추가 필드3 | (JSON) | 결제 요청시 입력한 값 |
| decryptData[n]['ETC4'] | 100 | 사용자 추가 필드4 | (JSON) | 결제 요청시 입력한 값 |
| decryptData[n]['ETC5'] | 100 | 사용자 추가 필드5 | (JSON) | 결제 요청시 입력한 값 |
{
"RESULTCODE": "0000",
"RESULTMSG": "성공",
"decryptData": [
{
"ORDERNO": "SRS20250326105052506707",
"AMOUNT": "100",
"BUYERNAME": "구매자이름",
"BUYEREMAIL": "구매자이메일",
"PRODUCTNAME": "테스트상품1",
"PRODUCTCODE": "PROC-001",
"PAYMETHOD": "CARD_BATCH",
"PAYSTATUS": "1",
"BUYERID": "guest",
"ACCEPTNO": "00000000",
"ACCEPTDATE": "20250326105053",
"TID": "T2025040809264314942",
"CANCLE_SUM_AMOUNT": "0",
"CANCELDATE": "",
"CANCELMSG": "",
"TAXYN": "Y",
"QUOTA": "00",
"ACCOUNTNO": "",
"RECEIVERNAME": "",
"DEPOSITENDDATE": "",
"CARDNAME": "카드사이름",
"CARDCODE": "41",
"BUYERHP": "01012342567",
"RESERVE_ID":"",
"RESERVE_ORDERNO":"",
"PAY_CNT":"",
"TRY_CNT":"",
"LAST_PAY_CNT":"",
"ETC1": "Retc11",
"ETC2": "Retc21",
"ETC3": "Retc31",
"ETC4": "Retc41",
"ETC5": "Retc51"
},
{
"ORDERNO": "SRS20250326104858797056",
"AMOUNT": "100",
"BUYERNAME": "구매자이름",
"BUYEREMAIL": "구매자이메일",
"PRODUCTNAME": "테스트상품1",
:
:
:
}
]
}