79 lines
3.0 KiB
PHP
79 lines
3.0 KiB
PHP
<?php
|
||
|
||
namespace app\controller\api\store\order;
|
||
|
||
use app\common\repositories\store\order\StoreOrderCreateRepository;
|
||
use app\common\repositories\store\order\StoreOrderRepository;
|
||
use app\common\repositories\system\merchant\MerchantRepository;
|
||
use crmeb\basic\BaseController;
|
||
use crmeb\services\LockService;
|
||
|
||
class OnlinePay extends BaseController{
|
||
/**
|
||
* Common: 在线买单 - 搜索商户
|
||
* Author: wu-hui
|
||
* Time: 2024/01/12 11:53
|
||
* @return mixed
|
||
*/
|
||
public function searchMer(){
|
||
$search = $this->request->params(['search_text']);
|
||
// if(empty($search['search_text'])) return app('json')->fail('请输入搜索内容!');
|
||
// 内容查询
|
||
$list = app()->make(MerchantRepository::class)
|
||
->getSearch([])
|
||
->field('mer_id,mer_name,mer_address,mer_avatar')
|
||
->where('is_del',0)
|
||
->where('mer_state', 1)
|
||
->where('status', 1)
|
||
->where(function($query) use ($search){
|
||
$query->where('mer_name','like',"%{$search['search_text']}%")
|
||
->whereOr('mer_address','like',"%{$search['search_text']}%");
|
||
})
|
||
->order('create_time desc,mer_id desc')
|
||
->limit(100)
|
||
->select()
|
||
->toArray();
|
||
|
||
return app('json')->success($list);
|
||
}
|
||
/**
|
||
* Common: 在线买单 - 订单生成及发起支付
|
||
* Author: wu-hui
|
||
* Time: 2024/01/12 16:07
|
||
* @param StoreOrderCreateRepository $orderCreateRepository
|
||
* @return mixed
|
||
*/
|
||
public function createOrder(StoreOrderCreateRepository $orderCreateRepository){
|
||
// 参数获取
|
||
$payInfo = $this->request->params(['money','pay_type', 'mer_id', 'return_url']);
|
||
if (!in_array($payInfo['pay_type'], StoreOrderRepository::PAY_TYPE, true)) return app('json')->fail('请选择正确的支付方式');
|
||
if ((float)$payInfo['money'] <= 0) return app('json')->fail('支付金额必须大于0!');
|
||
if ((int)$payInfo['mer_id'] <= 0) return app('json')->fail('请选择商户!');
|
||
// 发起支付
|
||
$groupOrder = app()
|
||
->make(LockService::class)
|
||
->exec('online_order.create',function() use ($payInfo,$orderCreateRepository){
|
||
$payType = array_search($payInfo['pay_type'],StoreOrderRepository::PAY_TYPE);
|
||
|
||
return $orderCreateRepository->onlinePayment($payType,$payInfo,$this->request->userInfo());
|
||
});
|
||
|
||
if ($groupOrder['pay_price'] == 0) {
|
||
app()->make(StoreOrderRepository::class)->paySuccess($groupOrder);
|
||
return app('json')->status('success', '支付成功', ['order_id' => $groupOrder['group_order_id']]);
|
||
}
|
||
try {
|
||
|
||
return app()->make(StoreOrderRepository::class)->pay($payInfo['pay_type'], $this->request->userInfo(), $groupOrder, $payInfo['return_url'], $this->request->isApp());
|
||
} catch (\Exception $e) {
|
||
|
||
return app('json')->status('error', $e->getMessage(), ['order_id' => $groupOrder->group_order_id]);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
}
|