CTBCAgent(); } function CTBCAgent() { } /** * 1. CTBC 結帳 * * [data] * *merID : 特店網站專用代號 * *URLEnc: 交易訊息的密文(URLEnc) */ public function CheckOut($data) { extract($data); // 取得url enc $urlEnc = $this->URLEnc($data); // 轉址 $szHtml = ''; $szHtml .= '
'; $szHtml .=""; $szHtml .=""; $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; } }