영카트 결제에러...9601 : 결제 정보 오류
본문
계좌이체와 모바일은 잘됩니다.
PC에서 신용카드 결제시 에러가 납니다.
모든 결제완료후에... 9601
영카트 내부엔 9601 메세지가 없는거 같은데요 놓친건지..
KCP쪽에러 메세지도 없네요
KCP에선 자꾸 enc_info, enc_data 확인하라는데 문제 없는거 같고...
orderformupdate.php 에서 걸리는듯한데 alert봐도 저부분만 있는건 없는것 같고
이전에 결제잘되던 사이트도 서버나 사이트 손댄적이 없는데 오늘보니 같은 상황이네요..
서버환경은...윈도우 IIS + php 입니다.
답변 2
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" ] );
}
이렇게 되어 있는 부분이 있습니다. 이것을 아래와 같이 바꿔보세요.
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 )
!-->kcp 모듈을 바이너리로 업로드 다시 하셔야 해요.
기존 파일 지워버리고요.
답변을 작성하시기 전에 로그인 해주세요.