Documentation
¶
Overview ¶
Package tinkoff allows to send token-signed requests to Tinkoff Acquiring API and parse incoming HTTP notifications
Index ¶
- Constants
- type BaseRequest
- type BaseResponse
- type CancelRequest
- type CancelResponse
- type Client
- func (c *Client) Cancel(request *CancelRequest) (*CancelResponse, error)
- func (c *Client) Confirm(request *ConfirmRequest) (*ConfirmResponse, error)
- func (c *Client) GetNotificationSuccessResponse() string
- func (c *Client) GetState(request *GetStateRequest) (*GetStateResponse, error)
- func (c *Client) Init(request *InitRequest) (*InitResponse, error)
- func (c *Client) ParseNotification(requestBody io.Reader) (*Notification, error)
- func (c *Client) PostRequest(url string, request RequestInterface) (*http.Response, error)
- func (c *Client) Resend() (*ResendResponse, error)
- func (c *Client) SetBaseURL(baseURL string)
- type ConfirmRequest
- type ConfirmResponse
- type GetStateRequest
- type GetStateResponse
- type InitRequest
- type InitResponse
- type Notification
- type Receipt
- type ReceiptItem
- type RequestInterface
- type ResendRequest
- type ResendResponse
- type Shop
- type Time
Constants ¶
View Source
const ( PayTypeOneStep = "O" PayTypeTwoSteps = "T" )
View Source
const ( TaxationOSN = "osn" // общая СН TaxationUSNIncome = "usn_income" // упрощенная СН (доходы) TaxationUSNIncomeOutcome = "usn_income_outcome" // упрощенная СН (доходы минус расходы) TaxationENVD = "envd" // единый налог на вмененный доход TaxationESN = "esn" // единый сельскохозяйственный налог TaxationPatent = "patent" // патентная СН )
View Source
const ( VATNone = "none" // без НДС VAT0 = "vat0" // НДС по ставке 0% VAT10 = "vat10" // НДС чека по ставке 10% VAT110 = "vat110" // НДС чека по расчетной ставке 10/110 // Deprecated: since 1 Jan 2019 vat18 will be replaced automatically to vat20 on the side of Tinkoff bank. Use VAT20 instead VAT18 = "vat18" // НДС чека по ставке 18% VAT20 = "vat20" // НДС чека по ставке 20% // Deprecated: since 1 Jan 2019 vat118 will be replaced automatically to vat120 on the side of Tinkoff bank. Use VAT120 instead VAT118 = "vat118" // НДС чека по расчетной ставке 18/118 VAT120 = "vat120" // НДС чека по расчетной ставке 20/120 )
View Source
const ( PaymentMethodFullPayment = "full_payment" // полный расчет PaymentMethodFullPrepayment = "full_prepayment" // предоплата 100% PaymentMethodPrepayment = "prepayment" // предоплата PaymentMethodAdvance = "advance" // аванс PaymentMethodPartialPayment = "partial_payment" // частичный расчет и кредит PaymentMethodCredit = "credit" // передача в кредит PaymentMethodCreditPayment = "credit_payment" // оплата кредита )
View Source
const ( PaymentObjectCommodity = "commodity" // товар PaymentObjectExcise = "excise" // подакцизный товар PaymentObjectJob = "job" // работа PaymentObjectService = "service" // услуга PaymentObjectGamblingBet = "gambling_bet" // ставка азартной игры PaymentObjectGamblingPrize = "gambling_prize" // выигрыш азартной игры PaymentObjectLottery = "lottery" // лотерейный билет PaymentObjectLotteryPrize = "lottery_prize" // выигрыш лотереи PaymentObjectIntellectualActivity = "intellectual_activity" // предоставление результатов интеллектуальной деятельности PaymentObjectPayment = "payment" // платеж PaymentObjectAgentCommission = "agent_commission" // агентское вознаграждение PaymentObjectComposite = "composite" // составной предмет расчета PaymentObjectAnother = "another" // иной предмет расчета )
View Source
const ( StatusNew = "NEW" // Создан StatusFormShowed = "FORMSHOWED" // Платежная форма открыта покупателем StatusDeadlineExpired = "DEADLINE_EXPIRED" // Просрочен StatusCanceled = "CANCELED" // Отменен StatusAuthorizing = "AUTHORIZING" // Резервируется StatusAuthorized = "AUTHORIZED" // Зарезервирован StatusAuthFail = "AUTH_FAIL" // Не прошел авторизацию StatusRejected = "REJECTED" // Отклонен Status3DSChecking = "3DS_CHECKING" // Проверяется по протоколу 3-D Secure Status3DSChecked = "3DS_CHECKED" // Проверен по протоколу 3-D Secure StatusReversing = "REVERSING" // Резервирование отменяется StatusReversed = "REVERSED" // Резервирование отменено StatusConfirming = "CONFIRMING" // Подтверждается StatusConfirmed = "CONFIRMED" // Подтвержден StatusRefunding = "REFUNDING" // Возвращается StatusPartialRefunded = "PARTIAL_REFUNDED" // Возвращен частично StatusRefunded = "REFUNDED" // Возвращен полностью )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BaseRequest ¶
func (*BaseRequest) SetTerminalKey ¶
func (r *BaseRequest) SetTerminalKey(key string)
func (*BaseRequest) SetToken ¶
func (r *BaseRequest) SetToken(token string)
type BaseResponse ¶
type BaseResponse struct { TerminalKey string `json:"TerminalKey"` // Идентификатор терминала, выдается Продавцу Банком Success bool `json:"Success"` // Успешность операции ErrorCode string `json:"ErrorCode"` // Код ошибки, «0» - если успешно ErrorMessage string `json:"Message,omitempty"` // Краткое описание ошибки ErrorDetails string `json:"Details,omitempty"` // Подробное описание ошибки }
func (*BaseResponse) Error ¶
func (e *BaseResponse) Error() error
type CancelRequest ¶
type CancelRequest struct { BaseRequest PaymentID string `json:"PaymentId"` // Идентификатор платежа в системе банка. По офф. документации это number(20), но фактически значение передается в виде строки ClientIP string `json:"IP,omitempty"` // IP-адрес покупателя Amount uint64 `json:"Amount,omitempty"` // Сумма возврата в копейках Receipt *Receipt `json:"Receipt,omitempty"` // Чек }
func (*CancelRequest) GetValuesForToken ¶
func (i *CancelRequest) GetValuesForToken() map[string]string
type CancelResponse ¶
type CancelResponse struct { BaseResponse OriginalAmount uint64 `json:"OriginalAmount"` // Сумма в копейках до операции отмены NewAmount uint64 `json:"NewAmount"` // Сумма в копейках после операции отмены OrderID string `json:"OrderId"` // Номер заказа в системе Продавца Status string `json:"Status"` // Статус транзакции PaymentID string `json:"PaymentId"` // Уникальный идентификатор транзакции в системе Банка }
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is the main entity which execute request against the Tinkoff Acquiring API endpoint
func (*Client) Cancel ¶
func (c *Client) Cancel(request *CancelRequest) (*CancelResponse, error)
func (*Client) Confirm ¶
func (c *Client) Confirm(request *ConfirmRequest) (*ConfirmResponse, error)
func (*Client) GetNotificationSuccessResponse ¶
func (*Client) GetState ¶
func (c *Client) GetState(request *GetStateRequest) (*GetStateResponse, error)
func (*Client) Init ¶
func (c *Client) Init(request *InitRequest) (*InitResponse, error)
func (*Client) ParseNotification ¶
func (c *Client) ParseNotification(requestBody io.Reader) (*Notification, error)
func (*Client) PostRequest ¶
PostRequest will automatically sign the request with token Use BaseRequest type to implement any API request
func (*Client) Resend ¶
func (c *Client) Resend() (*ResendResponse, error)
func (*Client) SetBaseURL ¶
SetBaseURL allows to change default API endpoint
type ConfirmRequest ¶
type ConfirmRequest struct { BaseRequest PaymentID string `json:"PaymentId"` // Идентификатор платежа в системе банка Amount uint64 `json:"Amount,omitempty"` // Сумма в копейках ClientIP string `json:"IP,omitempty"` // IP-адрес покупателя Receipt *Receipt `json:"Receipt,omitempty"` // Чек }
func (*ConfirmRequest) GetValuesForToken ¶
func (i *ConfirmRequest) GetValuesForToken() map[string]string
type ConfirmResponse ¶
type ConfirmResponse struct { BaseResponse OrderID string `json:"OrderId"` // Номер заказа в системе Продавца Status string `json:"Status"` // Статус транзакции PaymentID string `json:"PaymentId"` // Идентификатор платежа в системе банка. }
type GetStateRequest ¶
type GetStateRequest struct { BaseRequest PaymentID string `json:"PaymentId"` // Идентификатор платежа в системе банка. По офф. документации это number(20), но фактически значение передается в виде строки ClientIP string `json:"IP,omitempty"` // IP-адрес покупателя }
func (*GetStateRequest) GetValuesForToken ¶
func (i *GetStateRequest) GetValuesForToken() map[string]string
type GetStateResponse ¶
type GetStateResponse struct { BaseResponse OrderID string `json:"OrderId"` // Номер заказа в системе Продавца Status string `json:"Status"` // Статус платежа PaymentID string `json:"PaymentId"` // Уникальный идентификатор транзакции в системе Банка }
type InitRequest ¶
type InitRequest struct { BaseRequest Amount uint64 `json:"Amount,omitempty"` // Сумма в копейках OrderID string `json:"OrderId"` // Идентификатор заказа в системе продавца ClientIP string `json:"IP,omitempty"` // IP-адрес покупателя Description string `json:"Description,omitempty"` // Описание заказа Language string `json:"Language,omitempty"` // Язык платежной формы: ru или en Recurrent string `json:"Recurrent,omitempty"` // Y для регистрации автоплатежа. Можно использовать SetIsRecurrent(true) CustomerKey string `json:"CustomerKey,omitempty"` // Идентификатор покупателя в системе продавца. Передается вместе с параметром CardId. См. метод GetCardList Data map[string]string `json:"DATA"` // Дополнительные параметры платежа Receipt *Receipt `json:"Receipt,omitempty"` // Чек RedirectDueDate Time `json:"RedirectDueDate,omitempty"` // Срок жизни ссылки NotificationURL string `json:"NotificationURL,omitempty"` // Адрес для получения http нотификаций SuccessURL string `json:"SuccessURL,omitempty"` // Страница успеха FailURL string `json:"FailURL,omitempty"` // Страница ошибки PayType string `json:"PayType,omitempty"` // Тип оплаты. см. PayType* Shops *[]Shop `json:"Shops,omitempty"` // Объект с данными партнера }
func (*InitRequest) GetValuesForToken ¶
func (i *InitRequest) GetValuesForToken() map[string]string
func (*InitRequest) SetIsRecurrent ¶
func (i *InitRequest) SetIsRecurrent(r bool)
type InitResponse ¶
type InitResponse struct { BaseResponse Amount uint64 `json:"Amount"` // Сумма в копейках OrderID string `json:"OrderId"` // Номер заказа в системе Продавца Status string `json:"Status"` // Статус транзакции PaymentID string `json:"PaymentId"` // Уникальный идентификатор транзакции в системе Банка. По офф. документации это number(20), но фактически значение передается в виде строки. PaymentURL string `json:"PaymentURL,omitempty"` // Ссылка на страницу оплаты. По умолчанию ссылка доступна в течении 24 часов. }
type Notification ¶
type Notification struct { TerminalKey string `json:"TerminalKey"` // Идентификатор магазина OrderID string `json:"OrderId"` // Номер заказа в системе Продавца Success bool `json:"Success"` // Успешность операции Status string `json:"Status"` // Статус платежа (см. описание статусов операций) PaymentID uint64 `json:"PaymentId"` // Уникальный идентификатор платежа. В случае нотификаций банк присылает число, а не строку, как в случае с Init или Cancel ErrorCode string `json:"ErrorCode"` // Код ошибки, если произошла ошибка Amount uint64 `json:"Amount"` // Текущая сумма транзакции в копейках RebillID string `json:"RebillId"` // Идентификатор рекуррентного платежа CardID uint64 `json:"CardId"` // Идентификатор привязанной карты PAN string `json:"Pan"` // Маскированный номер карты DataStr string `json:"DATA"` Data map[string]string `json:"-"` // Дополнительные параметры платежа, переданные при создании заказа Token string `json:"Token"` // Подпись запроса ExpirationDate string `json:"ExpDate"` // Срок действия карты }
func (*Notification) GetValuesForToken ¶
func (n *Notification) GetValuesForToken() map[string]string
type Receipt ¶
type Receipt struct { Email string `json:"Email,omitempty"` // Электронная почта покупателя Phone string `json:"Phone,omitempty"` // Контактный телефон покупателя EmailCompany string `json:"EmailCompany,omitempty"` // Электронная почта продавца Taxation string `json:"Taxation"` // Система налогооблажения. см. константы Taxation* Items []*ReceiptItem `json:"Items"` }
type ReceiptItem ¶
type ReceiptItem struct { Name string `json:"Name"` // Наименование товара Quantity string `json:"Quantity"` // Количество или вес товара Amount uint64 `json:"Amount"` // Стоимость товара в копейках Price uint64 `json:"Price"` // Цена товара в копейках PaymentMethod string `json:"PaymentMethod,omitempty"` // Признак способа расчета. см. PaymentMethod* PaymentObject string `json:"PaymentObject,omitempty"` // Признак предмета расчета. см. PaymentObject* Tax string `json:"Tax"` // Ставка налога. см. константы VAT* Ean13 string `json:"Ean13,omitempty"` // Ean13 ShopCode string `json:"ShopCode,omitempty"` // Код магазина }
type RequestInterface ¶
type ResendRequest ¶
type ResendRequest struct {
BaseRequest
}
func (*ResendRequest) GetValuesForToken ¶
func (r *ResendRequest) GetValuesForToken() map[string]string
type ResendResponse ¶
type ResendResponse struct { BaseResponse Count int `json:"Count"` // Количество сообщений, отправляемых повторно }
type Shop ¶ added in v1.0.5
type Shop struct { ShopCode string `json:"ShopCode,omitempty"` // Код магазина. Для параметра ShopСode необходимо использовать значение параметра Submerchant_ID, полученного при регистрации через xml. Amount uint64 `json:"Amount,omitempty"` // Суммаперечисленияв копейкахпо реквизитам ShopCode за вычетом Fee Name string `json:"Name,omitempty"` // Наименованиепозиции Fee string `json:"Fee,omitempty"` // Часть суммы Операции оплаты или % от суммы Операции оплаты. Fee удерживается из возмещения третьего лица (ShopCode) в пользу Предприятия по операциям оплаты. }
Click to show internal directories.
Click to hide internal directories.