주문번호와 주문서 생성에 관하여...
본문
안녕하세요.
일단 상황은 아래와 같습니다.
고객이 주문을 시도하며, 신용카드, 가상계좌에 대한 고민을 하며, 임시 주문서가 존재.
이니시스 내역을 보았을 때는, 가상계좌로 주문이 일어남.
이니시스로 주문 완료가 되었고, 주문서가 생성됨.
<--- 여기 부터 문제
주문서가 생성되었는데 결제 수단이 신용카드로 생성됨.
그래서 주문 완료 되자마자 "입금"으로 주문상태가 변경됨.
그러나 이니시스 상에서는 가상계좌로 주문만 한 상태이고, 입금은 되지 않음.
DB내역과 이니시스 주문을 비교해보았을 때, 원인은 주문번호가 다름.
예를 들어 20220101000000 이 이니시스 주문번호라면, 자사몰에는 20220101111111로 저장이 되어있음.
이니시스에 저장된 주문번호 20220101000000 은 자사몰 임시주문서로 별도 존재함.
또다른 특이점이라면 이니시스 내역대로라면 주문번호 20220101000000로 가상계좌로 하여 주문이 되었다는 건데, 자사몰의 주문번호 20220101000000는 결제 수단이 신용카드라는 것.
그래서 소스를 하나하나 분석해보았는데, 이니시스 주문완료를 통해 받은 결과의 주문번호를 기준으로 임시주문 테이블에서 데이터를 불러오게 되고,
$od_id = get_session('ss_order_id'); 세션 주문 번호를 주문번호로 하여 주문서를 생성한다는 것인데,
세션 주문 번호와 이니시스에서 결과로 받은 주문번호가 같아야 될 것 같긴 하지만, 달라지게 되어 20220101111111 주문번호를 가진 주문서에 20220101000000 임시 주문서에 저장된 결제 수단인 신용카드로 로직이 처리되고, 결제 완료로 처리가 된 것.
여기서 의문점은
1. 이니시스 내역으로 판단해 볼 때, 20220101000000 주문번호로 가상계좌 주문 시도하였는데, 자사몰 임시 주문서 20220101000000은 왜 신용카드인가? (이니시스에 보내는 주문번호와 자사몰에 저장된 임시주문서가 내용이 다르다면 영카트 로직상 큰 문제 같은데...)
2. 요청된 주문번호와 세션 주문번호가 다른 이유? (상황에 따라 가능성이 완전히 없지는 않아 보이지만)
3. 주문 처리 소스 부분에 수정이 필요한 사항이 아닐까? (결제 금액 불일치 체크 로직은 있어보이지만 결제 수단 체크 로직은 없어 보이고, 리턴된 주문 번호 기준으로 하는 것이 1번 의문점에 해당된다면 문제가 될 것 아닐까? )
4. 이니시스의 이슈는 혹시 아닐까? 처음보는 케이스라..
관련 로그는 15일만 저장하는데 30일전 기록이라 찾을 수가 없어 일단 DB에 저장된 내역들을 비교해봤을 때 이상한 점이 꽤 있어 보입니다.
물론 제가 놓친 부분도 있을 것 같고, 업데이트가 된 상황일 수는 있겠으나 orderformupdate.php 최근 파일을 봤을 때, 큰 차이를 보인 부분은 없어 보였습니다.
혹시 이에 대한 의견이나 해결 방안을 알고 계신다면 답변 주시면 감사하겠습니다.
** 질문이 사라져서 다시 올립니다. 다른 질문 채택기록과 여타 질문들도 사라졌는데 롤백 하신건지 모르겠습니다.
답변 3
제가 운영개발팀에서 2년 정도 팀관리를 맡고 있었던 시절에
이러한 일이 비일비재 했습니다. ( 영카트는 아니고 자사 자체 개발..)
결제대행사 실수는 극히 드믈고 대부분 자사 시스템 이슈였습니다.
제가 영카트에 대한 자세한 주문로직을 분석을 해보지 못했지만,
아는대로 답변 드리겠습니다.
1 ~ 2
예를 들어서 주문자 a(신용카드)와 b(가상계좌)가 있는데 동일하게 주문번호가 발급이 될 가능성이 있다고 보여집니다.
이러한 경우 트랜잭션 처리가 되는지 한번 점검 한번 해보시길 바랍니다.
3~4
잘못된 주문 이슈건에 대해서 롤백처리가 되었는지 로직 점검도 해보시길 바랍니다.
잘못 들어간 주문번호에 대해서는 사용자에게 오류 경고를 표시하고
다시 결제를 유도하는 로직이 있어야 된다고 판단 됩니다.
이러한 이슈는 결제 통보 메일도 받기도 힘들고,
로그에도 안남을 겁니다.
그래서, 로직을 다시 한번 살펴보시고, 롤백한 부분은 롤백 처리해보시고
재정비를 해보시는게 어떨까 합니다.
일단 영카트 기본에서 해당 같은 에러를 본적은 없어서 커스텀을 혹시나 하셨다면 동일 버전의 원본파일로 한번 확인을 해보셔야 할거 같습니다. 원본으로 아무 문제가 없으면 커스텀 된 부분들을 하나씩 확인을 해보셔야 할거 같습니다.
답변 감사드립니다.
일단, 주문 관련 부분은 영카트 기본 로직에서 수정하지는 않았고, 저도 처음보는 케이스 이긴 합니다.
다만, 고객사들 매출 규모가 수십억대라 주문 건이 워낙 많다 보니 여러 주문 케이스가 존재하였고, 또 새로운 버그 인가? 원천적인 문제일까? 고견을 여쭤본 것입니다.