$coin->coin ]); } /** * 点币购买 * @author lyh * @date 2019/3/28 * @description */ public function buy(Request $request) { $validator = \Validator::make($param = $request->all(), [ // 'coin' => 'required|numeric', 'number' => 'required|integer|min:1', // 'total_price' => 'required|numeric', 'pay_type' => 'required|integer|between:1,2' ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } // 1/100=人民币/点币 // 人民币 = 点币数量 $coin = Proxy::getConfig(\Auth::id())->coin; // 价格 = 数量/点币汇率 $param['total_price'] = round($param['number'] / $coin, 2); // 获取支付信息 $orderNo = Order::makeOrderNo(); $pay = PayDispatchService::dispatch($param['pay_type']); // 获取支付信息 // $payData = $pay->getPayInfo($orderNo, $param['total_price'], \Auth::user()->mobile . '点币购买'); $payData = $pay->getPayInfo($orderNo, 0.01, \Auth::user()->mobile . '点币购买');//测试 try { // todo 生成支付订单、并返回参数 $orderData = [ 'uid' => \Auth::id(), 'type' => 3, 'order_no' => $orderNo, 'pay_no' => $pay_no = $orderNo, 'price' => $param['total_price'], 'is_pay' => 0, 'pay_type' => $param['pay_type'], 'status' => 2, ]; if (empty($order_id = Order::insertGetId($orderData))) { \DB::rollBack(); return showJsonErr('生成订单失败'); } UserCoin::insertGetId([ 'uid' => \Auth::id(), 'order_id' => $order_id, 'price' => round(1 / $coin, 2), // 单价 'num' => $param['number'], // 数量 'total_price' => $param['total_price'], // 总价 'coin_parities' => $coin, // 汇率 'pay_type' => $param['pay_type'] ]); \DB::commit(); if ($param['pay_type'] == 2) { return $payData; } return showJsonSucc('提交购买点币成功', [ 'payData' => $payData ]); } catch (Exception $exception) { \DB::rollBack(); return showJsonErr('购买点币失败', [ 'message' => $exception->getMessage() ]); } } }