'OP00002119', 'serial_no' => '018b08cfddbd', 'merchant_no' => $shop->lklSjNo, 'term_no' => $shop->lklScanTermNo, 'merchantPrivateKeyPath' => $merchantPrivateKeyPath, 'lklCertificatePath' => $lklCertificatePath, ]; $laResource = new Lakala($params); $refundReason = ''; $orderSn = ''; $thirdNo = $order['thirdNo'] ?? ''; //竟然会出现thirdNo为空的情况,好像客户付款时有优惠金额时 if (empty($thirdNo)) { $orderSn = $order['orderSn'] ?? ''; } $backParams = [ 'refundSn' => $refundSn, 'thirdNo' => $thirdNo, 'orderSn' => $orderSn, 'refundAmount' => $refundFee, 'refundReason' => $refundReason, ]; $response = $laResource->refund($backParams); if (!isset($response['code']) || $response['code'] != 'BBS00000') { $errMsg = $response['msg'] ?? ''; noticeUtil::push("钱没有退回 {$xsOrderSn} {$errMsg}", '15280215347'); return ['status' => 0, 'msg' => $errMsg]; } else { $shopId = $shop->id; ShopExtClass::orderCancelBackMoneyReport($shopId); $sjName = $shop->merchantName; $shopName = $shop->shopName; $name = $shopName == '首店' ? $sjName : $sjName . '-' . $shopName; noticeUtil::push("钱已经原路退回 success {$xsOrderSn} {$name}", '15280215347'); return ['status' => 1, 'msg' => '退款成功']; } } // 订单列表 public static function getOrderList($where) { $data = self::getList('*', $where, 'addTime DESC'); $data['totalRefundPrice'] = self::sum($where, 'refundPrice'); $list = isset($data['list']) && !empty($data['list']) ? $data['list'] : []; if (empty($list)) { return $data; } $data['list'] = $list; return $data; } //验证信息 ssh 20220401 public static function valid($refund, $mainId) { if (empty($refund)) { util::fail('没有找到退款信息'); } if (isset($refund->mainId) == false || $refund->mainId != $mainId) { util::fail('无法操作'); } return true; } /** * 校验售后单归属当前登录商城用户 * 列表/详情不带当前店 hdId 时 customId 可能为 0,需同时认 userId * @param object|null $refund * @param int $customId 当前请求店铺的客户 id,可能为 0 * @param int $userId 商城登录用户 id * @return bool */ public static function validByCustom($refund, $customId, $userId = 0) { if (empty($refund)) { util::fail('没有找到售后申请'); } $userId = (int)$userId; $customId = (int)$customId; $refundUserId = (int)($refund->userId ?? 0); $refundCustomId = (int)($refund->customId ?? 0); if ($userId > 0 && $refundUserId === $userId) { return true; } if ($customId > 0 && $refundCustomId === $customId) { return true; } util::fail('不是你的售后申请'); return false; } /** * 按订单查最新一条商城顾客申请(优先待审核) * 商家即时售后 userId=0,这里只认顾客申请,避免把商家退款当成申请进度 * @param int $orderId * @return array|null */ public static function getLatestByOrderId($orderId) { $orderId = (int)$orderId; if ($orderId <= 0) { return null; } $pending = self::getByCondition(['orderId' => $orderId, 'status' => self::STATUS_PENDING]); if (!empty($pending)) { return $pending; } $list = self::getLimitList('*', ['orderId' => $orderId, 'userId>' => 0], 1, 'id DESC'); if (empty($list)) { return null; } return $list[0] ?? null; } /** * 订单是否存在待审核申请 * 待审核只会由 mallApp 顾客提交,商家即时售后创建时即 status=1 * @param int $orderId * @return bool */ public static function hasPendingByOrderId($orderId) { $row = self::getByCondition(['orderId' => (int)$orderId, 'status' => self::STATUS_PENDING]); return !empty($row); } }