course/app/common/service/DepositOrderService.php

82 lines
2.6 KiB
PHP
Raw Normal View History

<?php
namespace app\common\service;
use app\common\model\BiddingOrder;
use app\common\model\DepositOrder;
use app\common\model\Requirement;
use app\common\model\User;
use app\constant\ResponseCode;
use think\Exception;
class DepositOrderService
{
/**
* 需求保证金回调地址
*/
const NOTIFY_URL = '/notify/WechatPayNotify/requirement_deposit_notify';
/**
* @desc 竞价订单支付定金
* @param $request
* @return array
*/
public function payBidOrder($request)
{
try {
$requestData = $request->post();
$bidding_order = BiddingOrder::where(['id' => $requestData['bidding_order_id']])->findOrEmpty();
if ($bidding_order->isEmpty()) {
throw new Exception('未找到出价订单');
}
if ($bidding_order->bind_status != 1) {
throw new Exception('该出价订单未中标,支付失败');
}
if ($bidding_order->pay_final_status != 0) {
throw new Exception('订单状态异常,支付失败');
}
$requirement = Requirement::where(['id' => $bidding_order->requirement_id])->findOrEmpty();
//@todo判断是否需要支付定金
if(1){
}
$trade_no = generate_order_no('B');
//创建订单
DepositOrder::create([
'user_id' => $bidding_order->user_id,
'photographer_id' => $bidding_order->photographer_id,
'detail' => json_encode($requirement->toArray()),
'order_type' => 'requirement',
'deposit_amount' => $requirement->deposit_amount,
'trade_no' => $trade_no,
'pay_status' => 0,
]);
$pay_data = [
'trade_no' => $trade_no,
'total_amount' => $bidding_order->bidding_price,
'desc' => $requirement->requirement_trade_no . '-定金',
'notify_url' => getenv('SERVER_DOMAIN') . self::NOTIFY_URL,//回调地址
'openid' => $request->user->openid,
];
$result = (new PayService())->payment($pay_data);
if(isset($result['code'])){
throw new Exception($result['msg']);
}
return [
'code' => ResponseCode::SUCCESS,
'data' => $result,
];
} catch (Exception $e) {
return [
'code' => ResponseCode::FAIL,
'msg' => $e->getMessage()
];
}
}
}