|
|
@@ -231,6 +231,7 @@ class OrderService extends BaseService
|
|
|
|
|
|
// 商品数据
|
|
|
$orderNo = get_order_num('JK');
|
|
|
+ $revenueOrderNo = get_order_num('RE');
|
|
|
$result = GoodsService::make()->getOrderGoods($ids, $goods, $userId, $orderNo,$discountPoint);
|
|
|
if (empty($result)) {
|
|
|
RedisService::clear($cacheLockKey);
|
|
|
@@ -283,10 +284,6 @@ class OrderService extends BaseService
|
|
|
$bonusRate = $bonusRate > 0 && $bonusRate <= 100 ? $bonusRate : $storeBonusRate;
|
|
|
$bonus = moneyFormat($orderTotal * $bonusRate / 100, 2);
|
|
|
|
|
|
- if (env('PAY_DEBUG')) {
|
|
|
- $orderTotal = 0.1;
|
|
|
- }
|
|
|
-
|
|
|
// 检查是否关联为会议订单,先签到的会议先关联
|
|
|
$record = MeetingRecordsModel::with(['meeting'])->where(['user_id'=>$userId,'mark'=>1])
|
|
|
->where('expired_at','>=', date('Y-m-d H:i:s'))
|
|
|
@@ -298,8 +295,17 @@ class OrderService extends BaseService
|
|
|
$meetingBonusRate = $meetingBonusRate>0 && $meetingBonusRate<100? $meetingBonusRate : 0;
|
|
|
$meetingBonus = moneyFormat($orderTotal * $meetingBonusRate / 100, 2);
|
|
|
|
|
|
+
|
|
|
// 是否开启分账功能
|
|
|
+ $payTotal = moneyFormat($orderTotal + $deliveryFee, 2); // 含运费支付金额
|
|
|
$revenueOpen = ConfigService::make()->getConfigByCode('order_revenue_open', 0);
|
|
|
+ $revenueRate = ConfigService::make()->getConfigByCode('order_revenue_rate', 30);
|
|
|
+ $revenueRate = $revenueRate>0 && $revenueRate<100? $revenueRate: 30;
|
|
|
+ $revenueAmount = moneyFormat($payTotal * $revenueRate/100,2);
|
|
|
+ if (env('PAY_DEBUG')) {
|
|
|
+ $revenueAmount = 0.01;
|
|
|
+ $payTotal = 0.01;
|
|
|
+ }
|
|
|
|
|
|
// 订单数据
|
|
|
$order = [
|
|
|
@@ -309,7 +315,7 @@ class OrderService extends BaseService
|
|
|
'meeting_id' => $recordMeetingId, // 关联会议
|
|
|
'total' => $goodsTotal, // 商品总价
|
|
|
'num' => $orderCount,
|
|
|
- 'pay_total' => $orderTotal, // 折扣后商品总价
|
|
|
+ 'pay_total' => $orderTotal, // 折扣后商品总价(不含运费)
|
|
|
'discount_point' => $discountPoint,
|
|
|
'discount_total' => $discountTotal, // 折扣金额
|
|
|
'delivery_fee' => $deliveryFee, // 运费
|
|
|
@@ -320,6 +326,8 @@ class OrderService extends BaseService
|
|
|
'bonus' => $bonus,
|
|
|
'bonus_rate' => $bonusRate,
|
|
|
'is_revenue' => $revenueOpen==1?1: 2,
|
|
|
+ 'revenue_no' => $revenueOrderNo,
|
|
|
+ 'revenue_amount' => $revenueAmount,
|
|
|
'meeting_bonus_rate' => $meetingBonusRate,
|
|
|
'meeting_bonus' => $meetingBonus,
|
|
|
'create_time' => time(),
|
|
|
@@ -351,7 +359,7 @@ class OrderService extends BaseService
|
|
|
'type' => 1,
|
|
|
'order_no' => $orderNo,
|
|
|
'is_revenue' => $order['is_revenue'],
|
|
|
- 'pay_money' => moneyFormat($orderTotal + $deliveryFee, 2),
|
|
|
+ 'pay_money' => $payTotal,
|
|
|
'body' => '订单付款',
|
|
|
'openid' => $openid
|
|
|
];
|
|
|
@@ -978,7 +986,6 @@ class OrderService extends BaseService
|
|
|
|
|
|
// 是否设置分账账户
|
|
|
$revenueOpenid = ConfigService::make()->getConfigByCode('order_revenue_openid', '');
|
|
|
- $revenueRate = ConfigService::make()->getConfigByCode('order_revenue_rate', 0);
|
|
|
if(empty($revenueOpenid)){
|
|
|
$this->error = '订单分账账户未配置';
|
|
|
return false;
|
|
|
@@ -992,54 +999,38 @@ class OrderService extends BaseService
|
|
|
|
|
|
// 订单信息
|
|
|
$info = $this->model->where(['id' => $id, 'mark' => 1])
|
|
|
- ->select(['id', 'order_no','user_id','transaction_id', 'pay_total', 'status'])
|
|
|
+ ->select(['id', 'order_no','revenue_no','user_id','transaction_id', 'pay_total','revenue_amount', 'status'])
|
|
|
->first();
|
|
|
- $orderNo = isset($info['order_no']) ? $info['order_no'] : '';
|
|
|
- $payTotal = isset($info['pay_total']) ? $info['pay_total'] : 0;
|
|
|
+ $revenueOrderNo = isset($info['revenue_no']) ? $info['revenue_no'] : '';
|
|
|
+ $revenueAmount = isset($info['revenue_amount']) ? $info['revenue_amount'] : 0;
|
|
|
$status = isset($info['status']) ? $info['status'] : 0;
|
|
|
- if($payTotal<=0){
|
|
|
- $this->error = '订单支付金额参数错误';
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
if($status != 4){
|
|
|
$this->error = '订单状态错误,未完成收货的订单无法分账';
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- $revenueAmount = moneyFormat($payTotal * $revenueRate/100,2);
|
|
|
- $revenueAmount = $revenueAmount<=0.01?0.01:$revenueAmount;
|
|
|
if($revenueAmount<=0){
|
|
|
$this->error = '订单分账金额不足';
|
|
|
return false;
|
|
|
}
|
|
|
-
|
|
|
- $outOrderNo = str_replace('RE','JK', $orderNo);
|
|
|
$order = [
|
|
|
'transaction_id'=> $info['transaction_id'],
|
|
|
- 'out_order_no'=> $outOrderNo,
|
|
|
+ 'out_order_no'=> $revenueOrderNo,
|
|
|
'body'=> '订单分账',
|
|
|
'amount'=> $revenueAmount,
|
|
|
'unsplit'=> true, // 只分一次
|
|
|
];
|
|
|
- if(!$this->model->where(['id'=>$id])->update(['revenue_no'=>$outOrderNo,'revenue_amount'=>$revenueAmount,'update_time'=>time()])){
|
|
|
- $this->error = '订单分账数据更新失败';
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
$result = PaymentService::make()->profitsharing($revenueOpenid, $order);
|
|
|
- $code = isset($result->code)? $result->code : 0;
|
|
|
$state = isset($result->state)? $result->state : 0;
|
|
|
$message = isset($result->message)? $result->message : '分账失败';
|
|
|
+ $orderId = isset($result->order_id)? $result->order_id : '';
|
|
|
if($state == 'FINISHED'){
|
|
|
-
|
|
|
+ $this->model->where(['id'=>$id])->update(['revenue_status'=>1,'revenue_order_id'=>$orderId,'update_time'=>time()]);
|
|
|
+ $this->error = '分账处理成功';
|
|
|
+ return true;
|
|
|
}else{
|
|
|
-
|
|
|
+ $this->error = $message;
|
|
|
+ return false;
|
|
|
}
|
|
|
-// $code = isset($re)
|
|
|
- dump($code);
|
|
|
- dump($state);
|
|
|
- dump($message);
|
|
|
- dump($result);
|
|
|
}
|
|
|
}
|