라이브 : https://www.cookiepayments.com [POST]
테스트 : https://sandbox.cookiepayments.com [POST]
{요청도메인}/pay/ready [POST]
쿠키페이 라이브러리 추가
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 -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"
샘플 예제
$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",
}
}
// 결제정보 수신 후 데이터베이스에 입력되는 필드값은 고객님의 홈페이지 결제 테이블에 맞게 입력하셔야 합니다.
// 결제요청시 결제시도 데이터는 디비에 우선 저장하신후 [인증 결제 응답 전문] 신호를 받으신후 결제완료 정보를 업데이트합니다.
// 계좌이체, 가상계좌의 경우 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)은 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) |
// 결제정보 수신 후 데이터베이스에 입력되는 필드값은 고객님의 홈페이지 결제 테이블에 맞게 입력하셔야 합니다.
// 결제요청시 결제시도 데이터는 디비에 우선 저장하신후 [결제완료전문] 신호를 받으신후 결제완료 정보를 업데이트합니다.
// 계좌이체, 가상계좌의 경우 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]
{요청도메인}/api/paycert [POST]
{요청도메인}/payAuth/token [POST]
항목명 | 길이 | 내용 | 구문 | 비고 |
---|---|---|---|---|
pay2_id | 30 | cookiepayments에서 발급받은 ID | 필수 | cookiepayments사에서 부여 |
pay2_key | 50 | cookiepayments에서 발급받은 연동키 | 필수 | cookiepayments사에서 부여 |
항목명 | 길이 | 내용 | 구문 | 비고 |
---|---|---|---|---|
tid | 50 | PG사 거래 고유번호 | 필수 | PG사에서 부여 |
/* 토큰 발급 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"
/* 토큰 발행 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) | 가상계좌 이용 시 리턴 값 |