Обновлен компонент PvzReturnsTab: добавлена интеграция с API Wildberries для загрузки заявок на возврат, реализована обработка данных и фильтрация по статусам. Улучшен интерфейс с новыми элементами управления и отображением информации о заявках. Добавлены проверки на наличие API ключа и обработка ошибок при загрузке данных.
This commit is contained in:
@ -335,6 +335,49 @@ export interface WBStatisticsData {
|
||||
buyoutPercentage: number
|
||||
}
|
||||
|
||||
export interface WBClaimStatus {
|
||||
1: 'На рассмотрении'
|
||||
2: 'Одобрена'
|
||||
3: 'Отклонена'
|
||||
4: 'В архиве'
|
||||
}
|
||||
|
||||
export interface WBClaimType {
|
||||
1: 'Претензия'
|
||||
2: 'Возврат'
|
||||
}
|
||||
|
||||
export interface WBClaim {
|
||||
id: string
|
||||
claim_type: number
|
||||
status: number
|
||||
status_ex: number
|
||||
nm_id: number
|
||||
user_comment: string
|
||||
wb_comment: string
|
||||
dt: string
|
||||
imt_name: string
|
||||
order_dt: string
|
||||
dt_update: string
|
||||
photos: string[]
|
||||
video_paths: string[]
|
||||
actions: string[]
|
||||
price: number
|
||||
currency_code: string
|
||||
srid: string
|
||||
}
|
||||
|
||||
export interface WBClaimsResponse {
|
||||
claims: WBClaim[]
|
||||
total: number
|
||||
}
|
||||
|
||||
export interface WBClaimResponseRequest {
|
||||
id: string
|
||||
action: string
|
||||
comment?: string
|
||||
}
|
||||
|
||||
class WildberriesService {
|
||||
private apiKey: string
|
||||
private baseURL = 'https://statistics-api.wildberries.ru'
|
||||
@ -1260,6 +1303,70 @@ class WildberriesService {
|
||||
}
|
||||
}
|
||||
|
||||
// Получение заявок покупателей на возврат товаров
|
||||
async getClaims(options: {
|
||||
isArchive: boolean
|
||||
id?: string
|
||||
limit?: number
|
||||
offset?: number
|
||||
nmId?: number
|
||||
}): Promise<WBClaimsResponse> {
|
||||
const { isArchive, id, limit = 50, offset = 0, nmId } = options
|
||||
|
||||
// Используем правильный API endpoint для возвратов
|
||||
let url = `https://returns-api.wildberries.ru/api/v1/claims?is_archive=${isArchive}`
|
||||
|
||||
if (id) url += `&id=${id}`
|
||||
if (limit) url += `&limit=${limit}`
|
||||
if (offset) url += `&offset=${offset}`
|
||||
if (nmId) url += `&nm_id=${nmId}`
|
||||
|
||||
console.log(`WB Claims API: Getting customer claims from ${url}`)
|
||||
|
||||
try {
|
||||
const response = await this.makeRequest<WBClaimsResponse>(url, {
|
||||
method: 'GET'
|
||||
})
|
||||
|
||||
console.log(`WB Claims API: Got ${response.claims?.length || 0} claims, total: ${response.total || 0}`)
|
||||
return response
|
||||
} catch (error) {
|
||||
console.error(`WB Claims API: Error getting claims:`, error)
|
||||
return { claims: [], total: 0 }
|
||||
}
|
||||
}
|
||||
|
||||
// Ответ на заявку покупателя на возврат
|
||||
async respondToClaim(request: WBClaimResponseRequest): Promise<boolean> {
|
||||
const url = `https://returns-api.wildberries.ru/api/v1/claim`
|
||||
|
||||
console.log(`WB Claims API: Responding to claim ${request.id} with action ${request.action}`)
|
||||
|
||||
try {
|
||||
await this.makeRequest(url, {
|
||||
method: 'PATCH',
|
||||
body: JSON.stringify(request)
|
||||
})
|
||||
|
||||
console.log(`WB Claims API: Successfully responded to claim ${request.id}`)
|
||||
return true
|
||||
} catch (error) {
|
||||
console.error(`WB Claims API: Error responding to claim:`, error)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// Статический метод для получения заявок с токеном
|
||||
static async getClaims(apiKey: string, options: {
|
||||
isArchive: boolean
|
||||
id?: string
|
||||
limit?: number
|
||||
offset?: number
|
||||
nmId?: number
|
||||
}): Promise<WBClaimsResponse> {
|
||||
const service = new WildberriesService(apiKey)
|
||||
return service.getClaims(options)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user