course/app/common/service/DepositOrderService.php

82 lines
2.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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()
];
}
}
}