yookassa

package
v1.5.0 Latest Latest
Warning

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

Go to latest
Published: Dec 30, 2022 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckIP

func CheckIP(ip net.IP) error

Функция проверяет IP адрес на вхождение в пул адресов сервиса

func NewDealWebhookHandler

func NewDealWebhookHandler(checkIP bool, webhook func(*models.DealWebhook)) http.HandlerFunc

func NewPaymentWebhookHandler

func NewPaymentWebhookHandler(checkIP bool, webhook func(*models.PaymentWebhook)) http.HandlerFunc

Types

type Client

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

func NewClient

func NewClient(shopID, key string) *Client

func NewClientWithHttp

func NewClientWithHttp(shopID, key string, client *http.Client) *Client

func (*Client) Deals added in v0.1.3

func (c *Client) Deals() *Deals

func (*Client) Me

func (c *Client) Me() (*models.PersonalInfo, error)

Метод для получения информации о своем магазине или шлюзе ref: https://yookassa.ru/developers/api#me

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	c := yookassa.NewClient(ycID, ycKey)

	info, _ := c.Me()

	fmt.Println(info.AccountID)
}
Output:

func (*Client) Payments

func (c *Client) Payments() *Payments

func (*Client) Payouts

func (c *Client) Payouts() *Payouts

func (*Client) PersonalData

func (c *Client) PersonalData() *PersonalData

func (*Client) Reciepts

func (c *Client) Reciepts() *Reciepts

func (*Client) Refounds

func (c *Client) Refounds() *Refounds

func (*Client) SBPList

func (c *Client) SBPList() (*models.SBPList, error)

Метод для получения актуального списка банков участвующих в системе быстрых платежей

ref: https://yookassa.ru/developers/api#sbp_banks

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	c := yookassa.NewClient(ycID, ycKey)

	list, _ := c.SBPList()

	for _, info := range list.Items {
		fmt.Println(info.Name)
	}
}
Output:

func (*Client) SelfEmployed

func (c *Client) SelfEmployed() *SelfEmployed

func (*Client) SplitInfo

func (c *Client) SplitInfo(id string) (*models.PersonalInfo, error)

Информация о настройках магазина для сплитирования платежей

Метод работает аналогично методу ME, за исключением того что в запрос передается идентификатор магазина продавца ref: https://yookassa.ru/developers/api#me

func (*Client) Webhooks

func (c *Client) Webhooks(token string) *Webhooks

func (*Client) WithIdempotenceKey

func (c *Client) WithIdempotenceKey(key string) *Client

type Deals

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

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

ref: https://yookassa.ru/developers/api#deal

func (*Deals) Create

func (d *Deals) Create(req models.DealRequest) (*models.Deal, error)

Создание новой сделки

В ответ на запрос придет объект сделки в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	deals := yookassa.NewClient(ycID, ycKey).Deals()

	deal, _ := deals.Create(models.DealRequest{
		Type:      "safe_deal",
		FeeMoment: "payment_succeeded",
		Metadata: models.Metadata{
			"order_id": "37",
		},
		Description: "SAFE_DEAL 123554642-2432FF344R",
	})

	fmt.Println(deal.ID)
}
Output:

func (*Deals) Info

func (d *Deals) Info(id string) (*models.Deal, error)

Запрос информации о сделке

В ответ на запрос придет объект сделки в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	deals := yookassa.NewClient(ycID, ycKey).Deals()

	deal, _ := deals.Info("some_deal_id")

	fmt.Println(deal.ID)
}
Output:

func (*Deals) List

Запрос списка сделок

В ответ на запрос вернется список сделок с учетом переданных параметров. В списке будет информация о сделках, созданных за последние 3 года. Список будет отсортирован по времени создания сделок в порядке убывания.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	deals := yookassa.NewClient(ycID, ycKey).Deals()

	resp, _ := deals.List(models.ListRequest{
		Limit: 10,
	})

	for _, deal := range resp.Items {
		fmt.Println(deal.ID)
	}
}
Output:

type Payments

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

Структура содержит методы для работы с платежами

ref: https://yookassa.ru/developers/api#payment

func (*Payments) Cancel

func (p *Payments) Cancel(id string) (*models.Payment, error)

Запрос отмены платежа

В ответ на запрос придет объект платежа в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	p := yookassa.NewClient(ycID, ycKey).Payments()

	item, _ := p.Cancel("215d8da0-000f-50be-b000-0003308c89be")

	fmt.Println(item.ID)
}
Output:

func (*Payments) Capture

func (p *Payments) Capture(id string, req models.CaptureRequest) (*models.Payment, error)

Запрос для подтверждения платежа

В ответ на запрос придет объект платежа в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	p := yookassa.NewClient(ycID, ycKey).Payments()

	item, _ := p.Capture("215d8da0-000f-50be-b000-0003308c89be", models.CaptureRequest{
		Amount: &models.Amount{
			Value:    "2.00",
			Currency: "RUB",
		},
	})

	fmt.Println(item.ID)
}
Output:

func (*Payments) Create

func (p *Payments) Create(req models.PaymentRequest) (*models.Payment, error)

Создание объекта платежа

В ответ на запрос придет объект платежа в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	p := yookassa.NewClient(ycID, ycKey).Payments()

	item, _ := p.Create(models.PaymentRequest{
		Amount: models.Amount{
			Value:    "2.00",
			Currency: "RUB",
		},
		PaymentMethodData: &models.PaymentMethod{
			Type: "bank_card",
		},
		Confirmation: &models.Confirmation{
			Type:      "redirect",
			ReturnURl: "https://www.merchant-website.com/return_url",
		},
		Description: "Заказ №72",
	})

	fmt.Println(item.ID)
}
Output:

func (*Payments) Info

func (p *Payments) Info(id string) (*models.Payment, error)

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

В ответ на запрос придет объект платежа в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	p := yookassa.NewClient(ycID, ycKey).Payments()

	item, _ := p.Info("215d8da0-000f-50be-b000-0003308c89be")

	fmt.Println(item.ID)
}
Output:

func (*Payments) List

Запрос списка платежей

В ответ на запрос вернется список платежей с учетом переданных параметров. В списке будет информация о платежах, созданных за последние 3 года. Список будет отсортирован по времени создания платежей в порядке убывания.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	p := yookassa.NewClient(ycID, ycKey).Payments()

	list, _ := p.List(models.ListRequest{
		Limit: 10,
	})

	for _, item := range list.Items {
		fmt.Println(item.ID)
	}
}
Output:

type Payouts

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

Структура содержит методы для работы с выплатами

ref: https://yookassa.ru/developers/api#payout

func (*Payouts) Create

func (p *Payouts) Create(req models.PayoutRequest) (*models.Payout, error)

Создание новой выплаты

В ответ на запрос придет объект выплаты в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	p := yookassa.NewClient(ycID, ycKey).Payouts()

	item, _ := p.Create(models.PayoutRequest{
		Amount: models.Amount{
			Value:    "320.00",
			Currency: "RUB",
		},
		PayoutToken: "<Синоним банковской карты>",
		Description: "Выплата по заказу №37",
		Metadata: models.Metadata{
			"order_id": "37",
		},
		Deal: &models.DealItem{
			ID: "dl-285e5ee7-0022-5000-8000-01516a44b147",
		},
	})

	fmt.Println(item.ID)
}
Output:

func (*Payouts) Info

func (p *Payouts) Info(id string) (*models.Payout, error)

Запрос информации о выплате по ее ID

В ответ на запрос придет объект выплаты в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	p := yookassa.NewClient(ycID, ycKey).Payouts()

	item, _ := p.Info("po-285ec15d-0003-5000-a000-08d1bec7dade")

	fmt.Println(item.ID)
}
Output:

type PersonalData

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

Структура предоставляет доступ к методам управления персональными данными

ref: https://yookassa.ru/developers/api#personal_data

func (*PersonalData) Create

Создание персональных данных

Используйте этот запрос, чтобы создать в ЮKassa объект персональных данных. В запросе необходимо передать фамилию, имя, отчество пользователя и указать, с какой целью эти данные будут использоваться.

В ответ на запрос придет объект персональных данных в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	pd := yookassa.NewClient(ycID, ycKey).PersonalData()

	item, _ := pd.Create(models.PersonalDataRequest{
		Type:       "sbp_payout_recipient",
		LastName:   "Иванов",
		FirstName:  "Иван",
		MiddleName: "Иванович",
		Metadata: models.Metadata{
			"recipient_id": "37",
		},
	})

	fmt.Println(item.ID)
}
Output:

func (*PersonalData) Info

func (pd *PersonalData) Info(id string) (*models.PersonalData, error)

Информация о персональных данных

С помощью этого запроса вы можете получить информацию о текущем статусе объекта персональных данных по его уникальному идентификатору.

В ответ на запрос придет объект персональных данных в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	pd := yookassa.NewClient(ycID, ycKey).PersonalData()

	item, _ := pd.Info("some_pd_id")

	fmt.Println(item.ID)
}
Output:

type Reciepts

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

Структура содержит методы для работы с чеками

ref: https://yookassa.ru/developers/api#refund

func (*Reciepts) Create

func (r *Reciepts) Create(req models.ReceiptRequest) (*models.Receipt, error)

Создание нового чека

В ответ на запрос придет объект чека в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	r := yookassa.NewClient(ycID, ycKey).Reciepts()

	item, _ := r.Create(models.RecieptRequest{
		Customer: models.Customer{
			FullName: "Ivanov Ivan Ivanovich",
			Email:    "email@email.ru",
			Phone:    "79211234567",
			INN:      "6321341814",
		},
		PaymentID: "24b94598-000f-5000-9000-1b68e7b15f3f",
		Type:      "payment",
		Send:      true,
		Items: []models.Item{
			{
				Description: "Наименование товара 1",
				Quantity:    "1",
				Amount: models.Amount{
					Value:    "14000.00",
					Currency: "RUB",
				},
				VATCode:             2,
				PaymentMode:         "full_payment",
				PaymentSubject:      "commodity",
				CountryOfOriginCode: "CN",
			},
		},
		Settlements: []models.Settlement{
			{
				Type: "prepayment",
				Amount: models.Amount{
					Value:    "8000.00",
					Currency: "RUB",
				},
			},
			{
				Type: "prepayment",
				Amount: models.Amount{
					Value:    "6000.00",
					Currency: "RUB",
				},
			},
		},
	})

	fmt.Sprintln(item.ID)
}
Output:

func (*Reciepts) Info

func (r *Reciepts) Info(id string) (*models.Receipt, error)

Запрос информации о чеке

В ответ на запрос придет объект чека в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	r := yookassa.NewClient(ycID, ycKey).Reciepts()

	info, _ := r.Info("rt-2da5c87d-0384-50e8-a7f3-8d5646dd9e10")

	fmt.Sprintln(info.ID)
}
Output:

func (*Reciepts) List

Получение списока чеков

В ответ на запрос вернется список чеков с учетом переданных параметров. В списке будет информация о чеках, созданных за последние 3 года. Список будет отсортирован по времени создания чеков в порядке убывания.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	r := yookassa.NewClient(ycID, ycKey).Reciepts()

	list, _ := r.List(models.ListRequest{Limit: 10})

	for _, item := range list.Items {
		fmt.Println(item.ID)
	}
}
Output:

type Refounds

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

Структура содержит методы для работы с возвратами

ref: https://yookassa.ru/developers/api#refund

func (*Refounds) Create

func (r *Refounds) Create(req models.RefoundRequest) (*models.Refound, error)

Создание возврата

В ответ на запрос придет объект возврата в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	r := yookassa.NewClient(ycID, ycKey).Refounds()

	item, _ := r.Create(models.RefoundRequest{
		Amount: models.Amount{
			Value:    "2.00",
			Currency: "RUB",
		},
		PaymentID: "215d8da0-000f-50be-b000-0003308c89be",
	})

	fmt.Println(item.ID)
}
Output:

func (*Refounds) Info

func (r *Refounds) Info(id string) (*models.Refound, error)

Запрос информации о возврате

В ответ на запрос придет объект возврата в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	r := yookassa.NewClient(ycID, ycKey).Refounds()

	item, _ := r.Info("215d8da0-000f-50be-b000-0003308c89be")

	fmt.Println(item.ID)
}
Output:

func (*Refounds) List

Запрос списка возвратов

В ответ на запрос вернется список возвратов с учетом переданных параметров. В списке будет информация о возвратах, созданных за последние 3 года. Список будет отсортирован по времени создания возвратов в порядке убывания.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	r := yookassa.NewClient(ycID, ycKey).Refounds()

	list, _ := r.List(models.ListRequest{
		Limit: 10,
	})

	for _, item := range list.Items {
		fmt.Println(item.ID)
	}
}
Output:

type SelfEmployed

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

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

ref: https://yookassa.ru/developers/api#self_employed

func (*SelfEmployed) Create

Создание нового самозанятого

Используйте этот запрос, чтобы создать в ЮKassa объект самозанятого. В запросе необходимо передать ИНН или телефон самозанятого для идентификации в сервисе Мой налог, сценарий подтверждения пользователем заявки ЮMoney на получение прав для регистрации чеков и описание самозанятого.

Идентификатор созданного объекта самозанятого необходимо использовать в запросе на проведение выплаты.

В ответ на запрос придет объект самозанятого в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	se := yookassa.NewClient(ycID, ycKey).SelfEmployed()

	item, _ := se.Create(models.SelfEmployedRequest{
		Itn:         "123456789012",
		Description: "Курьер 001",
		Confirmation: &models.Confirmation{
			Type: "redirect",
		},
		Metadata: models.Metadata{
			"courier_id": "001",
		},
	})

	fmt.Printf(item.ID)
}
Output:

func (*SelfEmployed) Info

func (se *SelfEmployed) Info(id string) (*models.SelfEmployed, error)

Информация о самозанятом

С помощью этого запроса вы можете получить информацию о текущем статусе самозанятого по его уникальному идентификатору.

В ответ на запрос придет объект самозанятого в актуальном статусе.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID  = ""
	ycKey = ""
)

func main() {
	se := yookassa.NewClient(ycID, ycKey).SelfEmployed()

	item, _ := se.Info("se_id")

	fmt.Printf(item.ID)
}
Output:

type Webhooks

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

func (*Webhooks) Create

func (w *Webhooks) Create(req models.WebhookRequest) (*models.Webhook, error)

Создание webhook

Запрос позволяет подписаться на уведомления об основных событиях (например, переход платежа в статус succeeded).

Если вы хотите получать уведомления о нескольких событиях, вам нужно для каждого из них создать свой webhook. Для каждого OAuth-токена нужно создавать свой набор webhook.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/models"
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID    = ""
	ycKey   = ""
	ycToken = ""
)

func main() {
	webhooks := yookassa.NewClient(ycID, ycKey).Webhooks(ycToken)

	wh, _ := webhooks.Create(models.WebhookRequest{
		Event: "payment.succeeded",
		URL:   "https://www.merchant-website.com/notification_url",
	})

	fmt.Println(wh.ID)
}
Output:

func (*Webhooks) Delete

func (w *Webhooks) Delete(id string) error

Удаление webhook

Запрос позволяет отписаться от уведомлений о событии для переданного OAuth-токена. Чтобы удалить webhook, вам нужно передать в запросе его идентификатор.

Example
package main

import (
	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID    = ""
	ycKey   = ""
	ycToken = ""
)

func main() {
	webhooks := yookassa.NewClient(ycID, ycKey).Webhooks(ycToken)
	_ = webhooks.Delete("some_webhook_id")
}
Output:

func (*Webhooks) List

func (w *Webhooks) List() (*models.WebhookListResponse, error)

Список созданных webhook

Запрос позволяет узнать, какие webhook есть для переданного OAuth-токена.

В ответ на запрос придет актуальный список объектов webhook.

Example
package main

import (
	"fmt"

	"github.com/ReanSn0w/go-yookassa/pkg/yookassa"
)

const (
	ycID    = ""
	ycKey   = ""
	ycToken = ""
)

func main() {
	webhooks := yookassa.NewClient(ycID, ycKey).Webhooks(ycToken)

	list, _ := webhooks.List()

	for _, wh := range list.Items {
		fmt.Println(wh.ID)
	}
}
Output:

Jump to

Keyboard shortcuts

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