uid(); $code = md5(time() . rand(0, 999999)); while (CacheService::get("pay_code_{$code}", '')) { $code = md5($code); } CacheService::set("pay_code_{$code}", $uid, 60); return app('json')->success('ok', ['code' => $code, 'exceed_time' => date('Y-m-d H:i:s', time() + 60)]); } public function checkTradePsw(Request $request) { $user = $request->user(); $psw = $request->post('trade_psw', ''); if (md5(md5($psw)) != $user['trade_pwd']) { return app('json')->fail(); } return app('json')->success(); } /** * @param Request $request * @return mixed * @throws DataNotFoundException * @throws DbException * @throws InvalidArgumentException * @throws ModelNotFoundException */ public function autoPay(Request $request) { $uid = $request->uid(); list($type, $num, $code) = UtilService::postMore( [ ['type', 'USDT_ERC20', '', '', ['not_empty_check', function ($item) { $moneys = sys_data('money_type'); $new_money = []; foreach ($moneys as $v) { if ($v['can_trade'] == 1) { $new_money[] = $v['code']; } } return in_array($item, $new_money); }], ['请选择交易的币种', '请选择支持交易的币种']], ['num', 0], ['code', ''] ], $request, true); if (!$num || !$code) { return app('json')->fail('参数不足'); } $pay_uid = CacheService::get("pay_code_{$code}", ''); if (!$pay_uid) { return app('json')->fail('付款码已过期'); } $res = UserMoney::tradeMoney($pay_uid, $uid, $type, $num); if ($res) { CacheService::delete("pay_code_{$code}"); CacheService::set("pay_result_{$code}", 'SUCCESS'); return app('json')->success('支付成功'); } else { CacheService::delete("pay_code_{$code}"); CacheService::set("pay_result_{$code}", UserMoney::getErrorInfo('FAIL')); return app('json')->fail('支付失败:' . UserMoney::getErrorInfo('支付错误')); } } /** * @param Request $request * @return mixed */ public function payResult(Request $request) { $code = $request->get('code', ''); $result = CacheService::get("pay_result_{$code}", ''); if ($result) return app('json')->success($result); else return app('json')->success('NOT_USE'); } /** * @param Request $request * @return mixed * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function goPay(Request $request) { $user = $request->user(); $uid = $user['uid']; list($type, $num, $to_user_account, $to_uid, , $captcha) = UtilService::postMore( [ ['type', 'USDT_ERC20', '', '', ['not_empty_check', function ($item) { $moneys = sys_data('money_type'); $new_money = []; foreach ($moneys as $v) { if ($v['can_trade'] == 1) { $new_money[] = $v['code']; } } return in_array($item, $new_money); }], ['请选择交易的币种', '请选择支持交易的币种']], ['num', 0], ['to_user_account', ''], ['to_uid', 0], ['trade_psw', '', '', '', ['not_empty_check', function ($item) use ($user) { return md5(md5($item)) == $user['trade_pwd']; }], ['请输入交易密码', '交易密码错误']], ['captcha', ''] ], $request, true); if (!$num || !$to_uid || !$to_user_account) { return app('json')->fail('参数不足'); } $uid_check = User::where('account', $to_user_account)->value('uid'); if ($to_uid != $uid_check) { return app('json')->fail('用户账号与uid不符'); } $res = UserMoney::tradeMoney($uid, $to_uid, $type, $num); if ($res) { return app('json')->success('支付成功'); } else { return app('json')->fail('支付失败:' . UserMoney::getErrorInfo('支付错误')); } } }