결제창 오류 (if ($xpay->TX()) {부분으로 추정됨)
본문
영카트 LG U+ 카드정보를 입력하고 결제시 처리되는 문서중 orderformupdate.php 로 이동하면
"이 페이지에 연결할 수 없음"이란 오류가 발생합니다.
그래서 어느 코드에서 에러가 나는지 찾아보니
/shop/lg/xpay_result.php 부분에서였는데요.
// LG유플러스 공통 설정
require_once(G5_SHOP_PATH.'/settle_lg.inc.php');
/*
* [최종결제요청 페이지(STEP2-2)]
*
* LG유플러스으로 부터 내려받은 LGD_PAYKEY(인증Key)를 가지고 최종 결제요청.(파라미터 전달시 POST를 사용하세요)
*/
/* ※ 중요
* 환경설정 파일의 경우 반드시 외부에서 접근이 가능한 경로에 두시면 안됩니다.
* 해당 환경파일이 외부에 노출이 되는 경우 해킹의 위험이 존재하므로 반드시 외부에서 접근이 불가능한 경로에 두시기 바랍니다.
* 예) [Window 계열] C:\inetpub\wwwroot\lgdacom ==> 절대불가(웹 디렉토리)
*/
/*
*************************************************
* 1.최종결제 요청 - BEGIN
* (단, 최종 금액체크를 원하시는 경우 금액체크 부분 주석을 제거 하시면 됩니다.)
*************************************************
*/
$LGD_PAYKEY = $_POST['LGD_PAYKEY'];
$xpay = new XPay($configPath, $CST_PLATFORM);
// Mert Key 설정
$xpay->set_config_value('t'.$LGD_MID, $config['cf_lg_mert_key']);
$xpay->set_config_value($LGD_MID, $config['cf_lg_mert_key']);
$xpay->Init_TX($LGD_MID);
$xpay->Set('LGD_TXNAME', 'PaymentByKey');
$xpay->Set('LGD_PAYKEY', $LGD_PAYKEY);
//금액을 체크하시기 원하는 경우 아래 주석을 풀어서 이용하십시요.
//$DB_AMOUNT = "DB나 세션에서 가져온 금액"; //반드시 위변조가 불가능한 곳(DB나 세션)에서 금액을 가져오십시요.
//$xpay->Set('LGD_AMOUNTCHECKYN', 'Y');
//$xpay->Set('LGD_AMOUNT', $DB_AMOUNT);
/*
*************************************************
* 1.최종결제 요청(수정하지 마세요) - END
*************************************************
*/
/*
* 2. 최종결제 요청 결과처리
*
* 최종 결제요청 결과 리턴 파라미터는 연동메뉴얼을 참고하시기 바랍니다.
*/
if ($xpay->TX()) {
위 코드 일부에서 맨 아랫줄의 if ($xpay->TX()) { 문에만 들어가면 해당 에러가 발생합니다.
그 윗쪽으로 exit 처리를 하면 에러가 나지 않고요.
$xpay->TX() 자체가 제대로 작동을 안하는것 같은데요.
어떤 원인인지 알고 싶습니다
참고로 서버는 TLS1.2 버전 사용중입니다
답변 2
if ($xpay->TX()) {
이 부분에서 오류가 난다면 curl 문제하고 관계가 있습니다.
php curl이 설치되어 있는지 확인해 보시고
443 포트 ( https 포트 입니다. ) 가 방화벽에서 개방되어 있는지 확인하고
대부분 서버에서 어떤 오류가 일어나면 로그에 저장이 될테니 에러로그를 확인해 보세요.