# 資金類型說明
`充值1 扣費2 轉賬3 凍結4 解凍5 提現6 兌換7`
| ID | 名稱 | 說明 |
| --- | --- | --- |
| 1 | 充值 | 往流動資金賬戶進行充值資金 |
| 2 | 扣費 | 流動資金或凍結資金進行扣費|
| 3 | 轉賬 | 站內賬戶之間進行資金轉賬 |
| 4 | 凍結 | 流動資金賬戶進行凍結資金 |
| 5 | 解凍 | 凍結資金賬戶進行解凍資金 |
| 6 | 提現 | 流動資金賬戶進行資金提現 |
| 7 | 兌換 | 流動資金兌換虛擬貨幣或虛擬貨幣兌換流動資金 |
#### **渠道說明**(可自定義拓展)
參數說明
ALL 支持全部貨幣
CNY 僅支持人民幣
CNY,USD 僅支持人民幣與美元
如果需要多種指定貨幣以英文逗號隔開。
| 標識 | 名稱 | 說明 |
| --- | --- |--- |
| KeyCard | 點卡充值 | 虛擬點卡在線充值 |
| Admin | 后臺操作 | 后臺資金操作 |
| System | 系統操作 | 系統進行資金操作 |
| Alipay | 支付寶 | 支付寶資金操作 |
| WeChat | 微信 | 微信資金操作 |
| QQwallet | QQ錢包 | QQ錢包資金操作 |
| PayPal | 貝寶PayPal | PayPal資金操作 |
| …… | . | . |
#### **資金名詞**說明
| 名詞 | 說明 |
| --- | --- |
| 流動資金 | 可以自由使用的資金,提現、消費、轉賬均不受影響 |
| 凍結資金 | 暫時凍結到系統,無法正常使用,只能在指定的場景使用 |
| 鎖定資金 | 可以理解為贈送的資金刺激消費,只能消費使用,不可提現轉賬。<br>鎖定資金只是流動資金中的一部分。<br>例如:鎖定資金100 流動資金1000,如果要提現的話,只能提現900;而消費則可以使用到1000 |
| 資金賬戶 | 好比是銀行卡,幣種不同記錄不同幣種的資金賬戶。 |
| 貨幣 | 對應不同國家地區的流通資金的種類;例如 人民幣、港元、美元… |
| 貨幣簡寫 | 是指不同資金的貨幣英文代碼;例如 人民幣CNY、美元USD |
# 基礎功能
#### 精確計算資金計算
| 符號 | 說明 | 示例 |
| --- | --- | ---|
| + | 加法 | 例:`money::pricecalc('1','+','1')` 結果:`2.00`|
| - | 減法 | 例:`money::pricecalc('6','-','3')` 結果:`3.00`|
| * | 乘法 | 例:`money::pricecalc('1','*','3')` 結果:`3.00`|
| / | 除法 | 例:`money::pricecalc('10','/','2')` 結果:`5.00`|
| % | 百分比 | 例:`money::pricecalc('100','%','10')` 結果:`10.00`|
| z | 折扣 | 例:`money::pricecalc('100','%','9.5')` 結果:`95.00`|
精度 默認為小數點后兩位(其它位數參考`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
~~~
# 功能使用
資金賬戶說明:
資金賬戶好比是銀行卡,幣種不同記錄不同幣種的資金賬戶。
**發送數組數據說明**
| 參數 | 示例值 | 說明 |
| --- | --- |--- |
| ctype | CNY | 貨幣類別 參見【貨幣種類】中的貨幣簡寫 |
| money | 100 | 需要充值的資金 |
| mtype | System | 操作渠道 參見【資金配置】中的渠道 |
| uid | 10012 | 操作對象賬號ID |
| type | 1 | 一、扣費中使用<br>1:扣除流動資金 <br>2:扣除凍結資金 <br>說明:優先鎖定資金,沒有則或不足追加扣正常資金<br>二、兌換中使用<br>1:兌出 貨幣=>兌換積分 (減少貨幣)<br>2:兌入 積分兌換=>貨幣 (增加貨幣)<br>3:互換 貨幣<=>貨幣|
| carda | 100002 | 流出資金賬戶|
| to | 10012 | 轉賬時轉入對方的賬號ID |
| cardb | 100001 | 流入資金賬戶 沒有為空(自動創建所對應的貨幣類型資金賬戶,成功后輸出貨幣賬戶ID)|
| info | 系統后臺充值100元到流動資金賬戶ID:100001 | 當前操作說明 用于資金流水中顯示說明 |
| sno | 42020011516540610012 | 交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】 |
| pno | 42020011516540610012 | 交易號同流水說明,一般充值接口用到【可選一般用于充值驗證】拓展所用<br>注意:如果包含`lock` 則表示該資金僅為消費,不可提現。 |
| status | 狀態碼 | 接口充值中使用|
| logid | 充值記錄ID | 接口充值中使用|
示例代碼
## :-: 資金充值
**示例1:直接充值**(例如系統后臺充值、兌換),不進行驗證的充值
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'System', //操作渠道
'uid' => 10012, //賬號ID
'cardb' => '', //流入賬戶 沒有為空(自動創建)
'info' => '系統后臺充值100元到流動資金賬戶', //操作說明
'sno' => '1' . date('YmdHis', time()) . 10012, //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '1' . date('YmdHis', time()) . '10012', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(1, $data, 'AdminRecharge');
```
**示例2:點卡充值**
充值之前需對點卡進行效驗等操作
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'System', //操作渠道
'uid' => 10012, //賬號ID
'cardb' => '', //流入賬戶 沒有為空(自動創建)
'info' => '系統后臺充值100元到流動資金賬戶', //操作說明
'sno' => '1' . date('YmdHis', time()) . 10012, //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '1' . date('YmdHis', time()) . '10012', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(1, $data, 'AdminRecharge');
```
**示例3:接口充值**
準備工作,假如已經對接好了支付接口。
1.假如創建[支付寶]充值訂單,充值1元
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'Alipay', //操作渠道
'uid' => 10012, //賬號ID
'cardb' => '100001', //流入賬戶 沒有為空(自動創建)
'info' => '支付寶在線充值100元到流動資金賬戶[100001]', //操作說明
'sno' => '1' . date('YmdHis', time()) . 10012, //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '1' . date('YmdHis', time()) . '10012', //交易號,一般充值接口用到【可選一般用于充值驗證】
'status' => 2 //創建充值
);
//執行
$result = money::init(1, $data, 'OnlineRecharge');
```
2.假如已經驗證了充值成功,更新充值狀態
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'Alipay', //操作渠道
'uid' => 10012, //賬號ID
'cardb' => '100001', //流入賬戶 沒有為空(自動創建)
'pno' => '1' . date('YmdHis', time()) . '10012', //交易號,一般充值接口用到【可選一般用于充值驗證】
'status' => 1,//充值狀態
'logid' => 186//交易流水ID,通過第一步 $result 獲得
);
//執行
$result = money::init(1, $data, 'OnlineRecharge');
```
## :-: 資金扣費
說明:在指定扣除鎖定資金時,鎖定資金不足連同流動資金補全。
示例:
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'Admin', //操作渠道
'uid' => 10012, //賬號ID
'carda' => '100001', //流出賬戶 除充值外必填
'type' => 1, //1:扣除流動資金2:扣除凍結資金
'info' => '系統扣除資金賬戶[100001]服務費1 CNY', //操作說明
'sno' => '2' . date('YmdHis', time()) . 10012, //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '2' . date('YmdHis', time()) . '10012', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(2, $data, 'AdminDeduction');
```
## :-: 資金轉賬
轉賬前系統會進行效驗,轉賬資金是否充足;成功返回數字2,失敗false
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '2', //金額
'mtype' => 'Admin', //操作渠道
'uid' => 10010, //賬號ID
'carda' => '100001', //流出賬戶
'to' => 10012, //轉給誰的ID
'cardb' => '100002', //流入賬戶 不填則為默認對應貨幣賬戶
'sno' => '3' . date('YmdHis', time()) . '10012', //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '3' . date('YmdHis', time()) . '10012', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(3, $data, 'Transfer');
```
## :-: 凍結資金
流動資金=>凍結資金,在沒有扣費前進行占用凍結。
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'System', //操作渠道
'uid' => 10012, //賬號ID
'carda' => 100001, //流出賬戶
'info' => '資金賬戶[100001],提現到收款賬戶[100045]進行凍結1CNY', //操作說明
'sno' => '4' . date('YmdHis', time()) . 10012, //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '4' . date('YmdHis', time()) . 10012, //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(4, $data, 'UserWithdraw');
```
## :-: 資金解凍
凍結資金=>流動資金。
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'System', //操作渠道
'uid' => 10012, //賬號ID
'carda' => 100001, //流出賬戶
'info' => '資金賬戶[100001],系統管理員[10000]人工操作解凍。', //操作說明
'sno' => '5' . date('YmdHis', time()) . 10012, //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '5' . date('YmdHis', time()) . 10012, //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(5, $data, 'AdminThaw');
```
## :-: 資金提現
提現有兩種方式
1.直接提現:主要用于支付接口實時到賬
免凍結需提現資金,直接轉賬到對應的首款賬戶。(這一步需另外操作;詳情見:支付接口)
**示例代碼**
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'Alipay', //操作渠道
'uid' => 10012, //賬號ID
'carda' => '100001', //流出賬戶 除充值外必填
'cardb' => '17', //流入賬戶
'type' => 1, //1:扣除流動資金2:扣除凍結資金
'info' => '從資金賬戶[100001]提現到收款賬戶[17]1CNY', //操作說明
'sno' => '6' . date('YmdHis', time()) . 10012, //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '6' . date('YmdHis', time()) . '10012', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(6, $data, 'AdminWithdraw');
```
2.審核提現:主要用于人工處理提現
首先提交提現申請(資金凍結)
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'System', //操作渠道
'uid' => 10012, //賬號ID
'carda' => 100001, //流出賬戶
'info' => '資金賬戶[100001],提現到收款賬戶[100045]進行凍結1CNY', //操作說明
'sno' => '4' . date('YmdHis', time()) . 10012, //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '4' . date('YmdHis', time()) . 10012, //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(4, $data, 'UserWithdraw');
```
然后后臺審核提現
通過提現
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'Admin', //操作渠道
'uid' => 10012, //賬號ID
'carda' => '100001', //流出賬戶 除充值外必填
'cardb' => '17', //流入賬戶
'type' => 2, //1:扣除流動資金2:扣除凍結資金
'info' => '從資金賬戶[100001]提現到收款賬戶[17]1CNY', //操作說明
'sno' => '6' . date('YmdHis', time()) . 10012, //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '6' . date('YmdHis', time()) . '10012', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(6, $data, 'AdminWithdraw');
```
收款賬戶有問題,原路返回為流動資金
拒絕提現(資金解凍)
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'System', //操作渠道
'uid' => 10012, //賬號ID
'carda' => 100001, //流出賬戶
'info' => '由于收款賬戶不正確,資金賬戶[100001],系統管理員[10000]退回提現。', //操作說明
'sno' => '5' . date('YmdHis', time()) . 10012, //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '5' . date('YmdHis', time()) . 10012, //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(5, $data, 'AdminThaw');
```
## :-: 資金兌換
積分兌換需配合積分功能
**示例1:** 積分兌換貨幣
首先扣除積分
```
參考積分功能
```
然后增加貨幣
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'System', //操作渠道
'uid' => 10012, //賬號ID
'cardb' => '100001', //流入資金賬戶
'type' => 2, // 2:積分兌換=>貨幣
'info' => '積分兌換=>貨幣', //操作說明
'sno' => '7' . date('YmdHis', time()) . 10012, //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '7' . date('YmdHis', time()) . '10012', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(7, $data, 'MoneyToIntegral');
```
**示例2:** 貨幣兌換積分
首先扣除貨幣
```
$data = array(
'ctype' => 'CNY', //貨幣類別
'money' => '1', //金額
'mtype' => 'System', //操作渠道
'uid' => 10012, //賬號ID
'carda' => '100001', //流入資金賬戶
'type' => 1, // 1:兌出 貨幣=>兌換積分 (減少貨幣)
'info' => '貨幣=>兌換積分', //操作說明
'sno' => '7' . date('YmdHis', time()) . 10012, //交易流水編碼 格式:第1位(資金類型)第2-14位(年月日時分秒)第15位以后(對象ID)【可選一般用于充值驗證】
'pno' => '7' . date('YmdHis', time()) . '10012', //交易號,一般充值接口用到【可選一般用于充值驗證】
);
//執行
$result = money::init(7, $data, 'IntegralToMoney');
```
然后充值積分
```
參考積分功能
```
**示例3:** 不同貨幣互換
貨幣與貨幣兌換,需參考 設置中的 貨幣兌換匯率
如果是相同貨幣直接進行轉賬形式操作
```
$data = array(
'money' => '1', //所兌換出金額
'mtype' => 'System', //操作渠道
'uid' => 10012, //賬號ID
'carda' => '100001', //流出資金賬戶 兌換出
'cardb' => '100002', //流入資金賬戶 兌換入
'type' => 3, // 3:貨幣互換
);
//執行
$result = money::init(7, $data, 'MoneyToMoney');
```
- 關于CMSPRO
- 安裝使用
- 首次使用
- 功能使用
- 系統后臺
- 系統
- 系統配置
- 開發使用
- 基礎學習
- php如何修改文件創建時間
- 類方法
- 系統框架
- 系統入口框架
- URL處理
- 自動附加封裝類、函數入口
- 內置應用
- GET與POST
- 字符控制
- 多語言使用
- 數據庫使用
- 頁面跳轉
- 數組控制
- 時間相關
- 文件操作
- 獲取系統設置的應用目錄
- IP獲取與解析
- 數據分頁
- 內置插件
- 短信發送
- 信息模板
- 消息操作
- 消息操作(舊)
- 資金操作
- 優惠券
- 積分操作
- 服務器接口
- 寶塔接口
- 域名接口
- 西部數據
- whois查詢
- 事件管理器
- 規則管理器
- 電子郵件
- 常用代碼
- 數據獲取與分頁
- 模型自動構建表單
- 排版布局
- 常用樣式
- 編輯表單
- tab選項卡
- JS相關
- 插件
- 鉤子
- 高級進階
- 消息和模板組合使用
- API接口
- 充值支付
- 積分充值兌換
- 短信驗證碼
- 郵箱驗證碼
- 微信消息模板
- 獲取貨幣信息
- 獲取積分信息
- 商品操作
- 信息反饋
- LayIM相關
- 自定義一級URL
- 自定義功能
- 用戶中心
- 網站管理
- 模板引擎v2
- 基礎學習
- 變量輸出
- 使用函數
- 運算符
- 原樣輸出
- 模板注釋
- 模板繼承
- 包含文件
- 內置標簽
- 循環標簽
- 比較標簽
- 條件判斷
- 資源文件加載
- 標簽嵌套
- 原生PHP
- 定義標簽
- 功能應用
- 站點統計
- 數據列表
- 單條數據
- 功能動作
- 賬戶資金
- 賬戶積分
- 網站導航
- 從零使用
- 結構了解
- 基礎工作
- 模板引擎v1
- 模板標簽
- 導航菜單
- 獲取數據列表
- 獲取單條數據
- 廣告以及連接
- if判斷
- 判斷是否登錄
- 判斷系統變量
- 自定義判斷
- 常規判斷
- 模板表單
- 高級使用
- 前后分離v1
- 通用
- 支付
- 積分
- 論壇
- 下載
- 微信
- 云服務SDK開發
- 通用請求