You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.4 KiB
100 lines
3.4 KiB
3 months ago
|
<?php
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Author: CRMEB Team <admin@crmeb.com>
|
||
|
// +----------------------------------------------------------------------
|
||
|
namespace app\controller\api\v1\user;
|
||
|
|
||
|
use app\Request;
|
||
|
use app\services\pay\RechargeServices;
|
||
|
use app\services\user\UserRechargeServices;
|
||
|
use think\exception\ValidateException;
|
||
|
|
||
|
/**
|
||
|
* 充值类
|
||
|
* Class UserRecharge
|
||
|
* @package app\controller\api\user
|
||
|
*/
|
||
|
class UserRecharge
|
||
|
{
|
||
|
protected $services = NUll;
|
||
|
|
||
|
/**
|
||
|
* UserRecharge constructor.
|
||
|
* @param UserRechargeServices $services
|
||
|
*/
|
||
|
public function __construct(UserRechargeServices $services)
|
||
|
{
|
||
|
$this->services = $services;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 充值额度选择
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function index()
|
||
|
{
|
||
|
$rechargeQuota = sys_data('user_recharge_quota') ?? [];
|
||
|
$data['recharge_quota'] = $rechargeQuota;
|
||
|
$recharge_attention = sys_config('recharge_attention');
|
||
|
$recharge_attention = explode("\n", $recharge_attention);
|
||
|
$data['recharge_attention'] = $recharge_attention;
|
||
|
$data['user_extract_balance_status'] = (int)sys_config('user_extract_balance_status', 1);
|
||
|
return app('json')->successful($data);
|
||
|
}
|
||
|
|
||
|
public function recharge(Request $request)
|
||
|
{
|
||
|
[$price, $recharId, $type, $from] = $request->postMore([
|
||
|
['price', 0],
|
||
|
['rechar_id', 0],
|
||
|
['type', 0],
|
||
|
['from', 'weixin']
|
||
|
], true);
|
||
|
if (!$price || $price <= 0) return app('json')->fail('充值金额不能为0元!');
|
||
|
if (!in_array($type, [0, 1])) return app('json')->fail('充值方式不支持!');
|
||
|
if (!in_array($from, ['weixin', 'weixinh5', 'routine', 'alipay'])) return app('json')->fail('充值方式不支持');
|
||
|
$storeMinRecharge = sys_config('store_user_min_recharge');
|
||
|
if ($price < $storeMinRecharge) return app('json')->fail('充值金额不能低于' . $storeMinRecharge);
|
||
|
$uid = (int)$request->uid();
|
||
|
$re = $this->services->recharge($uid, $price, $recharId, $type, $from);
|
||
|
if ($re) {
|
||
|
return app('json')->success($type == 1 ? '操作成功' : '订单生成成功', ['order_id' => $re['data']['order_id'] ?? '']);
|
||
|
}
|
||
|
return app('json')->fail('充值订单生产失败');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 充值订单支付
|
||
|
* @param Request $request
|
||
|
* @return \think\Response
|
||
|
*/
|
||
|
public function pay(Request $request)
|
||
|
{
|
||
|
[$uni, $payType, $from, $quitUrl] = $request->postMore([
|
||
|
['uni', ''],
|
||
|
['paytype', 'weixin'],
|
||
|
['from', 'weixin'],
|
||
|
['quitUrl', '']
|
||
|
], true);
|
||
|
$info['order_id'] = $uni;
|
||
|
try {
|
||
|
/** @var RechargeServices $recharge */
|
||
|
$recharge = app()->make(RechargeServices::class);
|
||
|
$info['jsConfig'] = $recharge->recharge($uni, '', $payType);
|
||
|
} catch (\Exception $e) {
|
||
|
throw new ValidateException($e->getMessage());
|
||
|
}
|
||
|
if ($from == 'weixinh5') {
|
||
|
return app('json')->status('wechat_h5_pay', '前往支付', $info);
|
||
|
} else {
|
||
|
return app('json')->status('wechat_pay', '前往支付', $info);
|
||
|
}
|
||
|
}
|
||
|
}
|