계좌이체와 모바일은 잘됩니다.
PC에서 신용카드 결제시 에러가 납니다.
모든 결제완료후에... 9601
영카트 내부엔 9601 메세지가 없는거 같은데요 놓친건지..
KCP쪽에러 메세지도 없네요
KCP에선 자꾸 enc_info, enc_data 확인하라는데 문제 없는거 같고...
orderformupdate.php 에서 걸리는듯한데 alert봐도 저부분만 있는건 없는것 같고
이전에 결제잘되던 사이트도 서버나 사이트 손댄적이 없는데 오늘보니 같은 상황이네요..
서버환경은...윈도우 IIS + php 입니다.
답변 2개 / 댓글 2개
채택된 답변
+20 포인트
shop/kcp/pp_ax_hub.php 파일에 보시면 148번째 줄에
if ( $req_tx == "pay" )
{
/* 1004원은 실제로 업체에서 결제하셔야 될 원 금액을 넣어주셔야 합니다. 결제금액 유효성 검증 */
$c_PayPlus->mf_set_ordr_data( "ordr_mony", $good_mny );
$c_PayPlus->mf_set_encx_data( $_POST[ "enc_data" ], $_POST[ "enc_info" ] );
}
이렇게 되어 있는 부분이 있습니다. 이것을 아래와 같이 바꿔보세요.
Copy
if ( $req_tx == "pay" ) { /* 1004원은 실제로 업체에서 결제하셔야 될 원 금액을 넣어주셔야 합니다. 결제금액 유효성 검증 */ $c_PayPlus->mf_set_ordr_data( "ordr_mony", $good_mny ); if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'){ //윈도우이면 if( !function_exists('kcp_bad_utf8_codepoint') ){ function kcp_bad_utf8_codepoint($string){ $result = array(); foreach ((array) $string as $char) { $codepoint = unpack('N', iconv('UTF-8', 'UCS-4BE', $char)); if (is_array($codepoint) && array_key_exists(1, $codepoint)) { $result[] = sprintf('U+%04X', $codepoint[1]); } } return implode('', $result); } } $_POST[ "enc_data" ] = preg_replace_callback('/[\p{So}\p{Cf}\p{Co}\p{Cs}\p{Cn}]/u', 'kcp_bad_utf8_codepoint', $_POST[ "enc_data" ]); $_POST[ "enc_info" ] = preg_replace_callback('/[\p{So}\p{Cf}\p{Co}\p{Cs}\p{Cn}]/u', 'kcp_bad_utf8_codepoint', $_POST[ "enc_info" ]); } $c_PayPlus->mf_set_encx_data( $_POST[ "enc_data" ], $_POST[ "enc_info" ] ); }
윈도우 IIS 를 쓰신다고 하셨는데,
해결이 되셨다면 해당 윈도우 제품을 알려주시면 참고하겠습니다. ( 예) 윈도우 서버 2012 )
답변에 대한 댓글 1개
BlueAngel
2016-09-29 (목) 15:40:29
2016-09-29 (목) 15:00:52
kcp 모듈을 바이너리로 업로드 다시 하셔야 해요.
기존 파일 지워버리고요.
답변에 대한 댓글 1개
BlueAngel
2016-09-29 (목) 15:38:28
답변감사합니다 ^^;
바이너리파일은 예전에 업데이트해서 적용했었습니다.
되다가 갑자기 안되는 ㅋ
바이너리파일은 예전에 업데이트해서 적용했었습니다.
되다가 갑자기 안되는 ㅋ
답변을 작성하려면 로그인이 필요합니다.
윈도우에서 위두값이 넘어오면서 인코딩 문제로 값이 바뀌는거였군요
담번 패치시 넣어주셔도 좋을듯 합니다.
윈도우 서버 2008 엔터 버전인데 잘됩니다. ^^;