/home/mjc1/public_html/nice/cancelResult.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
header
("Content-Type:text/html; charset=utf-8;"); 

$merchantKey "EYzu8jGGMfqaDEp76gSckuvnaHHu+bC4opsSN6lHv3b2lurNYkVXrZ7Z1AoqQnXI3eLuaUFyoRNC6FkrzVjceg==";
$mid "nicepay00m";
$moid "nicepay_api_3.0_test";        
$cancelMsg "고객요청";
$tid $_POST['TID'];            
$cancelAmt $_POST['CancelAmt']; 
$partialCancelCode $_POST['PartialCancelCode'];

/*  
****************************************************************************************
* Signature : 요청 데이터에 대한 무결성 검증을 위해 전달하는 파라미터로 허위 결제 요청 등 결제 및 보안 관련 이슈가 발생할 만한 요소를 방지하기 위해 연동 시 사용하시기 바라며 
* 위변조 검증 미사용으로 인해 발생하는 이슈는 당사의 책임이 없음 참고하시기 바랍니다.
****************************************************************************************
 */

$ediDate date("YmdHis");
$signData bin2hex(hash('sha256'$mid $cancelAmt $ediDate $merchantKeytrue));

try{
    
$data = Array(
        
'TID' => $tid,
        
'MID' => $mid,
        
'Moid' => $moid,
        
'CancelAmt' => $cancelAmt,
        
'CancelMsg' => iconv("UTF-8""EUC-KR"$cancelMsg),
        
'PartialCancelCode' => $partialCancelCode,
        
'EdiDate' => $ediDate,
        
'SignData' => $signData,
        
'CharSet' => 'utf-8'
    
);    
    
$response reqPost($data"https://pg-api.nicepay.co.kr/webapi/cancel_process.jsp"); //취소 API 호출
    
    
jsonRespDump($response);
    
}catch(
Exception $e){
    
$e->getMessage();
    
$ResultCode "9999";
    
$ResultMsg "통신실패";
}

// API CALL foreach 예시
function jsonRespDump($resp){
    
//global $mid, $merchantKey;
    
$respArr json_decode($resp);
    foreach ( 
$respArr as $key => $value ){
        
/*if($key == "CancelAmt"){
            $cancelAmt = $value;
        }
        *if($key == "TID"){
            $tid = $value;
        }
        // 취소 응답으로 받은 Signature 검증을 통해 무결성 검증을 진행하여야 합니다.
        if($key == "Signature"){
            $cancelSignature = bin2hex(hash('sha256', $tid. $mid. $cancelAmt. $merchantKey, true));
            if($value != $cancelSignature){
                echo '비정상 거래!</br>';
                echo '취소 응답 Signature : '. $value. '</br>';
                echo '취소 생성 Signature : '. $cancelSignature. '</br>';
            }
        }*/
        
echo "$key="$value."<br />";
    }
}

//Post api call
function reqPost(Array $data$url){
    
$ch curl_init();
    
curl_setopt($chCURLOPT_URL$url);
    
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
    
curl_setopt($chCURLOPT_CONNECTTIMEOUT15);                    //connection timeout 15 
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
    
curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($data));    //POST data
    
curl_setopt($chCURLOPT_POSTtrue);
    
$response curl_exec($ch);
    
curl_close($ch);     
    return 
$response;
}
?>