| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- namespace app\api\controller\order;
- use app\api\model\order\Cart as CartModel;
- use app\api\model\order\Order as OrderModel;
- use app\api\service\order\settled\MasterOrderSettledService;
- use app\api\controller\Controller;
- use app\api\model\settings\Message as MessageModel;
- use app\api\service\pay\PayService;
- use app\common\enum\order\OrderTypeEnum;
- /**
- * 普通订单
- */
- class Order extends Controller
- {
- /**
- * 订单确认-立即购买
- */
- public function buy()
- {
- // 立即购买:获取订单商品列表
- $params = $this->request->param();
- // $params = array(
- // 'delivery' =>0,
- // 'store_id' =>'undefined',
- // 'coupon_id' => 6,
- // 'is_use_points' =>1,
- // 'phone'=>null,
- // 'linkman' =>null,
- // 'remark' =>'',
- // 'pay_type' => 10,
- // 'pay_source' =>'h5',
- // 'product_id' => 33,
- // 'product_num' => 2,
- // 'product_sku_id' => 2,
- // );
- // p($params);
- $productList = OrderModel::getOrderProductListByNow($params);
- $user = $this->getUser();
- // 实例化订单service
- $orderService = new MasterOrderSettledService($user, $productList, $params);
- // 获取订单信息
- $orderInfo = $orderService->settlement();
- // p($orderInfo);
- if ($this->request->isGet()) {
- // 如果来源是小程序, 则获取小程序订阅消息id.获取支付成功,发货通知.
- $template_arr = MessageModel::getMessageByNameArr($params['pay_source'], ['order_pay_user', 'order_delivery_user']);
- // 是否开启支付宝支付
- $show_alipay = PayService::isAlipayOpen($params['pay_source'], $user['app_id']);
- // 用户余额
- $balance = $user['balance'];
- return $this->renderSuccess('', compact('orderInfo', 'template_arr', 'show_alipay', 'balance'));
- }
- // 订单结算提交
- if ($orderService->hasError()) {
- return $this->renderError($orderService->getError());
- }
- // 创建订单
- $order_id = $orderService->createOrder($orderInfo);
- if(!$order_id){
- return $this->renderError($orderService->getError() ?: '订单创建失败');
- }
- // 构建支付请求
- $payment = OrderModel::onOrderPayment($user, $orderService->model, $params['pay_type'], $params['pay_source']);
- log_write(json_encode($payment));
- // 记录发起支付
- log_write(sprintf('build order buy request. [buy] order_no[%s]', $order_id));
- // 返回结算信息
- return $this->renderSuccess(['success' => '支付成功', 'error' => '订单未支付'], [
- 'order_id' => $order_id, // 订单id
- 'pay_type' => $params['pay_type'], // 支付方式
- 'payment' => $payment, // 微信支付参数
- 'order_type' => OrderTypeEnum::MASTER, //订单类型
- ]);
- }
- /**
- * 订单确认-立即购买
- */
- public function cart()
- {
- // 立即购买:获取订单商品列表
- $params = $this->request->param();
-
- $user = $this->getUser();
- // 商品结算信息
- $CartModel = new CartModel($user);
- // 购物车商品列表
- $productList = $CartModel->getList($params['cart_ids']);
- // p($productList);
- // 实例化订单service
- $orderService = new MasterOrderSettledService($user, $productList, $params);
- // 获取订单信息
- $orderInfo = $orderService->settlement();
- if ($this->request->isGet()) {
- // 如果来源是小程序, 则获取小程序订阅消息id.获取支付成功,发货通知.
- $template_arr = MessageModel::getMessageByNameArr($params['pay_source'], ['order_pay_user', 'order_delivery_user']);
- // 是否开启支付宝支付
- $show_alipay = PayService::isAlipayOpen($params['pay_source'], $user['app_id']);
- // 用户余额
- $balance = $user['balance'];
- return $this->renderSuccess('', compact('orderInfo', 'template_arr', 'show_alipay', 'balance'));
- }
- // 订单结算提交
- if ($orderService->hasError()) {
- return $this->renderError($orderService->getError());
- }
- // 创建订单
- $order_id = $orderService->createOrder($orderInfo);
- if(!$order_id){
- return $this->renderError($orderService->getError() ?: '订单创建失败');
- }
- // 移出购物车中已下单的商品
- $CartModel->clearAll($params['cart_ids']);
- // 构建支付请求
- $payment = OrderModel::onOrderPayment($user, $orderService->model, $params['pay_type'], $params['pay_source']);
- // 记录发起支付
- log_write(sprintf('build order buy request. order_no[%s]', $order_id));
- // 返回结算信息
- return $this->renderSuccess('', [
- 'order_id' => $orderService->model['order_id'], // 订单id
- 'pay_type' => $params['pay_type'], // 支付方式
- 'payment' => $payment, // 微信支付参数
- 'order_type' => OrderTypeEnum::MASTER, //订单类型
- ]);
- }
- }
|