CTBCAgent();
}
function CTBCAgent() {
}
/**
* 1. CTBC 結帳
*
* [data]
* *merID : 特店網站專用代號
* *URLEnc: 交易訊息的密文(URLEnc)
*/
public function CheckOut($data) {
extract($data);
// 取得url enc
$urlEnc = $this->URLEnc($data);
// 轉址
$szHtml = '';
$szHtml .= '
';
echo $szHtml;
}
/**
* 2. 解密URL 交易訊息的密文(URLDec)
*
* [data]
* *encRes= : 密文
* debug: 預設(進行交易時)請填0,偵錯時請填1。
*/
public function Decrypt($data) {
extract($data);
if (empty($debug)) { $debug = "0"; }
return gendecrypt(
$encRes,
$this->Key,
$debug);
}
/**
* 3. 取得 checkmac
*/
public function CheckMac($data) {
extract($data);
if (empty($debug)) { $debug = "0"; }
if (!empty($prodcode)) {
$option = $prodcode; // option: 紅利交易
}else{
$option = $numberofpay; // option: 一般交易, 分期交易
}
return auth_out_mac(
$status, $errcode, $authcode, $authamt, $lidm, $offsetamt, $originalamt, $utilizedpoint,
$option,
$last4digitpan,
$this->Key,
$debug);
}
/**
* 解密URL 交易訊息的密文(URLDec)
*
* [data]
* *encRes= : 密文
* debug: 預設(進行交易時)請填0,偵錯時請填1。
*/
function URLDec($data) {
extract($data);
if (empty($debug)) { $debug = "0"; }
$EncArray = gendecrypt(
$encRes,
$this->Key,
$debug);
$MACString = '';
$URLEnc = '';
//echo "
\n";
foreach($EncArray AS $name => $val){
echo $name ."=>". urlencode(trim($val,"\x00..\x08")) ."\n";
}
if(isset($EncArray['status'])){
$status = isset($EncArray['status']) ? $EncArray['status'] : "";
$errCode = isset($EncArray['errcode']) ? $EncArray['errcode'] : "";
$authCode = isset($EncArray['authcode']) ? $EncArray['authcode'] : "";
$authAmt = isset($EncArray['authamt']) ? $EncArray['authamt'] : "";
$lidm = isset($EncArray['lidm']) ? $EncArray['lidm'] : "";
$OffsetAmt = isset($EncArray['offsetamt']) ? $EncArray['offsetamt'] : "";
$OriginalAmt = isset($EncArray['originalamt']) ? $EncArray['originalamt'] : "";
$UtilizedPoint = isset($EncArray['utilizedpoint']) ? $EncArray['utilizedpoint'] : "";
$Option = isset($EncArray['numberofpay']) ? $EncArray[' numberofpay'] : "";
//紅利交易時請帶入prodcode
//$Option = isset($EncArray['prodcode']) ? $EncArray['prodcode'] : "";
$Last4digitPAN = isset($EncArray['last4digitpan']) ? $EncArray['last4digitpan'] : "";
$pidResult= isset($EncArray['pidResult']) ? $EncArray['pidResult'] : "";
$CardNumber = isset($EncArray['CardNumber']) ? $EncArray['CardNumber'] : "";
$MACString = auth_out_mac(
$status, $errCode, $authCode, $authAmt, $lidm, $OffsetAmt, $OriginalAmt, $UtilizedPoint,
$Option,
//$this->Option,
$Last4digitPAN,
$this->Key,
$debug);
echo "MACString=$MACString\n";
$outmac = isset($EncArray['outmac']) ? $EncArray['outmac'] : "";
echo "outmac=$outmac\n";
}else{
// do nothing
foreach ($EncArray as $key => $value){
switch ($key){
/* 支付後的回傳的基本參數 */
case "status": $status = $value; break;
case "errcode": $errcode = $value; break;
case "authcode": $authcode = $value; break;
case "authamt": $authamt = $value; break;
case "lidm": $lidm = $value; break;
case "offsetamt": $offsetamt = $value; break;
case "originalamt": $originalamt = $value; break;
case "utilizedpoint": $utilizedpoint = $value; break;
case "numberofpay": $numberofpay = $value; break;
case "last4digitpan": $last4digitpan = $value; break;
case "pidResult": $pid_result = $value; break;
case "CardNumber": $card_number = $value; break;
default: break;
}
}
// 一律記錄log。
$data = array(
'status' => $status,
'errcode' => $errcode,
'authcode' => $authcode,
'authamt' => $authamt,
'lidm' => $lidm,
'offsetamt' => $offsetamt,
'originalamt' => $originalamt,
'utilizedpoint' => $utilizedpoint,
'numberofpay' => $numberofpay,
'last4digitpan' => $last4digitpan,
'pid_result' => $pid_result,
'card_number' => $card_number
);
echo json_encode($data);
}
}
/**
* 產生URL 交易訊息的密文(URLEnc)
*
* [data]
* *lidm : 訂單編號
* *purchAmt: 總金額
* txType: 交易方式,長度為一碼數字。(一般交易:0, 分期交易:1, 紅利折抵一般交易:2, 紅利折抵分期交易:4)
* debug: 預設(進行交易時)請填0,偵錯時請填1。
*/
function URLEnc($data) {
extract($data);
if (empty($txType)) { $txType = "0"; } // 預設 0
if (empty($debug)) { $debug = "0"; } // 預設 0
$MACString = auth_in_mac(
$this->MerchantID,
$this->TerminalID,
$lidm,
/* 為電子商場的應用程式所給予此筆交易的訂單編號,
資料型態為最長19 個字元的文字串。
訂單編號字串之字元僅接受一般英文字母、數字及底線’_’的組合,
不可出現其餘符號字元
*/
$purchAmt,// 為消費者此筆交易所購買商品欲授權總金額,正整數格式的字串。
$txType, // 交易方式
$this->Option,
$this->Key,
$this->MerchantName,
$this->AuthResURL,
$this->OrderDetail,
$this->AutoCap,
$this->Customize,
$debug);
//echo "InMac=$MACString\n";
$URLEnc = get_auth_urlenc(
$this->MerchantID,
$this->TerminalID,
$lidm,
$purchAmt,
$txType,
$this->Option,
$this->Key,
$this->MerchantName,
$this->AuthResURL,
$this->OrderDetail,
$this->AutoCap,
$this->Customize,
$MACString,
$debug);
//echo "UrlEnc=$URLEnc\n";
return $URLEnc;
}
}