## :-: **【注】:此文档不兼容成品搭建系统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)