본문 바로가기

Development/Coding

KCP 결제 모듈 적용기

한페이지 짜리 웹사이트로 단일 품목을 전자결제 하기 위해 KCP 페이게이트 적용하는 중 기억해 둘만한 사항들 메모 합니다.
  • APM 환경의 개발이어서 PHP 모듈 적용을 적용
  • 메뉴얼 대로 샘플 코드 따라서 적용하면 별 문제 없이 설치 가능함
  • 주문 폼에서 결제 페이지로 넘어가는 폼 전송 (submit) 버튼이 평범하게 구현되지 않았기 때문에 폼 전송 루틴을 꼬아버리면 결제 창이 뜨지 않을 경우가 있음
  • 심사를 받기 위해 심사 전까지(아마도) 광고를 삽입해야 함
  • 주문 확인(조회)을 위한 페이지가 꼭 있어야한다고 함

작업 중인 페이지는 utf-8 인코딩이고  KCP 는 euc-kr 로 데이터를 전송하고 있습니다. 이런 문제 때문에 한글이 깨져보이게 됩니다.

  • 기본 메뉴얼에서 utf-8 관련 정보가 부족하여 시행착오를 겪게 되었습니다.
  • 작업 중인 페이지를 euc-kr 로 변경 : 이건 불가능합니다. json 으로 데이터를 조작하는 코드 더미들이 있어서 안됩니다. 그리고 MYSQL 을 사용하고 있는데 euc-kr 데이터 스토어가 잘 안되고 있습니다. 이유는 모르겠지만 잘 안되었습니다.
  • 데이터 전송시 iconv (PHP 문자열인코딩 변환) 를 사용하여 해결 : 몇번의 시행 착오 끝에 가장 상식적인 방법으로 해결하는 것이 좋은 것이라고 결정했습니다.
  • KCP 에서 호출되는 javascript 파일 : euc-kr, utf-8 그리고 각각의 https 모드를 지원하는 파일이 있습니다. 환경에 맞는 파일을 호출하도록 코딩해야합니다.
  • 샘플 페이지의 order.php, result.php (mysql data insert 루틴) 의 상단에 setlocale 함수를 사용해 명확한 문자열인코딩을 지정해주는 것이 안전합니다.
코드의 흐름은 아래와 같습니다.
  1. 주문 폼(utf-8) => (KCP 스크립트 호출) => 
  2. 결제창(euc-kr) 
  3. (utf-8 =>euc-kr) (pp_ax_hub.php) => 결제 처리 => 
  4. 결과화면 (utf-8) (euc-kr => utf-8) => MySQL 저장 (utf-8) => 
  5. 주문 확인 폼 (utf-8) => MySQL 쿼리 (utf-8) => 주문 내역 확인 (utf-8)


코드를 수정하고 개선하는 과정에서 euc-kr 과 utf-8 을 왔다갔다 많이 하게 되었는데 처음에 단순하게 작업후 금방 완성될 것이라고 생각하고 별도의 브랜치를 따서 작업하지 않았습니다. 하지만 많은 시간을 소비하게 되었고 후회하게 되었습니다. 이렇게 코드 인코딩을 변경하는 류의 뭉탱이 작업이라면 반드시 브랜치를 별도로 생성하여 롤백을 쉽게 할 수 있는 환경을 구축하는 것이 좋습니다. 그런 면에서 GIT 버젼관리 시스템은 최고의 솔루션이 될 것이라 믿어 의심치 않습니다.