修复:
public function updateRefundY(Request $request, $id)
{
$data = parent::postMore([
'refund_price',
['type', 1],
], $request);
if (!$id) return $this->failed('数据不存在');
$product = StoreOrderModel::get($id);
if (!$product) return Json::fail('数据不存在!');
if ($product['pay_price'] == $product['refund_price']) return Json::fail('已退完支付金额!不能再退款了');
if (!$data['refund_price']) return Json::fail('请输入退款金额');
$refund_price = $data['refund_price'];
$data['refund_price'] = bcadd($data['refund_price'], $product['refund_price'], 2);
$bj = bccomp((float)$product['pay_price'], (float)$data['refund_price'], 2);
if ($bj < 0) return Json::fail('退款金额大于支付金额,请修改退款金额');
if ($data['type'] == 1) {
$data['refund_status'] = 2;
} else if ($data['type'] == 2) {
$data['refund_status'] = 0;
}
$type = $data['type'];
unset($data['type']);
$refund_data['pay_price'] = $product['pay_price'];
$refund_data['refund_price'] = $refund_price;
if ($product['pay_type'] == 'weixin') {
try {
if ($refund_data['refund_price'] > 0) {
$refund_data['refund_id'] = $product['order_id'] . rand(100, 999);
}
$no = $product['order_id'];
if ($product['trade_no']) {
$no = $product['trade_no'];
$refund_data['type'] = 'trade_no';
}
HookService::listen('wechat_pay_order_refund', $no, $refund_data, true, PaymentBehavior::class);
} catch (\Exception $e) {
return Json::fail($e->getMessage());
}
} else if ($product['pay_type'] == 'yue') {
ModelBasic::beginTrans();
$res = User::bcInc($product['uid'], 'now_money', $refund_price, 'uid');
ModelBasic::checkTrans($res);
if (!$res) return Json::fail('余额退款失败!');
} else if ($product['pay_type'] == 'zhifubao') {
if ($product['type'] == 0 && $product['combination_id'] > 0) {
$mask = '拼团失败退款';
} elseif ($product['type'] == 0 && $product['combination_id'] == 0) {
$mask = '专题退款';
} elseif ($product['type'] == 2) {
$mask = '商品退款';
} elseif ($product['type'] == 1) {
$mask = '会员退款';
}
$res = AlipayTradeWapService::init()->AliPayRefund($product['order_id'], $product['trade_no'], $refund_price, $mask, 'refund');
if (empty($res) || $res != 10000) {
return Json::fail('支付宝退款失败!');
}
}
$data['refund_reason_time'] = time();
$resEdit = StoreOrderModel::edit($data, $id);
if ($resEdit) {
$data['type'] = $type;
if ($data['type'] == 1 && $product['type'] == 0) {
StorePink::setRefundPink($id);
SpecialBuy::where('order_id', $product['order_id'])->delete();
}
if ($product['type'] == 1) {
$merber = MemberShip::where('id', $product['member_id'])->find();
if ($merber['is_permanent']) {
User::where('uid', $product['uid'])->update(['is_permanent' => 0]);
} else {
$time = bcmul($merber['vip_day'], 86400, 0);
User::where('uid', $product['uid'])->setDec('overdue_time', $time);
}
}
if ($product['type'] == 0 && $product['combination_id'] > 0) {
$title = '专题拼团退款';
MerchantFlowingWater::orderRefund($id, $product['mer_id'], 0);
} elseif ($product['type'] == 0 && $product['combination_id'] == 0) {
$title = '专题退款';
MerchantFlowingWater::orderRefund($id, $product['mer_id'], 0);
} elseif ($product['type'] == 1) {
$title = '会员退款';
} elseif ($product['type'] == 2) {
$title = '商品退款';
MerchantFlowingWater::orderRefund($id, $product['mer_id'], 2);
}
$pay_type = $product['pay_type'] == 'yue' ? 'now_money' : $product['pay_type'];
if ($product['pay_type'] == 'yue') {
$balance = User::where(['uid' => $product['uid']])->value('now_money');
} else {
$balance = 0;
}
UserBill::income($title, $product['uid'], $pay_type, 'pay_product_refund', $refund_price, $product['id'], $balance, '订单退款' . floatval($refund_price) . '元');
HookService::afterListen('store_product_order_refund_y', $data, $id, false, StoreProductBehavior::class);
StoreOrderStatus::setStatus($id, 'refund_price', '退款给用户' . $refund_price . '元');
return Json::successful('退款成功!');
} else {
StoreOrderStatus::setStatus($id, 'refund_price', '退款给用户' . $refund_price . '元失败');
return Json::successful('退款失败!');
}
}
知识付费v2.1.6版本可以直接覆盖
{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}
作者 管理员 企业
{{itemf.name}}
{{itemc.user_info.nickname}}
{{itemc.user_name}}
回复 {{itemc.comment_user_info.nickname}}
{{itemf.name}}