※ 이 사이트는 Internet Explorer 10 이하 버전은 지원하지 않습니다. 최신 브라우저로 업데이트해 주세요.
모듈 연동
스마트로페이 결제모듈 연동을 위한 가이드입니다
- 해당 메뉴얼의 Parameter 들은 가맹점에 통보 없이 응답값이 추가 될 수 있습니다. 응답값 추가도 고려하여 개발 진행하시길 권장합니다 .
재통보
고객이 결제결과를 정상적으로 통보받지 못했을 경우, 회원사의 웹 페이지를 호출하여 결제결과를 재통보하는 서비스입니다.
가맹점 서버의 환경이나 고객의 브라우저 조작 형태에 따라 결제결과가 정상적으로 통보되지 않을 수 있으니,
가맹점에서는 재통보 URL을 설정하시는 것을 권장드립니다.
② 좌측 메뉴의 가맹점 > 가맹점정보 > 기본정보 하단의 '결제 데이터 통보' 에서 지불수단별로 재전송 URL과 재전송간격, 재전송횟수 설정
기존 PG모듈을 이용하는 경우(smilepay.co.kr) -> 구통보 선택 신규 PG모듈을 이용하는 경우(smartropay.co.kr) -> 신통보 선택 (파라미터 명명규칙이 다릅니다.)
GID 결제데이터 통보 정보 일괄변경
GID 권한이 부여된 가맹점관리자 계정으로 로그인하면 GID 일괄변경 버튼을 통해 GID에 매핑 된 MID의 결제데이터 통보 관련 정보를 일괄수정 가능합니다.
① GID 권한 계정으로 가맹점관리자 로그인시 아래의 버튼이 노출됩니다.
② 일괄변경 대상 결제수단을 선택하면 해당 결제수단을 이용하는 MID 리스트가 노출되며, 수정 대상 MID체크 후 관련 정보를 모두 입력합니다.
CARD(신용카드), BANK(계좌이체), VBANK(가상계좌 채번 및 입금통보), CASHRCPT(현금영수증)
Mid
상점 ID
20
필수
Amt
금액
12
필수
BuyerName
구매자명
30
필수
BuyerEmail
구매자 Email
60
필수
BuyerTel
구매자 연락처
40
필수
GoodsName
상품명
40
필수
Tid
거래번호
30
필수
Otid
원거래 거래번호
30
필수
부분취소의 경우 원거래의 TID값을 셋팅
Moid
상품주문번호
40
필수
AuthDate
승인 및 취소일시
12
필수
승인거래: 승인일자 전달, 취소거래: 취소일자 전달
AuthCode
승인번호
30
필수
ResultCode
결과코드
4
필수
ResultMsg
결과메시지
100
필수
StateCd
승인취소구분
1
필수
0: 승인, 1: 전취소, 2: 후취소, 3: 가상계좌채번
FnCd
결제카드사코드
3
필수
신용카드: 결제카드사코드, 가상계좌: 가상계좌은행코드
FnName
결제카드사명
10
필수
신용카드: 결제카드사명, 가상계좌: 가상계좌은행명
SignValue
위·변조 사인값
가변
필수
MallUserId
회원사고객 ID
20
선택
MallReserved
상점예비정보
500
선택
신용카드
AppCardCode
발급사코드
2
선택
신용카드 결제시 전송
AppCardName
발급사명
20
선택
신용카드 결제시 전송
AcquCardCode
매입사코드
2
선택
신용카드 결제시 전송
AcquCardName
매입사명
20
선택
신용카드 결제시 전송
CardMerchantNo
카드사가맹점번호
15
선택
신용카드 결제시 전송
CardNum
카드번호
16
선택
신용카드 결제시 전송(마스킹 처리되어 전달함)
CardQuota
할부개월
2
선택
신용카드 결제시 전송
CardInterest
무이자 여부
2
선택
신용카드 결제시 전송, 0:일반, 1:카드사 무이자, 2:상점 무이자
CardUsePoint
할인(포인트)금액
9
선택
할인금액 전송대상일 경우 전송
BalancePoint
할인(포인트)잔여금액
9
선택
할인잔여 금액 전송대상일 경우 전송
계좌이체
BankCode
은행코드
2
선택
계좌이체 결제시 전송
BankName
은행명
20
선택
계좌이체 결제시 전송
가상계좌
VbankCode
가상계좌 은행코드
2
선택
가상계좌 결제시 전송
VbankName
가상계좌은행명
20
필수
가상계좌 결제시 전송
VbankNum
가상계좌번호
20
필수
가상계좌 결제시 전송
VbankInputName
가상계좌 입금자명
선택
가상계좌 결제시 전송
현금영수증
ReceiptType
현금영수증유형
1
선택
0: 미발행, 1: 소득공제, 2: 지출증빙
RcptAppNo
현금영수증 승인번호
20
선택
RcptCcNo
현금영수증 취소번호
20
선택
파라미터
항목명
길이(char)
필수여부
설명
PayMethod
지불수단
10
필수
VBANK:가상계좌 입금통보
MID
상점 ID
20
필수
Amt
금액
12
필수
Name
구매자명
30
필수
GoodsName
상품명
40
필수
TID
거래번호
30
필수
OTID
원거래 거래번호
30
필수
부분취소의 경우 원거래의 TID값을 셋팅
OID
상품주문번호
40
필수
AuthDate
승인 및 취소일시
12
필수
승인거래: 승인일자 전달, 취소거래: 취소일자 전달
AuthCode
승인번호
30
필수
ResultCode
결과코드
4
필수
ResultMsg
결과메시지
100
필수
StateCd
승인취소구분
1
필수
0: 승인, 1: 전취소, 2: 후취소, 3: 가상계좌채번
FnCd
결제카드사코드
3
필수
신용카드: 결제카드사코드, 가상계좌: 가상계좌은행코드
FnName
결제카드사명
10
필수
신용카드: 결제카드사명, 가상계좌: 가상계좌은행명
pinNo
카드번호
16
선택
카드번호 일부 마스킹 처리
CardQuota
할부개월수
2
선택
00: 일시불
BuyerEmail
구매자이메일주소
100
필수
BuyerTel
구매자전화번호
40
필수
BuyerAuthNum
구매자주민번호
13
선택
주민번호 일부 자리만 전달
VbankNum
가상계좌번호
20
필수
가상계좌 거래 시 설정
VbankName
가상계좌은행명
20
필수
가상계좌 거래 시 설정
SignValue
위·변조 사인값
가변
필수
MallUserID
회원사고객 ID
20
선택
ReceiptType
현금영수증유형
1
선택
0: 미발행, 1: 소득공제, 2: 지출증빙
RcptAppNo
현금영수증 승인번호
20
선택
RcptCcNo
현금영수증 취소번호
20
선택
CardUsePoint
할인금액
10
선택
STEP 1ResultCode 에 따른 결제통보 처리 프로세스
·JSP
// 구통보와 신통보의 파라미터 명명규칙이 다르므로 확인이 필요합니다.
// 아래의 파라미터명은 구통보 파라미터입니다.
boolean result = false;
String PayMethod = request.getParameter("PayMethod");
String Mid = request.getParameter("MID");
String MallUserID = request.getParameter("MallUserID");
String Amt = request.getParameter("Amt");
String Name = request.getParameter("Name");
String GoodsName = request.getParameter("GoodsName");
String TID = request.getParameter("TID");
String OTID = request.getParameter("OTID");
String OID = request.getParameter("OID");
String AuthDate = request.getParameter("AuthDate");
String AuthCode = request.getParameter("AuthCode");
String ResultCode = request.getParameter("ResultCode");
String ResultMsg = request.getParameter("ResultMsg");
String StateCd = request.getParameter("StateCd");
String FnCd = request.getParameter("FnCd");
String FnName = request.getParameter("FnName");
String pinNo = request.getParameter("pinNo");
String CardQuota = request.getParameter("CardQuota");
String BuyerEmail = request.getParameter("BuyerEmail");
String BuyerTel = request.getParameter("BuyerTel");
String BuyerAuthNum = request.getParameter("BuyerAuthNum");
String VbankNum = request.getParameter("VbankNum");
String VbankName = request.getParameter("VbankName");
String ReceiptType = request.getParameter("ReceiptType");
String RcptAppNo = request.getParameter("RcptAppNo");
String RcptCcNo = request.getParameter("RcptCcNo");
String CardUsePoint = request.getParameter("CardUsePoint");
String SignValue = request.getParameter("SignValue");
String merchantKey = ""; // 발급받은 테스트 상점키 설정(Real 전환 시 운영 상점키 설정)
String VerifySignValue = encodeSHA256Base64(TID.substring(0, 10) + ResultCode +TID.substring(10, 15) + merchantKey + TID.substring(15, TID.length()));
//검증에 성공했을 경우
if(SignValue.equals(VerifySignValue)) {
if("3001".equals(ResultCode)){ //CARD
// 결제 성공시 DB처리
// TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
result = true;
//}
}
if("4000".equals(ResultCode)){ //BANK
// 결제 성공시 DB처리
// TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
result = true;
//}
}
if("4100".equals(ResultCode)){ //VBANK 채번완료
// 결제 성공시 DB처리
// TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
result = true;
//}
}
if("4110".equals(ResultCode)){ //VBANK 입금완료
// 결제 성공시 DB처리
// TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
result = true;
//}
}
if("A000".equals(ResultCode)){ //CELLPHONE
// 결제 성공시 DB처리
// TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
result = true;
//}
}
if("7001".equals(ResultCode)){ //현금영수증
// 결제 성공시 DB처리
// TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
result = true;
//}
}
if("2001".equals(ResultCode)){ //결제 취소
// 취소 성공시 DB처리
//TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
result = true;
//}
}
if("2211".equals(ResultCode)){ //환불
}
if("2013".equals(ResultCode)){ //기취소 거래
}
}
// SHA256 암호화 함수
public static final synchronized String encodeSHA256Base64(String strPW) {
String passACL = null;
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-256");
} catch (Exception e) {
e.printStackTrace();
}
md.update(strPW.getBytes());
byte[] raw = md.digest();
byte[] encodedBytes = Base64.encodeBase64(raw);
passACL = new String(encodedBytes);
return passACL;
}
// 구통보와 신통보의 파라미터 명명규칙이 다르므로 확인이 필요합니다.
// 아래의 파라미터명은 구통보 파라미터입니다.
$result = false;
$PayMethod = $_REQUEST['PayMethod']; //지불수단
$MID = $_REQUEST['MID']; //상점 ID
$MallUserID = $_REQUEST['MallUserID']; //고객ID
$Amt = $_REQUEST['Amt']; //금액
$Name = $_REQUEST['Name']; //구매자명
$GoodsName = $_REQUEST['GoodsName']; //상품명
$TID = $_REQUEST['TID']; //거래번호
$OTID = $_REQUEST['OTID']; //원거래거래번호
$OID = $_REQUEST['OID']; //주문번호
$AuthDate = $_REQUEST['AuthDate']; //승인 및 취소일시
$AuthCode = $_REQUEST['AuthCode']; //승인번호
$ResultCode = $_REQUEST['ResultCode']; //결과코드
$ResultMsg = $_REQUEST['ResultMsg']; //결과메시지
$StateCd = $_REQUEST['StateCd']; //승인취소구분
$FnCd = $_REQUEST['FnCd']; //결제카드사코드
$FnName = $_REQUEST['FnName']; //결제카드사명
$pinNo = $_REQUEST['pinNo']; //카드번호
$CardQuota = $_REQUEST['CardQuota']; //할부개월수
$BuyerEmail = $_REQUEST['BuyerEmail']; //구매자이메일
$BuyerTel = $_REQUEST['BuyerTel']; //구매자전화번호
$BuyerAuthNum = $_REQUEST['BuyerAuthNum'];//구매자주민번호
$VbankNum = $_REQUEST['VbankNum']; //가상계좌번호
$VbankName = $_REQUEST['VbankName']; //가상계좌은행명
$ReceiptType = $_REQUEST['ReceiptType']; //현금영수증유형
$RcptAppNo = $_REQUEST['RcptAppNo']; //현금영수증승인번호
$RcptCcNo = $_REQUEST['RcptCcNo']; //현금영수증취소번호
$CardUsePoint = $_REQUEST['CardUsePoint'];//사용포인트(국민카드전용)
$SignValue = $_REQUEST['SignValue']; //위변조 사인값
$MerchantKey = ""; // 발급받은 테스트 상점키 설정(Real 전환 시 운영 상점키 설정)
$VerifySignValue = base64_encode(hash('sha256', substr($TID,0,10).$ResultCode.substr($TID,10,5).$MerchantKey.substr($TID,15,15),true));
//위변조 검증
if($SignValue == $VerifySignValue){
if("3001" == $ResultCode){ //CARD
// 결제 성공시 DB처리 하세요.
// TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
$result = true;
//}
}
if("4000" == $ResultCode){ //BANK
// 결제 성공시 DB처리 하세요.
// TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
$result = true;
//}
}
if("4100" == $ResultCode){ //VBANK 체번완료
// 결제 성공시 DB처리 하세요.
// TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
$result = true;
//}
}
if("4110" == $ResultCode){ //VBANK 입금완료
// 결제 성공시 DB처리 하세요.
// TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
$result = true;
//}
}
if("A000" == $ResultCode){ //cellphone
// 결제 성공시 DB처리 하세요.
// TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
$result = true;
//}
}
if("7001" == $ResultCode){ //현금영수증
// 결제 성공시 DB처리 하세요.
// TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
$result = true;
//}
}
// 결제 취소
if("2001" == $ResultCode){
// 취소 성공시 DB처리 하세요.
//TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
//if(DB 처리 및 내부처리 로직 성공시) {
$result = true;
//}
}
if("2211" == $ResultCode){
// 환불
}
if("2013" == $ResultCode){
// 이미(기) 취소 거래임
}
}
'구통보와 신통보의 파라미터 명명규칙이 다르므로 확인이 필요합니다.
'아래의 파라미터명은 구통보 파라미터입니다.
result = "" '가맹점 DB 처리 및 내부처리 로직 성공 여부
PayMethod = request("PayMethod") '지불수단
merchantID = request("MID") '상점 ID
MallUserID = request("MallUserID") '회원사고객 ID
Amt = request("Amt") '금액
Name = request("Name") '구매자명
GoodsName = request("GoodsName") '상품명
TID = request("TID") '거래번호
OTID = request("OTID") '원거래 거래번호
OID = request("OID") '주문번호
AuthDate = request("AuthDate") '승인 및 취소 일시
AuthCode = request("AuthCode") '승인번호
ResultCode = request("ResultCode") '결과코드
ResultMsg = request("ResultMsg") '결과메시지
StateCd = request("StateCd") '승인취소구분
FnCd = request("FnCd") '결제카드사코드
FnName = request("FnName") '결제카드사명
pinNo = request("pinNo") '카드번호
CardQuota = request("CardQuota") '할부개월수
BuyerEmail = request("BuyerEmail") '구매자이메일주소
BuyerTel = request("BuyerTel") '구매자전화번호
BuyerAuthNum = request("BuyerAuthNum") '구매자주민번호
VbankNum = request("VbankNum") '가상계좌번호
VbankName = request("VbankName") '가상계좌은행명
ReceiptType = request("ReceiptType") '현금영수증유형
RcptAppNo = request("RcptAppNo") '현금영수증승인번호
RcptCcNo = request("RcptCcNo") '현금영수증취소번호
CardUsePoint = request("CardUsePoint") '할인금액
SignValue = request("SignValue") '위변조 사인값
merchantKey = "" '발급받은 테스트 상점키 설정(Real 전환 시 운영 상점키 설정)
VerifySignValue = CryptoUtil.Sha256Encrypt(Mid(TID,1,10) & ResultCode&Mid(TID,11,5) & merchantKey & Mid(TID,16,15))
'위변조 검증
IF SignValue = VerifySignValue Then
IF ResultCode = "3001" Then 'CARD
'승인 성공 시 DB 처리 하세요.
'TID 결제 성공한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
response.write "결제성공"
//IF(DB 처리 및 내부처리 로직 성공시)
result = "OK"
//end if
Elseif ResultCode = "4000" Then 'BANK
'승인 성공 시 DB 처리 하세요.
'TID 결제 성공한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
response.write "결제성공"
//IF(DB 처리 및 내부처리 로직 성공시)
result = "OK"
//end if
Elseif ResultCode = "4100" Then 'VBANK 체번완료
'승인 성공 시 DB 처리 하세요.
'TID 결제 성공한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
response.write "가상계좌발급완료"
//IF(DB 처리 및 내부처리 로직 성공시)
result = "OK"
//end if
Elseif ResultCode = "4110" Then 'VBANK 입금완료
'승인 성공 시 DB 처리 하세요.
'TID 결제 성공한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
response.write "가상계좌입금완료"
//IF(DB 처리 및 내부처리 로직 성공시)
result = "OK"
//end if
Elseif ResultCode = "A000" Then 'cellphone
'승인 성공 시 DB 처리 하세요.
'TID 결제 성공한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
response.write "결제성공"
//IF(DB 처리 및 내부처리 로직 성공시)
result = "OK"
//end if
Elseif ResultCode = "7001" Then '현금영수증
'승인 성공 시 DB 처리 하세요.
'TID 결제 성공한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
response.write "현금영수증처리완료"
//IF(DB 처리 및 내부처리 로직 성공시)
result = "OK"
//end if
Elseif ResultCode = "2001" Then '결제 취소
'승인 성공 시 DB 처리 하세요.
'TID 결제 성공한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
response.write "결제취소성공"
//IF(DB 처리 및 내부처리 로직 성공시)
result = "OK"
//end if
Elseif ResultCode = "2211" Then '계좌이체 결제환불
'승인 성공 시 DB 처리 하세요.
'TID 결제 성공한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
response.write "결제환불성공"
//IF(DB 처리 및 내부처리 로직 성공시)
result = "OK"
//end if
Elseif ResultCode = "2013" Then
'이미(기) 취소 거래임
end if
'IF DB 처리 및 내부처리 로직 성공시 Then
result = "OK"
'end if
end if
const express = require('express');
const crypto = require('crypto');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
const merchantKey = ""; // 발급받은 테스트 상점키 설정
// SHA256 암호화 함수
function encodeSHA256Base64(str) {
const hash = crypto.createHash('sha256').update(str).digest();
return Buffer.from(hash).toString('base64');
}
// 결제 결과 처리 엔드포인트
app.post('/payment/result', (req, res) => {
let result = false;
const {
PayMethod,
MID,
MallUserID,
Amt,
Name,
GoodsName,
TID,
OTID,
OID,
AuthDate,
AuthCode,
ResultCode,
ResultMsg,
StateCd,
FnCd,
FnName,
pinNo,
CardQuota,
BuyerEmail,
BuyerTel,
BuyerAuthNum,
VbankNum,
VbankName,
ReceiptType,
RcptAppNo,
RcptCcNo,
CardUsePoint,
SignValue
} = req.body;
const VerifySignValue = encodeSHA256Base64(TID.substring(0, 10) + ResultCode + TID.substring(10, 15) + merchantKey + TID.substring(15, TID.length()));
// 검증에 성공했을 경우
if (SignValue === VerifySignValue) {
switch (ResultCode) {
case "3001": // CARD
case "4000": // BANK
case "4100": // VBANK 채번완료
case "4110": // VBANK 입금완료
case "A000": // CELLPHONE
case "7001": // 현금영수증
case "2001": // 결제 취소
// DB 처리 로직 추가
result = true;
break;
case "2211": // 환불
// 환불 처리 로직
break;
case "2013": // 기취소 거래
// 기취소 처리 로직
break;
}
}
res.json({ result });
});
// 서버 시작
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`재통보 서버 실행`);
});
from django.shortcuts import render
from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
import requests
import base64
import hashlib
# VerifySignValue 생성
def encodeSHA256Base64(strPW):
sha256_object = hashlib.sha256()
sha256_object.update(strPW.encode())
return base64.b64encode(sha256_object.digest()).decode("utf-8")
@csrf_exempt
def retryUrl(request):
# 구통보와 신통보의 파라미터 명명규칙이 다르므로 확인이 필요합니다.
# 아래의 파라미터명은 구통보 파라미터입니다.
result = False
PayMethod = request.POST.get("PayMethod")
Mid = request.POST.get("MID")
MallUserID = request.POST.get("MallUserID")
Amt = request.POST.get("Amt")
Name = request.POST.get("Name")
GoodsName = request.POST.get("GoodsName")
TID = request.POST.get("TID")
OTID = request.POST.get("OTID")
OID = request.POST.get("OID")
AuthDate = request.POST.get("AuthDate")
AuthCode = request.POST.get("AuthCode")
ResultCode = request.POST.get("ResultCode")
ResultMsg = request.POST.get("ResultMsg")
StateCd = request.POST.get("StateCd")
FnCd = request.POST.get("FnCd")
FnName = request.POST.get("FnName")
pinNo = request.POST.get("pinNo")
CardQuota = request.POST.get("CardQuota")
BuyerEmail = request.POST.get("BuyerEmail")
BuyerTel = request.POST.get("BuyerTel")
BuyerAuthNum = request.POST.get("BuyerAuthNum")
VbankNum = request.POST.get("VbankNum")
VbankName = request.POST.get("VbankName")
ReceiptType = request.POST.get("ReceiptType")
RcptAppNo = request.POST.get("RcptAppNo")
RcptCcNo = request.POST.get("RcptCcNo")
CardUsePoint = request.POST.get("CardUsePoint")
SignValue = request.POST.get("SignValue")
MerchantKey = "" # 발급받은 테스트 상점키 설정(Real 전환 시 운영 상점키 설정)
VerifySignValue = encodeSHA256Base64(TID[0:10] + ResultCode +TID[10:15] + MerchantKey + TID[15:len(TID)])
# 검증에 성공했을 경우
if SignValue == VerifySignValue:
# CARD
if ResultCode == "3001":
# 결제 성공시 DB처리
# TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
# if (DB 처리 및 내부처리 로직 성공시):
# result = True
# BANK
if ResultCode == "4000":
# 결제 성공시 DB처리
# TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
# if (DB 처리 및 내부처리 로직 성공시):
# result = True
# VBANK 채번완료
if ResultCode == "4100":
# 결제 성공시 DB처리
# TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
# if (DB 처리 및 내부처리 로직 성공시):
# result = True
# VBANK 입금완료
if ResultCode == "4110":
# 결제 성공시 DB처리
# TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
# if (DB 처리 및 내부처리 로직 성공시):
# result = True
# CELLPHONE
if ResultCode == "A000":
# 결제 성공시 DB처리
# TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
# if (DB 처리 및 내부처리 로직 성공시):
# result = True
# 현금영수증
if ResultCode == "7001":
# 결제 성공시 DB처리
# TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
# if (DB 처리 및 내부처리 로직 성공시) :
# result = True
# 결제 취소
if ResultCode == "2001":
# 취소 성공시 DB처리
# TID 결제 취소한 데이터 존재시 UPDATE, 존재하지 않을 경우 INSERT
# if (DB 처리 및 내부처리 로직 성공시):
# result = True
# 환불
if ResultCode == "2211":
# if (DB 처리 및 내부처리 로직 성공시):
# result = True
# 기취소 거래
if ResultCode == "2013":
# if (DB 처리 및 내부처리 로직 성공시):
# result = True
return render(request, '결과처리 화면.html')
STEP 2DB 처리 및 내부처리 로직 성공시 OK 출력
전송받은 결제결과에 대해 가맹점에서 정상 처리시 “OK” 문자열을 가맹점 서버에서 응답으로 주면, 해당 전송 건에 대해 정상 처리로 판단합니다.
HTTP 응답코드가 [200]이 아니거나 “OK” 문자열이 없다면 전송실패로 판단하여 해당 결제결과에 대해 재전송 시도합니다.