UserRechargeController.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?php
  2. namespace app\api\controller\user;
  3. use app\models\order\Level;
  4. use app\models\user\UserRecharge;
  5. use app\Request;
  6. use crmeb\services\GroupDataService;
  7. use crmeb\services\SystemConfigService;
  8. use crmeb\services\UtilService;
  9. /**
  10. * 充值类
  11. * Class UserRechargeController
  12. * @package app\api\controller\user
  13. */
  14. class UserRechargeController
  15. {
  16. /**
  17. * 小程序充值
  18. *
  19. * @param Request $request
  20. * @return mixed
  21. */
  22. public function routine(Request $request)
  23. {
  24. list($price, $paid_price, $type) = UtilService::postMore([['price', 0], ['paid_price', 0], ['type', 0]], $request, true);
  25. if (!$price || $price <= 0) return app('json')->fail('参数错误');
  26. $storeMinRecharge = sys_config('store_user_min_recharge');
  27. if ($price < $storeMinRecharge) return app('json')->fail('充值金额不能低于' . $storeMinRecharge);
  28. switch ((int)$type) {
  29. case 0: //支付充值余额
  30. $rechargeOrder = UserRecharge::addRecharge($request->uid(), $price, 'routine', $paid_price);
  31. if (!$rechargeOrder) return app('json')->fail('充值订单生成失败!');
  32. try {
  33. return app('json')->successful(UserRecharge::jsPay($rechargeOrder));
  34. } catch (\Exception $e) {
  35. return app('json')->fail($e->getMessage());
  36. }
  37. break;
  38. case 1: //佣金转入余额
  39. if (UserRecharge::importNowMoney($request->uid(), $price))
  40. return app('json')->successful('转入余额成功');
  41. else
  42. return app('json')->fail(UserRecharge::getErrorInfo());
  43. break;
  44. case 2://酒币转余额
  45. if (UserRecharge::Wdc2Money($request->uid(), $price))
  46. return app('json')->successful('转入余额成功');
  47. else
  48. return app('json')->fail(UserRecharge::getErrorInfo());
  49. break;
  50. default:
  51. return app('json')->fail('缺少参数');
  52. break;
  53. }
  54. }
  55. /**
  56. * 公众号充值
  57. *
  58. * @param Request $request
  59. * @return mixed
  60. */
  61. public function wechat(Request $request)
  62. {
  63. list($price, $paid_price, $from, $type) = UtilService::postMore([['price', 0], ['paid_price', 0], ['from', 'weixin'], ['type', 0]], $request, true);
  64. if (!$price || $price <= 0) return app('json')->fail('参数错误');
  65. $storeMinRecharge = sys_config('store_user_min_recharge');
  66. if ($price < $storeMinRecharge) return app('json')->fail('充值金额不能低于' . $storeMinRecharge);
  67. switch ((int)$type) {
  68. case 0: //支付充值余额
  69. $rechargeOrder = UserRecharge::addRecharge($request->uid(), $price, 'weixin', $paid_price);
  70. if (!$rechargeOrder) return app('json')->fail('充值订单生成失败!');
  71. try {
  72. if ($from == 'weixinh5') {
  73. $recharge = UserRecharge::wxH5Pay($rechargeOrder);
  74. } else {
  75. $recharge = UserRecharge::wxPay($rechargeOrder);
  76. }
  77. } catch (\Exception $e) {
  78. return app('json')->fail($e->getMessage());
  79. }
  80. return app('json')->successful(['type' => $from, 'data' => $recharge]);
  81. break;
  82. case 1: //佣金转入余额
  83. if (UserRecharge::importNowMoney($request->uid(), $price))
  84. return app('json')->successful('转入余额成功');
  85. else
  86. return app('json')->fail(UserRecharge::getErrorInfo());
  87. break;
  88. case 2://酒币转余额
  89. if (UserRecharge::Wdc2Money($request->uid(), $price))
  90. return app('json')->successful('转入余额成功');
  91. else
  92. return app('json')->fail(UserRecharge::getErrorInfo());
  93. break;
  94. default:
  95. return app('json')->fail('缺少参数');
  96. break;
  97. }
  98. }
  99. /**
  100. * 充值额度选择
  101. * @return mixed
  102. */
  103. public function index()
  104. {
  105. $rechargeQuota = sys_data('user_recharge_quota') ?? [];
  106. $data['recharge_quota'] = $rechargeQuota;
  107. $recharge_attention = sys_config('recharge_attention');
  108. $recharge_attention = explode("\n", $recharge_attention);
  109. $data['recharge_attention'] = $recharge_attention;
  110. return app('json')->successful($data);
  111. }
  112. /**
  113. * 会员开通
  114. * @param Request $request
  115. * @return mixed
  116. */
  117. public function recharge(Request $request)
  118. {
  119. //@file_put_contents("level.txt",json_encode(input()));
  120. list($level_id, $num, $from, $pay_type, $spread_uid) = UtilService::postMore([['level_id', 1], ['num', 1], ['from', 'routine'], ['pay_type', 'weixin'], ['spread', 0]], $request, true);
  121. if (!$level_id || $level_id <= 0) return app('json')->fail('参数错误');
  122. $rechargeOrder = Level::createLevelOrder($request->uid(), $level_id, $pay_type, $spread_uid, $num);
  123. if (!$rechargeOrder) return app('json')->fail('充值订单生成失败!');
  124. $Order = $rechargeOrder->toArray();
  125. try {
  126. switch ($pay_type) {
  127. case 'weixin':
  128. if ($from == 'routine') {
  129. $jsConfig = Level::jsPay($Order['order_id']); //订单列表发起支付
  130. if (isset($jsConfig['package']) && $jsConfig['package']) {
  131. $package = str_replace('prepay_id=', '', $jsConfig['package']);
  132. for ($i = 0; $i < 3; $i++) {
  133. RoutineFormId::SetFormId($package, $request->uid());
  134. }
  135. }
  136. } else if ($from == 'weixinh5') {
  137. $jsConfig = Level::h5Pay($Order['order_id']);
  138. } else {
  139. $jsConfig = Level::wxPay($Order['order_id']);
  140. }
  141. if ($from == 'weixinh5') {
  142. return app('json')->status('wechat_h5_pay', ['jsConfig' => $jsConfig, 'order_id' => $rechargeOrder['order_id']]);
  143. } else {
  144. return app('json')->status('wechat_pay', ['jsConfig' => $jsConfig, 'order_id' => $rechargeOrder['order_id']]);
  145. }
  146. break;
  147. case 'yue':
  148. if (Level::yuePay($Order['order_id'], $request->uid()))
  149. return app('json')->status('success', '余额支付成功');
  150. else {
  151. $error = Level::getErrorInfo();
  152. return app('json')->fail(is_array($error) && isset($error['msg']) ? $error['msg'] : $error);
  153. }
  154. break;
  155. }
  156. } catch (\Exception $e) {
  157. return app('json')->fail($e->getMessage());
  158. }
  159. return app('json')->fail('支付方式错误');
  160. }
  161. }