cdekapi

package module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 24, 2021 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	OrderTypeECommerce = 1
	OrderTypeDelivery  = 2
)
View Source
const (
	APITestBaseURL   = "http://api.edu.cdek.ru/v2"
	APIBaseURL       = "http://api.cdek.ru/v2"
	APICalculatorURL = "http://api.cdek.ru/calculator/calculate_price_by_json.php"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AdditionalService

type AdditionalService struct {
	ID    int     `json:"id"`
	Title string  `json:"title"`
	Price float64 `json:"price"`
	Rate  float64 `json:"rate"`
}

type ApiService

type ApiService interface {
	GetOffices(ctx context.Context, filter OfficesFilter) ([]Office, error)
	GetCities(ctx context.Context, filter CitiesFilter) ([]City, error)
	Calculator(ctx context.Context, request CalculatorRequest) (CalculatorResponse, error)
}

type CalcRequestLocation added in v0.1.0

type CalcRequestLocation struct {
	Code        int    `json:"code,omitempty"`         // Код населенного пункта СДЭК (метод "Список населенных пунктов")
	PostalCode  string `json:"postal_code,omitempty"`  // Почтовый индекс
	CountryCode string `json:"country_code,omitempty"` // Код страны в формате  ISO_3166-1_alpha-2
	City        string `json:"city,omitempty"`         // Название города
}

type CalcRespService added in v0.1.0

type CalcRespService struct {
	Code string  `json:"code"` // Тип дополнительной услуги, код из справочника доп. услуг
	Sum  float64 `json:"sum"`  // Стоимость услуги
}

type CalcService added in v0.1.0

type CalcService struct {
	Code      string `json:"code"`      // Тип дополнительной услуги, код из справочника доп. услуг, Required
	Parameter string `json:"parameter"` // Параметр дополнительной услуги
}

type CalculatorRequest

type CalculatorRequest struct {
	Date         string              `json:"date,omitempty"`
	OrderType    int                 `json:"type,omitempty"`     // Тип заказа
	Currency     int                 `json:"currency,omitempty"` // Валюта, в которой необходимо произвести расчет
	TariffCode   int                 `json:"tariff_code"`        // Код тарифа
	FromLocation CalcRequestLocation `json:"from_location"`      // Адрес отправления, Required
	ToLocation   CalcRequestLocation `json:"to_location"`        // Адрес получения, Required
	Services     []CalcService       `json:"services,omitempty"` // Дополнительные услуги
	Packages     []Good              `json:"packages"`           // Список информации по местам (упаковкам)
}

type CalculatorResponse

type CalculatorResponse struct {
	DeliveryPeriodMin int               `json:"period_min"`
	DeliveryPeriodMax int               `json:"period_max"`
	WeightCalc        int               `json:"weight_calc"`
	Services          []CalcRespService `json:"services"`
	Price             float64           `json:"delivery_sum"`
	Total             float64           `json:"total_sum"` // Стоимость доставки с учетом дополнительных услуг
	Currency          string            `json:"currency"`  // Валюта, в которой рассчитана стоимость доставки (код СДЭК)
	Errors            []ErrorApiV2
}

type CitiesFilter

type CitiesFilter struct {
	// contains filtered or unexported fields
}

func (*CitiesFilter) AddParam

func (f *CitiesFilter) AddParam(name CitiesFilterParamName, value string) *CitiesFilter

func (CitiesFilter) BuildQueryParams

func (f CitiesFilter) BuildQueryParams() map[string]string

type CitiesFilterParamName

type CitiesFilterParamName string
const (
	// CitiesFilterCountryCodes Array of country codes in the format ISO_3166-1_alpha-2
	CitiesFilterCountryCodes CitiesFilterParamName = "country_codes"

	// CitiesFilterRegionCode Region code in the CDEK IS
	CitiesFilterRegionCode CitiesFilterParamName = "region_code"

	// CitiesFilterKladrRegionCode Region code according to the Russian Classifier of Countries of the World
	CitiesFilterKladrRegionCode CitiesFilterParamName = "kladr_region_code"

	// CitiesFilterFiasRegionCode Region code according to the Federal Information Address System
	CitiesFilterFiasRegionCode CitiesFilterParamName = "fias_region_guid"

	// CitiesFilterKladrCityCode City code according to the Russian Classifier of Countries of the World
	CitiesFilterKladrCityCode CitiesFilterParamName = "kladr_code"

	// CitiesFilterFiasCityCode City code according to the Federal Information Address System
	CitiesFilterFiasCityCode CitiesFilterParamName = "fias_guid"

	// 	City code according to the Federal Information Address System, UUID
	CitiesFilterPostalCode CitiesFilterParamName = "postal_code"

	// CitiesFilterCode City code from the CDEK IS
	CitiesFilterCode CitiesFilterParamName = "code"

	// CitiesFilterCity City name
	CitiesFilterCity CitiesFilterParamName = "city"

	// CitiesFilterSize Limitation on the number of results displayed. Required, if "page" is specified. Default value: 1,000
	CitiesFilterSize CitiesFilterParamName = "size"

	// CitiesFilterPage Number of the results page. Default value: 0
	CitiesFilterPage CitiesFilterParamName = "page"

	// CitiesFilterLang Localization. Default: “rus”
	CitiesFilterLang CitiesFilterParamName = "lang"

	// CitiesFilterPaymentLimit Cash-on-delivery amount limit, possible values: 1 – no limit; 0 – cash on delivery is not accepted;
	// positive value – the cash-on-delivery amount does not exceed this value.
	CitiesFilterPaymentLimit CitiesFilterParamName = "payment_limit"
)

type City

type City struct {
	Code            string      `json:"code"`
	City            string      `json:"city"`
	FiasGUID        string      `json:"fias_guid"`
	KladrCode       string      `json:"kladr_code"`
	CountryCode     string      `json:"country_code"`
	Country         string      `json:"country"`
	Region          string      `json:"region"`
	RegionCode      string      `json:"region_code"`
	FiasRegionGUID  string      `json:"fias_region_guid"`
	KladrRegionCode string      `json:"kladr_region_code"`
	SubRegion       string      `json:"sub_region"`
	PostalCodes     []string    `json:"postal_codes"`
	Longitude       float64     `json:"longitude"`
	Latitude        float64     `json:"latitude"`
	TimeZone        string      `json:"time_zone"`
	PaymentLimit    float64     `json:"payment_limit"`
	Errors          []CityError `json:"errors"`
}

City is response List of Cities request

type CityError

type CityError struct {
	Code    string `json:"code"`
	Message string `json:"message"`
}

type Client

type Client struct {
	// contains filtered or unexported fields
}

func New

func New(baseUrl string) *Client

func (*Client) Calculator

func (c *Client) Calculator(ctx context.Context, request CalculatorRequest) (CalculatorResponse, error)

func (Client) GetCities

func (c Client) GetCities(ctx context.Context, filter CitiesFilter) ([]City, error)

func (Client) GetOffices

func (c Client) GetOffices(ctx context.Context, filter OfficesFilter) ([]Office, error)

func (*Client) SetAuth

func (c *Client) SetAuth(clientId string, secret string) *Client

type ErrorApiV1

type ErrorApiV1 struct {
	Code int    `json:"code"`
	Text string `json:"text"`
}

type ErrorApiV2 added in v0.0.3

type ErrorApiV2 struct {
	Code    string `json:"code"`
	Message string `json:"message"`
}

type ErrorsApiV1

type ErrorsApiV1 struct {
	Errors []ErrorApiV1 `json:"error"`
}

type Good

type Good struct {
	Weight int `json:"weight"`           // Общий вес (в граммах), Required
	Length int `json:"length,omitempty"` // Габариты упаковки. Длина (в сантиметрах)
	Width  int `json:"width,omitempty"`  // Габариты упаковки. Ширина (в сантиметрах)
	Height int `json:"height,omitempty"` // Габариты упаковки. Высота (в сантиметрах)
}

Good Package dimensions

type Office

type Office struct {
	Code               string           `json:"code"`
	Name               string           `json:"name"`
	Location           OfficeLocation   `json:"location"`
	AddressComment     string           `json:"address_comment"`
	NearestStation     string           `json:"nearest_station"`
	MetroStation       string           `json:"nearest_metro_station"`
	WorkTime           string           `json:"work_time"`
	Phones             []PhoneDetail    `json:"phones"`
	Email              string           `json:"email"`
	Note               string           `json:"note"`
	Type               string           `json:"type"`
	OwnerCode          string           `json:"owner_сode"`
	TakeOnly           bool             `json:"take_only"`
	IsDressingRoom     bool             `json:"is_dressing_room"`
	HaveCashless       bool             `json:"have_cashless"`
	HaveCash           bool             `json:"have_cash"`
	AllowedCod         bool             `json:"allowed_cod"`
	Site               string           `json:"site"`
	OfficeImage        []OfficeImage    `json:"office_image_list"`
	WorkTimeList       []WorkTimeItem   `json:"work_time_list"`
	WorkTimeExceptions []WorkTimeExcept `json:"work_time_exceptions"`
	WeightMin          float64          `json:"weight_min"`
	WeightMax          float64          `json:"weight_max"`

	Errors []ErrorApiV2
}

type OfficeImage

type OfficeImage struct {
	Number int    `json:"number"`
	URL    string `json:"url"`
}

OfficeImage contains all photos of the office (except for a photo showing how to get to it)

type OfficeLocation added in v0.0.3

type OfficeLocation struct {
	CountryCode string  `json:"country_code"`
	RegionCode  int     `json:"region_code"`
	RegionName  string  `json:"region"`
	CityCode    int     `json:"city_code"`
	City        string  `json:"city"`
	PostalCode  string  `json:"postal_сode"`
	Longitude   float64 `json:"longitude"`
	Latitude    float64 `json:"latitude"`
	Address     string  `json:"address"`
	AddressFull string  `json:"address_full"`
}

type Offices

type Offices struct {
	Offices []Office
}

type OfficesFilter

type OfficesFilter struct {
	// contains filtered or unexported fields
}

func (*OfficesFilter) AddParam

func (f *OfficesFilter) AddParam(name OfficesFilterParamName, value string) *OfficesFilter

func (OfficesFilter) BuildQueryParams

func (f OfficesFilter) BuildQueryParams() map[string]string

type OfficesFilterParamName

type OfficesFilterParamName string
const (
	//OfficesFilterCityPostCode Почтовый индекс города, для которого необходим список ПВЗ
	OfficesFilterCityPostCode OfficesFilterParamName = "postal_code"

	//OfficesFilterCityID Код города по базе СДЭК
	OfficesFilterCityID OfficesFilterParamName = "city_code"

	//OfficesFilterType Тип пункта выдачи, по умолчанию «PVZ».
	OfficesFilterType OfficesFilterParamName = "type"

	//OfficesFilterCountryIso Код страны в формате ISO_3166-1_alpha-2
	OfficesFilterCountryIso OfficesFilterParamName = "country_code"

	//OfficesFilterRegionID Код региона по базе СДЭК
	OfficesFilterRegionID OfficesFilterParamName = "region_code"

	//OfficesFilterHaveCashless Наличие терминала оплаты («1», «true» - есть; «0», «false» - нет.)
	OfficesFilterHaveCashless OfficesFilterParamName = "have_cashless"

	//OfficesFilterHaveCash Есть прием наличных («1», «true» - есть; «0», «false» - нет.)
	OfficesFilterHaveCash OfficesFilterParamName = "have_cashless"

	//OfficesFilterAllowedCod Разрешен наложенный платеж («1», «true» - да; «0», «false» - нет.)
	OfficesFilterAllowedCod OfficesFilterParamName = "allowed_cod"

	//OfficesFilterIsDressingRoom Наличие примерочной («1», «true» - есть; «0», «false» - нет.)
	OfficesFilterIsDressingRoom OfficesFilterParamName = "is_dressing_room"

	//OfficesFilterWeightMin Минимальный вес в кг, который принимает ПВЗ.
	//При переданном значении будут выводиться ПВЗ с минимальным весом до указанного значения
	OfficesFilterWeightMin OfficesFilterParamName = "weight_min"

	//OfficesFilterWeightMax Максимальный вес, который может принять ПВЗ
	OfficesFilterWeightMax OfficesFilterParamName = "weight_max"

	//OfficesFilterLang Локализация ПВЗ. По-умолчанию "rus"
	OfficesFilterLang OfficesFilterParamName = "lang"

	//OfficesFilterTakeOnly Является ли ПВЗ только пунктом выдачи («1», «true» - да; «0», «false» - нет.)
	OfficesFilterTakeOnly OfficesFilterParamName = "take_only"
)

type PhoneDetail

type PhoneDetail struct {
	Number     string `json:"number"`
	Additional string `json:"additional"`
}

type WorkTimeExcept added in v0.0.3

type WorkTimeExcept struct {
	Date      string `json:"date"`
	Time      string `json:"time"`
	IsWorking bool   `json:"is_working"`
}

type WorkTimeItem added in v0.0.3

type WorkTimeItem struct {
	Day  int    `json:"day"`
	Time string `json:"time"`
}

WorkTimeItem opening hours for every day

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL