retry(function () use ($config, $refund, $refund_status) { return $this->flagshipSend($config, $refund, $refund_status); }, 1); if (is_string($flag)) throw new \Exception($flag); return $flag; } protected function flagshipSend(array $config, array $refund, int $refund_status) { $req = new AfterSalesRefundRawRefundUploadRequest($config); $model = new AfterSalesRefundRawRefundUploadModel(); $model->shop_no = $config['shop_no']; $orderItemModel = new OrderItemModel(); $orderItemModel->oid = "{$refund['order']['order_no']}_{$refund['order_detail_id']}"; // 原始子单号 $orderItemModel->tid = $refund['order']['order_no']; $orderItemModel->refund_no = $refund['order_no']; $orderItemModel->num = $refund['orderDetail']['num']; // 售后类型:1=仅退款,2=退货退款,3=换货 $type = $refund['type']; // 判断有没有发货 - 如果是已发货的并且为仅退款申请那么映射过去的为4退款不退货 if ($refund['orderDetail']['shipping_status'] == StatusEnum::ENABLED && $type == StatusEnum::ENABLED) { $type = 4; } $orderItemModel->type = $type; // 0取消订单1退款(未发货,退款申请)2退货3换货4退款不退货 // 1取消退款,2已申请退款,3等待退货,4等待收货,5退款成功 $status_key = $refund['refund_status'] < 0 ? 'refund_status' : 'step_status'; $orderItemModel->status = WangDianTongEnum::REFUND_FLAGSHIP_MAP[$refund[$status_key]]; $orderItemModel->refund_version = 1; $orderItemModel->refund_amount = $refund['refund_price']; $orderItemModel->actual_refund_amount = $refund['reality_refund_price']; $orderItemModel->title = ""; $orderItemModel->buyer_nick = EmojiHelper::convert($refund['base_user']['nickname'] ?? ''); $orderItemModel->is_aftersale = $type == 3; // 换货才为售后? $orderItemModel->logistics_name = $refund['express']; $orderItemModel->refund_time = date('Y-m-d H:i:s', $refund['created_at']); if (!empty($refund['refund_at'])) { $orderItemModel->current_phase_timeout = date('Y-m-d H:i:s', $refund['refund_at']); } $orderItemModel->reason = EmojiHelper::convert($refund['reason'] ?? ''); $model->order_list = [$orderItemModel->toArray()]; $resp = $req->send($model); if ($resp->getError()) return $resp->getError(); try { $res = $resp->toArray(); if (!isset($res['status']) || $res['status'] != StatusEnum::DISABLED) return $res['message'] ?? var_export($res, true); } catch (\Exception $e) { return $e->getMessage(); } return true; } }