[*] 쇼핑몰 개발 관련 문서

[*] TODO

- 사용자 별로 상품 정보를 읽은 순서를 파일에 기록하는 것을 검토. 현제는 각 플러그인에서 별도로 처리한다.



[*] 유의점
sessionfile 를 이용해서 사용자별 파일을 생성해야한다.
sessionfile('mall') 이 장바구니 파일이다.



[*] 설치

info.php 에 $info[tid] 에 상점 아이디, $info[mertkey] 에 상점 아이디를 입력한다.

        	$tid = "tthruthesky";
        	$mertkey = "70026214f951f2515c2ee11ac95ad790";


[*] 장바구니

상품번호, 갯수, 선택 사항 등이 기록된다.

[*] 주문 결제

주문 확인(order_confirm.html) 페이지에서 각 결제 방식 별로 페이지를 이동한다.
즉, 이 페이지에서 결재 방식을 클릭하고 "다음"을 진행하면 해당 결제 페이지로 이동을 한다.

결제는 흔히 쓰이는 휴대폰, 신용카드, 인터넷뱅킹, ARS, 무통장입금 이렇게 준비를 한다.
그 외는 나중에 별도로 추가를 한다.

결제 방식은 offline, banking, card, ars, cphone 이렇게 나뉜다.


payway_offline.php 무통장 입금 (인터넷,온라인 뱅킹)
payway_online.php 계좌이체
payway_card.php 카드결제
payway_cp.php 휴대폰 결제



post.state 에는 order_confirm_submit, payway_offline_submit 과 같이 단계적인 처리 절차의 정보가 기록된다.

post.state 상태를 보고, 어떤 방식으로 결재를 했는지, 또는 현제 어떤 상태인지, 어떤 상태에서 멈췄는지 등을 알 수 있다.

관리자는 post.state 에 값을 설정(지정)함으로서 주문건에 대한 상태를 변경할 수 있다.

post.password_type 에는 지불 결제 방식이 기록된다.
post.state = payway_done				지불 (결제,입금) 완료
post.state = delivery_prepare		배송 준비
post.state = delivery_sent			물품(주문건) 배송 완료 (배송은 되었으나 수신은 아직 안되었다.)
post.state = delivery_take			(수신자) 물품 인수 완료



payway = online 일 경우,
	post.state 에는 payway_online_submit_success , payway_online_submit_fail 두가지의 값을 가질 수 있다.

payway = cp 인 경우,
	post.state 에는 cp_success 와 cp_fail 두가지가 들어갈 수 있다.
	



[*] 결제 시스템 (paygate)



[-] eCredit




우선, LG 데이콤의 eCredit 으로 했다. 다른 카드사와 비교를 해도 큰 차이가 없다.



테스트가 용이하므로 우선 작업을 했다.

http://pgweb.dacom.net:7085/pg/wmp/mertadmin/jsp/mert_main.jsp 테스트 상점 관리자 페이지


@todo 배포(서비스) 전 점검이 필요하다.
	특히 테스트 URL 로 작업을 하므로 실제 URL 로 하기 위해서는 결제가 필요하다.
	returl 에 대한 전체적인 조정이 필요하다.
	




신용카드가 없어서 관련해서 결제 테스트가 이루지지 않는다.

계좌이체, 휴대폰 기능만 테스트해서넣는다.





간단하게 "링크방식"을 통해서 결제를 한다.


@todo 관리자 모드에서 PG 사 및 관련 정보를 입력(관리)할 수 있도록 한다...



데이콤에서는 euc-kr 페이지를 받고 있다.

장난은 utf-8 홈페이지이다.

따라서 아래와 같이 form 을 전송해야한다.

	<FORM name="mainForm" method="POST" action="" accept-charset="euc-kr">


그런데, NC, Opera 웹브라우저에 지원되는데, IE 에서 지원을 하지않는다.


위 코드에서 accept-charset 은 표준이다.

이를 위한 해결책은 관련 주문 페이지만 euc-kr (iframe 으로 처리)로 변경하는 것이다. 

@note 문자셋 문제의 해결을 위해서 결재 부분만 iframe 으로 해서 euc-kr 로 처리를 했다.
	결과를 iframe 에서 받아서 보여주기보다는 윈도우 전체창으로 보여주는 것이 올바른다.
	
	openername 변수에 윈도우의 이름을 지정할 수 있다.
	
	따라서 먼저 iframe 을 호출하기 전에, 아래와 같이 현제 윈도우에 이름을 지정한다.
	
		<script>self.name = 'homepage';</script>
	
	그리고 iframe 된 페이지 내에서 openername 을 지정해서 새창을 띄우면된다.

		<iframe src="<?=$pf?>" width=100% height=250 scrolling=yes frameborder=no></iframe>

	

@note ret_url 변수의 리턴 받을 주소를 urlencoding 해서 전송을 하면 안된다.


@note MServer 없이도, ret_url 에 결과를 리턴받는 방식으로 처리를 할 수있다.
결제 처리르 결과는 ret_url 의 FORM 형식으로 전송된다.








[*] 날짜

dateTime_firstwrite 주문날짜는 이다.


[*] 데이터베이스 조정

주문 처리에서 post.name 은 payer (입금자, 지불자) 를 나타낸다.



[*] 사용

사용법은 스킨마다 약간씩 틀릴 수 있다.



리스트 이미지, 설명 이미지는 1개만 사용이된다. 여러개를 업로드한 경우, 1개만 남기고 지워야한다.
그렇지 않으면 어떤게 사용될지 모른다.

[-] default 스킨에서 쇼핑몰 스킨은 2단 카테고리를 사용한다. 3단 카테고리는 적용을 하지 않는다. 1단으로 사용 가능하며 소스에서 2단까지만 되도록 해 놓았다.

컴퓨터 주변기기 쇼핑몰을 예를 들어, 1단 카테고리로 하고 2단 서브로한다. 다음과 같다.

	키보드 ----- 로지텍, 마이크로 소프트, 삼성, 엘지, 태광, 아이락스
	메모리 ----- 삼성(PLEOMAX)   에이식스(Axis)   엘지(LG)   일리야드(Iliad)   이메이션(Imation)   엑센(Axxen)   소니(Sony)   프리컴(Freecom)
	네트워크 --- 공유기, 허브, 랜카드, 케이블
	용지 ------- A4용지   A3용지   폼택(Formtec)   사진인화지   잉크젯전용지
	기타 ------- 악세사리, 파워, 노트북
	



[-] 이미지 크기

이미지의 용도는 스킨의 어떻게 구성하느냐에 따라 틀리다. 여기서는 기본적인 default 스킨에 대해서 설명을 한다.

이미지는 작은 이미지, 큰 이미지, 보통이미지 1, 보통 이미지 2로 구성이 된다.

상품을 여러개 리스트할 때에는 작은 이미지를 사용한다. 이때, 크기의 제한은 없다.
하지만, 모든 작은 이미지의 크기는 일정해야 보기가 좋을 것이다.
높이는 100 정도여야하며, 너비는 100 에서 150 사이면 좋다.

너비 120 픽셀, 높이 80 픽셀을 추천한다. 120x80 을 추천하는 이유는 없다. 그냥 하다보니 그렇게 되었다.

작은 이미지는 너비 100~150, 높이 80~100 정도의 이미지면 충분하다.



상품 보기에서 사용되는 이미지의 크기는 300x300 이다. 보통 이미지들이 사용된다.
보통 이미지는 수정을 통해서 계속해서 업로드 가능하다.

큰 이미지는 상품의 설명을 이미지로 표현한 것이다.





[-] 추천, 인기 상품

아이템 정보 설정에서 추천, 인기 값의 지정되면, 밖으로 (이미지 등으로) 표현이된다.



[*] 카테고리

작은 이미지는 업로드될 때, checked 로 표시가 된다. 따라서  fileChecked($item['idx']); 와 같이 작은(체크된) 이미지를 구할 수 있다.


2단 카테고리까지 되도록 한다. 2 단 카테고리면 충분하다.
대분류 -- 소분류 -- 아이템




리스트를 할 때에도 idx, 글 읽기를 할때에도 idx 를 사용한다.
idx 는 때에 따라서 아이템 번호가 되기도 하고 카테고리 번호가 되기도한다.



