[문의]결제완료시 http 500 - internal server error 문제.
본문
현재 테스트 결제 모드 이며,
신용카드 결제 및 무통장 결제 만 사용체크 하였습니다.
2개 결제 방법 모두 배송데이터 입력 후 결제완료 버튼(신용카드는 신용카드 인증 패스 후 )을 누르면
http 500 - internal server error 페이지가 표시 되며
주문이 들어가고 있지 않습니다.
이메일로는
주문 상품의 상태를 변경하는 중 DB 오류가 발생했습니다.
오류내용
update wp_gc_shop_cart set od_id = 2016101810240574, ct_status = 'order' where od_id = 2016101810240539 and ct_select = '1'
error file : /index.php
같은 메시지가 날라오고 있습니다.
실제 DB에 접속해서 위 쿼리를 실행하면 데이터는 잘 수정 됩니다.
무엇을 확인하고 수정해야 하는지 알려주십시오.
감사합니다.
답변 5
직접 디버깅 해보지 않는한 찾기 힘든 문제 같아보입니다....
이메일 내용으로는 부족합니다.
쿼리는 문제 없어 보이지만 직접 쿼리도 실행해보시고 쿼리에서 오류 내용이 나오면 그걸 보여주시거나.
결제 flow 를 쿼리 실행 직접 하나씩 테스트 해보셔야 할듯 합니다.
500에러는 php코드상의 에러입니다.
페이지 자체를 처음부터 한줄씩 체크하며 봐야하겠네여
디비쿼리에서 문제 발생인거같기도하네여
mysql sql-mode 하고 관련이 있지 않을까 추측이 드네요...
저는 strict mode 로도 테스트해 보았지만, 이상이 없었습니다.
혹시 모르니 1.3.7 이하 버젼이면 업데이트 해 주세요.
디버깅으로 찾아 보니 에러메시지 가 이렇게 나오는 부분이 있습니다.
------------------------------------------------------------------------------------
Fatal error: Uncaught exception 'Exception' with message '<p>고객님의 주문 정보를 처리하는 중 오류가 발생해서 주문이 완료되지 않았습니다.</p><p>KCP를 이용한 전자결제(신용카드, 계좌이체, 가상계좌 등)은 자동 취소되었습니다.' in /www_root/wp-content/plugins/gnucommerce/shop/order_update_common.php:753 Stack trace: #0 /www_root/wp-content/plugins/gnucommerce/shop/orderformupdate.php(13): include_once() #1 /www_root/wp-content/plugins/gnucommerce/lib/shortcode/order.php(23): include_once('/www_root/wp-co...') #2 [internal function]: GC_shortcode_Order::output('') #3 /www_root/wp-content/plugins/gnucommerce/lib/gc_shortcode.class.php(44): call_user_func(Array, '') #4 /www_root/wp-content/plugins/gnucommerce/lib/gc_shortcode.class.php(77): GC_Shortcodes::shortcode_wrapper(Array, '') #5 [internal function]: GC_Shortcodes::order('', '', 'gnucommerce_ord...') #6 /www_root/wp-includes/shortcodes.php(326): call_user_func('GC_Shortcodes::...', '', '', 'gnucommerce_ord...' in /www_root/wp-content/plugins/gnucommerce/shop/order_update_common.php on line 753
=> 소스
throw new Exception('<p>고객님의 주문 정보를 처리하는 중 오류가 발생해서 주문이 완료되지 않았습니다.</p><p>'.strtoupper($config['de_pg_service']).'를 이용한 전자결제(신용카드, 계좌이체, 가상계좌 등)은 자동 취소되었습니다.');
=> 위부분을 주석 처리하니 일단 오류는 없이 지나가지만
주문 데이터가 DB에 저장 되지 않고 있습니다.
=> 주문창의 od_id 와 cart 테이블의 od_id 가 달라지는 것 같습니다.
왜 이것이 달라지는 것일까요?
---------------------------------------------------------------------------
이 부분에서 문제가 발생하는 것 같은대 이것은 어디를 손 봐야 할 까요?
추가로 CASE 문 안에..
// 사용자 결제 실패 했을때 hook
do_action('gc_failed_user_pay', $order_id, $uid, $order_metas, $od_pg );
wp_die('<p>고객님의 주문 정보를 처리하는 중 오류가 발생해서 주문이 완료되지 않았습니다.</p><p>'.strtoupper($config['de_pg_service']).'를 이용한 전자결제(신용카드, 계좌이체, 가상계좌 등)은 자동 취소되었습니다.');
여기에서 500 인터널 서버 에러가 발생을 했더군요.
원인이 무엇인지는 모르겠습니다.
어떻게 해야 할 지 알려주십시오.
PHP Version 5.6.9 입니다.