DOI QR코드

DOI QR Code

Development of Unmanned Payment System based on QR Code optimized for Non-face-to-face

비대면에 최적화된 QR 코드기반 무인 결제 시스템 개발

  • 김연우 (안양대학교 ICT융합학부 소프트웨어전공) ;
  • 황승연 (안양대학교 컴퓨터공학과) ;
  • 신동진 (안양대학교 컴퓨터공학과) ;
  • 김정준 (안양대학교 ICT융합학부 소프트웨어전공)
  • Received : 2022.07.14
  • Accepted : 2022.08.05
  • Published : 2022.08.31

Abstract

By reducing time spent outside, a shopping system was developed for middle-aged and elderly people who mainly use neighborhood marts and neighborhood mart managers. The main functions of this app are direct shopping and online shopping, and it was developed using QR code using Zxing library on Android and Kakao Map using Kakao API. In addition, it provides information such as payment statistics and bulletin board posts that members need through recycler view and graphs in an easy-to-read manner. Through this system, members can efficiently manage by reducing fatigue when using the mart through direct purchase using QR code and delivery through map, and reducing manpower wastage as a mart manager. Also, as a mart manager, more consumers will be able to sell more items.

외부에서 보내는 시간을 줄이고 동네마트를 주로 이용하는 중년층, 노년층들과 동네마트 관리자들을 위한 장보기 시스템을 개발하였다. 이 앱은 직접 장보기 기능과 온라인 장보기 기능이 주요 기능이며 안드로이드에서 Zxing라이브러리를 이용한 QR코드와 카카오 API를 이용한 카카오맵을 이용해 개발되었다. 또한 리사이클러뷰와 그래프를 통해 회원이 필요로 하는 결제 통계와 게시판 글 등의 정보를 가독성 있게 제공한다. 이 시스템을 통해 회원들은 QR코드를 이용한 직접구매 방식과 지도를 통한 배달 방식을 통해 마트를 이용할 때의 피로감을 줄이고 마트 관리자로서는 인력낭비를 줄임으로서 효율적으로 관리할 수 있다. 또한 마트 관리자로서는 소비자들이 늘어나 더 많은 물품을 판매할 수 있을 것이다.

Keywords

Ⅰ. 서론

최근 코로나 사태로 인해 외부에서 시간을 보내는데 제한이 되고 인터넷 쇼핑을 통한 장보기로 인해 동네마트에 대한 수요가 줄고 있다, 이로 인해 동네마트를 주로 이용하는 중년층, 노년층들과 동네마트 관리자들을 위한 새로운 장보기 시스템을 생각하였다.[1]

이 앱은 사용자 입장에서 QR코드를 이용한 장바구니는 간편하게 물품들을 들고 다니지 않고 담을 수 있어 편리하고[2], 앱을 통해 결제 후에 쌓이는 포인트를 모아 사용할 수 있다. 또한 앱에서 근처 마트를 통해 배달을 받아 빠른 시간 내에 외출하지 않아도 장을 볼 수 있다는 장점이 있다.

관리자 입장에서는 물품을 직접 준비하기 때문에 효율적으로 물품을 관리할 수 있다. 또한 동네마트를 대상으로한 앱의 사용성이 늘어나기 때문에 소비자가 늘어나 더 많은 물품을 판매할 수 있을 것이다.

Ⅱ. 관련 연구

1. QR 코드

QR코드는 Quick Response Code로 1994년 일본의 Denso Wave에서 발표한 이차원의 인식코드다. 숫자로는 7,089자, 아스키 문자는 최대 4,296자, 한자는 최대 1,817자를 저장하는 것이 가능하며, 한글도 한자와 비슷한 분량인 1,700자 정도까지 저장 가능하다. QR코드는 무료이고 이미지를 인식해서 다른 기기나 인쇄물의 데이터를 읽어오는데는 편리하지만 인쇄물과 같은 정적인 QR코드는 해킹 혹은 악성 코드 위험이 있으므로 주의해야 한다.

QR코드는 2010년 이후 스마트폰의 보급과 발전을 통해 사용이 많아졌고, 현재는 코로나 사태 이후 방역패스에 사용되며 사용량이 늘었다. 현재는 카카오페이와 같은 결제 서비스나 전자 출입명부, 대중교통 승차권과 같은 곳에서 활용하고 있다.

2. 카카오맵

카카오의 지도 서비스로 실시간 버스 정보, 스토어뷰, 도보 길찾기, 테마지도 등 다양한 기능을 이용할 수 있다.

2008년 12월에 다음지도(현 카카오맵)가 항공사진 서비스와 더불어 국내 지도업계에서는 최초로 로드뷰 서비스를 선보였다. 당시로서는 상당히 참신한 서비스여서 언론들이 해당 지도 서비스에 대한 뉴스 보도를 진행했다. 또한 다음지도의 이 서비스는 경쟁회사인 네이버 지도에도 영향을 주어 2010년대에 우리나라의 지리정보, 그 중에서도 특히 항공사진과 로드뷰 정보가 촘촘해지는데 매우 결정적인 계기가 되었다.

카카오맵의 API는 오픈 API이기 때문에 카카오맵에서와 같은 기능을 다양한 개발에 이용할 수 있다.

3. Maria DB

MariaDB는 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)이다. MySQL과 동일한 소스 코드를 기반으로 하며, GPL v2 라이선스를 따른다.

Maria DB에는 새로운 저장 엔진인 아리아(Aria)뿐만 아니라, InnoDB를 교체할 수 있는 XtraDB 저장 엔진을 포함하고 있다. 또한 기존에 MySQL 엔터프라이즈에서 플러그인으로 제공한 쓰레드풀 기능이 내장됐으며, 스토리지 엔진을 활용한 샤딩 기술을 제공한다. 즉, MySQL 의 오픈소스 버전을 넘어 (5.5까지) 모든 버전을 대체할 수 있는 특징들을 갖추고 있다. 마리아DB는 MySQL과 비교해 애플리케이션 부분 속도가 약 4~5천배 정도 빠르며, MySQL이 가지고 있는 모든 제품의 기능을 완벽히구현하면서도 성능 면에서는 최고 70%의 향상을 보이고 있다고 주장하고 있다.

4. Django (Python)

Django는 2005년부터 시작된 Python의 오픈 소스웹 프레임워크이자 풀 스택 프레임워크이다. Django는 Python 기반 웹 프레임워크 중에 가장 널리 퍼져있다. 일반적으로 파이썬을 웹 서비스에 쓴다고 하면 Django 또는 Flask를 사용한다. 기본적으로 Model에 해당하는 DBMS는 SQLite를 사용하게 되어있으며, Django Admin 기능을 통해 쉽게 조회/편집이 가능하다.

5. 유사 시스템 사례

개발하려고 하는 시스템과 유사한 시스템을 사용 중인 앱 중 근처 동네 마트를 중심으로 운영중인 앱 두 가지를 조사하였다. 하나는 마트 장보고라는 앱으로 지도 기능을 통해 집 근처의 마트를 단골마트로 설정하여 기간별로 진행되는 할인행사에 대한 정보를 얻을 수 있다. 또한 국내 여러 편의점들의 할인 정보도 제공 받을 수 있다.

다른 하나는 토마토라는 앱으로 국내 앱 중 가장 다운로드 수가 높은 앱이다. 마트 장보고와 같이 집 근처의 마트를 대상으로 할인정보도 받아볼 수 있다는 점은 동 일하지만, 상품을 선택해 장바구니에 모아 집에서도 택배로 장을 볼 수 있다는 점이 편리하다. 또한 결제하면 포인트를 모을 수 있고 앱을 이용하기에 관리가 편리하다.

Ⅲ. 시스템 설계 및 구현

그림 1. 시스템 아키텍쳐[3]

Fig. 1. system architecture

1. 아키텍쳐

가. 앱

(1) 로그인 기능

사용자가 앱에서 로그인할 수 있는 화면이다[4]. 사용자는 이 액티비티를 통해 회원가입 페이지로 이동해 회원가입이 가능하다. 회원가입 페이지에서는 사용자의 개인 정보와 아이디, 패스워드를 입력하고 스피너를 통해 판매자와 구매자로 구분되어 게시판 기능을 이용할 수 있다.

그림 2. 로그인 캡쳐화면

Fig. 2. login screen capture

(2) 직접 장보기 기능

직접 장보기 기능은 사용자가 직접 마트에 방문하여 입장하고 마트 내에서 물건을 QR코드인식을 통해 장바구니에 담아 구매할 수 있는 기능이다. 그림3과 같이 처음 사용자는 마트에 방문해 마트 입장 버튼을 눌러 QR 인식기능을 실행하고 입구근처에 게시된 QR코드를 인식하여 입장할 수 있다.

그림 3. 마트 방문 캡처화면

Fig. 3. Screen capture of mart visit

그림 4의 화면에서 물건 담기를 통해 마트내 에서 물건을 고른 후 장바구니 버튼을 클릭해 장바구니안의 물건들을 확인할 수 있다. 이후 장보기가 완료 했을 때 물건을 결제한다.

그림 4. 장바구니 캡처화면

Fig. 4. shopping cart screenshot

(3) 온라인 장보기 기능

온라인 장보기 기능은 지도를 통해 근처 마트에서 물건을 미리 주문하고 방문 후 물건을 수령하거나 배달을 통해 물건을 받을 수 있는 기능이다. 사용자는 지도에서 근처의 마트를 클릭 후 물건을 골라 구매할 수 있는 페이지로 이동할 수 있다.

그림 5. 지도기능 캡처화면

Fig. 5. Map screen capture

다음 화면으로 이동하면 마트별 물품이 리스트로 나열 된다. 회원들은 리스트를 확인하고 원하는 물품을 골라개수를 선택 후 장바구니에 담을 수 있다. 이후 물품을 다 담으면 장바구니로 이동해 물건 구매를 완료하고 배달 또는 방문수령을 선택하여 물품을 받을 수 있다.[5]

그림 6. 물품 선택 및 장바구니 이용 화면

Fig. 6. Item selection and shopping cart use screen

(4) 게시판 기능

게시판 기능은 판매자 또는 구매자가 서로 원활하게 정보를 교환할 수 있게 하려는 시스템이다. 판매자는 마트의 할인 행사 같은 정보를 구매자에게 제공할 수 있고, 구매자는 게시판을 통해 원하는 물품을 할인 행사에 맞춰 구매할 수 있다.

그림 7. 게시판 리스트 캡처화면

Fig. 7. Bulletin board list screenshot

판매자 또는 구매자가 게시판에 글을 남기기 위한 게시글 추가 화면이다. 사용자는 제목과 내용 부분을 통해 자신이 전하려고 하는 정보를 입력하고 구분에 있는 스피너로 판매자 또는 구매자를 선택하여 게시글을 올릴 수 있다. 이후 게시한 글은 판매자인지 구매자인지 사용자가 파악하고 확인할 수 있다.

그림 8. 게시글 추가 캡처화면

Fig. 8. Add post screenshot

(5) 통계 그래프

통계 그래프 페이지에서는 그래프를 통해 사용자의 결제 데이터를 시각적으로 표현하였다. 사용자는 해당 액티비티를 통해 앱에서 결제한 횟수와 사용금액에 대한 정보를 쉽게 알아볼 수 있다.

그림 9. 사용자별 그래프 페이지 캡처화면

Fig. 9. Screen capture of graph page by user

나. 데이터베이스

회원들의 개인정보나 장바구니 내역 등 데이터를 저장하고 활용할 수 있도록 테이블을 구성하였다[6]. basket 테이블에서는 회원들이 물건을 담은 목록을 저장하여 QR코드를 이용한 방문 구매와 지도를 이용한 구매 방식에서 활용된다. chart 테이블은 회원들의 구매횟수와 구매 금액들을 저장해서 앱에서 차트를 통해 확인할 수 있다. member 테이블은 회원들의 정보들을 저장하여 로그인 기능에 이용했다. noticelist 테이블은 회원들이 게시한 게시글들의 데이터를 저장한다. qrcode에서는 미리 생성된 QR코드에 대한 정보를 입력하여 회원들이 QR코드를 인식했을 때 필요한 정보를 불러온다.

표 1. 데이터 베이스 테이블 구성

Table 1. database table configuration

다. 서버 (Django)

파이썬에서 Django를 이용해 marketserver라는 이름의 서버를 구현하였다. 서버에서는 안드로이드 앱에서 필요한 데이터를 받아오거나 입력 또는 삭제를 위한 코드로 구성되었다.[7] 안드로이드에서 retrofit을 이용해 해당 주소로 되어있는 서버로 접속해서 해당 url로 설정되어있는 함수를 통해 원하는 값을 Json형식으로 response 받아 다시 안드로이드로 데이터를 받아올 수 있다.

표 2. Django 서버 기능 구현

Table 2. Implementing Django server features

2. 시스템 구현

가. QR코드를 이용한 직접 구매 시스템 개발

QR코드 기능은 ZXing 라이브러리 기능을 통해 구현되었다[8]. 개발 앱에서 Zxing을 실행시키고 바코드를 인식한 후 바코드의 값을 전달받아 거기에 맞는 액티비티를 실행한다. QR 코드 인식 기능은 버튼을 클릭해 기능을 실행 하도록 해서 구현하였다. 구현한 기능을 통해 QR코드로 마트 입장 및 물품을 장바구니에 담아 한 번에 구매할 수 있다.

표 3. module수준의 gradle에 추가한 라이브러리

Table 3. Library added to gradle at module level

나. 카카오맵을 통한 온라인 장보기 시스템 개발[9]

카카오맵 라이브러리는 카카오맵 사이트에서 라이브러리를 다운받아 모듈 수준의 gradle에서 컴파일 시켜 구현하였다. 해당 액티비티의 레이아웃에서 mapview를 선언한 후 액티비티에서 카카오맵을 받아올 수 있도록 구현하였다. 카카오맵을 실행한 후 맵에 마트의 위치를 표시하기 위한 mapPoint를 위도와 경도를 설정하여 클릭 이벤트를 구현하였다. 현 위치를 눌러 현재 사용자의 위치로 이동한 후 카카오맵에서 근처 마트를 선택하면 해당 마트의 물품 리스트들이 출력되고 회원들은 물품들을 골라 결제해 배달 혹은 직접 수령을 선택 할 수 있다.[10]

표 4. QR코드 인식 버튼 기능 구성

Table 4. QR code recognition button function configuration

표 5. 마커 속성 구성

Table 5. Configure marker properties

표 6. 마커 클릭이벤트 함수 구성

Table 6. Marker click event function configuration

다. 리사이클러뷰 리스트 구현

리사이클러뷰는 일반적인 리스트뷰와 다르게 데이터집합들을 각각의 개별 아이템 단위로 구성하여 화면에 출력해주는 뷰 그룹이며, 수 많은 데이터를 스크롤 가능한 리스트 형태로 표시해주는 리스트뷰다.

표 7. 리사이클러뷰 주요 클래스

Table 7. RecyclerView main class

시스템에서 리사이클러뷰를 구현하는데 4가지 정도의 주요 클래스를 사용하였다. ViewHolder, LayoutManager, Adapter 등으로 기본적인 리사이클러뷰를 구현하였고, onClickListner를 통해 클릭한 아이템에 해당하는 이벤트를 구현하였다. 해당 기능을 통해 마트의 물품리스트, 회원별 장바구니 리스트 등을 구현하였고 추가적으로 리스트 항목을 클릭하여 다른 액티비티로 이동할 수 있다.

Ⅳ. 결론

본 논문에서는 비대면에 최적화 된 새로운 무인 결제 시스템을 개발함으로서 마트관계자와 중년층, 노년층 회원들이 편리하고 실용적인 새로운 마트 운영방식을 제안한다. 새로운 시스템을 통해 회원들은 장바구니가 없는 장보기를 통해 편리함과 시간절약을 할 수 있고, 마트 관계자들은 마트 관리가 수월하고 인원을 줄여 마트 운영비용을 줄일 수 있고, 앱을 통해 소비자 또한 늘어나 더 많은 물품을 판매하는 것을 기대할 수 있다.

References

  1. Korea Internet Professional Association, "E-mart store service that you can use easily and conveniently on your smartphone - E-Mart mobile app", Journal of Korea Internet Professional Association, pp. 62-65, 2015.
  2. MIn-Jung Kim, Mik-Young Moon, "Smart Mart System Using NFC", Korea Computer Information Society, Vol 20, No. 2, pp. 71-72, 2012.
  3. Ho-Joong Lee, Hyun-Jung La, Chang-Sup Keum, Soo-Dong Kim, "A Process to Design and Implement Service-based Android Applications", Korea Computer Information Society, Vol 18, No. 4, pp. 245-260, 2011. DOI: https://doi.org/10.3745/KIPSTD.2011.18D.4.245
  4. Jung-Gun Lim, Chang-Suk Choi, Tae-Eun Park, Hyo-Sun Ki, Beong-Ku An, "Android, Mobile application. Integrated login application", IIBC Journal of Korean Literature, Vol. 13, No. 3, pp.151-156, June 2013. DOI: https://doi.org/10.7236/JIIBC.2013.13.3.151
  5. Eun-Sook Cho, Chul-Jin Kim, Sook-Hee Lee, "A Modeling Technique for Development of Mobile App. based on Android", Korean Society of Industry and Technology, Vol 14, No. 8, pp.3999-4005, 2013. DOI: https://doi.org/10.5762/KAIS.2013.14.8.3999
  6. Jae-Man You, In-Kyoo Park, "Android Storage Access Control for Personal Information Security", IIBC Journal of Korean Literature, Vol. 13, No. 6, pp. 123-129, Dec 2013. DOI: https://doi.org/10.7236/JIIBC.2013.13.6.123
  7. Eun-Sook Cho, Chul-Jin Kim, Sook-Hee Lee, "A Modeling Technique for Development of Mobile App. based on Android", Journal of the Korean Society of Industrial Technology, Vol. 14, No. 8, pp. 3999-4005, Aug 2013. DOI: https://doi.org/10.5762/KAIS.2013.14.8.3999
  8. Ji-Nu Choi, Beom-Seok Kim, Ji-Ye Jeon, Dong-Ho Shin, Jin-Ok Kim, Jong-Ho Park, Suk-Hoon Lee, Dong-Won Jeong, "Design and Implementation of Smart Door Lock System using Beacon and QR Code", IIBC Journal of Korean Literature, pp. 1311-1314, Nov 2017. DOI: https://doi.org/10.3745/PKIPS.y2017m11a.1311
  9. Won-Joo Lee, Sang-Won Jung, Young-Dan Noh, Kwang-Sik Yu, "Implementation of lowest Price Shop Search Application based on GPS Sensor", Korea Computer Information Society, pp. 205-206, July 2021.
  10. Kyung-Min Kwak, Kyu-Bin Ji, Jung-Chul Lee, Soo-Jae Kim, Byung-Woo Oh, "Android-based quick service application utilizing location information", Journal of the Korea Information Technology Association's Comprehensive Academic Presentation, pp. 299-301, Oct 2020.