// +---------------------------------------------------------------------- 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); } } }