통지 전문(Noti)은 JSON POST 형식으로 전송됩니다.
※ 통지 전문(Noti)은 결제승인 또는 승인취소 응답 파라미터에 대하여 쿠키페이먼트에서 고객사로 Server To Server로 전송됩니다.
※ 개발한 통지 URL 입력방법 : 쿠키페이먼츠 접속 후 > API 연동 메뉴 > PG사 조회 및 연동 설정 > PG 연동 버튼 클릭 > 통지 URL 입력란에 입력 후 설정 저장하시면 됩니다.
(https://www.cookiepayments.com/iroboard/view?bId=API_Devolper&wr_id=2129)
항목명 | 길이 | 내용 | 구분 | 비고 |
---|---|---|---|---|
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 | 선택 | 결제 요청시 입력한 값 |
noti_type
- cancel : 쿠키페이 거래내역관리 > 거래내역 메뉴에서 취소시 전송됩니다.
- deposit_cancel : 입금후 취소완료시 전송됩니다. (키움페이만 이용가능)
※ 취소노티 활성화 방법 : [확인]
항목명 | 길이 | 내용 | 구분 | 비고 |
---|---|---|---|---|
paymethod | 20 | 결제수단 | 필수(json) | CARD(카드), KAKAOPAY(카카오페이), NAVERPAY(네이버페이) BANK(계좌이체) |
orderno | 50 | 주문번호 | 필수(json) | 주문번호 |
noti_type | 15 | 통지유형 | 필수(json) | cancel : 취소노티, 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#
(결제승인 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");
}
}
}