Order.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace app\api\controller\plus\bargain;
  3. use app\api\model\plus\bargain\Product as ProductModel;
  4. use app\api\service\order\settled\BargainOrderSettledService;
  5. use app\api\controller\Controller;
  6. use app\api\model\settings\Message as MessageModel;
  7. use app\api\model\order\Order as OrderModel;
  8. use app\common\enum\order\OrderTypeEnum;
  9. use app\common\enum\settings\SettingEnum;
  10. use app\common\model\settings\Setting;
  11. /**
  12. * 限时砍价订单
  13. */
  14. class Order extends Controller
  15. {
  16. /**
  17. * 订单确认
  18. */
  19. public function buy()
  20. {
  21. // 积分商城兑换订单:获取订单商品列表
  22. $params = $this->request->param();
  23. $productList = ProductModel::getBargainProduct($params);
  24. $user = $this->getUser();
  25. // 实例化订单service
  26. $orderService = new BargainOrderSettledService($user, $productList, $params);
  27. // 获取订单信息
  28. $orderInfo = $orderService->settlement();
  29. // 订单结算提交
  30. if ($orderService->hasError()) {
  31. return $this->renderError($orderService->getError());
  32. }
  33. if ($this->request->isGet()) {
  34. // 如果来源是小程序, 则获取小程序订阅消息id.获取支付成功,发货通知.
  35. $template_arr = MessageModel::getMessageByNameArr($params['pay_source'], ['order_pay_user', 'order_delivery_user']);
  36. // 是否开启h5支付宝支付
  37. $h5_alipay = Setting::getItem(SettingEnum::H5ALIPAY)['is_open'];
  38. // 用户余额
  39. $balance = $user['balance'];
  40. return $this->renderSuccess('', compact('orderInfo', 'template_arr', 'h5_alipay', 'balance'));
  41. }
  42. // 创建订单
  43. $order_id = $orderService->createOrder($orderInfo);
  44. if (!$order_id) {
  45. return $this->renderError($orderService->getError() ?: '订单创建失败');
  46. }
  47. // 构建支付请求
  48. $payment = OrderModel::onOrderPayment($user, $orderService->model, $params['pay_type'], $params['pay_source']);
  49. // 返回结算信息
  50. return $this->renderSuccess(['success' => '支付成功', 'error' => '订单未支付'], [
  51. 'order_id' => $order_id, // 订单id
  52. 'pay_type' => $params['pay_type'], // 支付方式
  53. 'payment' => $payment, // 微信支付参数
  54. 'order_type' => OrderTypeEnum::MASTER, //订单类型
  55. ]);
  56. }
  57. }