payze_go

package module
v0.2.2-alpha Latest Latest
Warning

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

Go to latest
Published: Aug 2, 2021 License: MIT Imports: 9 Imported by: 0

README

payze-go

Go library for Payze service

Documentation

Index

Constants

View Source
const (
	PayZeApiV1URL     = "https://payze.io/api/v1"
	DefaultHTTPMethod = "POST"
)

Connection based constants

View Source
const (
	JustPay             = "justPay"
	JustPayAndSplit     = JustPay
	AddCard             = "addCard"
	PayWithCard         = "payWithCard"
	PayWithCardAndSplit = PayWithCard
	TransactionInfo     = "getTransactionInfo"
	Refund              = "refund"
	Balance             = "getBalance"
	CommitTransaction   = "commit"
	CreateSubscription  = "subscription"
	SubscriptionStatus  = "subscriptionStatus"
	CancelSubscription  = "cancelSubscription"
)

Action Method names

View Source
const (
	TransactionBlocked                  = "Blocked"
	TransactionCardAdded                = "CardAdded"
	TransactionCardAddedForSubscription = "CardAddedForSubscription"
	TransactionCommitFailed             = "CommitFailed"
	TransactionCommitted                = "Committed"
	TransactionCreated                  = "Created"
	TransactionNothing                  = "Nothing"
	TransactionError                    = "Error"
	TransactionPlatformReceived         = "PlatformReceived"
	TransactionRefunded                 = "Refunded"
	TransactionRefundedPartially        = "RefundedPartially"
	TransactionRejected                 = "Rejected"
	TransactionTimeout                  = "Timeout"
)

Transaction Statuses

View Source
const (
	SubscriptionCreated   = "Created"
	SubscriptionStarted   = "Started"
	SubscriptionActive    = "Active"
	SubscriptionCancelled = "Cancelled"
)
View Source
const (
	SubscriptionIntervalTypeMonth = "Month"
	SubscriptionIntervalTypeDay   = "Day"
	SubscriptionIntervalTypeWeek  = "Week"
	SubscriptionIntervalTypeYear  = "Year"
)
View Source
const (
	ChannelEmail = "EMAIL"
	ChannelSMS   = "SMS"
)
View Source
const (
	GEL = "GEL"
	USD = "USD"
)

Currencies

Variables

This section is empty.

Functions

This section is empty.

Types

type Callbacks

type Callbacks struct {
	CallbackSuccess string `json:"callback,omitempty"`
	CallbackFail    string `json:"callbackError,omitempty"`
}

type Client

type Client struct {
	sync.Mutex
	Client   *http.Client
	ClientID string
	Secret   string
	APIBase  string
	Log      io.Writer // If user sets log file logs will go there
	//Default callbacks are used in case callbacks arent passed for each request data
	DefaultCallbacks Callbacks
}

* Client represents a PayZe REST API Client

func NewClient

func NewClient(clientID string, secret string, APIBase string) (*Client, error)

* NewClient returns new Client struct APIBase is a base API URL

func (*Client) AddCard

func (c *Client) AddCard(callbacks Callbacks) (*PayZeResponse, error)

func (*Client) CancelSubscription

func (c *Client) CancelSubscription(subscriptionID string) (*PayZeSubscriptionResponse, error)

func (*Client) CommitTransaction

func (c *Client) CommitTransaction()

func (*Client) CreateRequestPayload

func (c *Client) CreateRequestPayload(action string, data interface{}) PayZeRequest

*CreateRequestPayload Create proper payload for PayZe request

func (*Client) CreateSubscription

func (c *Client) CreateSubscription(subData SubscriptionRequestData) (*PayZeResponse, error)

func (*Client) GetMerchantBalance

func (c *Client) GetMerchantBalance()

func (*Client) GetTransactionInfo

func (c *Client) GetTransactionInfo(transactionID string) (*PayZeTransactionInfoResponse, error)

func (*Client) JustPay

func (c *Client) JustPay(paymentData PayRequestData) (*PayZeResponse, error)

func (*Client) JustPayAndSplit

func (c *Client) JustPayAndSplit(amount float64, commitNow bool, currency string, split []SplitParticipant) error

func (*Client) NewRequest

func (c *Client) NewRequest(method, url string, payload interface{}) (*http.Request, error)

* NewRequest constructs a new http.Request, Marshal payload to json bytes

func (*Client) PayWithCard

func (c *Client) PayWithCard(paymentData PayWithCardRequestData) (*PayZeResponse, error)

func (*Client) PayWithCardAndSplit

func (c *Client) PayWithCardAndSplit()

func (*Client) RefundTransaction

func (c *Client) RefundTransaction()

func (*Client) Send

func (c *Client) Send(req *http.Request, v interface{}) error

* Send makes a request to the API, the response body will be unmarshalled into v, which should be correct struct for the given request body passed by reference or it can be an io.Writer, in which case the response bytes will be written to it

func (*Client) SetHTTPClient

func (c *Client) SetHTTPClient(client *http.Client)

* SetHTTPClient sets *http.Client as current client client

func (*Client) SetLog

func (c *Client) SetLog(log io.Writer)

* SetLog will set/change the logging destination.

func (*Client) SubscriptionStatus

func (c *Client) SubscriptionStatus(subscriptionID string) (*PayZeSubscriptionResponse, error)

type ErrorResponse

type ErrorResponse struct {
	Response  *http.Response `json:"-"`
	Data      []byte         `json:"-"`
	Timestamp string         `json:"timestamp"`
	Status    uint           `json:"status"`
	ErrorHint string         `json:"error"`
	Message   string         `json:"message"`
	Path      string         `json:"path"`
}

func (ErrorResponse) Error

func (e ErrorResponse) Error() string

type LogEntry

type LogEntry struct {
	Date         string `json:"date"` //TODO for future parse dates
	StatusBefore string `json:"statusBefore"`
	Status       string `json:"status"`
	ChangeType   string `json:"changeType"`
}

*LogEntry is an entry of logs array returned during action: GetTransactionInfo

type PayRequestData

type PayRequestData struct {
	Amount       float64            `json:"amount,string"`
	Currency     string             `json:"currency"`
	Preauthorize bool               `json:"preauthorize,omitempty"`
	Info         PaymentInformation `json:"info"`
	Callbacks
}

*PayRequestData Data part of PayZe general requests

type PayWithCardRequestData

type PayWithCardRequestData struct {
	Amount       float64 `json:"amount,string"`
	Currency     string  `json:"currency"`
	Preauthorize bool    `json:"preauthorize,omitempty"`
	CardToken    string  `json:"card_token"`
}

*PayWithCardRequestData Data part of PayZe general requests for card payment

type PayZeRequest

type PayZeRequest struct {
	Method    string      `json:"method"`
	APIKey    string      `json:"apiKey"`
	APISecret string      `json:"apiSecret"`
	Data      interface{} `json:"data"`
}

*PayZeRequest PayZe general request structure

type PayZeResponse

type PayZeResponse struct {
	ID        int64         `json:"id"`
	Status    string        `json:"status"`
	Action    string        `json:"action"`
	CreatedAt string        `json:"createdDate"`
	Response  ResponseField `json:"response"`
}

*PayZeResponse PayZe general response structure

type PayZeSubscriptionResponse

type PayZeSubscriptionResponse struct {
	ID        int64                     `json:"id"`
	Status    string                    `json:"status"`
	Action    string                    `json:"action"`
	CreatedAt string                    `json:"createdDate"`
	Response  SubscriptionResponseField `json:"response"`
}

*PayZeSubscriptionResponse PayZe subscription status response structure

type PayZeTransactionInfoResponse

type PayZeTransactionInfoResponse struct {
	ID        int64                    `json:"id"`
	Status    string                   `json:"status"`
	Action    string                   `json:"action"`
	CreatedAt string                   `json:"createdDate"`
	Response  TransactionResponseField `json:"response"`
}

*PayZeTransactionInfoResponse PayZe response structure of transaction info

type PaymentInformation

type PaymentInformation struct {
	Image       string `json:"image"`
	Name        string `json:"name"`
	Description string `json:"description"`
}

type ResponseField

type ResponseField struct {
	SubscriptionID string `json:"subscriptionId,omitempty"`
	CardID         string `json:"cardId,omitempty"`
	TransactionUrl string `json:"transactionUrl,omitempty"`
	TransactionID  string `json:"transactionId,omitempty"`
}

*ResponseField response part of PayZe general requests

type SplitInfo

type SplitInfo struct {
	IBan   string  `json:"iban"`
	Amount float64 `json:"amount,string"`
	Status string  `json:"status,omitempty"`
}

*SplitInfo is an entry of splits array returned during action: GetTransactionInfo

type SplitParticipant

type SplitParticipant struct {
	IBan   string  `json:"iban"`
	Amount float64 `json:"amount,string"`
	PayIn  int     `json:"payIn"`
}

type SubscriptionRequestData

type SubscriptionRequestData struct {
	IntervalType string             `json:"intervalType"`
	Interval     uint               `json:"interval"`
	Name         string             `json:"name"`
	Channel      string             `json:"channel"`
	Description  string             `json:"description"`
	SendTo       string             `json:"sendTo"`
	Amount       float64            `json:"amount"`
	Currency     string             `json:"currency"`
	Info         PaymentInformation `json:"info"`
	Callbacks
}

type SubscriptionResponseField

type SubscriptionResponseField struct {
	ID        string `json:"id,omitempty"`
	CreatedAt string `json:"created_at,omitempty"`
	IsActive  bool   `json:"isActive,omitempty"`
	CardToken string `json:"cardToken,omitempty"`
	Status    string `json:"status,omitempty"`
	Error     string `json:"error,omitempty"`
}

*SubscriptionResponseField response part of PayZe general requests

type TransactionResponseField

type TransactionResponseField struct {
	CardMask          string      `json:"cardMask,omitempty"`
	Amount            float64     `json:"amount,omitempty"`
	Splits            []SplitInfo `json:"splits,omitempty"`
	Log               []LogEntry  `json:"log,omitempty"`
	Err               string      `json:"error,omitempty"`
	GetCanBeCommitted bool        `json:"getCanBeCommitted"`
	ResultCode        string      `json:"resultCode"`
	TransactionID     string      `json:"transactionId"`
	CommitDate        string      `json:"commit_date"`
	FinalAmount       float64     `json:"finalAmount"`
	Currency          string      `json:"currency"`
	Commission        float64     `json:"commission"`
	Refundable        bool        `json:"refundable"`
	Refunded          float64     `json:"refunded"`
	HasSplit          bool        `json:"hasSplit"`
	Status            string      `json:"status"`
	CreatedAt         string      `json:"createDate"`
}

*ResponseField response part of PayZe general requests

Jump to

Keyboard shortcuts

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