작업하고 내부 기술 문서를 만들어 둘때가 많이 있는대 대외비성을 뺀 아주 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) (월 정액 가입을 위한
|
기본정보 |
|||
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-회색 |
|
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 |
결제 요청 시 전달 받은 |
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 , 다날 서비스개발팀
'Interesting > TIPTECH' 카테고리의 다른 글
Microsoft Office Mobile (0) | 2014.04.03 |
---|---|
Facebook Open Graph META Tags (0) | 2014.04.03 |
크롬 브라우저에서 악성코드 주의 페이지 안내 (0) | 2014.03.20 |
구글 번역서비스의 웹기반 TTSText-To-Speech (0) | 2014.03.04 |
크롬 새로고침 팁 (0) | 2014.01.21 |