Ghost602
30
2016-11-21 17:49:22
14
10670

신용카드 단말기 시리얼통신 해보신분?


자바 시리얼 통신을 이용해서 신용카드 단말기 연동을 하려고 합니다.

화면에서 결제금액을 입력해서 결제버튼을 누르면 카드단말기에 보이고

카드를 긁어서 결제하면 결과를 자바 시리얼 통신을 이용해서 받고싶습니다.

혹시 관련 프로그램 개발해보신분이나 자료가 있으신분 답변좀 부탁드립니다.

검색엔진 다 뒤져도 신용카드 단말기 연동에 대한 자료는 없더라구요.

맨땅에 헤딩하려니 너무 힘드네요.


아무 자료라도 좋으니 댓글 부탁드립니다....ㅜㅜ

0
  • 답변 14

  • 아수수
    872
    2016-11-21 17:53:53

    저도 안해봐서 모르지만 단말기 업체한테 자바API연동 규격서 등등 그쪽 개발자와 컨택해야 하는거 아닌가요?

  • OkkyActivity
    442
    2016-11-21 19:42:44
    신용카드 단말과 서버의 연동을 담당한적 있슴다

    c언어로 제작하였고 서버사이드 담당했습니다

    하나의 포트로 최대 2000개 단말기 동작되도록 구현하여쏘 단말기 제작업체랑 프로토콜과 전문 약속해서 주고받았습니다

    도움드릴수 있는게 있을지 모르겠지만 도움드릴수 있는게 있으면 최대한 도움드리고싶어요
  • OkkyActivity
    442
    2016-11-21 19:46:57

    왜냐면 저도 그때 멘땅에 헤딩엄청했거든요..

    씨언어 하나도 모르고..


    계약업체가 계약파기하느니 마느니까지 큰소리나와서 매일 철야근무하고..

    그때의 고통이 너무 생각나네요  도움드릴수있는거라면 최대한 도움드리겠습니다

  • Ghost602
    30
    2016-11-21 20:26:23

    sb10529 님 너무 감사합니다.

    제가 지금 딱 그심정이네요... 개발 착수금은 받아놓은상태인데... 이러다 얼마되지도 않는돈 

    토해내야 할판입니다.

    현재 시중에 파는 단말기를 하나 구해서 가지고 있는상태입니다.

    케이블은 인터넷에서 구입하여 RJ11 to 9핀 연결했구요.

    2000개 단말기를 돌아가게 구현하셨다면 왠만한 국내 단말기는 다 될거 같은데요...

    저는 소켓통신은 해봤는데 시리얼통신은 처음이거든요.

    소켓하고 비슷하게 전문 넘기면 버퍼에서 읽어서 처리하면 될것 같다는 생각인데요.

    전문 모양을 어떻게 던져야 할지 몰라서 지금 멘붕상태입니다.

    한개 단말기라도 연결하셨던 소스라도 좀 공개해주시면 참고해서 만들어 보겠습니다.

    꼭 부탁드립니다. ㅜㅜ



  • OkkyActivity
    442
    2016-11-21 22:42:24

    아..단말단 구현이신가요?ㅜㅜ

    그럼 제가 도움을 드릴수 있는 상황인지 모르겠네요 


    저는 우선 2000대 단말이 동시에 붙는 특정한 상황이었고, 단말의 종류는 1가지로 약속된 상황이었구..

    결정적으로 단말단 프로그램 구축은 타회사 직원이 한거구..


    전문을 협업해서 만들어서 주고 받았거든요..


    (서버)<----TCP---->(단말) 

    TCP 소켓통신으로 구현했었습니다.


    기술적인 부분이 문제인가요? 아니면 전문모양을 만드는 약속이 문제인가요??




  • Ghost602
    30
    2016-11-22 13:50:49

    기술적인부분은 제가 만들어보려고 하고 있구요.

    전문모양이 문제인데... 신용카드 단말기 회사에 전화하면 대리점으로 물어보라고 하더라구요.

    문제는 대리점이라는게 Van 사인데... 자기네들하고 계약을 해야만 어떤 정보를 줄수가 있고...

    또한 제가 궁금한 부분을 물어봐도 잘 모르더라구요.

    그냥 기존 POS하고 신용카드 연결하는 내용만 알고있구요.

    사실 제가 구현하려고 하는건

    웹(클라이언트PC)에서 결제금액송신 ->  로컬(JAVA소켓) -> 로컬PC에 연결된카드단말기로 결제금액전송(시리얼포트) -> 카드단말기 결제성공시 -> 로컬(JAVA소켓) -> 웹으로 결과 넘겨주기.

    즉, 웹에서 클라이언트 PC에 연결된 카드단말기하고 통신을 하려고 합니다.

    클라이언트PC에 자바데몬을 띄워놓고 카드단말기하고 송수신하려고 하구요.

    어떤 도움이라도 좋으니 아시는 정보가 있으면 부탁드리겠습니다. ^^;

  • OkkyActivity
    442
    2016-11-22 15:41:30

    아하 그럼 단말단/서버단 전부 혼자 구현하시는거네요?

    다행히 1:1 통신인것 같구여..


    그럼 제가 이해한게 맞는지 한번 확인해도될까요?

    Ghost님께서 구현해야 하는 부분은 

    클라이언트PC 자바(Server 라고 불러도 될까요?) <----> 카드단말 (Client)

    여기서,

    1. 서버단의 자바 데몬

    2. 카드단말 내부의 통신프로그램  (보통 Van사에서 미리 개발되어있지 않나요?)

    3. 서버와 클라간의 전문내용

    요 3가지 인거네요..


    만약 혼자서 다 하신다면 전문내용에 굳이 고민하실 필요가 있나 싶기도해요.

    소켓통신 하셨던 것처럼, 

    -------------------

    1. 주고 받을 액션을 정의

       - (결제 요청, 승인 결과 아마 이 2가지 밖에 없지 않을까요? 제 경우는 특수한 경우여서, 카드 삽입, 제거의 경우도 체크했었던 것으로 기억합니다..:))

    2. 주고받을 패킷의 오류를 검사할 CRC

    3. 한 트랜잭션당 일어날 Count

    4. 시작패킷과 끝 패킷의 고유 문자 정의

    --------------------

    이 3가지 정보 정도면 되지 않을까요?

    저는 이 패킷들을 C언어 unsigned char로 0x.. 헥사값으로 보냈었구요..



  • OkkyActivity
    442
    2016-11-22 15:43:52

    시리얼 통신은 통신방식을 잘 모르겠는데..

    전문 패킷 자체는 TCP 소켓통신과 별 차이가 없지 않을까요? 어차피 서로간의 약속인지라...

  • OkkyActivity
    442
    2016-11-22 15:52:51

    아 근데 지금 제가 글을 다시 꼼꼼히 읽어보니까

    이게 문제가 아닐수도 있겠다 싶네요..


    단말기는 시중에서 구입한거라고 하셨고..

    단말단의 프로그램은 건드릴수 없는 상황인것 같네요.....ㄷㄷ

    그 단말의 VAN사는 정식 계약이 되어야 전문및 프로그램에 대한 협조를 할 수 있는 상황이고요..?

  • OkkyActivity
    442
    2016-11-22 15:53:47

    그래서 그 단말기가 주고받는 전문 내용을 알 수 없기 때문에..

    그게 문제인 거였군요...

  • Ghost602
    30
    2016-11-23 10:27:10

    네.. 맞습니다.

    그래서 혹시 POS쪽 개발해보신 분이 계시면 도움을 받으려고 했어요.

    POS장비는 C프로그램으로 신용카드 단말기 연결을 하더라구요.

    C던 JAVA던 연결 전문 방식만 알면 프로그램은 제가 만들어 보려고 했던거거든요.

    아무리 뒤져도 관련 정보가 없네요...ㅜㅜ

  • OkkyActivity
    442
    2016-11-23 14:53:33

    우선 아마도 VAN사 측에서 주로 정한 전문이기때문에...정보를 알아도 제3자 공개가 불가능하기때문에 법적인 문제로 불거질 수 있어서 쉽사리 공개해 주시는 분은 없을것같은데..

    제 판단에는 지금 문제를 해결하려는 노력을 최대한 해보신다고 하시면..


    우선 시리얼로 연결해서 서버사이드에서 카드 단말기로부터 일어나는 행위에 대한 패킷들을 전부 받아서 분석해보고 역으로 추적해서 프로그램을 짜는 그런방법밖에는 없지 않나...그런 생각이 드네요..ㄷㄷ

    (사실상 불가능에 가까워보이긴하지만...ㅜㅜ)


    예를들어..케이스를 전부 쪼개서...


    1000원 결제 시도 -> 성공

    01 01 0A 08 3E 0F

    1000원 결제 시도 -> 실패

    01 01 0B 08 3E 0F


    라고 하면...08 3E가 1000원...

    0A는 성공..0B는 실패..


    이런식으로 [추측] 정도는 해볼 수 있지 않을까 싶은데...

    제 생각엔 거의 불가능에 가깝지 않나 싶어요 ㅜㅜㅜㅜㅜㅜㅜㅜ


  • 3chamchi
    84
    2020-08-21 18:37:19

    잘 진행되셨나요? 저도 같은 상황이라 조언을 구할 수 있을까 해서요.

  • 뽕뇨
    64
    2020-08-26 17:45:16

    어떻게 진행하셨는지 저도 궁금합니다 조언을 구할 수 있을까요?

    동일한 상황입니다. java 웹으로 구현을 해야해서요.

  • 로그인을 하시면 답변을 등록할 수 있습니다.