cloudpayments

package module
v0.0.0-...-3439fb3 Latest Latest
Warning

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

Go to latest
Published: Jan 23, 2025 License: MIT Imports: 11 Imported by: 0

README

CloudPayments Go Client

Go Reference License

Go-клиент для работы с API CloudPayments. Этот пакет предоставляет удобный интерфейс для взаимодействия с платежной системой CloudPayments, включая оплату по криптограмме, токену, управление подписками, возвраты и другие операции.

Оглавление

Установка

Для установки пакета используйте команду:

go get github.com/BlaisePopov/cloudpayments

Использование

Инициализация клиента

Для начала работы с API CloudPayments необходимо создать клиент, передав в него конфигурацию:

import (
    "github.com/BlaisePopov/cloudpayments"
    "time"
)

config := &cloudpayments.Config{
    PublicId:  "your_public_id",
    ApiSecret: "your_api_secret",
    Timeout:   30 * time.Second,
}

client := cloudpayments.NewClient(config)

Пример оплаты по криптограмме

request := &cloudpayments.CryptogramPaymentRequest{
    Amount:              100.0,
    Currency:            "RUB",
    IpAddress:           "123.123.123.123",
    CardCryptogramPacket: "your_cryptogram_packet",
    InvoiceId:           "12345",
    Description:         "Оплата заказа",
}

response, err := client.ChargeCryptogramPayment(request)
if err != nil {
    log.Fatalf("Ошибка при оплате: %v", err)
}

log.Printf("Ответ от API: %+v", response)

Пример получения информации о платеже

request := &cloudpayments.GetPaymentRequest{
    TransactionId: 123456,
}

response, err := client.Payment(request)
if err != nil {
    log.Fatalf("Ошибка при получении информации о платеже: %v", err)
}

log.Printf("Информация о платеже: %+v", response)

Поддерживаемые методы

Методы для работы с платежами

  • ChargeCryptogramPayment — оплата по криптограмме.
  • AuthorizeCryptogramPayment — двухстадийная оплата по криптограмме.
  • ChargeTokenPayment — оплата по токену.
  • AuthorizeTokenPayment — двухстадийная оплата по токену.
  • Confirm3DSPayment — подтверждение 3DS оплаты.
  • ConfirmPayment — подтверждение оплаты.
  • RefundPayment — возврат средств.
  • VoidPayment — отмена оплаты.
  • Payment — получение информации о платеже.
  • FindPaymentByInvoiceID — поиск платежа по идентификатору счета.
  • PaymentsList — получение списка транзакций за день.
  • PaymentsListV2 — получение списка транзакций за произвольный период.

Методы для работы с ордерами

  • CreateOrder — создание заказа для отправки по email.
  • CancelOrder — отмена заказа.

Методы для работы с выплатами (Charge)

  • ChargeCryptogramPayout — выплата по криптограмме.
  • ChargeTokenPayout — выплата по токену.

Методы для работы с подписками

  • CreateSubscription — создание подписки.
  • UpdateSubscription — обновление подписки.
  • CancelSubscription — отмена подписки.
  • GetSubscription — получение информации о подписке.
  • GetSubscriptionsList — получение списка подписок.

Методы для работы с токенами

  • TokensList — получение списка токенов.

Методы для работы с уведомлениями

  • GetNotificationSettings — получение настроек уведомлений для указанного типа.
  • UpdateNotificationSettings — обновление настроек уведомлений для указанного типа.

Методы для работы с Apple Pay

  • StartApplePaySession — запуск сессии для оплаты через Apple Pay.

Утилиты для проверки уведомлений

  • IsTrustedIP — проверка, что IP-адрес находится в списке доверенных диапазонов.
  • VerifyHMAC — проверка подлинности и целостности уведомления с использованием HMAC.

Дополнительные методы

  • Ping — проверка доступности API.

Лицензия

Этот проект распространяется под лицензией MIT. Подробнее см. в файле LICENSE.


Documentation

Index

Constants

View Source
const (
	ReferToCardIssuer             = 5001 // Отказ эмитента проводить онлайн-операцию. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	InvalidMerchant               = 5003 // Отказ эмитента проводить онлайн-операцию. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	PickUpCard                    = 5004 // Карта потеряна. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	DoNotHonor                    = 5005 // Отказ эмитента без объяснения причин.
	Error                         = 5006 // Отказ сети проводить операцию или неправильный CVV-код. Проверьте правильность введенных данных карты или воспользуйтесь другой картой.
	PickUpCardSpecialConditions   = 5007 // Карта потеряна. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	InvalidTransaction            = 5012 // Карта не предназначена для онлайн-платежей. Воспользуйтесь другой картой или свяжитесь с банком, выпустившим карту.
	AmountError                   = 5013 // Слишком маленькая или слишком большая сумма операции. Проверьте корректность суммы.
	InvalidCardNumber             = 5014 // Некорректный номер карты. Проверьте правильность введенных данных карты или воспользуйтесь другой картой.
	NoSuchIssuer                  = 5015 // Эмитент не найден. Проверьте правильность введенных данных карты или воспользуйтесь другой картой.
	CustomerCancellation          = 5017 // Отказ по желанию держателя карты. Воспользуйтесь другой картой.
	TransactionError              = 5019 // Отказ эмитента без объяснения причин.
	FormatError                   = 5030 // Ошибка на стороне эквайера — неверно сформирована транзакция. Повторите попытку позже.
	BankNotSupportedBySwitch      = 5031 // Неизвестный эмитент карты. Воспользуйтесь другой картой.
	ExpiredCardPickup             = 5033 // Истек срок утери карты. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	SuspectedFraud                = 5034 // Отказ эмитента — подозрение на мошенничество. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	RestrictedCard                = 5036 // Карта не предназначена для платежей. Платежи для этой карты запрещены. Попробуйте другую карту.
	LostCard                      = 5041 // Карта потеряна. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	StolenCard                    = 5043 // Карта украдена. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	InsufficientFunds             = 5051 // Недостаточно средств. Недостаточно средств на карте.
	ExpiredCard                   = 5054 // Карта просрочена или неверно указан срок действия. Проверьте правильность введенных данных карты или воспользуйтесь другой картой.
	InvalidPIN                    = 5055 // Неверный PIN-код. Воспользуйтесь другой картой.
	TransactionNotPermitted       = 5057 // Ограничение на карте.
	TransactionNotPermittedToCard = 5058 // Транзакция не разрешена по карте. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	SuspectedFraudDecline         = 5059 // Транзакция была отклонена банком по подозрению в мошенничестве. Свяжитесь с банком или воспользуйтесь другой картой.
	ExceedsApprovalAmount         = 5061 // Превышена сумма по карте. Превышение лимита оплаты по карте. Измените настройки лимита или оплатите другой картой.
	RestrictedCard2               = 5062 // Карта не предназначена для платежей. Платежи для этой карты запрещены. Попробуйте другую карту.
	SecurityViolation             = 5063 // Карта заблокирована из-за нарушений безопасности. Воспользуйтесь другой картой.
	ExceedWithdrawalFrequency     = 5065 // Превышен лимит операций по карте. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	IncorrectCVV                  = 5082 // Неверный CVV-код. Неверно указан код CVV.
	Timeout                       = 5091 // Эмитент недоступен. Повторите попытку позже или воспользуйтесь другой картой.
	CannotReachNetwork            = 5092 // Эмитент недоступен. Повторите попытку позже или воспользуйтесь другой картой.
	SystemError                   = 5096 // Ошибка банка-эквайера или сети. Повторите попытку позже.
	GatewaysDoNotSupportCard      = 5113 // Шлюз не поддерживает эмитента неРФ. Воспользуйтесь другой картой.
	UnableToProcess               = 5204 // Операция не может быть обработана по прочим причинам. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	AuthenticationFailed          = 5206 // 3-D Secure авторизация не пройдена. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	AuthenticationUnavailable     = 5207 // 3-D Secure авторизация недоступна. Свяжитесь с вашим банком или воспользуйтесь другой картой.
	AntiFraud                     = 5300 // Лимиты эквайера на проведение операций. Воспользуйтесь другой картой.
	NoPhone                       = 5761 // Отсутствует номер телефона. Воспользуйтесь другой картой.
	InvalidPhone                  = 5762 // Некорректный номер телефона. Воспользуйтесь другой картой.
	DifferentPhones               = 5763 // Номер телефона в запросе отличается. Воспользуйтесь другой картой.
	SaveCardRefused               = 6001 // Отказ в привязке счета. Невозможно провести оплату.
	InvalidErrorCode              = 6002 // Некорректное значение code. Невозможно провести оплату.
	AgentIdNotExists              = 6003 // Значение agentId отсутствует в ОПКЦ СБП. Невозможно провести оплату.
	CurrencyNotValid              = 6004 // Невозможно провести операцию с валютой {currency}. Обратитесь в поддержку сайта.
	InvalidPaymentLink            = 6005 // Неверные данные платежной ссылки. Невозможно провести оплату.
	AmountCurrencyNotValid        = 6006 // amount и currency должны одновременно присутствовать или одновременно отсутствовать при qrcType = 01. Невозможно провести оплату.
	InvalidRedirectUrl            = 6007 // Некорректный формат redirectUrl. Невозможно провести оплату.
	InvalidParamsId               = 6008 // Неверные данные paramsId. Невозможно провести оплату.
	InvalidTtl                    = 6009 // Период использования динамической Платежной ссылки СБП в поле qrTtl выходит за допустимый диапазон. Невозможно провести оплату.
	SubscriptionNotFound          = 6010 // Привязка счета не найдена. Невозможно провести оплату.
	InvalidSubscription           = 6011 // Неверные данные привязки счета. Невозможно провести оплату.
	InvalidRefund                 = 6013 // Дублирование идентификатора запроса, назначаемого ТСП или Агентом ТСП, - agentRefundRequestId. Невозможно провести оплату.
	OriginalDetailsIncorrect      = 6014 // Параметры запроса отличаются от параметров исходной Операции СБП C2B. Невозможно провести оплату.
	TransactionNotFound           = 6015 // Запрашиваемая транзакция не найдена. Невозможно провести оплату.
	InvalidMemberId               = 6016 // Значение memberId отсутствует в ОПКЦ СБП. Невозможно провести оплату.
	IncorrectMCCategory           = 6017 // Выполнение операций в данной категории ТСП запрещено. Невозможно провести оплату.
	CrossTermi                    = 6025 // Неполный код. Требуется уточнение.
)
View Source
const (
	CheckInvalidInvoiceId = 3001 // Обработчик уведомления вернул {"code":10}
	CheckInvalidAccountId = 3002 // Обработчик уведомления вернул {"code":11}
	CheckInvalidAmount    = 3003 // Обработчик уведомления вернул {"code":12}
	CheckOutOfDate        = 3004 // Обработчик уведомления вернул {"code":20}
	CheckFormatError      = 3005 // Обработчик уведомления вернул код, отличный от ожидаемого
	CheckUnavailable      = 3006 // Сервис недоступен
	CheckUnableToConnect  = 3007 // Обработчик не отвечает (404, 504, 508 и т.д.)
	CheckNotAccepted      = 3008 // Обработчик уведомления вернул {"code":13}
)

Коды обработки ответов на check уведомление

View Source
const (
	SUCCESS            = 0  // Платеж может быть проведен
	UNKNOWN_INVOICE_ID = 10 // Неверный номер заказа
	INVALID_ACCOUNT_ID = 11 // Некорректный AccountId
	INVALID_AMOUNT     = 12 // Неверная сумма
	REJECTED           = 13 // Платеж не может быть принят
	EXPIRED            = 20 // Платеж просрочен
)
View Source
const (
	DefaultRequestTimeout = 30 * time.Second
)

Variables

View Source
var (
	// ErrInvalidResponse возвращается, когда ответ от API не может быть разобран.
	ErrInvalidResponse = errors.New("invalid response from API")
)
View Source
var NotificationIPRanges = []string{
	"185.98.81.0/28",
	"87.251.91.160/27",
	"46.46.175.96/27",
	"46.46.168.160/27",
	"162.55.174.97/32",
	"91.216.178.243/32",
}

NotificationIPRanges содержит список IP-адресов, с которых CloudPayments отправляет уведомления.

Functions

func IsTrustedIP

func IsTrustedIP(ip string) bool

IsTrustedIP проверяет, что IP-адрес находится в списке доверенных диапазонов. Входные параметры: ip - IP-адрес. Возвращаемое значение: true, если IP-адрес доверенный, иначе false.

func VerifyHMAC

func VerifyHMAC(body []byte, contentHMAC, apiSecret string) error

VerifyHMAC проверяет подлинность и целостность уведомления с использованием HMAC. [https://developers.cloudpayments.ru/#proverka-uvedomleniy] Входные параметры:

  • body: тело запроса (для POST) или строка параметров (для GET).
  • contentHMAC: значение заголовка Content-HMAC, генерируется из URL encoded параметров.
  • apiSecret: секретный ключ API.

Возвращаемое значение: ошибка, если проверка не прошла.

Types

type ApplePaySession

type ApplePaySession struct {
	EpochTimestamp            int64  `json:"epochTimestamp"`
	ExpiresAt                 int64  `json:"expiresAt"`
	MerchantSessionIdentifier string `json:"merchantSessionIdentifier"`
	Nonce                     string `json:"nonce"`
	MerchantIdentifier        string `json:"merchantIdentifier"`
	DomainName                string `json:"domainName"`
	DisplayName               string `json:"displayName"`
	Signature                 string `json:"signature"`
}

ApplePaySession содержит данные сессии Apple Pay.

type ApplePaySessionResponse

type ApplePaySessionResponse struct {
	Success bool            `json:"Success"`
	Message string          `json:"Message"`
	Model   ApplePaySession `json:"Model"`
}

ApplePaySessionResponse представляет ответ с данными сессии Apple Pay.

type BaseResponse

type BaseResponse struct {
	Success bool   `json:"Success"`
	Message string `json:"Message"`
}

BaseResponse представляет базовый ответ от API.

type CancelNotification

type CancelNotification struct {
	TransactionId int64   `json:"TransactionId"`
	Amount        float64 `json:"Amount"`
	DateTime      string  `json:"DateTime"` // Формат: yyyy-MM-dd HH:mm:ss
	InvoiceId     string  `json:"InvoiceId,omitempty"`
	AccountId     string  `json:"AccountId,omitempty"`
	Email         string  `json:"Email,omitempty"`
	Data          string  `json:"Data,omitempty"` // JSON-строка
	Rrn           string  `json:"Rrn,omitempty"`
}

CancelNotification представляет уведомление типа Cancel. [https://developers.cloudpayments.ru/#cancel]

type CancelOrderRequest

type CancelOrderRequest struct {
	Id        string  `json:"Id"`
	RequestID *string `json:"-"`
}

CancelOrderRequest представляет запрос на отмену заказа.

type CheckNotification

type CheckNotification struct {
	TransactionId     int64   `json:"TransactionId"`
	Amount            float64 `json:"Amount"`
	Currency          string  `json:"Currency"`
	PaymentAmount     string  `json:"PaymentAmount"`
	PaymentCurrency   string  `json:"PaymentCurrency"`
	DateTime          string  `json:"DateTime"` // Формат: yyyy-MM-dd HH:mm:ss
	CardId            string  `json:"CardId,omitempty"`
	CardFirstSix      string  `json:"CardFirstSix"`
	CardLastFour      string  `json:"CardLastFour"`
	CardType          string  `json:"CardType"` // Visa, Mastercard, Maestro, "МИР"
	CardExpDate       string  `json:"CardExpDate"`
	TestMode          int     `json:"TestMode"` // 1 или 0
	Status            string  `json:"Status"`   // Completed или Authorized
	OperationType     string  `json:"OperationType"`
	InvoiceId         string  `json:"InvoiceId,omitempty"`
	AccountId         string  `json:"AccountId,omitempty"`
	SubscriptionId    string  `json:"SubscriptionId,omitempty"`
	TokenRecipient    string  `json:"TokenRecipient,omitempty"`
	Name              string  `json:"Name,omitempty"`
	Email             string  `json:"Email,omitempty"`
	IpAddress         string  `json:"IpAddress,omitempty"`
	IpCountry         string  `json:"IpCountry,omitempty"`
	IpCity            string  `json:"IpCity,omitempty"`
	IpRegion          string  `json:"IpRegion,omitempty"`
	IpDistrict        string  `json:"IpDistrict,omitempty"`
	IpLatitude        string  `json:"IpLatitude,omitempty"`
	IpLongitude       string  `json:"IpLongitude,omitempty"`
	Issuer            string  `json:"Issuer,omitempty"`
	IssuerBankCountry string  `json:"IssuerBankCountry,omitempty"`
	Description       string  `json:"Description,omitempty"`
	CardProduct       string  `json:"CardProduct,omitempty"`
	PaymentMethod     string  `json:"PaymentMethod,omitempty"`
	Data              string  `json:"Data,omitempty"` // JSON-строка
}

CheckNotification представляет уведомление типа Check. [https://developers.cloudpayments.ru/#check]

type Client

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

func NewClient

func NewClient(cfg ...Config) *Client

func (*Client) AuthorizeCryptogramPayment

func (c *Client) AuthorizeCryptogramPayment(cpr *CryptogramPaymentRequest) (*Payment3DSResponse, error)

AuthorizeCryptogramPayment выполняет двухстадийную оплату по криптограмме. [https://developers.cloudpayments.ru/#oplata-po-kriptogramme] Входные параметры: cpr - запрос на авторизацию по криптограмме. Возвращаемое значение: ответ на авторизацию и ошибка, если она возникла.

func (*Client) AuthorizeTokenPayment

func (c *Client) AuthorizeTokenPayment(tpr *TokenPaymentRequest) (*PaymentResponse, error)

AuthorizeTokenPayment выполняет авторизацию оплаты по токену. [https://developers.cloudpayments.ru/#oplata-po-tokenu-rekarring] Входные параметры: tpr - запрос на авторизацию по токену. Возвращаемое значение: ответ на авторизацию и ошибка, если она возникла.

func (*Client) CancelOrder

func (c *Client) CancelOrder(cor *CancelOrderRequest) (*BaseResponse, error)

CancelOrder отменяет созданный заказ. [https://developers.cloudpayments.ru/#otmena-sozdannogo-scheta] Входные параметры: cor - запрос на отмену заказа. Возвращаемое значение: базовый ответ и ошибка, если она возникла.

func (*Client) CancelSubscription

func (c *Client) CancelSubscription(sur *SubscriptionCancelRequest) (*BaseResponse, error)

CancelSubscription отменяет подписку. [https://developers.cloudpayments.ru/#otmena-podpiski-na-rekurrentnye-platezhi] Входные параметры: sur - запрос на отмену подписки. Возвращаемое значение: базовый ответ и ошибка, если она возникла.

func (*Client) ChargeCryptogramPayment

func (c *Client) ChargeCryptogramPayment(cpr *CryptogramPaymentRequest) (*PaymentResponse, error)

ChargeCryptogramPayment выполняет оплату по криптограмме. [https://developers.cloudpayments.ru/#oplata-po-kriptogramme] Входные параметры: cpr - запрос на оплату по криптограмме. Возвращаемое значение: ответ на оплату и ошибка, если она возникла.

func (*Client) ChargeCryptogramPayout

func (c *Client) ChargeCryptogramPayout(cpr *CryptogramPayoutRequest) (*PaymentResponse, error)

ChargeCryptogramPayout выполняет выплату по криптограмме. [https://developers.cloudpayments.ru/#vyplata-po-kriptogramme] Входные параметры: cpr - запрос на выплату по криптограмме. Возвращаемое значение: ответ на выплату и ошибка, если она возникла.

func (*Client) ChargeTokenPayment

func (c *Client) ChargeTokenPayment(tpr *TokenPaymentRequest) (*PaymentResponse, error)

ChargeTokenPayment выполняет оплату по токену. [https://developers.cloudpayments.ru/#oplata-po-tokenu-rekarring] Входные параметры: tpr - запрос на оплату по токену. Возвращаемое значение: ответ на оплату и ошибка, если она возникла.

func (*Client) ChargeTokenPayout

func (c *Client) ChargeTokenPayout(tpr *TokenPayoutRequest) (*PaymentResponse, error)

ChargeTokenPayout выполняет выплату по токену. [https://developers.cloudpayments.ru/#vyplata-po-tokenu] Входные параметры: tpr - запрос на выплату по токену. Возвращаемое значение: ответ на выплату и ошибка, если она возникла.

func (*Client) Confirm3DSPayment

func (c *Client) Confirm3DSPayment(confirm3DS *Confirm3DSRequest) (*PaymentResponse, error)

Confirm3DSPayment подтверждает оплату с использованием 3DS. [https://developers.cloudpayments.ru/#obrabotka-3-d-secure] Входные параметры: confirm3DS - запрос на подтверждение 3DS оплаты. Возвращаемое значение: ответ на подтверждение и ошибка, если она возникла.

func (*Client) ConfirmPayment

func (c *Client) ConfirmPayment(confirm *ConfirmPaymentRequest) (*BaseResponse, error)

ConfirmPayment подтверждает авторизованную оплату. [https://developers.cloudpayments.ru/#podtverzhdenie-oplaty] Входные параметры: confirm - запрос на подтверждение оплаты. Возвращаемое значение: базовый ответ и ошибка, если она возникла.

func (*Client) CreateOrder

func (c *Client) CreateOrder(lpr *LinkPaymentRequest) (*OrderResponse, error)

CreateOrder создает заказ для отправки по email. [https://developers.cloudpayments.ru/#sozdanie-scheta-dlya-otpravki-po-pochte] Входные параметры: lpr - запрос на создание заказа. Возвращаемое значение: базовый ответ и ошибка, если она возникла.

func (*Client) CreateSubscription

func (c *Client) CreateSubscription(scr *SubscriptionCreateRequest) (*SubscriptionResponse, error)

CreateSubscription создает подписку. [https://developers.cloudpayments.ru/#sozdanie-podpiski-na-rekurrentnye-platezhi] Входные параметры: scr - запрос на создание подписки. Возвращаемое значение: ответ с информацией о подписке и ошибка, если она возникла.

func (*Client) FindPaymentByInvoiceID

func (c *Client) FindPaymentByInvoiceID(fpr *FindPaymentRequest) (*PaymentResponse, error)

FindPaymentByInvoiceID ищет платеж по идентификатору счета. [https://developers.cloudpayments.ru/#proverka-statusa-platezha] Входные параметры: fpr - запрос на поиск платежа. Возвращаемое значение: ответ с информацией о платеже и ошибка, если она возникла.

func (*Client) GetNotificationSettings

func (c *Client) GetNotificationSettings(notificationType NotificationType) (*NotificationSettingsResponse, error)

GetNotificationSettings получает настройки уведомлений для указанного типа. [https://developers.cloudpayments.ru/#prosmotr-nastroek-uvedomleniy] Входные параметры: notificationType - тип уведомления (например, "pay", "fail"). Возвращаемое значение: настройки уведомлений и ошибка, если она возникла.

func (*Client) GetSubscription

func (c *Client) GetSubscription(sgr *SubscriptionGetRequest) (*SubscriptionResponse, error)

GetSubscription получает информацию о подписке по идентификатору транзакции. [https://developers.cloudpayments.ru/#zapros-informatsii-o-podpiske] Входные параметры: sgr - запрос на получение информации о подписке. Возвращаемое значение: ответ с информацией о подписке и ошибка, если она возникла.

func (*Client) GetSubscriptionsList

func (c *Client) GetSubscriptionsList(slr *SubscriptionListRequest) (*SubscriptionsListResponse, error)

GetSubscriptionsList получает список подписок по идентификатору аккаунта. [https://developers.cloudpayments.ru/#poisk-podpisok] Входные параметры: slr - запрос на получение списка подписок. Возвращаемое значение: ответ с информацией о подписках и ошибка, если она возникла.

func (*Client) Payment

func (c *Client) Payment(gpr *GetPaymentRequest) (*PaymentResponse, error)

Payment получает информацию о платеже по идентификатору транзакции. [https://developers.cloudpayments.ru/#prosmotr-tranzaktsii] Входные параметры: gpr - запрос на получение информации о платеже. Возвращаемое значение: ответ с информацией о платеже и ошибка, если она возникла.

func (*Client) PaymentsList

func (c *Client) PaymentsList(plr *PaymentsListRequest) (*PaymentsListResponse, error)

PaymentsList получает список транзакций за день. [https://developers.cloudpayments.ru/#vygruzka-spiska-tranzaktsiy] Входные параметры: plr - запрос на получение списка транзакций. Возвращаемое значение: ответ с информацией о транзакциях и ошибка, если она возникла.

func (*Client) PaymentsListV2

func (c *Client) PaymentsListV2(plr *PaymentsListV2Request) (*PaymentsListV2Response, error)

PaymentsListV2 получает список транзакций за произвольный период. [https://developers.cloudpayments.ru/#vygruzka-spiska-tranzaktsiy-za-proizvolnyy-period] Входные параметры: plr - запрос на получение списка транзакций. Возвращаемое значение: ответ с информацией о транзакциях и ошибка, если она возникла.

func (*Client) Ping

func (c *Client) Ping() (*BaseResponse, error)

Ping проверяет доступность API CloudPayments. [https://developers.cloudpayments.ru/#testovyy-metod] Возвращаемое значение: ответ от API и ошибка, если она возникла.

func (*Client) RefundPayment

func (c *Client) RefundPayment(rpp *RefundPaymentRequest) (*BaseResponse, error)

RefundPayment выполняет возврат средств. [https://developers.cloudpayments.ru/#vozvrat-deneg] Входные параметры: rpp - запрос на возврат средств. Возвращаемое значение: базовый ответ и ошибка, если она возникла.

func (*Client) StartApplePaySession

func (c *Client) StartApplePaySession(validationUrl, paymentUrl string) (*ApplePaySessionResponse, error)

StartApplePaySession запускает сессию для оплаты через Apple Pay. [https://developers.cloudpayments.ru/#zapusk-sessii-dlya-oplaty-cherez-apple-pay] Входные параметры: validationUrl - URL для валидации сессии, paymentUrl - URL для оплаты. Возвращаемое значение: данные сессии Apple Pay и ошибка, если она возникла.

func (*Client) TokensList

func (c *Client) TokensList(tlr *TokensListRequest) (*TokensListResponse, error)

TokensList получает список токенов. [https://developers.cloudpayments.ru/#vygruzka-tokenov] Входные параметры: tlr - запрос на получение списка токенов. Возвращаемое значение: ответ с информацией о токенах и ошибка, если она возникла.

func (*Client) UpdateNotificationSettings

func (c *Client) UpdateNotificationSettings(notificationType NotificationType, settings *NotificationSettings) (*BaseResponse, error)

UpdateNotificationSettings обновляет настройки уведомлений для указанного типа. [https://developers.cloudpayments.ru/#izmenenie-nastroek-uvedomleniy] Входные параметры: notificationType - тип уведомления, settings - новые настройки. Возвращаемое значение: базовый ответ и ошибка, если она возникла.

func (*Client) UpdateSubscription

func (c *Client) UpdateSubscription(sur *SubscriptionUpdateRequest) (*SubscriptionResponse, error)

UpdateSubscription обновляет подписку. [https://developers.cloudpayments.ru/#izmenenie-podpiski-na-rekurrentnye-platezhi] Входные параметры: sur - запрос на обновление подписки. Возвращаемое значение: ответ с информацией о подписке и ошибка, если она возникла.

func (*Client) VoidPayment

func (c *Client) VoidPayment(vpr *VoidPaymentRequest) (*BaseResponse, error)

VoidPayment отменяет оплату. [https://developers.cloudpayments.ru/#otmena-oplaty] Входные параметры: vpr - запрос на отмену оплаты. Возвращаемое значение: базовый ответ и ошибка, если она возникла.

type Config

type Config struct {
	ApiSecret string
	PublicId  string
	Timeout   time.Duration
}

type Confirm3DSRequest

type Confirm3DSRequest struct {
	TransactionId int64   `json:"TransactionId"`
	PaRes         string  `json:"PaRes"`
	RequestID     *string `json:"-"`
}

Confirm3DSRequest представляет запрос на подтверждение 3DS оплаты.

type ConfirmNotification

type ConfirmNotification struct {
	TransactionId     int64   `json:"TransactionId"`
	Amount            float64 `json:"Amount"`
	Currency          string  `json:"Currency"`
	PaymentAmount     string  `json:"PaymentAmount"`
	PaymentCurrency   string  `json:"PaymentCurrency"`
	DateTime          string  `json:"DateTime"` // Формат: yyyy-MM-dd HH:mm:ss
	CardFirstSix      string  `json:"CardFirstSix"`
	CardLastFour      string  `json:"CardLastFour"`
	CardType          string  `json:"CardType"` // Visa, Mastercard, Maestro, "МИР"
	CardExpDate       string  `json:"CardExpDate"`
	TestMode          int     `json:"TestMode"` // 1 или 0
	Status            string  `json:"Status"`   // Completed
	InvoiceId         string  `json:"InvoiceId,omitempty"`
	AccountId         string  `json:"AccountId,omitempty"`
	SubscriptionId    string  `json:"SubscriptionId,omitempty"`
	Name              string  `json:"Name,omitempty"`
	Email             string  `json:"Email,omitempty"`
	IpAddress         string  `json:"IpAddress,omitempty"`
	IpCountry         string  `json:"IpCountry,omitempty"`
	IpCity            string  `json:"IpCity,omitempty"`
	IpRegion          string  `json:"IpRegion,omitempty"`
	IpDistrict        string  `json:"IpDistrict,omitempty"`
	IpLatitude        string  `json:"IpLatitude,omitempty"`
	IpLongitude       string  `json:"IpLongitude,omitempty"`
	Issuer            string  `json:"Issuer,omitempty"`
	IssuerBankCountry string  `json:"IssuerBankCountry,omitempty"`
	Description       string  `json:"Description,omitempty"`
	AuthCode          string  `json:"AuthCode,omitempty"`
	Data              string  `json:"Data,omitempty"` // JSON-строка
	Token             string  `json:"Token,omitempty"`
	PaymentMethod     string  `json:"PaymentMethod,omitempty"`
	Rrn               string  `json:"Rrn,omitempty"`
}

ConfirmNotification представляет уведомление типа Confirm. [https://developers.cloudpayments.ru/#confirm]

type ConfirmPaymentRequest

type ConfirmPaymentRequest struct {
	TransactionId int64                  `json:"TransactionId"`
	Amount        float64                `json:"Amount"`
	JsonData      map[string]interface{} `json:"JsonData,omitempty"`
	RequestID     *string                `json:"-"`
}

ConfirmPaymentRequest представляет запрос на подтверждение оплаты.

type CryptogramPaymentRequest

type CryptogramPaymentRequest struct {
	Amount               float64                `json:"Amount"`
	Currency             *CurrencyCode          `json:"Currency"`
	IpAddress            string                 `json:"IpAddress"`
	CardCryptogramPacket string                 `json:"CardCryptogramPacket"`
	Name                 string                 `json:"Name,omitempty"`
	PaymentUrl           string                 `json:"PaymentUrl,omitempty"`
	InvoiceId            string                 `json:"InvoiceId,omitempty"`
	Description          string                 `json:"Description,omitempty"`
	CultureName          *LanguageCode          `json:"CultureName,omitempty"`
	AccountId            string                 `json:"AccountId,omitempty"`
	Email                string                 `json:"Email,omitempty"`
	Payer                *Payer                 `json:"Payer,omitempty"`
	JsonData             map[string]interface{} `json:"JsonData,omitempty"`
	RequestID            *string                `json:"-"`
}

CryptogramPaymentRequest представляет запрос на оплату по криптограмме.

type CryptogramPayoutRequest

type CryptogramPayoutRequest struct {
	CardCryptogramPacket string                 `json:"CardCryptogramPacket"`
	Amount               float64                `json:"Amount"`
	Currency             *CurrencyCode          `json:"Currency"`
	Name                 string                 `json:"Name,omitempty"`
	AccountId            string                 `json:"AccountId,omitempty"`
	Email                string                 `json:"Email,omitempty"`
	JsonData             map[string]interface{} `json:"JsonData,omitempty"`
	InvoiceId            string                 `json:"InvoiceId,omitempty"`
	Description          string                 `json:"Description,omitempty"`
	Payer                *Payer                 `json:"Payer,omitempty"`
	Receiver             *Receiver              `json:"Receiver,omitempty"`
	RequestID            *string                `json:"-"`
}

CryptogramPayoutRequest представляет запрос на выплату по криптограмме.

type CurrencyCode

type CurrencyCode string

CurrencyCode представляет код валюты.

var (
	CurrencyKZT CurrencyCode = "KZT" // Казахстанский тенге
	CurrencyRUB CurrencyCode = "RUB" // Российский рубль
	CurrencyEUR CurrencyCode = "EUR" // Евро
	CurrencyUSD CurrencyCode = "USD" // Доллар США
	CurrencyGBP CurrencyCode = "GBP" // Фунт стерлингов
	CurrencyUAH CurrencyCode = "UAH" // Украинская гривна
	CurrencyBYR CurrencyCode = "BYR" // Белорусский рубль (устаревший)
	CurrencyBYN CurrencyCode = "BYN" // Белорусский рубль
	CurrencyAZN CurrencyCode = "AZN" // Азербайджанский манат
	CurrencyCHF CurrencyCode = "CHF" // Швейцарский франк
	CurrencyCZK CurrencyCode = "CZK" // Чешская крона
	CurrencyCAD CurrencyCode = "CAD" // Канадский доллар
	CurrencyPLN CurrencyCode = "PLN" // Польский злотый
	CurrencySEK CurrencyCode = "SEK" // Шведская крона
	CurrencyTRY CurrencyCode = "TRY" // Турецкая лира
	CurrencyCNY CurrencyCode = "CNY" // Китайский юань
	CurrencyINR CurrencyCode = "INR" // Индийская рупия
)

type FailNotification

type FailNotification struct {
	TransactionId                         int64   `json:"TransactionId"`
	Amount                                float64 `json:"Amount"`
	Currency                              string  `json:"Currency"`
	PaymentAmount                         string  `json:"PaymentAmount"`
	PaymentCurrency                       string  `json:"PaymentCurrency"`
	DateTime                              string  `json:"DateTime"` // Формат: yyyy-MM-dd HH:mm:ss
	CardId                                string  `json:"CardId,omitempty"`
	CardFirstSix                          string  `json:"CardFirstSix"`
	CardLastFour                          string  `json:"CardLastFour"`
	CardType                              string  `json:"CardType"` // Visa, Mastercard, Maestro, "МИР"
	CardExpDate                           string  `json:"CardExpDate"`
	TestMode                              int     `json:"TestMode"` // 1 или 0
	Reason                                string  `json:"Reason"`
	ReasonCode                            int     `json:"ReasonCode"`
	OperationType                         string  `json:"OperationType"`
	InvoiceId                             string  `json:"InvoiceId,omitempty"`
	AccountId                             string  `json:"AccountId,omitempty"`
	SubscriptionId                        string  `json:"SubscriptionId,omitempty"`
	Name                                  string  `json:"Name,omitempty"`
	Email                                 string  `json:"Email,omitempty"`
	IpAddress                             string  `json:"IpAddress,omitempty"`
	IpCountry                             string  `json:"IpCountry,omitempty"`
	IpCity                                string  `json:"IpCity,omitempty"`
	IpRegion                              string  `json:"IpRegion,omitempty"`
	IpDistrict                            string  `json:"IpDistrict,omitempty"`
	IpLatitude                            string  `json:"IpLatitude,omitempty"`
	IpLongitude                           string  `json:"IpLongitude,omitempty"`
	Issuer                                string  `json:"Issuer,omitempty"`
	IssuerBankCountry                     string  `json:"IssuerBankCountry,omitempty"`
	Description                           string  `json:"Description,omitempty"`
	Data                                  string  `json:"Data,omitempty"` // JSON-строка
	Token                                 string  `json:"Token,omitempty"`
	PaymentMethod                         string  `json:"PaymentMethod,omitempty"`
	FallBackScenarioDeclinedTransactionId int64   `json:"FallBackScenarioDeclinedTransactionId,omitempty"`
	Rrn                                   string  `json:"Rrn,omitempty"`
	CustomFields                          string  `json:"CustomFields,omitempty"` // JSON-строка
}

FailNotification представляет уведомление типа Fail. [https://developers.cloudpayments.ru/#fail]

type FindPaymentRequest

type FindPaymentRequest struct {
	InvoiceId string  `json:"InvoiceId"`
	RequestID *string `json:"-"`
}

FindPaymentRequest представляет запрос на поиск платежа по идентификатору счета.

type FiscalDataOperator

type FiscalDataOperator string

FiscalDataOperator представляет операторы фискальных данных.

var (
	FiscalDataOperatorPeterService   FiscalDataOperator = "PeterService"   // ООО «ПС СТ»
	FiscalDataOperatorFirstOfd       FiscalDataOperator = "FirstOfd"       // Первый ОФД
	FiscalDataOperatorTaxcom         FiscalDataOperator = "Taxcom"         // Такском
	FiscalDataOperatorPlatformaOfd   FiscalDataOperator = "PlatformaOfd"   // Платформа ОФД
	FiscalDataOperatorOfdYa          FiscalDataOperator = "OfdYa"          // ОФД-Я
	FiscalDataOperatorOfdYandex      FiscalDataOperator = "OfdYandex"      // Яндекс ОФД
	FiscalDataOperatorGarantexpress  FiscalDataOperator = "Garantexpress"  // Гарант ОФД
	FiscalDataOperatorOfdAstralNalog FiscalDataOperator = "OfdAstralNalog" // Астрал ОФД
	FiscalDataOperatorSbis           FiscalDataOperator = "Sbis"           // Компания "ТЕНЗОР", ООО
)

type GetPaymentRequest

type GetPaymentRequest struct {
	TransactionId int64   `json:"TransactionId"`
	RequestID     *string `json:"-"`
}

GetPaymentRequest представляет запрос на получение информации о платеже.

type LanguageCode

type LanguageCode string

LanguageCode представляет код языка и временной зоны.

var (
	LanguageRussianRuRU   LanguageCode = "ru-RU" // Русский (MSK)
	LanguageEnglishEnUS   LanguageCode = "en-US" // Английский (CET)
	LanguageLatvianLv     LanguageCode = "lv"    // Латышский (CET)
	LanguageAzerbaijaniAz LanguageCode = "az"    // Азербайджанский (AZT)
	LanguageKazakhKk      LanguageCode = "kk"    // Русский (ALMT)
	LanguageUkrainianUk   LanguageCode = "uk"    // Украинский (EET)
	LanguagePolishPl      LanguageCode = "pl"    // Польский (CET)
	LanguageVietnameseVi  LanguageCode = "vi"    // Вьетнамский (ICT)
	LanguageTurkishTr     LanguageCode = "tr"    // Турецкий (TRT)
)

type LinkPaymentRequest

type LinkPaymentRequest struct {
	Amount               float64                `json:"Amount"`
	Currency             *CurrencyCode          `json:"Currency"`
	Description          string                 `json:"Description"`
	Email                string                 `json:"Email,omitempty"`
	RequireConfirmation  bool                   `json:"RequireConfirmation,omitempty"`
	SendEmail            bool                   `json:"SendEmail,omitempty"`
	InvoiceId            string                 `json:"InvoiceId,omitempty"`
	AccountId            string                 `json:"AccountId,omitempty"`
	OfferUri             string                 `json:"OfferUri,omitempty"`
	Phone                string                 `json:"Phone,omitempty"`
	SendSms              bool                   `json:"SendSms,omitempty"`
	SendViber            bool                   `json:"SendViber,omitempty"`
	CultureName          *LanguageCode          `json:"CultureName,omitempty"`
	SubscriptionBehavior string                 `json:"SubscriptionBehavior,omitempty"`
	SuccessRedirectUrl   string                 `json:"SuccessRedirectUrl,omitempty"`
	FailRedirectUrl      string                 `json:"FailRedirectUrl,omitempty"`
	JsonData             map[string]interface{} `json:"JsonData,omitempty"`
	RequestID            *string                `json:"-"`
}

LinkPaymentRequest представляет запрос на создание заказа для отправки по email.

type NotificationSettings

type NotificationSettings struct {
	IsEnabled  bool   `json:"IsEnabled"`
	Address    string `json:"Address"`
	HttpMethod string `json:"HttpMethod"`
	Encoding   string `json:"Encoding"`
	Format     string `json:"Format"`
}

NotificationSettings содержит настройки уведомлений.

type NotificationSettingsResponse

type NotificationSettingsResponse struct {
	Success bool                 `json:"Success"`
	Message string               `json:"Message"`
	Model   NotificationSettings `json:"Model"`
}

NotificationSettingsResponse представляет ответ с настройками уведомлений.

type NotificationType

type NotificationType string

Типы уведомлений

var (
	NotificationTypeCheck     NotificationType = "Check"     // Check уведомление
	NotificationTypePay       NotificationType = "Pay"       // Pay уведомление
	NotificationTypeFail      NotificationType = "Fail"      // Fail уведомление
	NotificationTypeConfirm   NotificationType = "Confirm"   // Confirm уведомление
	NotificationTypeRefund    NotificationType = "Refund"    // Refund уведомление
	NotificationTypeRecurrent NotificationType = "Recurrent" // Recurrent уведомление
	NotificationTypeCancel    NotificationType = "Cancel"    // Cancel уведомление
)

Коды ответа на запрос от cloudpayments [https://developers.cloudpayments.ru/#uvedomleniya]

type OperationType

type OperationType string

Типы операций

var (
	OperationTypePayment    OperationType = "Payment"    // Оплата
	OperationTypeRefund     OperationType = "Refund"     // Возврат
	OperationTypeCardPayout OperationType = "CardPayout" // Выплата на карту
)

type OrderModel

type OrderModel struct {
	Id                  string  `json:"Id"`
	Number              int     `json:"Number"`
	Amount              float64 `json:"Amount"`
	Currency            string  `json:"Currency"`
	CurrencyCode        int     `json:"CurrencyCode"`
	Email               string  `json:"Email"`
	Phone               string  `json:"Phone"`
	Description         string  `json:"Description"`
	RequireConfirmation bool    `json:"RequireConfirmation"`
	Url                 string  `json:"Url"`
	CultureName         string  `json:"CultureName"`
	CreatedDate         string  `json:"CreatedDate"`
	CreatedDateIso      string  `json:"CreatedDateIso"`
	PaymentDate         string  `json:"PaymentDate"`
	PaymentDateIso      string  `json:"PaymentDateIso"`
	StatusCode          int     `json:"StatusCode"`
	Status              string  `json:"Status"`
	InternalId          int     `json:"InternalId"`
}

OrderModel содержит детали заказа.

type OrderResponse

type OrderResponse struct {
	Success bool       `json:"Success"`
	Message string     `json:"Message"`
	Model   OrderModel `json:"Model"`
}

OrderResponse представляет ответ на запросы, связанные с заказами.

type PayNotification

type PayNotification struct {
	TransactionId                         int64   `json:"TransactionId"`
	Amount                                float64 `json:"Amount"`
	Currency                              string  `json:"Currency"`
	PaymentAmount                         string  `json:"PaymentAmount"`
	PaymentCurrency                       string  `json:"PaymentCurrency"`
	DateTime                              string  `json:"DateTime"` // Формат: yyyy-MM-dd HH:mm:ss
	CardId                                string  `json:"CardId,omitempty"`
	CardFirstSix                          string  `json:"CardFirstSix"`
	CardLastFour                          string  `json:"CardLastFour"`
	CardType                              string  `json:"CardType"` // Visa, Mastercard, Maestro, "МИР"
	CardExpDate                           string  `json:"CardExpDate"`
	TestMode                              int     `json:"TestMode"` // 1 или 0
	Status                                string  `json:"Status"`   // Completed или Authorized
	OperationType                         string  `json:"OperationType"`
	GatewayName                           string  `json:"GatewayName"`
	InvoiceId                             string  `json:"InvoiceId,omitempty"`
	AccountId                             string  `json:"AccountId,omitempty"`
	SubscriptionId                        string  `json:"SubscriptionId,omitempty"`
	Name                                  string  `json:"Name,omitempty"`
	Email                                 string  `json:"Email,omitempty"`
	IpAddress                             string  `json:"IpAddress,omitempty"`
	IpCountry                             string  `json:"IpCountry,omitempty"`
	IpCity                                string  `json:"IpCity,omitempty"`
	IpRegion                              string  `json:"IpRegion,omitempty"`
	IpDistrict                            string  `json:"IpDistrict,omitempty"`
	IpLatitude                            string  `json:"IpLatitude,omitempty"`
	IpLongitude                           string  `json:"IpLongitude,omitempty"`
	Issuer                                string  `json:"Issuer,omitempty"`
	IssuerBankCountry                     string  `json:"IssuerBankCountry,omitempty"`
	Description                           string  `json:"Description,omitempty"`
	AuthCode                              string  `json:"AuthCode,omitempty"`
	Data                                  string  `json:"Data,omitempty"` // JSON-строка
	Token                                 string  `json:"Token,omitempty"`
	TotalFee                              float64 `json:"TotalFee,omitempty"`
	CardProduct                           string  `json:"CardProduct,omitempty"`
	PaymentMethod                         string  `json:"PaymentMethod,omitempty"`
	FallBackScenarioDeclinedTransactionId int64   `json:"FallBackScenarioDeclinedTransactionId,omitempty"`
	Rrn                                   string  `json:"Rrn,omitempty"`
	CustomFields                          string  `json:"CustomFields,omitempty"` // JSON-строка
}

PayNotification представляет уведомление типа Pay. [https://developers.cloudpayments.ru/#pay]

type Payer

type Payer struct {
	FirstName  string `json:"FirstName,omitempty"`
	LastName   string `json:"LastName,omitempty"`
	MiddleName string `json:"MiddleName,omitempty"`
	Birth      string `json:"Birth,omitempty"`
	Street     string `json:"Street,omitempty"`
	Address    string `json:"Address,omitempty"`
	City       string `json:"City,omitempty"`
	Country    string `json:"Country,omitempty"`
	Phone      string `json:"Phone,omitempty"`
	Postcode   string `json:"Postcode,omitempty"`
}

Payer представляет информацию о плательщике.

type Payment

type Payment struct {
	PublicId                              string  `json:"PublicId"`
	TerminalUrl                           string  `json:"TerminalUrl"`
	TransactionId                         int64   `json:"TransactionId"`
	Amount                                float64 `json:"Amount"`
	Currency                              string  `json:"Currency"`
	CurrencyCode                          int     `json:"CurrencyCode"`
	PaymentAmount                         float64 `json:"PaymentAmount"`
	PaymentCurrency                       string  `json:"PaymentCurrency"`
	PaymentCurrencyCode                   int     `json:"PaymentCurrencyCode"`
	InvoiceId                             string  `json:"InvoiceId"`
	AccountId                             string  `json:"AccountId"`
	Email                                 string  `json:"Email"`
	Description                           string  `json:"Description"`
	JsonData                              string  `json:"JsonData"`
	CreatedDate                           string  `json:"CreatedDate"`
	PayoutDate                            string  `json:"PayoutDate"`
	PayoutDateIso                         string  `json:"PayoutDateIso"`
	PayoutAmount                          float64 `json:"PayoutAmount"`
	CreatedDateIso                        string  `json:"CreatedDateIso"`
	AuthDate                              string  `json:"AuthDate"`
	AuthDateIso                           string  `json:"AuthDateIso"`
	ConfirmDate                           string  `json:"ConfirmDate"`
	ConfirmDateIso                        string  `json:"ConfirmDateIso"`
	AuthCode                              string  `json:"AuthCode"`
	TestMode                              bool    `json:"TestMode"`
	Rrn                                   string  `json:"Rrn"`
	OriginalTransactionId                 int64   `json:"OriginalTransactionId"`
	FallBackScenarioDeclinedTransactionId int64   `json:"FallBackScenarioDeclinedTransactionId"`
	IpAddress                             string  `json:"IpAddress"`
	IpCountry                             string  `json:"IpCountry"`
	IpCity                                string  `json:"IpCity"`
	IpRegion                              string  `json:"IpRegion"`
	IpDistrict                            string  `json:"IpDistrict"`
	IpLatitude                            float64 `json:"IpLatitude"`
	IpLongitude                           float64 `json:"IpLongitude"`
	CardFirstSix                          string  `json:"CardFirstSix"`
	CardLastFour                          string  `json:"CardLastFour"`
	CardExpDate                           string  `json:"CardExpDate"`
	CardType                              string  `json:"CardType"`
	CardProduct                           string  `json:"CardProduct"`
	CardCategory                          string  `json:"CardCategory"`
	EscrowAccumulationId                  string  `json:"EscrowAccumulationId"`
	IssuerBankCountry                     string  `json:"IssuerBankCountry"`
	Issuer                                string  `json:"Issuer"`
	CardTypeCode                          int     `json:"CardTypeCode"`
	Status                                string  `json:"Status"`
	StatusCode                            int     `json:"StatusCode"`
	CultureName                           string  `json:"CultureName"`
	Reason                                string  `json:"Reason"`
	CardHolderMessage                     string  `json:"CardHolderMessage"`
	Type                                  int     `json:"Type"`
	Refunded                              bool    `json:"Refunded"`
	Name                                  string  `json:"Name"`
	Token                                 string  `json:"Token"`
	SubscriptionId                        string  `json:"SubscriptionId"`
	GatewayName                           string  `json:"GatewayName"`
	ApplePay                              bool    `json:"ApplePay"`
	AndroidPay                            bool    `json:"AndroidPay"`
	WalletType                            string  `json:"WalletType"`
	TotalFee                              float64 `json:"TotalFee"`
}

Payment содержит информацию о транзакции.

type Payment3DSModel

type Payment3DSModel struct {
	TransactionId        int64  `json:"TransactionId"`
	PaReq                string `json:"PaReq"`
	GoReq                string `json:"GoReq"`
	AcsUrl               string `json:"AcsUrl"`
	ThreeDsSessionData   string `json:"ThreeDsSessionData"`
	IFrameIsAllowed      bool   `json:"IFrameIsAllowed"`
	FrameWidth           int    `json:"FrameWidth"`
	FrameHeight          int    `json:"FrameHeight"`
	ThreeDsCallbackId    string `json:"ThreeDsCallbackId"`
	EscrowAccumulationId string `json:"EscrowAccumulationId"`
}

Payment3DSModel содержит детали 3DS оплаты.

type Payment3DSResponse

type Payment3DSResponse struct {
	Success bool            `json:"Success"`
	Message string          `json:"Message"`
	Model   Payment3DSModel `json:"Model"`
}

Payment3DSResponse представляет ответ на оплату с использованием 3DS.

type PaymentModel

type PaymentModel struct {
	TransactionId                         int64   `json:"TransactionId"`
	Amount                                float64 `json:"Amount"`
	Currency                              string  `json:"Currency"`
	CurrencyCode                          int     `json:"CurrencyCode"`
	PaymentAmount                         float64 `json:"PaymentAmount"`
	PaymentCurrency                       string  `json:"PaymentCurrency"`
	PaymentCurrencyCode                   int     `json:"PaymentCurrencyCode"`
	InvoiceId                             string  `json:"InvoiceId"`
	AccountId                             string  `json:"AccountId"`
	Email                                 string  `json:"Email"`
	Description                           string  `json:"Description"`
	JsonData                              string  `json:"JsonData"`
	CreatedDate                           string  `json:"CreatedDate"`
	PayoutDate                            string  `json:"PayoutDate"`
	PayoutDateIso                         string  `json:"PayoutDateIso"`
	PayoutAmount                          float64 `json:"PayoutAmount"`
	CreatedDateIso                        string  `json:"CreatedDateIso"`
	AuthDate                              string  `json:"AuthDate"`
	AuthDateIso                           string  `json:"AuthDateIso"`
	ConfirmDate                           string  `json:"ConfirmDate"`
	ConfirmDateIso                        string  `json:"ConfirmDateIso"`
	AuthCode                              string  `json:"AuthCode"`
	TestMode                              bool    `json:"TestMode"`
	Rrn                                   string  `json:"Rrn"`
	OriginalTransactionId                 int64   `json:"OriginalTransactionId"`
	FallBackScenarioDeclinedTransactionId int64   `json:"FallBackScenarioDeclinedTransactionId"`
	IpAddress                             string  `json:"IpAddress"`
	IpCountry                             string  `json:"IpCountry"`
	IpCity                                string  `json:"IpCity"`
	IpRegion                              string  `json:"IpRegion"`
	IpDistrict                            string  `json:"IpDistrict"`
	IpLatitude                            float64 `json:"IpLatitude"`
	IpLongitude                           float64 `json:"IpLongitude"`
	CardFirstSix                          string  `json:"CardFirstSix"`
	CardLastFour                          string  `json:"CardLastFour"`
	CardExpDate                           string  `json:"CardExpDate"`
	CardType                              string  `json:"CardType"`
	CardProduct                           string  `json:"CardProduct"`
	CardCategory                          string  `json:"CardCategory"`
	EscrowAccumulationId                  string  `json:"EscrowAccumulationId"`
	IssuerBankCountry                     string  `json:"IssuerBankCountry"`
	Issuer                                string  `json:"Issuer"`
	CardTypeCode                          int     `json:"CardTypeCode"`
	Status                                string  `json:"Status"`
	StatusCode                            int     `json:"StatusCode"`
	CultureName                           string  `json:"CultureName"`
	Reason                                string  `json:"Reason"`
	CardHolderMessage                     string  `json:"CardHolderMessage"`
	Type                                  int     `json:"Type"`
	Refunded                              bool    `json:"Refunded"`
	Name                                  string  `json:"Name"`
	Token                                 string  `json:"Token"`
	SubscriptionId                        string  `json:"SubscriptionId"`
	GatewayName                           string  `json:"GatewayName"`
	ApplePay                              bool    `json:"ApplePay"`
	AndroidPay                            bool    `json:"AndroidPay"`
	WalletType                            string  `json:"WalletType"`
	TotalFee                              float64 `json:"TotalFee"`
}

PaymentModel содержит детали платежа.

type PaymentResponse

type PaymentResponse struct {
	Success bool         `json:"Success"`
	Message string       `json:"Message"`
	Model   PaymentModel `json:"Model"`
}

PaymentResponse представляет ответ на оплату.

type PaymentStatus

type PaymentStatus string
var (
	PaymentStatusAwaitingAuthentication PaymentStatus = "AwaitingAuthentication" // Ожидание аутентификации
	PaymentStatusAuthorized             PaymentStatus = "Authorized"             // Авторизован
	PaymentStatusCompleted              PaymentStatus = "Completed"              // Завершен
	PaymentStatusCancelled              PaymentStatus = "Cancelled"              // Отменен
	PaymentStatusDeclined               PaymentStatus = "Declined"               // Отклонен
)

type PaymentsListRequest

type PaymentsListRequest struct {
	Date      string  `json:"Date"`
	TimeZone  string  `json:"TimeZone,omitempty"`
	RequestID *string `json:"-"`
}

PaymentsListRequest представляет запрос на получение списка транзакций за день.

type PaymentsListResponse

type PaymentsListResponse struct {
	Success bool      `json:"Success"`
	Message string    `json:"Message"`
	Model   []Payment `json:"Model"`
}

PaymentsListResponse представляет ответ с информацией о транзакциях за день.

type PaymentsListV2Request

type PaymentsListV2Request struct {
	CreatedDateGte string   `json:"CreatedDateGte"`
	CreatedDateLte string   `json:"CreatedDateLte"`
	PageNumber     int      `json:"PageNumber"`
	TimeZone       string   `json:"TimeZone,omitempty"`
	Statuses       []string `json:"Statuses,omitempty"`
	RequestID      *string  `json:"-"`
}

PaymentsListV2Request представляет запрос на получение списка транзакций за произвольный период.

type PaymentsListV2Response

type PaymentsListV2Response struct {
	Success bool      `json:"Success"`
	Message string    `json:"Message"`
	Model   []Payment `json:"Model"`
}

PaymentsListV2Response представляет ответ с информацией о транзакциях за произвольный период.

type Receiver

type Receiver struct {
	FirstName  string `json:"FirstName,omitempty"`
	LastName   string `json:"LastName,omitempty"`
	MiddleName string `json:"MiddleName,omitempty"`
	Birth      string `json:"Birth,omitempty"`
	Street     string `json:"Street,omitempty"`
	Address    string `json:"Address,omitempty"`
	City       string `json:"City,omitempty"`
	Country    string `json:"Country,omitempty"`
	Phone      string `json:"Phone,omitempty"`
	Postcode   string `json:"Postcode,omitempty"`
}

Receiver представляет информацию о получателе.

type RecurrentNotification

type RecurrentNotification struct {
	Id                           string    `json:"Id"`
	AccountId                    string    `json:"AccountId"`
	Description                  string    `json:"Description"`
	Email                        string    `json:"Email"`
	Amount                       float64   `json:"Amount"`
	Currency                     string    `json:"Currency"`
	RequireConfirmation          bool      `json:"RequireConfirmation"`
	StartDate                    time.Time `json:"StartDate"`
	Interval                     string    `json:"Interval"` // Week, Month
	Period                       int       `json:"Period"`
	Status                       string    `json:"Status"`
	SuccessfulTransactionsNumber int       `json:"SuccessfulTransactionsNumber"`
	FailedTransactionsNumber     int       `json:"FailedTransactionsNumber"`
	MaxPeriods                   int       `json:"MaxPeriods,omitempty"`
	LastTransactionDate          time.Time `json:"LastTransactionDate,omitempty"`
	NextTransactionDate          time.Time `json:"NextTransactionDate,omitempty"`
}

RecurrentNotification представляет уведомление типа Recurrent. [https://developers.cloudpayments.ru/#recurrent]

type RefundNotification

type RefundNotification struct {
	TransactionId        int64   `json:"TransactionId"`
	PaymentTransactionId int64   `json:"PaymentTransactionId"`
	Amount               float64 `json:"Amount"`
	DateTime             string  `json:"DateTime"` // Формат: yyyy-MM-dd HH:mm:ss
	OperationType        string  `json:"OperationType"`
	InvoiceId            string  `json:"InvoiceId,omitempty"`
	AccountId            string  `json:"AccountId,omitempty"`
	Email                string  `json:"Email,omitempty"`
	Data                 string  `json:"Data,omitempty"` // JSON-строка
	Rrn                  string  `json:"Rrn,omitempty"`
	CustomFields         string  `json:"CustomFields,omitempty"` // JSON-строка
}

RefundNotification представляет уведомление типа Refund. [https://developers.cloudpayments.ru/#refund]

type RefundPaymentRequest

type RefundPaymentRequest struct {
	TransactionId int64                  `json:"TransactionId"`
	Amount        float64                `json:"Amount"`
	JsonData      map[string]interface{} `json:"JsonData,omitempty"`
	RequestID     *string                `json:"-"`
}

RefundPaymentRequest представляет запрос на возврат средств.

type Subscription

type Subscription struct {
	Id                           string  `json:"Id"`
	AccountId                    string  `json:"AccountId"`
	Description                  string  `json:"Description"`
	Email                        string  `json:"Email"`
	Amount                       float64 `json:"Amount"`
	CurrencyCode                 int     `json:"CurrencyCode"`
	Currency                     string  `json:"Currency"`
	RequireConfirmation          bool    `json:"RequireConfirmation"`
	StartDate                    string  `json:"StartDate"`
	StartDateIso                 string  `json:"StartDateIso"`
	IntervalCode                 int     `json:"IntervalCode"`
	Interval                     string  `json:"Interval"`
	Period                       int     `json:"Period"`
	MaxPeriods                   int     `json:"MaxPeriods"`
	CultureName                  string  `json:"CultureName"`
	StatusCode                   int     `json:"StatusCode"`
	Status                       string  `json:"Status"`
	SuccessfulTransactionsNumber int     `json:"SuccessfulTransactionsNumber"`
	FailedTransactionsNumber     int     `json:"FailedTransactionsNumber"`
	LastTransactionDate          string  `json:"LastTransactionDate"`
	LastTransactionDateIso       string  `json:"LastTransactionDateIso"`
	NextTransactionDate          string  `json:"NextTransactionDate"`
	NextTransactionDateIso       string  `json:"NextTransactionDateIso"`
	Receipt                      string  `json:"Receipt"`
	FailoverSchemeId             string  `json:"FailoverSchemeId"`
}

Subscription содержит информацию о подписке.

type SubscriptionCancelRequest

type SubscriptionCancelRequest struct {
	Id        string  `json:"Id"`
	RequestID *string `json:"-"`
}

SubscriptionCancelRequest представляет запрос на отмену подписки.

type SubscriptionCreateRequest

type SubscriptionCreateRequest struct {
	Token               string                 `json:"Token"`
	AccountId           string                 `json:"AccountId"`
	Description         string                 `json:"Description"`
	Email               string                 `json:"Email,omitempty"`
	Amount              float64                `json:"Amount"`
	Currency            CurrencyCode           `json:"Currency"`
	RequireConfirmation bool                   `json:"RequireConfirmation"`
	StartDate           string                 `json:"StartDate"`
	Interval            string                 `json:"Interval"`
	Period              int                    `json:"Period"`
	MaxPeriods          int                    `json:"MaxPeriods,omitempty"`
	CustomerReceipt     map[string]interface{} `json:"CustomerReceipt,omitempty"`
	RequestID           *string                `json:"-"`
}

SubscriptionCreateRequest представляет запрос на создание подписки.

type SubscriptionGetRequest

type SubscriptionGetRequest struct {
	Id        string  `json:"Id"`
	RequestID *string `json:"-"`
}

SubscriptionGetRequest представляет запрос на получение информации о подписке.

type SubscriptionListRequest

type SubscriptionListRequest struct {
	AccountId string  `json:"AccountId"`
	RequestID *string `json:"-"`
}

SubscriptionListRequest представляет запрос на получение списка подписок.

type SubscriptionResponse

type SubscriptionResponse struct {
	Success bool         `json:"Success"`
	Message string       `json:"Message"`
	Model   Subscription `json:"Model"`
}

SubscriptionResponse представляет ответ на запросы, связанные с подписками.

type SubscriptionStatus

type SubscriptionStatus string

Статусы подписок (рекуррент)

var (
	SubscriptionStatusActive    SubscriptionStatus = "Active"    // Подписка активна
	SubscriptionStatusPastDue   SubscriptionStatus = "PastDue"   // Подписка просрочена
	SubscriptionStatusCancelled SubscriptionStatus = "Cancelled" // Подписка отменена
	SubscriptionStatusRejected  SubscriptionStatus = "Rejected"  // Подписка отклонена
	SubscriptionStatusExpired   SubscriptionStatus = "Expired"   // Подписка завершена
)

type SubscriptionUpdateRequest

type SubscriptionUpdateRequest struct {
	Id                  string                 `json:"Id"`
	Description         string                 `json:"Description,omitempty"`
	Amount              float64                `json:"Amount,omitempty"`
	Currency            *CurrencyCode          `json:"Currency,omitempty"`
	RequireConfirmation bool                   `json:"RequireConfirmation,omitempty"`
	StartDate           string                 `json:"StartDate,omitempty"`
	Interval            string                 `json:"Interval,omitempty"`
	Period              int                    `json:"Period,omitempty"`
	MaxPeriods          int                    `json:"MaxPeriods,omitempty"`
	CustomerReceipt     map[string]interface{} `json:"CustomerReceipt,omitempty"`
	CultureName         *LanguageCode          `json:"CultureName,omitempty"`
	RequestID           *string                `json:"-"`
}

SubscriptionUpdateRequest представляет запрос на обновление подписки.

type SubscriptionsListResponse

type SubscriptionsListResponse struct {
	Success bool           `json:"Success"`
	Message string         `json:"Message"`
	Model   []Subscription `json:"Model"`
}

SubscriptionsListResponse представляет ответ с информацией о подписках.

type TimeZone

type TimeZone string

Коды временных зон

var (
	TimeZoneHST  TimeZone = "HST"  // (UTC-10:00) Гавайи
	TimeZoneAKST TimeZone = "AKST" // (UTC-09:00) Аляска
	TimeZonePST  TimeZone = "PST"  // (UTC-08:00) Тихоокеанское время (США и Канада)
	TimeZoneMST  TimeZone = "MST"  // (UTC-07:00) Горное время (США и Канада)
	TimeZoneCST  TimeZone = "CST"  // (UTC-06:00) Центральное время (США и Канада)
	TimeZoneEST  TimeZone = "EST"  // (UTC-05:00) Восточное время (США и Канада)
	TimeZoneAST  TimeZone = "AST"  // (UTC-04:00) Атлантическое время (Канада)
	TimeZoneBRT  TimeZone = "BRT"  // (UTC-03:00) Бразилия
	TimeZoneUTC  TimeZone = "UTC"  // (UTC) Время в формате UTC
	TimeZoneGMT  TimeZone = "GMT"  // (UTC) Дублин, Лиссабон, Лондон, Эдинбург
	TimeZoneCET  TimeZone = "CET"  // (UTC+01:00) Центральная Европа
	TimeZoneEET  TimeZone = "EET"  // (UTC+02:00) Восточная Европа
	TimeZoneMSK  TimeZone = "MSK"  // (UTC+03:00) Москва, Санкт-Петербург
	TimeZoneAZT  TimeZone = "AZT"  // (UTC+04:00) Баку
	TimeZoneAMT  TimeZone = "AMT"  // (UTC+04:00) Ереван
	TimeZoneSAMT TimeZone = "SAMT" // (UTC+04:00) Самара
	TimeZoneGET  TimeZone = "GET"  // (UTC+04:00) Тбилиси
	TimeZoneTJT  TimeZone = "TJT"  // (UTC+05:00) Ташкент
	TimeZoneYEKT TimeZone = "YEKT" // (UTC+05:00) Екатеринбург
	TimeZoneALMT TimeZone = "ALMT" // (UTC+06:00) Алматы
	TimeZoneNOVT TimeZone = "NOVT" // (UTC+06:00) Новосибирск
	TimeZoneKRAT TimeZone = "KRAT" // (UTC+07:00) Красноярск
	TimeZoneHKT  TimeZone = "HKT"  // (UTC+08:00) Гонконг
	TimeZoneIRKT TimeZone = "IRKT" // (UTC+08:00) Иркутск
	TimeZoneSGT  TimeZone = "SGT"  // (UTC+08:00) Сингапур
	TimeZoneULAT TimeZone = "ULAT" // (UTC+08:00) Улан-Батор
	TimeZoneYAKT TimeZone = "YAKT" // (UTC+09:00) Якутск
	TimeZoneVLAT TimeZone = "VLAT" // (UTC+10:00) Владивосток
	TimeZoneSAKT TimeZone = "SAKT" // (UTC+11:00) Чокурдах
	TimeZoneANAT TimeZone = "ANAT" // (UTC+12:00) Анадырь
)

type Token

type Token struct {
	Token               string `json:"Token"`
	AccountId           string `json:"AccountId"`
	CardMask            string `json:"CardMask"`
	ExpirationDateMonth int    `json:"ExpirationDateMonth"`
	ExpirationDateYear  int    `json:"ExpirationDateYear"`
}

Token содержит информацию о токене.

type TokenPaymentRequest

type TokenPaymentRequest struct {
	Amount           float64                `json:"Amount"`
	Currency         *CurrencyCode          `json:"Currency"`
	AccountId        string                 `json:"AccountId"`
	Token            string                 `json:"Token"`
	TrInitiatorCode  int                    `json:"TrInitiatorCode"`
	PaymentScheduled int                    `json:"PaymentScheduled,omitempty"`
	InvoiceId        string                 `json:"InvoiceId,omitempty"`
	Description      string                 `json:"Description,omitempty"`
	IpAddress        string                 `json:"IpAddress,omitempty"`
	Email            string                 `json:"Email,omitempty"`
	Payer            *Payer                 `json:"Payer,omitempty"`
	JsonData         map[string]interface{} `json:"JsonData,omitempty"`
	RequestID        *string                `json:"-"`
}

TokenPaymentRequest представляет запрос на оплату по токену.

type TokenPayoutRequest

type TokenPayoutRequest struct {
	Token     string        `json:"Token"`
	Amount    float64       `json:"Amount"`
	AccountId string        `json:"AccountId"`
	Currency  *CurrencyCode `json:"Currency"`
	InvoiceId string        `json:"InvoiceId,omitempty"`
	Payer     *Payer        `json:"Payer,omitempty"`
	Receiver  *Receiver     `json:"Receiver,omitempty"`
	RequestID *string       `json:"-"`
}

TokenPayoutRequest представляет запрос на выплату по токену.

type TokensListRequest

type TokensListRequest struct {
	PageNumber int     `json:"PageNumber"`
	RequestID  *string `json:"-"`
}

TokensListRequest представляет запрос на получение списка токенов.

type TokensListResponse

type TokensListResponse struct {
	Success bool    `json:"Success"`
	Message string  `json:"Message"`
	Model   []Token `json:"Model"`
}

TokensListResponse представляет ответ с информацией о токенах.

type TransactionStatus

type TransactionStatus string

TransactionStatus представляет статус транзакции.

var (
	TransactionStatusAwaitingAuthentication TransactionStatus = "AwaitingAuthentication" // Ожидает аутентификации
	TransactionStatusAuthorized             TransactionStatus = "Authorized"             // Авторизована
	TransactionStatusCompleted              TransactionStatus = "Completed"              // Завершена
	TransactionStatusCancelled              TransactionStatus = "Cancelled"              // Отменена
	TransactionStatusDeclined               TransactionStatus = "Declined"               // Отклонена
)

type VoidPaymentRequest

type VoidPaymentRequest struct {
	TransactionId int64   `json:"TransactionId"`
	RequestID     *string `json:"-"`
}

VoidPaymentRequest представляет запрос на отмену оплаты.

Jump to

Keyboard shortcuts

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