uds

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Jan 18, 2024 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const BaseUri = "https://api.uds.app/partner/v2/"

Variables

This section is empty.

Functions

This section is empty.

Types

type ActionState

type ActionState string

ActionState Статус операции.

const (
	ActionStateNormal   ActionState = "NORMAL"
	ActionStateCanceled ActionState = "CANCELED"
	ActionStateReversal ActionState = "REVERSAL"
)

type ApiError

type ApiError struct {
	ErrorCode ErrorCode         `json:"errorCode"` // Код ошибки.
	Message   string            `json:"message"`   // Описание ошибки.
	Errors    []BadRequestError `json:"errors"`    // Присутствует, если ErrorCode = ErrBadRequest
}

func (ApiError) Error

func (e ApiError) Error() string

type BadRequestError

type BadRequestError struct {
	ErrorCode string `json:"errorCode"` // Код ошибки.
	Message   string `json:"message"`   // Описание ошибки.
	Field     string `json:"field"`     // Поле объекта, на которое указывает ошибка
	Value     any    `json:"value"`     // Значение поля
}

type BranchInfo

type BranchInfo struct {
	Id          int64  `json:"id"`
	DisplayName string `json:"displayName"`
}

Branch Информация о филиале.

type CalcOperationReceipt

type CalcOperationReceipt struct {
	Total             float64  `json:"total"`                       // Общая сумма чека до применения скидок в денежных единицах.
	SkipLoyaltyTotal  *float64 `json:"skipLoyaltyTotal,omitempty"`  // Часть суммы счета, на которую не начисляется кешбэк и на которую не распространяется скидка (в денежных единицах).
	UnredeemableTotal *float64 `json:"unredeemableTotal,omitempty"` // Часть суммы счета, которую нельзя погасить баллами.
	Points            *float64 `json:"points,omitempty"`            // Количество бонусных баллов, которое клиент хочет списать. По умолчанию максимально доступное число баллов.
}

func (*CalcOperationReceipt) SetPoints

func (r *CalcOperationReceipt) SetPoints(value float64) *CalcOperationReceipt

func (*CalcOperationReceipt) SetSkipLoyaltyTotal

func (r *CalcOperationReceipt) SetSkipLoyaltyTotal(value float64) *CalcOperationReceipt

func (*CalcOperationReceipt) SetUnredeemableTotal

func (r *CalcOperationReceipt) SetUnredeemableTotal(value float64) *CalcOperationReceipt

type CalcOperationRequest

type CalcOperationRequest struct {
	Code        *string              `json:"code,omitempty"`        // Код на оплату.
	Participant *ParticipantShort    `json:"participant,omitempty"` // Информация о клиенте.
	Receipt     CalcOperationReceipt `json:"receipt"`
}

CalcOperationRequest Объект запроса на расчёт информации по операции

func (*CalcOperationRequest) SetCode

type CalcOperationResponse

type CalcOperationResponse struct {
	User     CustomerShortInfo `json:"user"`     // Информация о клиенте.
	Purchase PurchaseDetail    `json:"purchase"` // Информация об операции.
}

CalcOperationResponse Объект ответа на запрос по расчёту информации по операции

type Cashier

type Cashier struct {
	Id          int64  `json:"id"`
	DisplayName string `json:"displayName"`
}

Cashier Информация о сотруднике.

type CashierExternal

type CashierExternal struct {
	ExternalId string  `json:"externalId"`     // Внешний идентификатор сотрудника.
	Name       *string `json:"name,omitempty"` // Имя сотрудника.
}

CashierExternal Информация о сотруднике.

type Client

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

Client Структура клиента UDS

func NewClient

func NewClient(clientID, apiKey string) *Client

func (*Client) CustomerFindByCode

func (u *Client) CustomerFindByCode(code string, params *FindCustomerParams) (*FindCustomerResponse, *resty.Response, error)

CustomerFindByCode Поиск клиента по коду из приложения params может быть nil https://docs.uds.app/#tag/Customers/paths/~1customers~1find/get

func (*Client) CustomerFindByPhone

func (u *Client) CustomerFindByPhone(phone string, params *FindCustomerParams) (*FindCustomerResponse, *resty.Response, error)

CustomerFindByPhone Поиск клиента по номеру телефона в формате +79998887766 params может быть nil https://docs.uds.app/#tag/Customers/paths/~1customers~1find/get

func (*Client) CustomerFindByUID

func (u *Client) CustomerFindByUID(uid string, params *FindCustomerParams) (*FindCustomerResponse, *resty.Response, error)

CustomerFindByUID Поиск клиента по uid params может быть nil https://docs.uds.app/#tag/Customers/paths/~1customers~1find/get

func (*Client) CustomerGetByID

func (u *Client) CustomerGetByID(id int64) (*CustomerDetail, *resty.Response, error)

CustomerGetByID Получение информации о клиенте по ID https://docs.uds.app/#tag/Customers/paths/~1customers~1{id}/get

func (*Client) CustomerGetList

func (u *Client) CustomerGetList(maxValue int, offset int) (*List[Customer], *resty.Response, error)

CustomerGetList Получить список клиентов https://docs.uds.app/#tag/Customers/paths/~1customers/get

func (*Client) CustomerGetTags

func (u *Client) CustomerGetTags(id int64) (*CustomerTagList, *resty.Response, error)

CustomerGetTags Получение списка тегов клиента https://docs.uds.app/#tag/Customers/paths/~1customers~1{id}~1tags/get

func (*Client) CustomerSetTags

func (u *Client) CustomerSetTags(id int64, tagsReq SetCustomerTagsRequest) (*List[TagModel], *resty.Response, error)

CustomerSetTags Установка тегов клиенту https://docs.uds.app/#tag/Customers/paths/~1customers~1{id}~1tags/get

func (*Client) GoodsOrderAddItems

func (u *Client) GoodsOrderAddItems(id int64, updatedOrder *UpdateGoodsOrderRequest[GoodsOrderItemNew]) (*GoodsOrderDetailed, *resty.Response, error)

GoodsOrderAddItems Добавить товары в заказ https://docs.uds.app/#tag/Goods-Order/paths/~1goods-orders~1{id}/put

func (*Client) GoodsOrderComplete

func (u *Client) GoodsOrderComplete(id int64) (*CompleteGoodsOrder, *resty.Response, error)

GoodsOrderComplete Завершает заказ товара с идентификатором и создает транзакцию https://docs.uds.app/#tag/Goods-Order/paths/~1goods-orders~1{id}~1complete/post

func (*Client) GoodsOrderGenerateCode

func (u *Client) GoodsOrderGenerateCode(id int64) (string, *resty.Response, error)

GoodsOrderGenerateCode Сгенерировать код для завершения заказа товара с идентификатором https://docs.uds.app/#tag/Goods-Order/paths/~1goods-orders~1{id}~1code/post

func (*Client) GoodsOrderGetByID

func (u *Client) GoodsOrderGetByID(id int64) (*GoodsOrderDetailed, *resty.Response, error)

GoodsOrderGetByID Подробная информация о заказе https://docs.uds.app/#tag/Goods-Order/paths/~1goods-orders~1{id}/get

func (*Client) GoodsOrderUpdateItems

func (u *Client) GoodsOrderUpdateItems(id int64, updatedOrder *UpdateGoodsOrderRequest[GoodsOrderItemUpdate]) (*GoodsOrderDetailed, *resty.Response, error)

GoodsOrderUpdateItems Изменить товары заказа https://docs.uds.app/#tag/Goods-Order/paths/~1goods-orders~1{id}/put

func (*Client) OperationCalc

func (u *Client) OperationCalc(operation *CalcOperationRequest) (*CalcOperationResponse, *resty.Response, error)

OperationCalc Рассчитать информацию по операции https://docs.uds.app/#tag/Operations/paths/~1operations~1calc/post

func (*Client) OperationCreate

func (u *Client) OperationCreate(operation *CreateOperationRequest) (*CreateOperationResponse, *resty.Response, error)

OperationCreate Проведение операции https://docs.uds.app/#tag/Operations/paths/~1operations/post

func (*Client) OperationGetByID

func (u *Client) OperationGetByID(id int64) (*Operation, *resty.Response, error)

OperationGetByID Получение информации об операции https://docs.uds.app/#tag/Operations/paths/~1operations~1{id}/get

func (*Client) OperationGetList

func (u *Client) OperationGetList(maxValue int, cursor string) (*OperationList, *resty.Response, error)

OperationGetList Получить Список операций https://docs.uds.app/#tag/Operations/paths/~1operations/get

func (*Client) OperationRefund

func (u *Client) OperationRefund(id int64, partialAmount float64) (*Operation, *resty.Response, error)

OperationRefund Операция возврата https://docs.uds.app/#tag/Operations/paths/~1operations~1{id}~1refund/post

func (*Client) OperationReward

func (u *Client) OperationReward(operation RewardOperationRequest) (*RewardOperationResponse, *resty.Response, error)

OperationReward Начисление бонусов клиенту (подарок) https://docs.uds.app/#tag/Operations/paths/~1operations~1reward/post

func (*Client) SettingsGet

func (u *Client) SettingsGet() (*Settings, *resty.Response, error)

SettingsGet Получение настроек компании https://docs.uds.app/#tag/Settings/paths/~1settings/get

type CompleteGoodsOrder

type CompleteGoodsOrder struct {
	Transaction struct {
		Id int64 `json:"id"` // ID операции.
	} `json:"transaction"`
	Order GoodsOrderDetailed `json:"order"` // Информация о заказе.
}

CompleteGoodsOrder Объект ответа на запрос о завершении заказа

type CreateOperationRequest

type CreateOperationRequest struct {
	Code        *string           `json:"code,omitempty"`        // Код на оплату.
	Participant *ParticipantShort `json:"participant,omitempty"` // Информация о клиенте.
	Nonce       string            `json:"nonce,omitempty"`       // Уникальный идентификатор операции (UUID).
	Cashier     *CashierExternal  `json:"cashier,omitempty"`     // Информация о сотруднике.
	Receipt     Receipt           `json:"receipt"`               // Информация о чеке.
	Tags        []int64           `json:"tags,omitempty"`        // Список id тегов компании, назначаемых клиенту при проведении операции. Передача null означает, что существующее значение не будет изменено
}

CreateOperationRequest Объект запроса на создание операции

func (*CreateOperationRequest) SetCode

type CreateOperationResponse

type CreateOperationResponse struct {
	Id            int64             `json:"id"`            // ID операции в базе UDS.
	DateCreated   time.Time         `json:"dateCreated"`   // Дата операции.
	Action        string            `json:"action"`        // Тип операции.
	State         ActionState       `json:"state"`         // Статус операции.
	Customer      CustomerShortInfo `json:"customer"`      // Информация о клиенте.
	Cashier       Cashier           `json:"cashier"`       // Информация о сотруднике.
	Branch        BranchInfo        `json:"branch"`        // Информация о филиале.
	Points        float64           `json:"points"`        // Количество бонусных баллов, которое будет списано с клиента после завершения операции. Отрицательное значение говорит о списании, а положительное - о начислении бонусных баллов.
	ReceiptNumber string            `json:"receiptNumber"` // Номер чека.
	Origin        Origin            `json:"origin"`        // Для сторнирующей операции - ссылка на оригинальную операцию.
	Total         float64           `json:"total"`         // Общая сумма чека до применения скидок в денежных единицах.
	Cash          float64           `json:"cash"`          // Оплачиваемая сумма в денежных единицах.
}

CreateOperationResponse Объект ответа на создание операции

type Customer

type Customer struct {
	Uid         string      `json:"uid"`         // Идентификатор клиента в UDS (UID).
	Avatar      string      `json:"avatar"`      // URL изображения клиента.
	DisplayName string      `json:"displayName"` // Имя клиента.
	Gender      Gender      `json:"gender"`      // Пол.
	Phone       string      `json:"phone"`       // Номер телефона клиента.
	BirthDate   string      `json:"birthDate"`   // Дата рождения клиента.
	Participant Participant `json:"participant"` // Информация о клиенте.
	ChannelName string      `json:"channelName"` // Источник трафика.
	Email       string      `json:"email"`       // Email клиента.
}

Customer Объект с данными клиента

type CustomerDetail

type CustomerDetail struct {
	Customer
	Tags []TagModel `json:"tags"` // Список тегов клиента.
}

CustomerDetail Детальный объект с данными клиента

type CustomerShortInfo

type CustomerShortInfo struct {
	Id             int64          `json:"id"`             // ID клиента в компании
	DisplayName    string         `json:"displayName"`    // Имя и фамилия клиента.
	Uid            string         `json:"uid"`            // Идентификатор клиента в UDS (UID).
	MembershipTier MembershipTier `json:"membershipTier"` // Настройки статусов клиентов.
}

CustomerShortInfo Минимальная информация о клиенте.

type CustomerTagList

type CustomerTagList struct {
	Rows  []TagModel `json:"rows"`  // Список тегов.
	Total int        `json:"total"` // Количество тегов.
}

CustomerTagList Список тегов клиента

type Delivery

type Delivery struct {
	ReceiverName  string       `json:"receiverName"`  // Имя клиента, который заберет заказа.
	ReceiverPhone string       `json:"receiverPhone"` // Номер телефона клиента, который заберет заказ.
	UserComment   string       `json:"userComment"`   // Комментарий клиента к заказу
	Branch        BranchInfo   `json:"branch"`        // Информация о филиале.
	Type          DeliveryType `json:"type"`          // Способ получения заказа.
}

Delivery Способ получения заказа.

type DeliveryCase

type DeliveryCase struct {
	Name  string  `json:"name"`  // Название доставки.
	Value float64 `json:"value"` // Стоимость доставки.
}

DeliveryCase Информация о доставке.

type DeliveryType

type DeliveryType string

DeliveryType Способ получения заказа.

const (
	DeliveryTypePickUp   DeliveryType = "PICKUP"
	DeliveryTypeDelivery DeliveryType = "DELIVERY"
)

type DiscountPolicy

type DiscountPolicy string
const (
	DiscountPolicyApplyDiscount DiscountPolicy = "APPLY_DISCOUNT" // понижать сумму счета (скидка)
	DiscountPolicyChargeScores  DiscountPolicy = "CHARGE_SCORES"  // начислять бонусные баллы (кешбэк)
)

type ErrorCode

type ErrorCode string
const (
	// ErrNotFound
	// Пользователь с данным кодом на оплату или идентификатором не найден.
	// В основном, возникает при неверно введенном коде клиента или время жизни кода истекло.
	// Также возникает при запросе find по номеру телефона,
	// если такой номер в системе не зарегистрирован и по нему в компании ранее не было операций.
	ErrNotFound ErrorCode = "notFound"

	// ErrBadRequest
	// Возникли ошибки при проведении валидации.
	// Для получения подробной информации об ошибке обратитесь к полю errors.
	// Возникает при передаче некорректного запроса.
	ErrBadRequest ErrorCode = "badRequest"

	// ErrForbidden
	// Доступ запрещен, данный токен аутентификации не установлен или не имеет соответствующего разрешения.
	ErrForbidden ErrorCode = "forbidden"

	// ErrInvalidChecksum
	// Указанные значения в полях cash, points или total не соответствуют настройке.
	// Способ предоставления скидки в настройках программы лояльности в UDS Бизнес.
	// Должно быть в случае начисления бонусных баллов total= cash + points.
	// Например, total =100, cash = 50, points = 50.
	// Для предоставления скидки total = (cash + point) / (1 - процент скидки).
	// Например, total =100, cash = 50, points = 40 (для скидки в 10%).
	// Ошибки часто возникают при применении сторонних скидок, неверном округлении.
	// В случае печати ваучера ошибка может возникать из-за способа предоставления скидки не CHARGE_SCORES;
	// размер начисляемых бонусных баллов равен 0.0; поле total меньше или равноskipLoyaltyTotal.
	ErrInvalidChecksum ErrorCode = "invalidChecksum"

	// ErrInsufficientFunds
	// Значение в поле points превышает доступное количество бонусных баллов на счете клиента.
	// Ошибка в основном возникает при неверном округлении, округлять баллы можно только в меньшую сторону.
	ErrInsufficientFunds ErrorCode = "insufficientFunds"

	// ErrDiscountLimitExceed
	// Соотношение points / total больше, чем указано в настройках UDS.
	// Компания может установить максимальный процент от чека, на который допускается списать бонусы.
	// Посмотреть допустимый процент списания баллов можно в настройках UDS Бизнес в Программа лояльности
	// в графе Какой процент счета можно оплатить баллами.
	ErrDiscountLimitExceed ErrorCode = "discountLimitExceed"

	// ErrUnauthorized
	// Неверно указан ID компании или API Key.
	// Необходимо проверить актуальность API Key и ID компании
	// на странице Интеграция и корректность аутентификации Basic.
	ErrUnauthorized ErrorCode = "unauthorized"

	// ErrWithdrawNotPermitted
	// В запросе было указано значение в поле participant -> uid, при этом значение в поле points не равно 0.0.
	// Ошибка может возникать, если передавать вместе с параметром code в запросе на проведение
	// операции со списанием баллов параметров uid или phone.
	// Необходимо удалить параметры uid и phone в запросе и оставить только code.
	// Ошибка может также возникать при попытке списать бонусы по uid или номеру телефона
	// (если в компании такая возможность отсутствует).
	// Необходимо внести корректировку в сумму баллов и указать 0.0.
	ErrWithdrawNotPermitted ErrorCode = "withdrawNotPermitted"

	// ErrPurchaseByPhoneDisabled
	// Проведение операции по номеру телефона не разрешено настройками UDS.
	// Необходимо включить настройку оплаты по номеру телефона в настройках UDS Бизнес.
	ErrPurchaseByPhoneDisabled ErrorCode = "purchaseByPhoneDisabled"

	// ErrGoodsNodeIndexInvalid
	// Для создания категории указание идентификатора nodeId недопустимо.
	// Необходимо проверить актуальный ID категории, в которую создается товар или категория.
	ErrGoodsNodeIndexInvalid ErrorCode = "goods.nodeIndex.invalid"

	// ErrGoodsLimitIsReached
	// Превышен лимит количества товаров.
	// Лимит товаров можно проверить в разделе Товары и услуги в UDS Бизнес.
	ErrGoodsLimitIsReached ErrorCode = "goods.limitIsReached"

	// ErrParticipantIsBlocked
	// Клиент в данной компании заблокирован.
	ErrParticipantIsBlocked ErrorCode = "participantIsBlocked"
)

type FindCustomerParams

type FindCustomerParams struct {
	ExchangeCode      bool    // Если указан, то в ответе будет отправлен новый долгоживущий код на оплату
	Total             float64 // Общая сумма счета в денежных единицах
	SkipLoyaltyTotal  float64 // Часть суммы счета, на которую не начисляется кешбэк и на которую не распространяется скидка (в денежных единицах).
	UnredeemableTotal float64 // Часть суммы счета, которую нельзя погасить баллами.
}

type FindCustomerResponse

type FindCustomerResponse struct {
	User     CustomerDetail `json:"user"`     // Информация о клиенте.
	Code     string         `json:"code"`     // Новый долгоживущий код на оплату, если был запрошен параметр exchangeCode.
	Purchase PurchaseDetail `json:"purchase"` // Информация об операции.
}

FindCustomerResponse Объект ответа на запрос поиска клиента

type Gender

type Gender string
const (
	GenderMale         Gender = "MALE"          // Мужчина
	GenderFemale       Gender = "FEMALE"        // Женщина
	GenderNotSpecified Gender = "NOT_SPECIFIED" // Пол не установлен
)

type GoodOrderItem

type GoodOrderItem struct {
	Id          int              `json:"id"`          // ID товара в UDS.
	ExternalId  string           `json:"externalId"`  // Внешний идентификатор товара.
	Name        string           `json:"name"`        // Название товара
	VariantName string           `json:"variantName"` // Имя варианта товара, если тип этого товара VARYING_ITEM
	Sku         string           `json:"sku"`         // Артикул товара.
	Type        GoodsItemType    `json:"type"`        // Тип товара.
	Qty         float64          `json:"qty"`         // Количество.
	Price       float64          `json:"price"`       // Цена товара.
	Measurement GoodsMeasurement `json:"measurement"` // Единицы измерения товаров.
}

GoodOrderItem Информация о товаре в заказе.

type GoodsItemType

type GoodsItemType string

GoodsItemType Тип товара.

const (
	GoodsItemTypeItem        GoodsItemType = "ITEM"
	GoodsItemTypeVaryingItem GoodsItemType = "VARYING_ITEM"
)

type GoodsMeasurement

type GoodsMeasurement string

GoodsMeasurement Единицы измерения товаров.

const (
	GoodsMeasurementPiece      GoodsMeasurement = "PIECE"
	GoodsMeasurementCentimeter GoodsMeasurement = "CENTIMETRE"
	GoodsMeasurementMetre      GoodsMeasurement = "METRE"
	GoodsMeasurementMillilitre GoodsMeasurement = "MILLILITRE"
	GoodsMeasurementLitre      GoodsMeasurement = "LITRE"
	GoodsMeasurementGram       GoodsMeasurement = "GRAM"
	GoodsMeasurementKiloGram   GoodsMeasurement = "KILOGRAM"
)

type GoodsOrderDetailed

type GoodsOrderDetailed struct {
	Id                int               `json:"id"`                // ID заказа.
	DateCreated       time.Time         `json:"dateCreated"`       // Дата заказа.
	Comment           string            `json:"comment"`           // Комментарий к заказу.
	State             GoodsOrderState   `json:"state"`             // Статус заказа.
	Cash              float64           `json:"cash"`              // Сумма, оплачиваемая деньгами.
	Points            float64           `json:"points"`            // Количество списываемых баллов.
	Total             float64           `json:"total"`             // Сумма заказа.
	CertificatePoints float64           `json:"certificatePoints"` // Количество списываемых баллов сертификата.
	Customer          CustomerShortInfo `json:"customer"`          // Информация о клиенте.
	Delivery          Delivery          `json:"delivery"`          // Способ получения заказа.
	OnlinePayment     OnlinePayment     `json:"onlinePayment"`     // Информация об онлайн-оплате.
	PaymentMethod     PaymentMethod     `json:"paymentMethod"`     // Информация об оплате.
	Items             []GoodOrderItem   `json:"items"`             // Информация о товарах.
	Purchase          PurchaseDetail    `json:"purchase"`          // Информация об операции.
}

GoodsOrderDetailed Структура заказа

type GoodsOrderItemNew

type GoodsOrderItemNew struct {
	ExternalId  string  `json:"externalId"`  // Внешний идентификатор товара.
	Name        string  `json:"name"`        // Название товара
	VariantName string  `json:"variantName"` // Имя варианта товара, если тип этого товара VARYING_ITEM
	QTY         int     `json:"qty"`         // Количество.
	Price       float64 `json:"price"`       // Цена товара.
	SkipLoyalty bool    `json:"skipLoyalty"` // Не применять бонусную программу к товару.
}

GoodsOrderItemNew Объект добавления нового товара в заказ

type GoodsOrderItemUpdate

type GoodsOrderItemUpdate struct {
	Id          int    `json:"id"`          // ID товара в UDS.
	VariantName string `json:"variantName"` // Имя варианта товара, если тип этого товара VARYING_ITEM
	Qty         int    `json:"qty"`         // Количество.
}

GoodsOrderItemUpdate Объект обновления товара

type GoodsOrderState

type GoodsOrderState string

GoodsOrderState Статус заказа.

const (
	GoodsOrderStateNew            GoodsOrderState = "NEW"
	GoodsOrderStateCompleted      GoodsOrderState = "COMPLETED"
	GoodsOrderStateDeleted        GoodsOrderState = "DELETED"
	GoodsOrderStateWaitingPayment GoodsOrderState = "WAITING_PAYMENT"
)

type List

type List[T any] struct {
	Rows []T `json:"rows"`
}

type LoyaltyProgramSettings

type LoyaltyProgramSettings struct {
	BaseMembershipTier    MembershipTier   `json:"baseMembershipTier,omitempty"`    // Настройки статусов клиентов.
	MembershipTiers       []MembershipTier `json:"membershipTiers,omitempty"`       // Настройки статусов.
	ReferralCashbackRates [3]float64       `json:"referralCashbackRates,omitempty"` // Коэффициенты начисления кешбэка для рефералов (3 уровня в %).
	CashierAward          float64          `json:"cashierAward,omitempty"`          // Процент вознаграждения кассиру за проведенную операцию.
	ReferralReward        float64          `json:"referralReward,omitempty"`        // Вознаграждение клиенту за эффективную рекомендацию.
	ReceiptLimit          float64          `json:"receiptLimit,omitempty"`          // Максимальная сумма операции, которую можно провести через UDS Кассир.
	DeferPointsForDays    int              `json:"deferPointsForDays,omitempty"`    // Количество дней, после которых будут начислены отложенные бонусные баллы.
	FirstPurchasePoints   float64          `json:"firstPurchasePoints,omitempty"`   // Number of points for the first purchase
}

LoyaltyProgramSettings Настройки бонусной программы компании.

type MembershipTier

type MembershipTier struct {
	Uid               string  `json:"uid,omitempty"`               // Идентификатор статуса.
	Name              string  `json:"name,omitempty"`              // Название статуса.
	Rate              float64 `json:"rate,omitempty"`              // Коэффициент статуса.
	MaxScoresDiscount float64 `json:"maxScoresDiscount,omitempty"` // Процент счета, который можно оплатить бонусными баллами.
	// Условия для автоматического назначения статуса.
	Conditions struct {
		// Повысить статус, когда сумма покупок достигнет данного значения.
		TotalCashSpent struct {
			// Сумма покупок.
			Target float64 `json:"target,omitempty"`
		} `json:"totalCashSpent,omitempty"`
		// Повысить уровень, когда клиент достигнет значения effectiveInvitedCount.
		EffectiveInvitedCount struct {
			// Количество эффективных рекомендаций.
			Target int `json:"target,omitempty"`
		} `json:"effectiveInvitedCount,omitempty"`
	} `json:"conditions,omitempty"`
}

MembershipTier Статус клиента

type OnlinePayment

type OnlinePayment struct {
	PaymentProvider PaymentProviderType `json:"paymentProvider"` // Тип платежной системы
	Id              string              `json:"id"`              // Идентификатор платежа во внешней платежной системе
	Completed       bool                `json:"completed"`       // Статус оплаты.
}

OnlinePayment Информация об онлайн-оплате.

type Operation

type Operation struct {
	Id            int64             `json:"id"`            // D операции в базе UDS.
	DateCreated   time.Time         `json:"dateCreated"`   // Дата операции.
	Action        string            `json:"action"`        // Тип операции.
	State         ActionState       `json:"state"`         // Статус операции.
	Customer      CustomerShortInfo `json:"customer"`      // Информация о клиенте.
	Cashier       Cashier           `json:"cashier"`       // Информация о сотруднике.
	Branch        BranchInfo        `json:"branch"`        // Информация о филиале.
	Points        float64           `json:"points"`        // Количество бонусных баллов, которое будет списано с клиента после завершения операции. Отрицательное значение говорит о списании, а положительное - о начислении бонусных баллов.
	ReceiptNumber string            `json:"receiptNumber"` // Номер чека.
	Origin        Origin            `json:"origin"`        // Для сторнирующей операции - ссылка на оригинальную операцию.
	Total         float64           `json:"total"`         // Общая сумма чека до применения скидок в денежных единицах.
	Cash          float64           `json:"cash"`          // Оплачиваемая сумма в денежных единицах.
}

Operation Информация об операции.

type OperationList

type OperationList struct {
	Rows   []Operation `json:"rows"`   // Информация об операциях.
	Cursor string      `json:"cursor"` // Используйте это значение для следующего запроса
}

OperationList Список операций

type Origin

type Origin struct {
	Id int64 `json:"id"` // Идентификатор исходной (оригинальной) операции.
}

Origin Для сторнирующей операции - ссылка на оригинальную операцию.

type Participant

type Participant struct {
	Id                  int64          `json:"id"`                  // ID клиента в компании.
	InviterId           int            `json:"inviterId"`           // ID клиента в компании, пригласившего данного клиента.
	Points              float64        `json:"points"`              // Баланс бонусных баллов клиента.
	DiscountRate        float64        `json:"discountRate"`        // Размер скидки (в процентах).
	CashbackRate        float64        `json:"cashbackRate"`        // Размер кешбэка (в процентах) для данного клиента UDS.
	MembershipTier      MembershipTier `json:"membershipTier"`      // Настройки статусов клиентов.
	DateCreated         time.Time      `json:"dateCreated"`         // Дата, когда клиент присоединился к компании
	LastTransactionTime time.Time      `json:"lastTransactionTime"` // Дата и время, когда клиент совершил последнюю транзакцию.
}

Participant Информация о клиенте.

type ParticipantShort

type ParticipantShort struct {
	Uid   *string `json:"uid,omitempty"`   // Идентификатор клиента в UDS (UID).
	Phone *string `json:"phone,omitempty"` // Номер телефона.
}

func (*ParticipantShort) SetPhone

func (p *ParticipantShort) SetPhone(phone string) *ParticipantShort

func (*ParticipantShort) SetUid

func (p *ParticipantShort) SetUid(uid string) *ParticipantShort

type PaymentMethod

type PaymentMethod struct {
	Type PaymentMethodType `json:"type"` // Тип оплаты.
	Name string            `json:"name"` // Название пользовательского метода оплаты с типом MANUAL
}

PaymentMethod Информация об оплате.

type PaymentMethodType

type PaymentMethodType string

PaymentMethodType Тип оплаты.

const (
	PaymentMethodBestToPay     PaymentMethodType = "BEST_TO_PAY"
	PaymentMethodCloudPayments PaymentMethodType = "CLOUD_PAYMENTS"
	PaymentMethodCash          PaymentMethodType = "CASH"
	PaymentMethodManual        PaymentMethodType = "MANUAL"
	PaymentMethodCustom        PaymentMethodType = "CUSTOM"
)

type PaymentProviderType

type PaymentProviderType string

PaymentProviderType Тип платежной системы

const (
	PaymentProviderB2P           PaymentProviderType = "B2P"
	PaymentProviderCloudPayments PaymentProviderType = "CLOUD_PAYMENTS"
	PaymentProviderCustom        PaymentProviderType = "CUSTOM"
)

type PurchaseDetail

type PurchaseDetail struct {
	MaxPoints          float64 `json:"maxPoints"`          // Максимальное количество бонусных баллов, доступное для списания.
	Total              float64 `json:"total"`              //  Общая сумма счета (в денежных единицах).
	SkipLoyaltyTotal   float64 `json:"skipLoyaltyTotal"`   // Часть суммы счета, на которую не начисляется кешбэк и на которую не распространяется скидка (в денежных единицах).
	UnredeemableTotal  float64 `json:"unredeemableTotal"`  // Часть суммы счета, которую нельзя погасить баллами.
	DiscountAmount     float64 `json:"discountAmount"`     // Размер скидки (в денежных единицах).
	DiscountPercent    float64 `json:"discountPercent"`    // Предоставленная скидка (в процентах).
	Points             float64 `json:"points"`             // Бонусных баллов к оплате.
	PointsPercent      float64 `json:"pointsPercent"`      // Размер скидки за счет бонусных баллов (в процентах).
	NetDiscount        float64 `json:"netDiscount"`        // Общий размер скидки (в денежных единицах).
	NetDiscountPercent float64 `json:"netDiscountPercent"` // Общий размер скидки (в процентах от общей суммы счета).
	CertificatePoints  float64 `json:"certificatePoints"`  // Количество списываемых бонусных баллов сертификата (в денежных единицах).
	Cash               float64 `json:"cash"`               // Сумма к оплате (в денежных единицах).
	CashTotal          float64 `json:"cashTotal"`          // Итоговая сумма к оплате с учетом доставки.
	CashBack           float64 `json:"cashBack"`           // Вознаграждение (кешбэк), которое получит клиент после проведения операции (в бонусных баллах).
	Extras             struct {
		Delivery float64 `json:"delivery"` // Стоимость доставки.
	} `json:"extras"` // Дополнительный платежи, на которые не распространяется программа лояльности.
	MaxScoresDiscount float64 `json:"maxScoresDiscount"` // Процент счета, который можно оплатить бонусными баллами.
}

PurchaseDetail Информация об операции.

type Receipt

type Receipt struct {
	Total             float64  `json:"total"`                       // Сумма счета в денежных единицах.
	Cash              float64  `json:"cash"`                        // Оплачиваемая сумма в денежных единицах.
	Points            float64  `json:"points"`                      // Оплачиваемая сумма в бонусных баллах.
	Number            *string  `json:"number,omitempty"`            // Номер чека.
	SkipLoyaltyTotal  *float64 `json:"skipLoyaltyTotal,omitempty"`  // Часть суммы счета, на которую не начисляется кешбэк и на которую не распространяется скидка (в денежных единицах).
	UnredeemableTotal *float64 `json:"unredeemableTotal,omitempty"` // Часть суммы счета, которую нельзя погасить баллами.
}

Receipt Информация о чеке.

type RefundOperationRequest

type RefundOperationRequest struct {
	PartialAmount float64 `json:"partialAmount"` // Сумма возврата.
}

RefundOperationRequest Объект запроса на возврат по операции

type RewardOperationRequest

type RewardOperationRequest struct {
	Points       float64 `json:"points"`            // Количество бонусных баллов. (Можем иметь отрицательное значение - списание)
	Comment      string  `json:"comment,omitempty"` // Текст комментария, который увидит пользователь.
	Participants []int64 `json:"participants"`      // Список ID клиентов в компании.
	Silent       bool    `json:"silent"`            // Не отправлять пуш-уведомление клиенту (default false).
}

RewardOperationRequest Объект запроса на начисление бонусов клиенту

type RewardOperationResponse

type RewardOperationResponse struct {
	Accepted int `json:"accepted"` // Количество пользователей, которым будут начислены бонусные баллы.
}

RewardOperationResponse Объект ответа на запрос на начисление бонусов клиенту

type SetCustomerTagsRequest

type SetCustomerTagsRequest struct {
	IDs []int64 `json:"ids"`
}

SetCustomerTagsRequest Объект запроса на установку тегов клиенту

type Settings

type Settings struct {
	Id                     int                    `json:"id,omitempty"`                     // Идентификатор компании в UDS.
	Name                   string                 `json:"name,omitempty"`                   // Название компании.
	PromoCode              string                 `json:"promoCode,omitempty"`              // Промокод компании для вступления.
	Currency               string                 `json:"currency,omitempty"`               // Валюта компании (стандарт ISO-4217).
	BaseDiscountPolicy     DiscountPolicy         `json:"baseDiscountPolicy,omitempty"`     // Определяет тип программы лояльности
	LoyaltyProgramSettings LoyaltyProgramSettings `json:"loyaltyProgramSettings,omitempty"` // Настройки бонусной программы компании.
	PurchaseByPhone        bool                   `json:"purchaseByPhone,omitempty"`        // Возможность проведения операции, используя номер телефона клиента.
	WriteInvoice           bool                   `json:"writeInvoice,omitempty"`           // Необходимо ли указывать номер счета при проведении оплаты через UDS Кассир.
	Slug                   string                 `json:"slug,omitempty"`                   // Доменное имя, которое отображается в ссылке на веб-страницу вашей компании.
}

Settings Настройки компании.

type TagModel

type TagModel struct {
	Id   int64  `json:"id"`   // Идентификатор тега.
	Name string `json:"name"` // Наименование тега.
}

TagModel Тег клиента

type UpdateGoodsOrderRequest

type UpdateGoodsOrderRequest[T GoodsOrderItemUpdate | GoodsOrderItemNew] struct {
	DeliveryCase DeliveryCase `json:"deliveryCase"` // Информация о доставке.
	Items        []T          `json:"items"`        // Информация о товарах.
}

UpdateGoodsOrderRequest Объект запроса на изменение заказа

Jump to

Keyboard shortcuts

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