UserCoinController.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Modes\Order;
  4. use App\Modes\Proxy;
  5. use App\Modes\UserCoin;
  6. use App\Service\PayDispatchService;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. use Mockery\Exception;
  10. class UserCoinController extends Controller
  11. {
  12. /**
  13. * 返回汇率比
  14. * @author lyh
  15. * @date 2019/3/28
  16. * @description
  17. */
  18. public function getCoin()
  19. {
  20. $coin = Proxy::getConfig(\Auth::id());
  21. return showJsonSucc('当前用户的点币汇率', [
  22. // 'coin' => $coin->coin
  23. 'coin' => 1
  24. ]);
  25. }
  26. /**
  27. * 点币购买
  28. * @author lyh
  29. * @date 2019/3/28
  30. * @description
  31. */
  32. public function buy(Request $request)
  33. {
  34. $validator = \Validator::make($param = $request->all(), [
  35. // 'coin' => 'required|numeric',
  36. 'number' => 'required|integer|min:1',
  37. // 'total_price' => 'required|numeric',
  38. 'pay_type' => 'required|integer'
  39. ]);
  40. if ($validator->fails()) {
  41. return showJsonErr($validator->errors()->first());
  42. }
  43. // 1/100=人民币/点币
  44. // 人民币 = 点币数量
  45. //$coin = Proxy::getConfig(\Auth::id())->coin;
  46. $coin=1;
  47. // 价格 = 数量/点币汇率
  48. $param['total_price'] = round($param['number'] / $coin, 2);
  49. // 获取支付信息
  50. $orderNo = Order::makeOrderNo();
  51. $pay = PayDispatchService::dispatch($param['pay_type']);
  52. // 获取支付信息
  53. // $payData = $pay->getPayInfo($orderNo, $param['total_price'], \Auth::user()->mobile . '点币购买');
  54. //$payData = $pay->getPayInfo($orderNo, 0.01, \Auth::user()->mobile . '点币购买');//测试
  55. //$param['total_price']=0.01;
  56. if ($param['pay_type'] == 2) {
  57. $payData = $pay->getAppPayInfo($orderNo, $param['total_price'], \Auth::user()->mobile . '点币购买');//测试
  58. }
  59. if ($param['pay_type'] == 21) {
  60. $pay = PayDispatchService::dispatch(2);
  61. $payData = $pay->getPayInfo($orderNo, $param['total_price'], \Auth::user()->mobile . '点币购买');//测试
  62. }
  63. if ($param['pay_type'] == 3) {//微信支付
  64. $payData = $pay->getPayInfo($orderNo, $param['total_price'], \Auth::user()->mobile . '点币购买');//测试
  65. }
  66. if ($param['pay_type'] == 31) {//微信支付h5
  67. $pay = PayDispatchService::dispatch(3);
  68. $getPayInfoh5Data = $pay->getPayInfoh5($orderNo, $param['total_price'], \Auth::user()->mobile . '点币购买');//测试
  69. $payData['url'] = env('APP_URL').'/re.php?re='.urlencode($getPayInfoh5Data->getTargetUrl());
  70. }
  71. // var_dump($payData);
  72. try {
  73. // todo 生成支付订单、并返回参数
  74. $orderData = [
  75. 'uid' => \Auth::id(),
  76. 'type' => 3,
  77. 'order_no' => $orderNo,
  78. 'pay_no' => $pay_no = $orderNo,
  79. 'price' => $param['total_price'],
  80. 'is_pay' => 0,
  81. 'pay_type' => $param['pay_type'],
  82. 'status' => 2,
  83. ];
  84. if (empty($order_id = Order::insertGetId($orderData))) {
  85. \DB::rollBack();
  86. return showJsonErr('生成订单失败');
  87. }
  88. UserCoin::insertGetId([
  89. 'uid' => \Auth::id(),
  90. 'order_id' => $order_id,
  91. 'price' => round(1 / $coin, 2), // 单价
  92. 'num' => $param['number'], // 数量
  93. 'total_price' => $param['total_price'], // 总价
  94. 'coin_parities' => $coin, // 汇率
  95. 'pay_type' => $param['pay_type']
  96. ]);
  97. \DB::commit();
  98. /*if ($param['pay_type'] == 2) {
  99. return showJsonSucc('');$payData;
  100. }*/
  101. return showJsonSucc('提交购买点币成功', [
  102. 'payData' => $payData
  103. ]);
  104. } catch (Exception $exception) {
  105. \DB::rollBack();
  106. return showJsonErr('购买点币失败', [
  107. 'message' => $exception->getMessage()
  108. ]);
  109. }
  110. }
  111. }