## :-: **【注】:此文檔不兼容成品搭建系統v1.x 版本**
### 資金類型
`充值1 扣費2 轉賬3 凍結4 解凍5 提現6`
# 精確計算資金計算
精度 默認為小數點后兩位(其它位數參考 `pricecalc('1','+','1',3);
`),計算符號 + - * / %
```
$p = new money();
$jisuan = $p->pricecalc('1','+','1');
echo $jisuan; //輸出 2.00
```
# 計算手續費
假設 計算`123`元的 `1.36%` 的手續費
注:可附加精度計算 例:`fee('123','1.36',4)` 保留小數點后4位 、`fee('123','1.36',2)` 保留小數點后2位
```
$p = new money();
$jisuan = $p->fee('123','1.36');
echo $jisuan; //輸出 1.67
```
# 價格由元轉分
```
$p = new money();
$m = $p->priceyuantofen(1);
echo $m; //輸出 100
```
# 價格由分轉元
```
$p = new money();
$m = $p->pricefentoyuan(100);
echo $m; //輸出 1
```
# 價格格式化
精度 默認為小數點后兩位(其它位數參考 `priceformat(1,4);
`)
```
$p = new money();
$m = $p->priceformat(1);
echo $m; //輸出 1.00
```
# 充值
```
/**
* 充值操作
* 貨幣類別 人民幣CNY 美元USD 歐元EUR 日元JPY 英鎊GBP (這些類別都可以再系統后臺添加)
* 操作渠道 后臺Admin 系統System 支付寶Alipay 微信WeChat QQ錢包QQwallet 貝寶PayPal (這些渠道都可以再系統后臺添加)
* 操作對象 用戶user 商家seller
*/
```
### 通用充值
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '100.5', //金額
'mtype' => 'Admin', //操作渠道
'target' => 'user', //操作對象
'id' => '1', //操作對象ID
'info' => '通過后臺進行充值', //操作說明
'sno' => '11'. date('YmdHis', time()).'1', //交易流水編碼 格式:第1位(1用戶2商家)第2位(資金類型)第3-17位(年月日時分秒)第18+位(對象ID) 【可選一般用于充值驗證】
'pno' => '11'. date('YmdHis', time()).'1', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(1, $data,'');
```
### 渠道充值
`$result = money::init(1, $data,'AdminRecharge');`
`AdminRecharge` 為渠道標識
### 在線充值
```
/**
* 創建充值
* 必須傳入狀態 'status'=>2
*/
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '100.5', //金額
'mtype' => 'Alipay', //操作渠道
'target' => 'user', //操作對象
'id' => '1', //操作對象ID
'info' => '通過后臺進行充值', //操作說明
'sno' => '11'. date('YmdHis', time()).'1', //交易流水編碼 格式:第1位(1用戶2商家)第2位(資金類型)第3-17位(年月日時分秒)第18+位(對象ID) 【可選一般用于充值驗證】
'pno' => '11'. date('YmdHis', time()).'1', //交易號,一般充值接口用到【可選一般用于充值驗證】
'status'=>2
);
//執行
$result = money::init(1, $data,'OnlineRecharge');
/**
* 充值成功
* 必須傳入 logid 資金記錄ID
*/
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '100.5', //金額
'mtype' => 'Alipay', //操作渠道
'target' => 'user', //操作對象
'id' => '1', //操作對象ID
'info' => '通過后臺進行充值', //操作說明
'sno' => '11'. date('YmdHis', time()).'1', //交易流水編碼 格式:第1位(1用戶2商家)第2位(資金類型)第3-17位(年月日時分秒)第18+位(對象ID) 【可選一般用于充值驗證】
'pno' => '11'. date('YmdHis', time()).'1', //交易號,一般充值接口用到【可選一般用于充值驗證】
'status'=>1,
'logid'=>45
);
//執行
$result = money::init(1, $data,'OnlineRecharge');
```
# 扣費
```
/**
* 扣費操作
* 貨幣類別 人民幣CNY 美元USD 歐元EUR 日元JPY 英鎊GBP (這些類別都可以再系統后臺添加)
* 操作渠道 后臺Admin 系統System 支付寶Alipay 微信WeChat QQ錢包QQwallet 貝寶PayPal (這些渠道都可以再系統后臺添加)
* 操作對象 用戶user 商家seller
*/
```
### 通用扣費
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '100.5', //金額
'mtype' => 'Admin', //操作渠道
'target' => 'user', //操作對象
'id' => '1', //操作對象ID
'type' => '', //扣費類型 為空扣除流動資金其它扣除凍結資金
'info' => '通過后臺進行扣費', //操作說明
'sno' => '11'. date('YmdHis', time()).'1', //交易流水編碼 格式:第1位(1用戶2商家)第2位(資金類型)第3-17位(年月日時分秒)第18+位(對象ID)【可選一般用于充值驗證】
'pno' => '11'. date('YmdHis', time()).'1', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(2, $data,'');
```
### 渠道扣費
`$result = money::init(2, $data,'AdminDeduction');`
`AdminDeduction` 為渠道標識
# 凍結
```
/**
* 凍結操作
* 貨幣類別 人民幣CNY 美元USD 歐元EUR 日元JPY 英鎊GBP (這些類別都可以再系統后臺添加)
* 操作渠道 后臺Admin 系統System 支付寶Alipay 微信WeChat QQ錢包QQwallet 貝寶PayPal (這些渠道都可以再系統后臺添加)
* 操作對象 用戶user 商家seller
*/
```
### 通用凍結
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'Admin', //操作渠道
'target' => 'user', //操作對象
'id' => '1', //操作對象ID
'info' => '通過后臺進行凍結', //操作說明
'sno' => '14'. date('YmdHis', time()).'1', //交易流水編碼 格式:第1位(1用戶2商家)第2位(資金類型)第3-17位(年月日時分秒)第18+位(對象ID)【可選一般用于充值驗證】
'pno' => '14'. date('YmdHis', time()).'1', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(4, $data,'');
```
### 渠道凍結
`$result = money::init(2, $data,'AdminFreeze');`
`AdminFreeze` 為渠道標識
# 解凍
```
/**
* 解凍操作
* 貨幣類別 人民幣CNY 美元USD 歐元EUR 日元JPY 英鎊GBP (這些類別都可以再系統后臺添加)
* 操作渠道 后臺Admin 系統System 支付寶Alipay 微信WeChat QQ錢包QQwallet 貝寶PayPal (這些渠道都可以再系統后臺添加)
* 操作對象 用戶user 商家seller
*/
```
### 通用解凍
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'Admin', //操作渠道
'target' => 'user', //操作對象
'id' => '1', //操作對象ID
'info' => '通過后臺進行凍結', //操作說明
'sno' => '15'. date('YmdHis', time()).'1', //交易流水編碼 格式:第1位(1用戶2商家)第2位(資金類型)第3-17位(年月日時分秒)第18+位(對象ID)【可選一般用于充值驗證】
'pno' => '15'. date('YmdHis', time()).'1', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(5, $data,'');
```
### 渠道解凍
`$result = money::init(5, $data,'AdminFreeze');`
`AdminFreeze` 為渠道標識
# 提現
```
/**
* 提現操作
* 貨幣類別 人民幣CNY 美元USD 歐元EUR 日元JPY 英鎊GBP (這些類別都可以再系統后臺添加)
* 操作渠道 后臺Admin 系統System 支付寶Alipay 微信WeChat QQ錢包QQwallet 貝寶PayPal (這些渠道都可以再系統后臺添加)
* 操作對象 用戶user 商家seller
*/
```
### 通用提現
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'Admin', //操作渠道
'target' => 'user', //操作對象
'id' => '1', //操作對象ID
'info' => '通過后臺提現扣費', //操作說明
'sno' => '16'. date('YmdHis', time()).'1', //交易流水編碼 格式:第1位(1用戶2商家)第2位(資金類型)第3-17位(年月日時分秒)第18+位(對象ID)【可選一般用于充值驗證】
'pno' => '16'. date('YmdHis', time()).'1', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(6, $data,'AdminWithdraw');
```
### 渠道提現
`$result = money::init(6, $data,'AdminWithdraw');`
`AdminWithdraw` 為渠道標識
# 轉賬
```
/**
* 轉賬操作
* 貨幣類別 人民幣CNY 美元USD 歐元EUR 日元JPY 英鎊GBP (這些類別都可以再系統后臺添加)
* 操作渠道 后臺Admin 系統System 支付寶Alipay 微信WeChat QQ錢包QQwallet 貝寶PayPal (這些渠道都可以再系統后臺添加)
* 操作對象 用戶user 商家seller
*/
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'System', //操作渠道
'target' => 'user', //操作對象
'id' => '1', //操作對象ID
'to' => '1', //轉給誰的ID
'totarget' => 'user', //轉給類型 user或seller
'info' => '在線轉賬', //操作說明
'sno' => '13' . date('YmdHis', time()) . '1', //交易流水編碼 格式:第1位(1用戶2商家)第2位(資金類型)第3-17位(年月日時分秒)第18+位(對象ID)【可選一般用于充值驗證】
'pno' => '13' . date('YmdHis', time()) . '1', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(3, $data, 'Transfer');
```
*****
### 延申功能【點卡相關操作】
因點卡分可提現與僅消費類,在操作僅消費類點卡其中 【充值】 【扣費】 【凍結】【 解凍】 【轉賬】 等操作中需要在 `pno`交易號 中含有 **card** 就會處理不可提現資金
參考 Demo
**充值**
```
//檢查點卡是否可提現
if ($row['types'] == 1) {
$pno = 'card';
} else {
$pno = '11';
}
$data = array(
'ctype' => $row['mtype'], //貨幣類別
'money' => $row['money'], //金額
'mtype' => 'KeyCard', //操作渠道
'target' => 'user', //操作對象
'id' => $_SESSION['user']['id'], //操作對象ID
'tid' => $row['id'], //所操作的項目編號
'info' => '通過系統卡密充值', //操作說明
'sno' => '11' . date('YmdHis', time()) . '1', //交易流水編碼 格式:第1位(1用戶2商家)第2位(資金類型)第3-17位(年月日時分秒)第18+位(對象ID)
'pno' => $pno . date('YmdHis', time()) . '1', //交易號,一般充值接口用到
);
$result = money::init(1, $data, 'CardRecharge');
```
**提現**
```
//查詢當前賬戶資金是否充足
$money = money::priceinfo($_SESSION['user']['id'], 'u', null, $_POST['currency']);
if ($money['money'] >= $_POST['money']) {
//查詢點卡金額使用
$card = money::cpriceinfo($_SESSION['user']['id'], 'u', null, $_POST['currency']);
$smoney = money::pricecalc($money['money'], '-', $card['money']); //除去點卡剩余金額
if ($smoney >= $money['money']) {
} else {
if ($smoney == 0) {
$info = '此貨幣是不可提現點卡所得,只能消費不可以提現!';
} else {
$info = '此貨幣提現含有不可提現點卡充值!您只能提現' . $smoney . $_POST['currency'];
}
}
if ($smoney < $_POST['money']) {
app::go('', $info, 3, 2);
}
}else{
app::go('', '此貨幣當前余額不足!', 1, 2);
}
```
*****
高級開發指引 [獲取用戶&商家各種資金信息](獲取用戶商家信息.md)