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 . $merchantKey, true));
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($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); //connection timeout 15 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); //POST data curl_setopt($ch, CURLOPT_POST, true); $response = curl_exec($ch); curl_close($ch); return $response; } ?>
|