chuan 16 hours ago
parent
commit
5719c542eb
  1. 1
      app/admin/service/RechargeService.php
  2. 18
      app/home/controller/Pay.php
  3. 42
      app/home/route/app.php
  4. 127
      app/home/service/PayService.php
  5. 2
      app/model/RechargeApplyModel.php

1
app/admin/service/RechargeService.php

@ -146,6 +146,7 @@ class RechargeService extends AdminBaseService
$result = $this->updateUserAsset($info['user_id'], $info['account_type'], 1, $info['market_amount'], 0, $info['order_no']); $result = $this->updateUserAsset($info['user_id'], $info['account_type'], 1, $info['market_amount'], 0, $info['order_no']);
if ($result['status'] == 200) { if ($result['status'] == 200) {
RechargeApplyModel::where('id', $info['id'])->update([ RechargeApplyModel::where('id', $info['id'])->update([
'real_amount' => $param['real_amount'] ?? 0, // 实际到账金额,审核时候运营人员手动输入的
'is_check' => 1, 'is_check' => 1,
'status' => 1, 'status' => 1,
'deal_time' => date('Y-m-d H:i:s') 'deal_time' => date('Y-m-d H:i:s')

18
app/home/controller/Pay.php

@ -39,6 +39,8 @@ class Pay extends HomeBaseController
*/ */
public function rechargeApply(Request $request): Json public function rechargeApply(Request $request): Json
{ {
$data['recharge_type'] = $request->post('recharge_type', 0); // 支付方式:1-数字币方式充值; 2-支付码方式充值(以前叫银行卡);
$data['payment_code_config_log_id'] = $request->post('payment_code_config_log_id', 0); // 如果是支付码方式充值,需要上传该参数,payment_code_config表的主键ID
$data['user_id'] = $request->userId; $data['user_id'] = $request->userId;
$data['account_type'] = $request->post('account_type'); $data['account_type'] = $request->post('account_type');
$data['country'] = $request->post('country'); $data['country'] = $request->post('country');
@ -48,7 +50,7 @@ class Pay extends HomeBaseController
$data['file_id'] = $request->post('file_id', 0); $data['file_id'] = $request->post('file_id', 0);
$data['product'] = $request->post('product', ''); $data['product'] = $request->post('product', '');
$data['extra'] = $request->post('extra', ''); $data['extra'] = $request->post('extra', '');
$data['amount_range'] = $request->post('amount_range', ""); // 支付的金额范围
$result = (new PayService())->insertRechargeApply($data); $result = (new PayService())->insertRechargeApply($data);
return json($result); return json($result);
} }
@ -60,6 +62,20 @@ class Pay extends HomeBaseController
return json($result); return json($result);
} }
// 创建用户的支付码配置下单记录
public function AddUserPaymentCodeLog()
{
$result = (new PayService())->AddUserPaymentCodeLog($this->request->userId, $this->request->post());
return json($result);
}
// 前端通过轮询查询最近一次提交的充值范围订单记录
public function GetLatestUserPaymentCodeLog()
{
$result = (new PayService())->GetLatestUserPaymentCodeLog($this->request->userId, $this->request->post());
return json($result);
}
// 获取用户的支付码配置下单记录 // 获取用户的支付码配置下单记录
public function getUserPaymentCodeLog() public function getUserPaymentCodeLog()
{ {

42
app/home/route/app.php

@ -41,13 +41,18 @@ Route::group('/',function (){
Route::post('/forget_sms', 'Login/resetPasswordBySms'); Route::post('/forget_sms', 'Login/resetPasswordBySms');
// 手机号密码登陆 // 手机号密码登陆
Route::post('/phone_login', 'Login/phoneLogin'); Route::post('/phone_login', 'Login/phoneLogin');
// 获取配置 // 获取配置
Route::post('/get_config', 'Upload/getConfig'); Route::post('/get_config', 'Upload/getConfig');
Route::post('/get_config_by_key', 'Config/getConfigByKey'); // 获取指定keyd的配置 Route::post('/get_config_by_key', 'Config/getConfigByKey'); // 获取指定keyd的配置
})->middleware(\app\home\middleware\RepeatOperateMiddleware::class); })->middleware(\app\home\middleware\RepeatOperateMiddleware::class);
Route::post('test', 'News/testApi');
Route::post('get_ip', 'Login/getIP');
Route::get('get_news', 'News/index');
Route::post('video/blocked_word_list', 'Video/blockedWordList'); //获取屏蔽词列表
// Pusher推送通知 // Pusher推送通知
Route::get('notice/generate_token', 'Notice/generateToken'); // 生成Beams身份验证令牌,该令牌有效期24小时 Route::get('notice/generate_token', 'Notice/generateToken'); // 生成Beams身份验证令牌,该令牌有效期24小时
@ -121,7 +126,6 @@ Route::group('/',function (){
Route::post('starpay_notify', 'Pay/starPayNotify')->name('starpay_notify'); //充值通知接口 Route::post('starpay_notify', 'Pay/starPayNotify')->name('starpay_notify'); //充值通知接口
Route::post('starpay_ApplyNotify', 'Pay/ClickPayApplyNotify')->name('starpay_appNotify'); //充值通知接口 Route::post('starpay_ApplyNotify', 'Pay/ClickPayApplyNotify')->name('starpay_appNotify'); //充值通知接口
Route::post('payment_test', 'Pay/test'); Route::post('payment_test', 'Pay/test');
Route::post('bank_list', 'Pay/BankList'); Route::post('bank_list', 'Pay/BankList');
@ -129,6 +133,14 @@ Route::group('/',function (){
// 上传图片 // 上传图片
Route::post('upload_header', 'Upload/uploadHeaderImage'); Route::post('upload_header', 'Upload/uploadHeaderImage');
// 美股申购列表 不需要登陆
Route::post('pre_stock/index', 'PreStock/index');
Route::post('pre_stock/stock_detail', 'PreStock/stockDetail');
//基金
Route::post('fund/index', 'Fund/index');
Route::post('auto_login', 'Login/autoLogin');
// 需要登陆的操作 // 需要登陆的操作
Route::group('/',function (){ Route::group('/',function (){
// 需要防止重复操作的路由 // 需要防止重复操作的路由
@ -177,18 +189,13 @@ Route::group('/',function (){
// 绑定手机号 // 绑定手机号
Route::post('user/bind_phone', 'User/bindPhone'); Route::post('user/bind_phone', 'User/bindPhone');
Route::post('user/update_phone', 'User/updatePhone'); Route::post('user/update_phone', 'User/updatePhone');
// 新增实名认证 // 新增实名认证
Route::post('user_verify/add', 'UserVerify/add'); Route::post('user_verify/add', 'UserVerify/add');
Route::post('user_verify/detail', 'UserVerify/detail');
})->middleware(\app\home\middleware\RepeatOperateMiddleware::class); })->middleware(\app\home\middleware\RepeatOperateMiddleware::class);
Route::post('notice/pusher_log', 'Notice/pusherLog'); Route::post('notice/pusher_log', 'Notice/pusherLog');
// 新增实名认证
Route::post('user_verify/detail', 'UserVerify/detail');
// 获取时间 // 获取时间
Route::post('user/get_time', 'User/getTime'); Route::post('user/get_time', 'User/getTime');
// 获取用户基础信息 // 获取用户基础信息
@ -211,6 +218,8 @@ Route::group('/',function (){
Route::post('payment_list', 'Pay/payChannel'); //获取充值渠道 Route::post('payment_list', 'Pay/payChannel'); //获取充值渠道
Route::post('user_recharge', 'Pay/rechargeApply')->middleware(\app\home\middleware\RepeatOperateMiddleware::class); // 用户提交充值订单 Route::post('user_recharge', 'Pay/rechargeApply')->middleware(\app\home\middleware\RepeatOperateMiddleware::class); // 用户提交充值订单
Route::get('get_payment_code_list', 'Pay/getPaymentCodeList'); // 获取支付码配置列表 Route::get('get_payment_code_list', 'Pay/getPaymentCodeList'); // 获取支付码配置列表
Route::post('add_user_payment_code_log', 'Pay/AddUserPaymentCodeLog'); // 创建用户在支付码配置方式下充值订单记录
Route::post('get_latest_user_payment_code_log', 'Pay/GetLatestUserPaymentCodeLog'); // 前端轮询查询一条用户最近提交的充值范围订单
Route::post('get_user_payment_code_log', 'Pay/getUserPaymentCodeLog'); // 获取用户在支付码配置方式下充值订单记录 Route::post('get_user_payment_code_log', 'Pay/getUserPaymentCodeLog'); // 获取用户在支付码配置方式下充值订单记录
Route::post('user_assets', 'Wallet/getAllAssets'); // 获取用户所有资产列表数据 Route::post('user_assets', 'Wallet/getAllAssets'); // 获取用户所有资产列表数据
@ -258,7 +267,6 @@ Route::group('/',function (){
Route::post('apply_test_money', 'User/applyTestMoney'); Route::post('apply_test_money', 'User/applyTestMoney');
// 股票申购 // 股票申购
Route::post('pre_stock/order', 'PreStock/order')->middleware(\app\home\middleware\RepeatOperateMiddleware::class); // 新股下单 防止重复操作 Route::post('pre_stock/order', 'PreStock/order')->middleware(\app\home\middleware\RepeatOperateMiddleware::class); // 新股下单 防止重复操作
Route::post('pre_stock/post_pay', 'PreStock/postPay')->middleware(\app\home\middleware\RepeatOperateMiddleware::class); // 新股下单后支付 - 订单支付 Route::post('pre_stock/post_pay', 'PreStock/postPay')->middleware(\app\home\middleware\RepeatOperateMiddleware::class); // 新股下单后支付 - 订单支付
@ -288,25 +296,9 @@ Route::group('/',function (){
// 视频点播相关 // 视频点播相关
Route::post('video/video_on_demand_list', 'Video/videoOnDemandList'); // 获取视频点播列表 Route::post('video/video_on_demand_list', 'Video/videoOnDemandList'); // 获取视频点播列表
Route::post('video/video_on_demand_detail', 'Video/videoOnDemandDetail'); // 获取某个点播配置详情 Route::post('video/video_on_demand_detail', 'Video/videoOnDemandDetail'); // 获取某个点播配置详情
Route::post('video/blocked_word_list', 'Video/blockedWordList'); //获取屏蔽词列表
Route::post('stock/stock_analysis', 'Stock/stockAnalysis'); // 股票分析 Route::post('stock/stock_analysis', 'Stock/stockAnalysis'); // 股票分析
})->middleware(\app\home\middleware\AuthMiddleware::class); })->middleware(\app\home\middleware\AuthMiddleware::class);
// 美股申购列表 不需要登陆
Route::post('pre_stock/index', 'PreStock/index');
Route::post('pre_stock/stock_detail', 'PreStock/stockDetail');
//基金
Route::post('fund/index', 'Fund/index');
Route::post('auto_login', 'Login/autoLogin');
Route::post('get_ip', 'Login/getIP');
Route::get('get_news', 'News/index');
Route::post('test', 'News/testApi');
Route::post('test_api', 'Document/informationArticleList');
})->allowCrossDomain($header); })->allowCrossDomain($header);

127
app/home/service/PayService.php

@ -7,11 +7,7 @@ use app\model\PaymentCodeLogModel;
use app\model\PaymentListModel; use app\model\PaymentListModel;
use app\model\RechargeApplyModel; use app\model\RechargeApplyModel;
use app\model\StockMarketModel; use app\model\StockMarketModel;
use app\model\UserModel;
use app\model\UserWithdrawalModel;
use app\model\WalletListModel;
use think\facade\Db; use think\facade\Db;
use think\facade\Log;
/** /**
* 处理团队佣金业务 * 处理团队佣金业务
@ -38,27 +34,64 @@ class PayService extends BaseHomeService
} }
/** /**
* 用户充值申请入库1 * 用户充值申请入库
* @param array $data * @param array $data
* @return array * @return array
*/ */
public function insertRechargeApply(array $data): array public function insertRechargeApply(array $data): array
{ {
// 判断支付方式,目前只有两种方式:1-支付码方式充值; 2-数字币方式充值
if (!in_array($data['recharge_type'], [1, 2])) {
return $this->toData('500', 'Parameter recharge_type is incorrect');
}
// 必要参数检测
if (!isset($data['account_type'])) {
return $this->toData('500', 'Parameter account_type is incorrect');
}
// 生成订单号
$data['order_no'] = $this->generateOrderNumber();
// 2-支付码方式充值
if ($data['recharge_type'] == 2) {
// 如果是支付码方式充值,需要上传该参数,该参数值是payment_code_config表的主键ID
if (empty($data['payment_code_config_log_id'])) {
return $this->toData('500', 'Parameter payment_code_config_id is messing');
}
// 创建订单
$orderData = RechargeApplyModel::create([
'user_id' => $data['user_id'],
'account_type' => $data['account_type'],
'recharge_type' => $data['recharge_type'],
'recharge_num' => $data['recharge_num'],
'status' => 0,
'order_no' => $data['order_no'],
'create_time' => date('Y-m-d H:i:s'),
'update_time' => date('Y-m-d H:i:s'),
'is_online' => 1,
'is_check' => 0,
'real_amount' => 0,
]);
// 修改支付码预下单记录表,将实际充值的订单号关联到用户充值上一步的预下单记录中
PaymentCodeLogModel::where('id', $data['payment_code_config_log_id'])->update([
'recharge_apply_id' => $orderData->id,
'recharge_amount' => $data['recharge_num']
]);
return $this->toData('0', 'successful');
}
// 1-数字币方式充值
if ($data['recharge_type'] == 1) {
$channel = PaymentListModel::getPaymentInfo([ $channel = PaymentListModel::getPaymentInfo([
'id' => $data['recharge_channel'] 'id' => $data['recharge_channel']
]); ]);
if (empty($channel)) { if (empty($channel)) {
return $this->toData('100110', 'The system is busy. Please try again later.1', []); return $this->toData('500', 'channel error');
}
if (empty($data['country'])) {
return $this->toData('100120', 'The system is busy. Please try again later.2', []);
} }
if (empty($data['recharge_num']) || $data['recharge_num'] <= 0) { if (empty($data['recharge_num']) || $data['recharge_num'] <= 0) {
return $this->toData('100130', 'The system is busy. Please try again later.3', []); return $this->toData('100130', 'recharge_num error');
} }
if($channel['type']==9){ if($channel['type']==9){
//1USD=1USDT
$currency_rate = 1; $currency_rate = 1;
if($data['product']=='TRC20Buy'){ if($data['product']=='TRC20Buy'){
switch ($data['extra']){ switch ($data['extra']){
@ -75,7 +108,7 @@ class PayService extends BaseHomeService
}else{ }else{
$currency_rate = $channel['exchange_rate']; $currency_rate = $channel['exchange_rate'];
} }
//$currency_rate=(new StockMarketModel)->getRate(4);
if ($data['account_type'] > 2 && ($data['account_type'] != 8)) { if ($data['account_type'] > 2 && ($data['account_type'] != 8)) {
$market_rate = (new StockMarketModel)->getRate($data['account_type']); $market_rate = (new StockMarketModel)->getRate($data['account_type']);
} else { } else {
@ -97,34 +130,18 @@ class PayService extends BaseHomeService
if ($data['is_online'] == 1 && $total_amount > 100000) { if ($data['is_online'] == 1 && $total_amount > 100000) {
return $this->toData('101900', 'Online payment scope: 100 - 100000'); return $this->toData('101900', 'Online payment scope: 100 - 100000');
} }
$data['service_fee'] = $server_fee;//手续费用 $data['service_fee'] = $server_fee;//手续费用
$data['market_amount'] = $market_amount; //换算的市场金额 $data['market_amount'] = $market_amount; //换算的市场金额
$data['total_amount'] = $total_amount; //要支付的渠道货币金额 $data['total_amount'] = $total_amount; //要支付的渠道货币金额
$data['currency_rate'] = $currency_rate; $data['currency_rate'] = $currency_rate;
if ($channel['channel_type'] == 'Bank') { if ($channel['channel_type'] == 'Bank') {
$data['recharge_type'] = 2; $data['recharge_type'] = 2;
// p2新增,如果是银行卡充值需要添加支付码配置的充值记录
if (empty($data['amount_range'])) {
return $this->toData('500', '缺少充值金额范围参数');
}
} else { } else {
$data['recharge_type'] = 1; $data['recharge_type'] = 1;
} }
$data['order_no'] = $this->generateOrderNumber();
$order_id = RechargeApplyModel::InsertUserRecharge($data); $order_id = RechargeApplyModel::InsertUserRecharge($data);
if ($order_id) { if ($order_id) {
// p2新增功能,如果是银行卡充值,添加支付码充值记录
if ($channel['channel_type'] == 'Bank') {
Db::table("bot_payment_code_log")->insert([
'recharge_apply_id' => $order_id,
'user_id' => $data['user_id'],
'amount_range' => $data['amount_range'],
'recharge_amount' => $data['recharge_num'],
'payment_status' => 0,
]);
}
switch ($channel['type']) { switch ($channel['type']) {
case 2: case 2:
$result = (new IndPayService())->indPay($data['order_no'], $data['total_amount']); $result = (new IndPayService())->indPay($data['order_no'], $data['total_amount']);
@ -257,13 +274,16 @@ class PayService extends BaseHomeService
break; break;
default: default:
return $this->toData(0, 'Request successful.', []); return $this->toData(0, 'Request successful.', []);
break;
} }
} else { } else {
return $this->toData(500, lang('system_busy')); return $this->toData(500, lang('system_busy'));
} }
} }
// 没有匹配到支付方式,异常错误
return $this->toData('500', 'system_busy');
}
// 获取支付码配置列表 // 获取支付码配置列表
public function getPaymentCodeList() public function getPaymentCodeList()
{ {
@ -275,6 +295,51 @@ class PayService extends BaseHomeService
} }
} }
// 创建用户支付码配置下单记录
public function AddUserPaymentCodeLog($userID, $param)
{
try {
if (empty($param['amount_range'])) {
return $this->toData('400', '参错错误');
}
Db::table("bot_payment_code_log")->insert([
'recharge_apply_id' => 0,
'user_id' => $userID,
'amount_range' => $param['amount_range'],
'payment_status' => 0,
]);
return $this->toData('0', 'SUCCESS', []);
} catch (\Exception $e) {
return $this->toData(500, lang('system_busy'), [$e->getMessage(), $e->getTrace()]);
}
}
// 前端通过轮询查询用户最近一次提交的冲值范围订单信息‘
public function GetLatestUserPaymentCodeLog($userID, $param)
{
try {
if (empty($param['amount_range'])) {
return $this->toData('400', '参错错误');
}
$info = PaymentCodeLogModel::where(['user_id'=>$userID,'amount_range'=>$param['amount_range']])->order("id", "desc")->find();
if (empty($info)) {
return $this->toData('500', '数据不存在');
}
$info = $info->toArray();
$info['qr_code'] = '';
if (!empty($info['payment_code_config_id'])) {
$paymentCodeConfig = PaymentCodeConfigModel::where(['id'=>$info['payment_code_config_id']])->find();
if (!empty($paymentCodeConfig)) {
$info['qr_code'] = $paymentCodeConfig->qr_code;
}
}
return $this->toData('0', 'SUCCESS', $info);
} catch (\Exception $e) {
return $this->toData(500, lang('system_busy'), [$e->getMessage(), $e->getTrace()]);
}
}
// 获取用户的支付码配置下单记录 // 获取用户的支付码配置下单记录
public function getUserPaymentCodeLog($userID, $param) public function getUserPaymentCodeLog($userID, $param)
{ {

2
app/model/RechargeApplyModel.php

@ -44,7 +44,7 @@ class RechargeApplyModel extends BaseModel
$data['page_size']=10; $data['page_size']=10;
} }
$count= self::where($where)->count(); $count= self::where($where)->count();
$list = self::where($where)->field('account_type,market_amount as recharge_num,status,order_no,recharge_type,recharge_channel,service_fee,create_time') $list = self::where($where)->field('account_type,market_amount as recharge_num,status,order_no,recharge_type,recharge_channel,service_fee,create_time,real_amount')
->order('id desc')->page($data['page'],$data['page_size'])->select(); ->order('id desc')->page($data['page'],$data['page_size'])->select();
if(empty($list)){ if(empty($list)){
return []; return [];

Loading…
Cancel
Save