A211 : 해쉬값 검증에 실패 하였습니다.

1512 : TX인증결제 회원사 서비스 개시안됨

1517 : 회원사 카드이벤트 설정 오류

1525 : VAN터미널 미설정 오류

1534 : 부분취소 불가능 거래

1617 : 거래금액 오류(공급가액,부가세,봉사료,면세금액 미입력)

<!-- EX) 상품가격이 1,004 원인 경우 -->
<!-- Amt = SupplyAmt + GoodsVat + ServiceAmt + TaxFreeAmt -->

<!-- 필드명:Amt / 사이즈:12 / 설명:결제 총액 -->
<input type="hidden" name="Amt" value="1004">

<!-- 필드명:SupplyAmt / 사이즈:12 / 설명:공급가 액 -->
<input type="hidden" name="SupplyAmt" value="900">

<!-- 필드명:GoodsVat / 사이즈:12 / 설명:부가가 치세 -->
<input type="hidden" name="GoodsVat" value="104">

<!-- 필드명:ServiceAmt / 사이즈:12 / 설명:봉사료 -->
<input type="hidden" name="ServiceAmt" value="0">

<!-- 필드명:TaxFreeAmt / 사이즈:12 / 설명:면세 금액 -->
<input type="hidden" name="TaxFreeAmt" value="0">

  • 면세설정을 이용하려면 연동전 서비스 신청이 필요 합니다.
  • 취소시 각 필드 값에 맞도록 요청 하세요.

1652 : 승인 TID 길이 오류

TID = 가맹점ID(MID) + 지불수단(2byte) + 매체구분(2byte) + 시간정보(yyMMddHHmmss) + 랜덤(4byte)

ex)
MID     = nicepay00m
지불수단 = 01            // CARD–01 (신용카드), BANK–02(계좌이체), VBANK–03(가상계좌), CELLPHONE–05(휴대폰결제)
매체구분 = 01            // 고정
시간정보 = 170511000000  //yyMMddHHmmss
랜덤     = 0123

TID = nicepay00m01011705110000000123

2015 : 해당거래 취소실패(기취소성공)

2026 : 취소 금액이 미정산 금액보다 큽니다

2030 : 해당 결제수단 부분취소 불가

2047 : 이미 입금처리가 완료되어 취소 불가

파라미터명 파라미터설명
RefundAcctNo 16 byte 가상계좌, 휴대폰 익월 환불 Only 환불계좌번호 (숫자만)
RefundBankCd 3 byte 가상계좌, 휴대폰 익월 환불 Only 환불계좌코드 (*은행코드 참고)
RefundAcctNm 10 byte 가상계좌, 휴대폰 익월 환불 Only 환불계좌주명 (euc-kr)

2121 : 해당 기기는 서비스 불가 합니다

2222 : 환불 계좌주 성명조회 실패

7575 : 카드사미등록 승인거절

8033 : 서비스 불가카드

8096 : PG하위몰 사업자번호 오류

8374 : 거래 거절 회선 장애 다시 하십시오

8379 : 거래 거절 할부불가카드

8401 : 할인적용 불가카드

8546 : 이미 사용된 결제 코드 입니다

8900 : CAVV 데이터 오류

8901 : 미등록 PG 업체 /거래정지 업체

8906 : PG하위몰 사업자번호 오류

A002 : 비정상적인 접근으로 처리가 불가능합니다

<!-- 필드명:ReturnURL / 사이즈:500 / 설명:인증 완료 결과 처리 URL-->
<input type="hidden" name="ReturnURL" value="https://가맹점 URL">

W003 : 상점MID가 유효하지 않습니다.

<!-- 필드명:MID / 사이즈:10 / 설명:가맹점 MID-->
<input type="hidden" name="MID" value="nicepay00m"> //test MID : nicepay00m

W004 : 결제수단이 유효하지 않습니다.

<!-------결제 수단------->
<!-- CARD: 신용카드 -->
<!-- BANK: 계좌이체 -->
<!-- VBANK: 가상계좌  -->
<!-- CELLPHONE: 휴대폰결제  -->

<!-- 필드명:PayMethod / 사이즈:10 / 설명:결제 수단-->
<input type="hidden" name="PayMethod" value="CARD"> //ex) CARD: 신용카드

W007 : 위변조 테이터를 체크하세요

DataEncrypt sha256Enc = new DataEncrypt();
String ediDate = getyyyyMMddHHmmss();	
String encryptData = sha256Enc.encrypt(ediDate + merchantID + price + merchantKey);

<input type="hidden" name="SignData" value="<%=encryptData%>"/>	
$ediDate = date("YmdHis");
$encryptData = bin2hex(hash('sha256', $ediDate.$MID.$price.$merchantKey, true));

<input type="hidden" name="SignData" value="<?php echo($encryptData)?>"/>	
encryptData = stringToSHA256(ediDate + merchantID + price + merchantKey);
public String stringToSHA256(String plain){
    SHA256Managed SHA256 = new SHA256Managed();
    String getHashString = BitConverter.ToString(SHA256.ComputeHash(Encoding.UTF8.GetBytes(plain))).ToLower();
    return getHashString.Replace("-", "");
}

<input type="hidden" name="SignData" value="<%=encryptData%>"/>	
const format = require('date-format')
const CryptoJS = require("crypto-js")

var ediDate = format.asString('yyyyMMddhhmmss', new Date())
var signData = getEncryptData(ediDate + merchantID + amt + merchantKey)

function getEncryptData(str) {
    var encrypted = CryptoJS.SHA256(str);
    return encrypted;
}
from datetime import datetime
import hashlib

def getEdiDate():
    YYYYmmddHHMMSS = datetime.today().strftime("%Y%m%d%H%M%S")
    return str(YYYYmmddHHMMSS)

def getEncrypt(str):
    encoded_str = str.encode()
    EncryptData = hashlib.sha256(encoded_str).hexdigest()
    return EncryptData
    
EdiDate = getEdiDate()
plainText = EdiDate + MID + Amt + MerchantKey
SignData = getEncrypt(plainText)
  • hash 함수 처리는 위변조와 관련된 사항으로 신중한 처리가 필요합니다.
  • hash 처리에 대한 책임은 가맹점에 있습니다.