<?php namespace app\api\controller\user; use app\models\system\SystemGroupData; use app\models\user\UserRecharge; use app\Request; use crmeb\services\GroupDataService; use crmeb\services\SystemConfigService; use crmeb\services\UtilService; include_once dirname(__FILE__). "/../AdapaySdk/init.php"; include_once dirname(__FILE__). "/../AdapaySdk/config.php"; /** * 充值类 * Class UserRechargeController * @package app\api\controller\user */ class UserRechargeController { /** * 小程序充值 * * @param Request $request * @return mixed */ public function routine(Request $request) { list($price, $recharId, $type) = UtilService::postMore([['price', 0], ['rechar_id', 0], ['type', 0]], $request, true); if (!$price || $price <= 0) return app('json')->fail('参数错误'); $storeMinRecharge = sys_config('store_user_min_recharge'); if ($price < $storeMinRecharge) return app('json')->fail('充值金额不能低于' . $storeMinRecharge); switch ((int)$type) { case 0: //支付充值余额 $paid_price = 0; if ($recharId) { $data = SystemGroupData::getDateValue($recharId); if ($data === false) { return app('json')->fail('您选择的充值方式已下架!'); } else { $paid_price = $data['give_money'] ?? 0; } } $rechargeOrder = UserRecharge::addRecharge($request->uid(), $price, 'routine', $paid_price); if (!$rechargeOrder) return app('json')->fail('充值订单生成失败!'); try { return app('json')->successful(UserRecharge::jsPay($rechargeOrder)); } catch (\Exception $e) { return app('json')->fail($e->getMessage()); } break; case 1: //佣金转入余额 if (UserRecharge::importNowMoney($request->uid(), $price)) return app('json')->successful('转入余额成功'); else return app('json')->fail(UserRecharge::getErrorInfo()); break; default: return app('json')->fail('缺少参数'); break; } } /** * 公众号充值 * * @param Request $request * @return mixed */ public function wechat(Request $request) { list($price, $recharId, $from, $type) = UtilService::postMore([['price', 0], ['rechar_id', 0], ['from', 'weixin'], ['type', 0]], $request, true); if (!$price || $price <= 0) return app('json')->fail('参数错误'); $storeMinRecharge = sys_config('store_user_min_recharge'); if ($price < $storeMinRecharge) return app('json')->fail('充值金额不能低于' . $storeMinRecharge); switch ((int)$type) { case 0: //支付充值余额 $paid_price = 0; if ($recharId) { $data = SystemGroupData::getDateValue($recharId); if ($data === false) { return app('json')->fail('您选择的充值方式已下架!'); } else { $paid_price = $data['give_money'] ?? 0; } } $rechargeOrder = UserRecharge::addRecharge($request->uid(), $price, 'weixin', $paid_price); if (!$rechargeOrder) return app('json')->fail('充值订单生成失败!'); try { if ($from == 'weixinh5') { $recharge = UserRecharge::wxH5Pay($rechargeOrder); } else { $recharge = UserRecharge::wxPay($rechargeOrder); } } catch (\Exception $e) { return app('json')->fail($e->getMessage()); } return app('json')->successful(['type' => $from, 'data' => $recharge]); break; case 1: //佣金转入余额 if (UserRecharge::importNowMoney($request->uid(), $price)) return app('json')->successful('转入余额成功'); else return app('json')->fail(UserRecharge::getErrorInfo()); break; case 2: $rechargeOrder = UserRecharge::addRecharge($request->uid(), $price, 'alipay'); $payment = new \AdaPaySdk\Payment(); # 支付设置 $payment_params = array( 'app_id'=> 'app_3dc215b5-ade5-47d8-8461-ddb796bd5e06', 'order_no'=> $rechargeOrder['order_id'].'-'.rand(100000, 999999), 'pay_channel'=> 'alipay_wap', //'time_expire'=> date("YmdHis", time()+86400), 'pay_amt'=> sprintf("%01.2f",$rechargeOrder['price']), 'goods_title'=> '环球优购', 'goods_desc'=> '环球优购', 'description'=> 'alipay', 'device_info'=> ['device_p'=> $_SERVER["REMOTE_ADDR"]], 'callback_url' => 'http://xqyg.frp.liuniu946.com/index', 'notify_url' => 'http://xqyg.frp.liuniu946.com/api/adapay/cz_notify' ); $payment->create($payment_params); if ($payment->isError()){ //失败处理 return app('json')->fail('支付失败'); } else { //成功处理 return app('json')->status('alipay', ['jsConfig' => $payment->result, 'orderId' => $rechargeOrder['order_id']]); } break; default: return app('json')->fail('缺少参数'); break; } } /** * 充值额度选择 * @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; return app('json')->successful($data); } }