<?php
/**
* 付款方式。
*/
abstract class PaymentMethod {
/**
* 不指定付款方式。
*/
const ALL = 'ALL';
/**
* 信用卡付費。
*/
const Credit = 'Credit';
/**
* 網路 ATM。
*/
const WebATM = 'WebATM';
/**
* 自動櫃員機。
*/
const ATM = 'ATM';
/**
* 超商代碼。
*/
const CVS = 'CVS';
/**
* 支付寶。
*/
const Alipay = 'Alipay';
/**
* 財付通。
*/
const Tenpay = 'Tenpay';
/**
* 儲值消費。
*/
const TopUpUsed = 'TopUpUsed';
}
/**
* 付款方式子項目。
*/
abstract class PaymentMethodItem {
/**
* 不指定。
*/
const None = '';
// WebATM 類(001~100)
/**
* 台新銀行。
*/
const WebATM_TAISHIN = 'TAISHIN';
/**
* 玉山銀行。
*/
const WebATM_ESUN = 'ESUN';
/**
* 華南銀行。
*/
const WebATM_HUANAN = 'HUANAN';
/**
* 台灣銀行。
*/
const WebATM_BOT = 'BOT';
/**
* 台北富邦。
*/
const WebATM_FUBON = 'FUBON';
/**
* 中國信託。
*/
const WebATM_CHINATRUST = 'CHINATRUST';
/**
* 第一銀行。
*/
const WebATM_FIRST = 'FIRST';
/**
* 國泰世華。
*/
const WebATM_CATHAY = 'CATHAY';
/**
* 兆豐銀行。
*/
const WebATM_MEGA = 'MEGA';
/**
* 元大銀行。
*/
const WebATM_YUANTA = 'YUANTA';
/**
* 土地銀行。
*/
const WebATM_LAND = 'LAND';
// ATM 類(101~200)
/**
* 台新銀行。
*/
const ATM_TAISHIN = 'TAISHIN';
/**
* 玉山銀行。
*/
const ATM_ESUN = 'ESUN';
/**
* 華南銀行。
*/
const ATM_HUANAN = 'HUANAN';
/**
* 台灣銀行。
*/
const ATM_BOT = 'BOT';
/**
* 台北富邦。
*/
const ATM_FUBON = 'FUBON';
/**
* 中國信託。
*/
const ATM_CHINATRUST = 'CHINATRUST';
/**
* 土地銀行。
*/
const ATM_LAND = 'LAND';
/**
* 國泰世華銀行。
*/
const ATM_CATHAY = 'CATHAY';
/**
* 大眾銀行。
*/
const ATM_Tachong = 'Tachong';
/**
* 永豐銀行。
*/
const ATM_Sinopac = 'Sinopac';
/**
* 彰化銀行。
*/
const ATM_CHB = 'CHB';
/**
* 第一銀行。
*/
const ATM_FIRST = 'FIRST';
// 超商類(201~300)
/**
* 超商代碼繳款。
*/
const CVS = 'CVS';
/**
* OK超商代碼繳款。
*/
const CVS_OK = 'OK';
/**
* 全家超商代碼繳款。
*/
const CVS_FAMILY = 'FAMILY';
/**
* 萊爾富超商代碼繳款。
*/
const CVS_HILIFE = 'HILIFE';
/**
* 7-11 ibon代碼繳款。
*/
const CVS_IBON = 'IBON';
// 其他第三方支付類(301~400)
/**
* 支付寶。
*/
const Alipay = 'Alipay';
/**
* 財付通。
*/
const Tenpay = 'Tenpay';
// 儲值/餘額消費類(401~500)
/**
* 儲值/餘額消費(歐付寶)
*/
const TopUpUsed_AllPay = 'AllPay';
/**
* 儲值/餘額消費(玉山)
*/
const TopUpUsed_ESUN = 'ESUN';
// 其他類(901~999)
/**
* 信用卡(MasterCard/JCB/VISA)。
*/
const Credit = 'Credit';
/**
* 貨到付款。
*/
const COD = 'COD';
}
/**
* 額外付款資訊。
*/
abstract class ExtraPaymentInfo {
/**
* 需要額外付款資訊。
*/
const Yes = 'Y';
/**
* 不需要額外付款資訊。
*/
const No = 'N';
}
/**
* 額外付款資訊。
*/
abstract class DeviceType {
/**
* 桌機版付費頁面。
*/
const PC = 'P';
/**
* 行動裝置版付費頁面。
*/
const Mobile = 'M';
}
/**
* 信用卡訂單處理動作資訊。
*/
abstract class ActionType {
/**
* 關帳
*/
const C = 'C';
/**
* 退刷
*/
const R = 'R';
/**
* 取消
*/
const E = 'E';
/**
* 放棄
*/
const N = 'N';
}
/**
* 定期定額的週期種類。
*/
abstract class PeriodType {
/**
* 無
*/
const None = '';
/**
* 年
*/
const Year = 'Y';
/**
* 月
*/
const Month = 'M';
/**
* 日
*/
const Day = 'D';
}
/**
* 電子發票開立註記。
*/
abstract class InvoiceState {
/**
* 需要開立電子發票。
*/
const Yes = 'Y';
/**
* 不需要開立電子發票。
*/
const No = '';
}
/**
* 電子發票載具類別
*/
abstract class CarruerType {
// 無載具
const None = '';
// 會員載具
const Member = '1';
// 買受人自然人憑證
const Citizen = '2';
// 買受人手機條碼
const Cellphone = '3';
}
/**
* 電子發票列印註記
*/
abstract class PrintMark {
// 不列印
const No = '0';
// 列印
const Yes = '1';
}
/**
* 電子發票捐贈註記
*/
abstract class Donation {
// 捐贈
const Yes = '1';
// 不捐贈
const No = '2';
}
/**
* 通關方式
*/
abstract class ClearanceMark {
// 經海關出口
const Yes = '1';
// 非經海關出口
const No = '2';
}
/**
* 課稅類別
*/
abstract class TaxType {
// 應稅
const Dutiable = '1';
// 零稅率
const Zero = '2';
// 免稅
const Free = '3';
// 應稅與免稅混合(限收銀機發票無法分辦時使用,且需通過申請核可)
const Mix = '9';
}
/**
* 字軌類別
*/
abstract class InvType {
// 一般稅額
const General = '07';
// 特種稅額
const Special = '08';
}
abstract class EncryptType {
// MD5(預設)
const ENC_MD5 = 0;
// SHA256
const ENC_SHA256 = 1;
}
abstract class UseRedeem{
//使用紅利/購物金
const Yes = 'Y' ;
//不使用紅利/購物金
const No = 'N' ;
}
/**
* AllInOne short summary.
*
* AllInOne description.
*
* @version 1.1.0818
* @author charlie
*/
class AllInOne {
public $ServiceURL = 'ServiceURL';
public $ServiceMethod = 'ServiceMethod';
public $HashKey = 'HashKey';
public $HashIV = 'HashIV';
public $MerchantID = 'MerchantID';
public $PaymentType = 'PaymentType';
public $Send = 'Send';
public $SendExtend = 'SendExtend';
public $Query = 'Query';
public $Action = 'Action';
public $ChargeBack = 'ChargeBack';
public $EncryptType = EncryptType::ENC_MD5;
function __construct() {
$this->PaymentType = 'aio';
$this->Send = array(
"ReturnURL" => '',
"ClientBackURL" => '',
"OrderResultURL" => '',
"MerchantTradeNo" => '',
"MerchantTradeDate" => '',
"PaymentType" => 'aio',
"TotalAmount" => '',
"TradeDesc" => '',
"ChoosePayment" => PaymentMethod::ALL,
"Remark" => '',
"ChooseSubPayment" => PaymentMethodItem::None,
"NeedExtraPaidInfo" => ExtraPaymentInfo::No,
"DeviceSource" => '',
"IgnorePayment" => '',
"PlatformID" => '',
"InvoiceMark" => InvoiceState::No,
"Items" => array(),
"EncryptType" => EncryptType::ENC_MD5,
"UseRedeem" => UseRedeem::No
);
$this->SendExtend = array();
$this->Query = array(
'MerchantTradeNo' => '', 'TimeStamp' => ''
);
$this->Action = Array(
'MerchantTradeNo' => '', 'TradeNo' => '', 'Action' => ActionType::C, 'TotalAmount' => 0
);
$this->ChargeBack = Array(
'MerchantTradeNo' => '', 'TradeNo' => '', 'ChargeBackTotalAmount' => 0, 'Remark' => ''
);
$this->Capture = array