| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?php
- namespace App\Http\Controllers\Api;
- use App\Modes\Order;
- use App\Modes\Proxy;
- use App\Modes\UserCoin;
- use App\Service\PayDispatchService;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- use Mockery\Exception;
- class UserCoinController extends Controller
- {
- /**
- * 返回汇率比
- * @author lyh
- * @date 2019/3/28
- * @description
- */
- public function getCoin()
- {
- $coin = Proxy::getConfig(\Auth::id());
- return showJsonSucc('当前用户的点币汇率', [
- // 'coin' => $coin->coin
- 'coin' => 1
- ]);
- }
- /**
- * 点币购买
- * @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'
- ]);
- if ($validator->fails()) {
- return showJsonErr($validator->errors()->first());
- }
- // 1/100=人民币/点币
- // 人民币 = 点币数量
- //$coin = Proxy::getConfig(\Auth::id())->coin;
- $coin=1;
- // 价格 = 数量/点币汇率
- $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 . '点币购买');//测试
- //$param['total_price']=0.01;
- if ($param['pay_type'] == 2) {
- $payData = $pay->getAppPayInfo($orderNo, $param['total_price'], \Auth::user()->mobile . '点币购买');//测试
- }
- if ($param['pay_type'] == 21) {
- $pay = PayDispatchService::dispatch(2);
- $payData = $pay->getPayInfo($orderNo, $param['total_price'], \Auth::user()->mobile . '点币购买');//测试
- }
- if ($param['pay_type'] == 3) {//微信支付
- $payData = $pay->getPayInfo($orderNo, $param['total_price'], \Auth::user()->mobile . '点币购买');//测试
- }
- if ($param['pay_type'] == 31) {//微信支付h5
- $pay = PayDispatchService::dispatch(3);
- $getPayInfoh5Data = $pay->getPayInfoh5($orderNo, $param['total_price'], \Auth::user()->mobile . '点币购买');//测试
-
- $payData['url'] = env('APP_URL').'/re.php?re='.urlencode($getPayInfoh5Data->getTargetUrl());
- }
- // var_dump($payData);
- 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 showJsonSucc('');$payData;
- }*/
- return showJsonSucc('提交购买点币成功', [
- 'payData' => $payData
- ]);
- } catch (Exception $exception) {
- \DB::rollBack();
- return showJsonErr('购买点币失败', [
- 'message' => $exception->getMessage()
- ]);
- }
- }
- }
|