relynolli-server/CDEK/v2/orderStatus.go

177 lines
9.3 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package v2
import (
"context"
"fmt"
"net/http"
)
type OrderStatusFailedCall struct {
// DateTime Дата и время создания недозвона datetime
DateTime string `json:"date_time"`
// ReasonCode Причина недозвона (подробнее см. приложение 5)
ReasonCode int `json:"reason_code"`
}
type OrderStatusRescheduledCall struct {
// DateTime Дата и время создания переноса прозвона
DateTime string `json:"date_time"`
// DateNext Дата, на которую согласован повторный прозвон
DateNext string `json:"date_next"`
// TimeNext Время, на которое согласован повторный прозвон
TimeNext string `json:"time_next"`
// Comment Комментарий к переносу прозвона
Comment string `json:"comment,omitempty"`
}
type OrderStatusCall struct {
// FailedCalls Информация о неуспешных прозвонах (недозвонах)
FailedCalls OrderStatusFailedCall `json:"failed_calls,omitempty"`
// RescheduledCalls Информация о переносах прозвонов
RescheduledCalls OrderStatusRescheduledCall `json:"rescheduled_calls,omitempty"`
}
type OrderStatusDeliveryProblem struct {
// Code Код проблемы (подробнее см. приложение 4) https://api-docs.cdek.ru/29923975.html
Code string `json:"code,omitempty"`
// CreateDate Дата создания проблемы
CreateDate string `json:"create_date,omitempty"`
}
type OrderStatusPaymentInfo struct {
// Type Тип оплаты: CARD - картой, CASH - наличными
Type string `json:"type"`
// Sum Сумма в валюте страны получателя
Sum float64 `json:"sum"`
// DeliverySum Стоимость услуги доставки (по тарифу)
DeliverySum float64 `json:"delivery_sum"`
// TotalSum Итоговая стоимость заказа
TotalSum float64 `json:"total_sum"`
}
type OrderStatusDeliveryDetail struct {
// Date Дата доставки
Date string `json:"date"`
// RecipientName получатель при доставке
RecipientName string `json:"recipient_name"`
// PaymentSum Сумма наложенного платежа, которую взяли с получателя, в валюте страны получателя с учетом частичной доставки
PaymentSum float64 `json:"payment_sum,omitempty"`
// PaymentInfo Тип оплаты наложенного платежа получателем
PaymentInfo []OrderStatusPaymentInfo `json:"payment_info,omitempty"`
// DeliverySum Стоимость услуги доставки (по тарифу)
DeliverySum float64 `json:"delivery_sum"`
TotalSum float64 `json:"total_sum"`
}
type OrderStatusInfo struct {
// Code Код статуса (подробнее см. приложение 1)
Code string `json:"code"`
// Name Название статуса
Name string `json:"name"`
// DateTime Дата и время установки статуса (формат yyyy-MM-dd'T'HH:mm:ssZ)
DateTime string `json:"date_time"`
// ReasonCode Дополнительный код статуса (подробнее см. приложение 2)
ReasonCode string `json:"reason_code,omitempty"`
// City Наименование места возникновения статуса
City string `json:"city"`
}
type OrderStatusEntity struct {
// Uuid Идентификатор заказа в ИС СДЭК
Uuid string `json:"uuid"`
// IsReturn Признак возвратного заказа: true - возвратный, false - прямой
IsReturn bool `json:"is_return"`
// IsReverse Признак реверсного заказа: true - реверсный, false - не реверсный
IsReverse bool `json:"is_reverse"`
// Type Тип заказа: 1 - "интернет-магазин" (только для договора типа "Договор с ИМ"), 2 - "доставка" (для любого договора)
Type int `json:"type"`
// CdekNumber Номер заказа СДЭК
CdekNumber string `json:"cdek_number,omitempty"`
// Number Номер заказа в ИС Клиента. При запросе информации по данному полю возможны варианты:
// - если не передан, будет присвоен номер заказа в ИС СДЭК - uuid;
// - если найдено больше 1, то выбирается созданный с самой последней датой.
// Может содержать только цифры, буквы латинского алфавита или спецсимволы (формат ASCII)
Number string `json:"number,omitempty"`
// DeliveryMode Истинный режим заказа:
// 1 - дверь-дверь
// 2 - дверь-склад
// 3 - склад-дверь
// 4 - склад-склад
// 6 - дверь-постамат
// 7 - склад-постамат
DeliveryMode string `json:"delivery_mode"`
//// TariffCode Код тарифа
//TariffCode int `json:"tariff_code"`
// Comment Комментарий к заказу
Comment string `json:"comment,omitempty"`
// DeveloperKey Ключ разработчика
DeveloperKey string `json:"developer_key,omitempty"`
// ShipmentPoint Код ПВЗ СДЭК, на который будет производиться самостоятельный привоз клиентом
ShipmentPoint string `json:"shipment_point,omitempty"`
// DeliveryPoint Код офиса СДЭК (ПВЗ/постамат), на который будет доставлена посылка
DeliveryPoint string `json:"delivery_point,omitempty"`
// DateInvoice Дата инвойса. Только для международных заказов. date (yyyy-MM-dd)
DateInvoice string `json:"date_invoice,omitempty"`
// ShipperName Грузоотправитель. Только для международных заказов
ShipperName string `json:"shipper_name,omitempty"`
// ShipperAddress Адрес грузоотправителя. Только для международных заказов
ShipperAddress string `json:"shipper_address,omitempty"`
// DeliveryRecipientCost Доп. сбор за доставку, которую ИМ берет с получателя.
DeliveryRecipientCost Payment `json:"delivery_recipient_cost,omitempty"`
// DeliveryRecipientCostAdv Доп. сбор за доставку (которую ИМ берет с получателя), в зависимости от суммы заказа
DeliveryRecipientCostAdv []Cost `json:"delivery_recipient_cost_adv,omitempty"`
// Sender Отправитель
Sender RecipientSender `json:"sender"`
// Seller Реквизиты истинного продавца
Seller Seller `json:"seller,omitempty"`
// Recipient Получатель
Recipient RecipientSender `json:"recipient,omitempty"`
// FromLocation Адрес отправления. Не может использоваться одновременно с shipment_point
FromLocation Location `json:"from_location"`
// ToLocation Адрес получения. Не может использоваться одновременно с delivery_point
ToLocation Location `json:"to_location"`
// ItemsCostCurrency TODO
ItemsCostCurrency string `json:"items_cost_currency"`
// RecipientCurrency TODO
RecipientCurrency string `json:"recipient_currency"`
// Services Дополнительные услуги
Services []Service `json:"services,omitempty"`
// Packages Список информации по местам (упаковкам)
Packages []Package `json:"packages"`
// DeliveryProblem Проблемы доставки, с которыми столкнулся курьер при доставке заказа "до двери"
DeliveryProblem []OrderStatusDeliveryProblem `json:"delivery_problem,omitempty"`
// DeliveryDetail Информация о вручении
DeliveryDetail OrderStatusDeliveryDetail `json:"delivery_detail,omitempty"`
// TransactedPayment Признак того, что по заказу была получена информация о переводе наложенного платежа интернет-магазину
TransactedPayment bool `json:"transacted_payment,omitempty"`
// Statuses Список статусов по заказу, отсортированных по дате и времени
Statuses []OrderStatusInfo `json:"statuses"`
// Calls Информация о прозвонах получателя
Calls []OrderStatusCall `json:"calls,omitempty"`
// @todo ticket SD-735298 - this is not documented but exists in example response https://api-docs.cdek.ru/29923975.html
DeliveryDate string `json:"delivery_date,omitempty"`
ShopSellerName string `json:"shop_seller_name,omitempty"`
}
func (c *clientImpl) OrderStatus(ctx context.Context, uuid string) (*Response, error) {
req, err := http.NewRequestWithContext(
ctx,
http.MethodGet,
c.buildUri(fmt.Sprintf("/v2/orders/%s", uuid), nil),
nil,
)
if err != nil {
return nil, err
}
req.Header.Add("Content-Type", "application/json")
accessToken, err := c.getAccessToken(ctx)
if err != nil {
return nil, err
}
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", accessToken))
return jsonReq[Response](req)
}