[문의]결제완료시 http 500 - internal server error 문제.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
[문의]결제완료시 http 500 - internal server error 문제.

QA

[문의]결제완료시 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 를 쿼리 실행 직접 하나씩 테스트 해보셔야 할듯 합니다. 

mysql sql-mode 하고 관련이 있지 않을까 추측이 드네요...

 

http://bizadmin.tistory.com/entry/Mysql-NOT-NULL%EC%97%90-%EA%B0%92%EC%9D%84-%EB%84%A3%EC%A7%80-%EC%95%8A%EC%95%84%EB%8F%84-%EC%97%90%EB%9F%AC%EA%B0%80-%EC%95%88%EB%82%9C%EB%8B%A4 

 

저는 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 가 달라지는 것 같습니다.

a05d834a9ceb504dedf17716675086e9_1477119385_1665.jpg
a05d834a9ceb504dedf17716675086e9_1477119435_0026.jpg

 

왜 이것이 달라지는 것일까요?

 

 


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

이 부분에서 문제가 발생하는 것 같은대 이것은 어디를 손 봐야 할 까요?

 

추가로 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 입니다.

 

에러내용은

아래와 같으며,

WordPress database error When @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1, updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables


트랜잭션을 사용할때 mysql 설정이 ENFORCE_GTID_CONSISTENCY = 1 로 되어 있으면,
innoDB가 아닌 테이블을 update 할때 에러가 일어나네요. ( 이건 저두 몰랐습니다. )

그누커머스의 경우 cart 테이블은 myisam 이며, 주문 테이블은 innoDB 를 쓰고 있습니다.


그래서 cart 테이블을 innoDB 로 바꿔놓았습니다.

앞으로 배포판에서도 cart 테이블은 innoDB 로 변경하도록 하겠습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 9
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT