작업하고 내부 기술 문서를 만들어 둘때가 많이 있는대 대외비성을 뺀 아주 Lite  내용으로만으로 정리해봄


A 고객사에 다날 표준페이지(웹방식)이 아닌 자체페이지(소캣방식)을 이용 하신 것으로 확인 

기존 자체 페이지(소켓방식) 에서 다날 표준페이지 (웹방식) 으로 변경


자체페이지의 경우 차후 문제의 소지가 발생될 수 있는 부분이므로, (개인정보수집금지 관련 법률) 웹방식 다날 표준페이지로 연동이 필요



요런 옛날 결제창을


이놈으로 변경



다날 CP 관리자 페이지(https://cp.teledit.com) 페이지에 로그인 후, 왼쪽 하단 “결제 모듈 다운로드” 클릭

연동 모듈 다운로드 페이지 연결 후 ->


가맹점 별 개발 환경에 맞는 Module/Script 다운 로드 후 매뉴얼 참고하여 연동 진행



이번 작업 대상은 NT에 ASP 이므로 다음과 같이 다운 받아서 압축을 일단 풀어봄



NT 이므로 DanalCom.dll Com+에 등록을 해야 하는대 위 사이트는 이미 등록되어 있고 버전도 같으므로 패스 처리함

매뉴얼상에 이미지로 간략하게 대체 하겠음

등록 방법은 검색하면 많이 나옴


제어판 – 관리도구 – 구성요소서비스

COM+ 응용 프로그램 – 새로만들기 – 응용프로그램


COM+ 응용 프로그램 설치 마법사 



빈 응용 프로그램 선택 – 다음


응용프로그램 이름 입력/활성화유형 선택(Defalut : 서버 응용 프로그램) – 다음


다음사용자 선택 후 admin계정으로 등록


등록을 완료하면 COM+응용프로그램 목록에 생성이 되었는지 확인한다.



생성된 COM+응용프로그램의 구성요소 – 새로만들기 – 구성요소


구성요소 설치마법사 – 새 구성 요소 설치마법사 – 새 구성요소 선택

DLL 등록 (상위 폴더에 한글폴더가 있으면 오류발생)

설치내용 확인


Windows Server 2003에 등록할 경우에는 “보안(권한부여)” 부분을 해제해야 한다




결제모듈 본지가 너무 오래되었는대 이번에 보니 되게 간소화 되어 있었음

일단 A사이트 경우 통신사별 CP코드가 다른 상황이 였음 

다날 외 타 결제모듈이 종류별로 다 있으며 내부 처리해야 할 부분도 있음


일단 다날쪽으로 파라미터를 보내면 실제 처리해야 할 파일은 3개 정도로 보면됨

파일

설명

./inc/function.*

공통 Function 정의

Ready.*

CP 및 상품정보 전송 페이지

CPCGI.*

결제 최종 요청 페이지

Error.*

에러페이지

Success.*

결제 성공화면(UI) 페이지

BillCancel.*

결제 취소 요청 페이지


./inc/function.asp

결제에 필요한 Function 정의 

기타 공용파일이므로 파라메타값 처리라던지 다수의 CP 아이디값이나 가격등등을 이페이지에서 처리했음

ex)

사이트에서 넘어온 파라메타값을 처리해주었고

플래그에 따라 CP값도 동적으로 받게 처리 해주었음

ID : 다날에서 제공해 드린 CPID

PWD : 다날에서 제공해 드린 CPPWD

AMOUNT : 결제 금액



Ready.asp

CP인증 처리 페이지

CP정보(ID, PWD) 및 상품정보(ItemAmt, ItemName, ItemCode등)을 서버로 전송

사이트에서 결제 정보를 다날로 요청할때 Ready.asp 로 던지면됨


ID : 다날에서 제공해 드린 ID( function 파일 참조 )

PWD : 다날에서 제공해 드린 PWD( function 파일 참조 )

CPNAME : 결제창에 보여줄 이름으로 고객사에 맞게 작성 ex) DuraBoys


ItemAmt : 결제 금액( function 파일 참조 )

ItemName : 상품명

ItemCode : 다날에서 제공해 드린 ItemCode


BgColor : 결제 페이지 Background Color 설정

TargetURL : 최종 결제 요청 할 CP의 CPCGI FULL URL

BackURL : 에러 발생 및 취소 시 이동 할 페이지의 FULL URL

IsUseCI : CP의 CI 사용 여부( Y or N )

CIURL : CP의 CI FULL URL


<form name="Ready" action="https://ui.teledit.com/Danal/Teledit/Web/Start.php" method="post">

쏠때 MakeFormInput 처리를 해도 되고 추가로 넘길 값을 담아서 보낸다

<input TYPE="HIDDEN" NAME="이름"  VALUE="<%=값%>">


<script Language="JavaScript">

document.Ready.submit();

self.close(); // 창이 안닫혀서 셀프짓 하나 추가해줌

</script>



input

Field

Required

Max(Byte)

비고 (Example Value)

CP 정보

ID

Required

10

CP ID

PWD

Required

10

CP PWD

SUBCP

Optional

 

Sub CPID(SubCPID 사용하는 CP경우)

사용자 정보

USERID

Optional

60

고객 ID

상품 정보

ItemType

Required

-

상품 Type (Default “Amount”)

ItemCount

Required

-

상품 개수 (Default “1”)

ItemInfo

Required

-

상품 정보 (아래 ItemInfo 구성참조)

OrderID

Optional

200

CP 주문번호

IsPreOtbill

Optional

 

자동결제(Y/N , default(N))

IsExceptARS

Optional

 

ARS 전환 버튼 비활성화

(Y/N , default(N))

IsSubscript

Optional

1

월 정액 가입 유무(Y/N)

(월 정액 가입을 위한
첫 결제인 경우 : Y)

기본정보

SERVICE

Required

-

TELEDIT”   – 고정 값

Command

Required

-

ITEMSEND2” – 고정 값

OUTPUTOPTION

Required

-

DEFAULT   – 기본 값


    output 

Field

Required

Max(Byte)

비고 (Example Value)

기본 정보

Result

Required

4

결과 코드

ErrMsg

Required

256

결과 메시지

ServerInfo

Required

128

거래인증 key


다날 서버로부터 응답 받은 거래 키(ServerInfo)값 및 아래 정보를 다날 웹 서버로 전송한다.

CP  -> DANAL WEB SERVER

-    URL : ui.teledit.com/Danal/Teledit/Web/Start.php

-    PORT : 443

-    Method : POST

-    CHARACTER SET : EUC-KR

Field

Required

비고 (Example Value)

ServerInfo

Required

다날 서버로부터 응답 받은 거래 키(128byte)

CPName

Required

가맹점 명 ‘다날’ - 결제 화면에 표기

ItemName

Required

상품명 ‘상품구매’ - 결제 화면에 표기

ItemAmt

Required

결제금액 ‘10000 - 결제 화면에 표기 (실제 결제금액은 lib로 요청된 금액이 처리됨)

TargetURL

Required

최종 결제 요청 할 CP CPCGI FULL URL

(http://cp.site.co.kr/xxxx/xxx/CPCGI.*)

BackURL

Optional

에러 발생 및 취소 시 이동 할 페이지의 FULL URL (http://cp.site.co.kr/xxxx/xxx/BackURL.*)

IsUseCI

Optional

가맹점 C.I 사용 여부(Y/N)

CIURL

Optional

가맹점 C.I 이미지 페이지 FULL URL

(http://cp.site.co.kr/xxxx/xxx/cpci.jpg)

 

CI 이미지 SIZE

Web - 115 * 47

IsPreOtbill

Optional

자동결제 사용 여부 - 결제 화면에 표기

사용 – Y 미사용 – N

IsCarrier

Optional

통신사 정보(‘SKT’, ‘KTF’, ‘LGT’)

(결제 화면에 전달 받는 통신사로 고정시킴)

IsDstAddr

Optional

전화 번호(‘-‘ 구분됨, 010-1111-1111)

(결제 화면에 전달 받은 전화번호로 고정 시킴)

IsCharSet

Optional

CP Webserver Character set

BgColor

Optional

결제 화면 color 설정 시 사용

00 –블루(Default), 01-남색, 02-노랑, 03-민트, 04-보라 05-분홍, 06-빨강, 07-주황,08-청록,09-초록, 10-회색

Email

Optional

사용자 E-mail 주소 - 결제 화면에 표기

ByPassValue

Optional

CPCGI POST VALUE 값으로 전달될 데이터


DANAL WEB 서버에서 사용자 인증이 정상적으로 완료 되면, CP측 TargetURL로 아래 정보가 전송된다

DANAL WEB SERVER -> CP (TargetURL)

-    PORT : 443

-    Method : POST

-    CHARACTER SET : EUC-KR

Field

Required

비고 (Example Value)

ServerInfo

Required

거래 키(128byte)

OTP

Required

사용자 인증 번호

DstAddr0

Required

사용자 전화번호 (첫 자리 번호)

DstAddr1

Required

사용자 전화번호 (두 번째 번호)

DstAddr2

Required

사용자 전화번호 (세 번째 번호)

Carrier

Required

인증 받은 통신사 정보

(‘SKT’, ‘KTF’, ‘LGT’)

CAP

Required

거래 전 한도 금액

CPName

Required

결제 요청 시 전달 받은 CPName

ItemAmt

Required

결제 요청 시 전달 받은 ItemAmt

ItemName

Required

결제 요청 시 전달 받은 ItemName

TargetURL

Required

결제 요청 시 전달 받은 TargetURL

BackURL

Optional

결제 요청 시 전달 받은 BackURL

IsUseCI

Optional

결제 요청 시 전달 받은 IsUseCI

CIURL

Optional

결제 요청 시 전달 받은 CIURL

IsPreOtbill

Optional

결제 요청 시 전달 받은 IsPreOtbill

IsCarrier

Optional

결제 요청 시 전달 받은 통신사

IsDstAddr

Optional

결제 요청 시 전달 받은 전화번호

IsCharSet

Optional

결제 요청 시 전달 받은
CP
Webserver Character set

BgColor

Optional

결제 요청 시 전달 받은 color color 설정 값

ByPassValue

Optional

결제 요청 시 전달 받은 데이터



CPCGI.asp

이 페이지가 할 일이 많음 , 다날에서 TargetURL로 던져 줌

POST로 넘어오니 변수 잘 받아 먹고

IF Res.Item("Result") = "0" and Res2.Item("Result") = "0" Then 부분 밑으로 결제 완료에 대한 작업을 하면됨

DB  인서트라던지 사이트에 필요한 부분을 처리함


다처리하고 나면 <form name="CPCGI" action="./Success.asp" method="post"> 으로  document.CPCGI.submit(); 처리함



결제 검증단계

OrderID 또는 결제금액 등 결제 거래내용에 대한 검증을 반드시 해야 하며, 성공할 경우 다음단계로 이동한다


input

Field

Required

Max(Byte)

비고 (Example Value)

거래정보

ServerInfo

Required

128

거래인증 key

ConfirmOption

Optional

1

Confirm 옵션 선택

-     On : 1

-     Off : 0 (default)

AMOUNT

Optional

6

결제 금액 비교 시 사용

ConfirmOption 이‘1’ 인 경우 필수

CPID

Optional

10

요청된 CPID 비교 시 사용

ConfirmOption 이‘1’ 인 경우 필수

기본정보

Command

Required

-

NCONFIRM”  – 고정 값

OUTPUTOPTION

Required

-

DEFAULT   – 기본 값

IFVERSION

Optional

-

V1.1.2”    – 고정 값


ouput

Field

Required

Max(Byte)

비고 (Example Value)

기본 정보

Result

Required

4

결과 코드

ErrMsg

Required

255

결과 메시지

CPID

Optional

10

결제 요청된 CPID

ConfirmOption 이 ‘1’인 경우

SUBCP

Optional

10

SUBCPID Data 가 없을 경우 ‘none

AMOUNT

Optional

6

결제 요청된 금액

ORDERID

Optional

200

요청된 가맹점 주문번호

TID

Optional

18

거래 번호 (년간 unique)

( IFVERSION = V1.1.2 인 경우 )



    결제 요청

인증이 완료된 거래에 대하여 NBILL을 수행한다.

NCONFIRM 실행 후 CP의 금액과 Result의 “AMOUNT”값을 반드시 비교하여 올바른 결제 건이면 NBILL을 수행하도록 한다.


input

Field

Required

Max(Byte)

비고 (Example Value)

거래정보

ServerInfo

Required

128

거래인증 key

BillOption

Optional

1

BILL 옵션

-     Off: 0 (default)

-     Authkey:1

기본정보

Command

Required

-

NBILL”     – 고정 값

OUTPUTOPTION

Required

-

DEFAULT   – 기본 값

IFVERSION

Optional

-

V1.1.2”    – 고정 값


output

Field

Required

Max(Byte)

비고 (Example Value)

기본 정보

Result

Required

4

결과 코드

ErrMsg

Required

255

결과 메시지

DATE

Required

14

결제 완료 시간

TID

Required

18

거래 번호 (년간 unique)

DNTID

Optional

22

거래 번호

RemainAmt

Optional

6

결제 후 남은 한도 금액

Authkey

Optional

20

사용자 인증 키

BillOption 이 ‘1’ 인 경우 return 되며 재 승인이나 자동결제 필요 시 사용

ORDERID

Optional

200

요청된 가맹점 주문번호

(IFVERSION = V1.1.2 인 경우)





Success.asp

결제 완료 페이지... 그대로 써도 되고 알아서 꾸며도 됨







참조 : TeleditWeb_Manual.2.1.UI.doc , ClientModule_Install_Manual.doc , 다날 서비스개발팀



+ Recent posts