v4

package
v0.0.0-...-542cc1d Latest Latest
Warning

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

Go to latest
Published: Jan 28, 2025 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ApiUrl = "https://api.payzen.com.br/api-payment/V4"
)

Variables

This section is empty.

Functions

func ConvertAmount

func ConvertAmount(amount float64) int64

func GenerateSignatureFromBody

func GenerateSignatureFromBody(cert string, krAnswer string) string

Types

type Answer

type Answer struct {
	OrderStatus          string         `json:"orderStatus"` // PAID, UNPAID, RUNNING, PARTIALLY_PAID
	OrderCycle           string         `json:"orderCycle"`  // OPEN, CLOSED
	ShopId               string         `json:"shopId"`
	OrderDetails         *OrderDetails  `json:"orderDetails"`
	Transactions         []*Transaction `json:"transactions"`
	TransactionDetails   *Transaction   `json:"transactionDetails"`
	DetailedErrorCode    string         `json:"detailedErrorCode"`    // erro da adquirente
	DetailedErrorMessage string         `json:"detailedErrorMessage"` // erro da adquirente
	ErrorCode            string         `json:"errorCode"`            // erro payzen
	ErrorMessage         string         `json:"errorMessage"`         // erro payzen
	CancellationDate     string         `json:"cancellationDate"`     // token cancelado
	ResponseCode         int64          `json:"responseCode,omitempty"`

	PaymentMethodToken string `json:"paymentMethodToken"`

	SubscriptionId string `json:"subscriptionId"`

	OrderId             string `json:"orderId"`                       //: "55d979c6-e3c8-45b1-bc63-a5d3f4c1969b",
	Description         string `json:"description"`                   //: "",
	Rrule               string `json:"rrule"`                         //: "RRULE:COUNT=12;FREQ=MONTHLY;BYMONTHDAY=28,29,30,31;BYSETPOS=-1",
	EffectDate          string `json:"effectDate"`                    //: "2021-07-30T18:46:12+00:00",
	CancelDate          string `json:"cancelDate"`                    //: null,
	InitialAmount       int64  `json:"initialAmount,omitempty"`       //: null,
	InitialAmountNumber int64  `json:"initialAmountNumber,omitempty"` //: null,
	PastPaymentsNumber  int64  `json:"pastPaymentsNumber,omitempty"`  //: 0,
	TotalPaymentsNumber int64  `json:"totalPaymentsNumber,omitempty"` //: 12,
	Metadata            string `json:"metadata"`                      //: null,
}

func (*Answer) IsCancelled

func (this *Answer) IsCancelled() bool

type ApiMode

type ApiMode int64
const (
	Test ApiMode = 1 + iota
	Prod
)

type Authentication

type Authentication struct {
	UserName     string
	PasswordProd string
	PasswordTest string
}

func NewAuthentication

func NewAuthentication(username string, passwordProd string, passwordTest string) *Authentication

func (*Authentication) CreateBasicAuth

func (this *Authentication) CreateBasicAuth(mode ApiMode) string

type BillingDetails

type BillingDetails struct {
	Address         string `json:"address" valid:""`
	Address2        string `json:"address2,omitempty"`
	StreetNumber    string `json:"streetNumber" valid:""`
	ZipCode         string `json:"zipCode" valid:""`
	CellPhoneNumber string `json:"cellPhoneNumber,omitempty"`
	PhoneNumber     string `json:"phoneNumber,omitempty"`
	City            string `json:"city" valid:""`
	State           string `json:"state" valid:""`
	Country         string `json:"country" valid:""`
	District        string `json:"district" valid:""`
	FirstName       string `json:"firstName" valid:"Required"`
	LastName        string `json:"lastName" valid:"Required"`
	IdentityCode    string `json:"identityCode" valid:"Required"` // documento
	Category        string `json:"category"`                      // PRIVATE, COMPANY
	LegalName       string `json:"legalName,omitempty"`           // razão social
	Language        string `json:"language"`                      // PT
}

func NewBillingDetails

func NewBillingDetails() *BillingDetails

type Card

type Card struct {
	PaymentMethodType     string `json:"paymentMethodType" valid:"Required"` // CARD
	Number                string `json:"pan" valid:"Required"`               // card number
	ExpiryMonth           int64  `json:"expiryMonth" valid:"Required"`
	ExpiryYear            int64  `json:"expiryYear" valid:"Required"`
	SecurityCode          string `json:"securityCode" valid:"Required"`
	Brand                 string `json:"brand" valid:"Required"`
	CardHolderName        string `json:"cardHolderName" valid:"Required"`
	FirstInstallmentDelay int64  `json:"firstInstallmentDelay,omitempty"`
	InstallmentNumber     int64  `json:"installmentNumber"`
	PaymentMethodToken    string `json:"paymentMethodToken,omitempty"`
}

func NewCard

func NewCard() *Card

type CardOptions

type CardOptions struct {
	ManualValidation      string `json:"manualValidation"` // NO
	CaptureDelay          int64  `json:"captureDelay"`
	FirstInstallmentDelay int64  `json:"firstInstallmentDelay"` // Número de meses adiados a serem aplicados à primeira parcela para um pagamento parcelado.
	InstallmentNumber     int64  `json:"installmentNumber"`     // parcelas
	Retry                 int64  `json:"retry"`                 // default 3
}

type CartItemInfo

type CartItemInfo struct {
	ProductLabel string `json:"productLabel,omitempty"`

	/*
		FOOD_AND_GROCERY 	Produtos alimentares e de mercearia
		AUTOMOTIVE 	Automóvel / Moto
		ENTERTAINMENT 	Lazer / Cultura
		HOME_AND_GARDEN 	Casa e jardim
		HOME_APPLIANCE 	Equipamentos para a casa
		AUCTION_AND_GROUP_BUYING 	Leilões e compras em grupo
		FLOWERS_AND_GIFTS 	Flores e presentes
		COMPUTER_AND_SOFTWARE 	Computadores e softwares
		HEALTH_AND_BEAUTY 	Saúde e beleza
		SERVICE_FOR_INDIVIDUAL 	Serviços para pessoa física
		SERVICE_FOR_BUSINESS 	Serviços para pessoa jurídica
		SPORTS 	Esportes
		CLOTHING_AND_ACCESSORIES 	Roupas e acessórios
		TRAVEL 	Viagem
		HOME_AUDIO_PHOTO_VIDEO 	Som, imagem e vídeo
		TELEPHONY 	Telefonia
	*/
	ProductType string `json:"productType,omitempty"`

	ProductRef    string `json:"productRef,omitempty"`
	ProductQty    string `json:"productQty,omitempty"`
	ProductAmount string `json:"productAmount,omitempty"`
	ProductVat    string `json:"productVat,omitempty"` // imposto
}

func NewCartItemInfo

func NewCartItemInfo() *CartItemInfo

type Customer

type Customer struct {
	Email           string           `json:"email" valid:"Required"`
	IpAddress       string           `json:"ipAddress,omitempty"`
	Reference       string           `json:"reference,omitempty"`
	BillingDetails  *BillingDetails  `json:"billingDetails"`
	ShippingDetails *ShippingDetails `json:"shippingDetails"`
	ShoppingCart    *ShoppingCart    `json:"shoppingCart"`
}

func NewCustomer

func NewCustomer() *Customer

type Device

type Device struct {
	DeviceType     string `json:"deviceType" valid:"Required"`
	AcceptHeader   string `json:"acceptHeader" valid:"Required"`
	ColorDepth     string `json:"colorDepth" valid:"Required"`
	JavaEnabled    bool   `json:"javaEnabled" valid:"Required"`
	Language       string `json:"language" valid:"Required"`
	ScreenHeight   int64  `json:"screenHeight" valid:"Required"`
	ScreenWidth    int64  `json:"screenWidth" valid:"Required"`
	TimeZoneOffset int64  `json:"timeZoneOffset" valid:""`
	UserAgent      string `json:"userAgent" valid:"Required"`
	Ip             string `json:"ip,omitempty"`
}

func NewDevice

func NewDevice() *Device

type OrderDetails

type OrderDetails struct {
	OrderEffectiveAmount int64     `json:"orderEffectiveAmount"`
	OrderTotalAmount     int64     `json:"orderTotalAmount"`
	Mode                 string    `json:"mode"` // TEST,PRODUCTION
	OrderCurrency        string    `json:"orderCurrency"`
	OrderId              string    `json:"orderId"`
	Customer             *Customer `json:"customer"`
}

type PayZen

type PayZen struct {
	Mode           ApiMode
	Authentication *Authentication

	EntityValidator       *validator.EntityValidator
	EntityValidatorResult *validator.EntityValidatorResult

	ValidationErrors   map[string]string
	HasValidationError bool
	Lang               string

	Debug bool
}

func NewPayZen

func NewPayZen(lang string, mode ApiMode, authentication *Authentication) *PayZen

func (*PayZen) PaymentCancelOrRefund

func (this *PayZen) PaymentCancelOrRefund(transactionUuid string, amount float64) (*PayZenResult, error)

func (*PayZen) PaymentCapture

func (this *PayZen) PaymentCapture(transactionUuid string) (*PayZenResult, error)

func (*PayZen) PaymentCreate

func (this *PayZen) PaymentCreate(payment *Payment) (*PayZenResult, error)

func (*PayZen) SetDebug

func (this *PayZen) SetDebug()

func (*PayZen) SetValidationError

func (this *PayZen) SetValidationError(key string, value string)

func (*PayZen) SubscriptionCancel

func (this *PayZen) SubscriptionCancel(subscriptionId string, paymentMethodToken string) (*PayZenResult, error)

func (*PayZen) SubscriptionCreate

func (this *PayZen) SubscriptionCreate(subscription *Subscription) (*PayZenResult, error)

func (*PayZen) SubscriptionGet

func (this *PayZen) SubscriptionGet(subscriptionId string, paymentMethodToken string) (*PayZenResult, error)

func (*PayZen) SubscriptionUpdate

func (this *PayZen) SubscriptionUpdate(subscription *Subscription) (*PayZenResult, error)

func (*PayZen) TokenCancel

func (this *PayZen) TokenCancel(paymentMethodToken string) (*PayZenResult, error)

func (*PayZen) TokenCreate

func (this *PayZen) TokenCreate(payment *Payment) (*PayZenResult, error)

func (*PayZen) TokenGet

func (this *PayZen) TokenGet(paymentMethodToken string) (*PayZenResult, error)

func (*PayZen) TokenUpdate

func (this *PayZen) TokenUpdate(payment *Payment) (*PayZenResult, error)

func (*PayZen) TransactionGet

func (this *PayZen) TransactionGet(transactionUuid string) (*PayZenResult, error)

type PayZenResult

type PayZenResult struct {
	Response             *PaymentResponse
	Transaction          *TransationResponse
	Errors               map[string]string
	Message              string
	Error                bool
	EmptyResponseSuccess bool
}

func NewPayZenResultWithResponse

func NewPayZenResultWithResponse(response *PaymentResponse) *PayZenResult

func NewPayZenResultWithTransaction

func NewPayZenResultWithTransaction(transaction *TransationResponse) *PayZenResult

func (*PayZenResult) BuildResult

func (this *PayZenResult) BuildResult()

func (*PayZenResult) GetHttpRequest

func (this *PayZenResult) GetHttpRequest() string

func (*PayZenResult) GetHttpResponse

func (this *PayZenResult) GetHttpResponse() string

func (*PayZenResult) GetResponse

func (this *PayZenResult) GetResponse() *Answer

func (*PayZenResult) GetTransaction

func (this *PayZenResult) GetTransaction() *Transaction

func (*PayZenResult) GetTransactions

func (this *PayZenResult) GetTransactions() []*Transaction

func (*PayZenResult) IsCancelled

func (this *PayZenResult) IsCancelled() bool

func (*PayZenResult) IsResponse

func (this *PayZenResult) IsResponse() bool

func (*PayZenResult) IsTransaction

func (this *PayZenResult) IsTransaction() bool

func (*PayZenResult) SetHttpRequest

func (this *PayZenResult) SetHttpRequest(httpRequest string)

func (*PayZenResult) SetHttpResponse

func (this *PayZenResult) SetHttpResponse(httpResponse string)

type Payment

type Payment struct {
	PaymentOrderId     string              `json:"paymentOrderId,omitempty"`
	OrderId            string              `json:"orderId" valid:"Required"`
	Amount             int64               `json:"amount" valid:"Required"`
	Currency           string              `json:"currency" valid:"Required"`
	IpnTargetUrl       string              `json:"ipnTargetUrl,omitempty"`       // URL de notificação estantânea
	PaymentMethodToken string              `json:"paymentMethodToken,omitempty"` // topken de um cartão
	Customer           *Customer           `json:"customer"`
	TransactionOptions *TransactionOptions `json:"transactionOptions,omitempty"`
	FormAction         string              `json:"formAction" valid:"Required"` // PAYMENT
	PaymentForms       []*Card             `json:"paymentForms"`
	Device             *Device             `json:"device"`
	Metadata           map[string]string   `json:"metadata,omitempty"`
	FingerPrintId      string              `json:"fingerPrintId,omitempty"`
	Card               *Card               `json:"-"`
}

func NewPayment

func NewPayment(amount float64) *Payment

func (*Payment) SetAmount

func (this *Payment) SetAmount(amount float64)

type PaymentResponse

type PaymentResponse struct {
	Answer              *Answer `json:"answer"`
	ApplicationProvider string  `json:"applicationProvider"` //"PAYZEN",
	ApplicationVersion  string  `json:"applicationVersion"`  //"5.26.0",
	Metadata            string  `json:"metadata"`            //null,
	Mode                string  `json:"mode"`                //"TEST",
	ServerDate          string  `json:"serverDate"`          //"2021-07-29T22:15:42+00:00",
	ServerUrl           string  `json:"serverUrl"`           //"https://api.payzen.com.br",
	Status              string  `json:"status"`              //"ERROR",
	Ticket              string  `json:"ticket"`              //"a4609adcc22e429ca6cd34526d48cccf",
	Version             string  `json:"version"`             //"V4",
	WebService          string  `json:"webService"`          //"PCI/Charge/CreateToken"
	Response            string
	Request             string
}

type PaymentStatus

type PaymentStatus int64
const (
	UNPAID
	RUNNING
	PARTIALLY_PAID
)

type ShippingDetails

type ShippingDetails struct {
	Category            string `json:"category,omitempty"` // PRIVATE or COMPANY
	FirstName           string `json:"firstName" valid:"Required"`
	LastName            string `json:"lastName" valid:"Required"`
	PhoneNumber         string `json:"phoneNumber,omitempty"`
	StreetNumber        string `json:"streetNumber" valid:""`
	Address             string `json:"address" valid:"Required"`
	Address2            string `json:"address2,omitempty"`
	District            string `json:"district" valid:"Required"`
	ZipCode             string `json:"zipCode" valid:""`
	City                string `json:"city" valid:"Required"`
	State               string `json:"state" valid:"Required"`
	Country             string `json:"country" valid:"Required"`
	DeliveryCompanyName string `json:"deliveryCompanyName,omitempty"` // PRIVATE or COMPANY
	ShippingSpeed       string `json:"shippingSpeed,omitempty"`       // STANDARD EXPRESS PRIORITY
	ShippingMethod      string `json:"shippingMethod,omitempty"`      // RECLAIM_IN_SHOP (retirada na loja) VERIFIED_ADDRESS (entrega no endereço)
	LegalName           string `json:"legalName,omitempty"`
	IdentityCode        string `json:"identityCode,omitempty"`
}

func NewShippingDetails

func NewShippingDetails() *ShippingDetails

type ShoppingCart

type ShoppingCart struct {
	InsuranceAmount string          `json:"insuranceAmount,omitempty"` // seguro
	ShippingAmount  string          `json:"shippingAmount,omitempty"`  // despesas
	TaxAmount       string          `json:"taxAmount,omitempty"`       // impostos
	CartItemInfo    []*CartItemInfo `json:"cartItemInfo"`
}

func NewShoppingCart

func NewShoppingCart() *ShoppingCart

type Subscription

type Subscription struct {
	SubscriptionId     string `json:"subscriptionId,omitempty"`
	OrderId            string `json:"orderId" valid:"Required"`
	Amount             int64  `json:"amount" valid:"Required"`
	Currency           string `json:"currency" valid:"Required"`
	PaymentMethodToken string `json:"paymentMethodToken" valid:"Required"`
	//subscription
	Comment             string            `json:"comment"`
	Description         string            `json:"description"`
	EffectDate          string            `json:"effectDate" valid:"Required"`   // date de inicio da recorrencia
	InitialAmount       int64             `json:"initialAmount,omitempty"`       // Valor das primeiras parcelas. O valor deve ser um número inteiro positivo (ex: 1234 para R$ 12,34).
	InitialAmountNumber int64             `json:"initialAmountNumber,omitempty"` // Quantidade de parcelas às quais aplicar o valor definido em initialAmount.
	Metadata            map[string]string `json:"metadata,omitempty"`
	FingerPrintId       string            `json:"fingerPrintId,omitempty"`
	Rrule               string            `json:"rrule" valid:"Required"`

	TransactionOptions *TransactionOptions `json:"transactionOptions,omitempty"`

	Count                   int64                 `json:"-"`
	Cycle                   api.SubscriptionCycle `json:"-"`
	PaymentAtLastDayOfMonth bool                  `json:"-"`
	PaymentAtDayOfMonth     int64                 `json:"-"`
}

func NewSubscription

func NewSubscription(orderId string, amount float64, token string, effectDate time.Time) *Subscription

func (*Subscription) BuildRule

func (this *Subscription) BuildRule() string

func (*Subscription) SetAmount

func (this *Subscription) SetAmount(amount float64)

func (*Subscription) SetInitialAmount

func (this *Subscription) SetInitialAmount(initialAmount float64)

func (*Subscription) SetRule

func (this *Subscription) SetRule(cycle api.SubscriptionCycle, count int64, lastDayOfMonth bool, dayOfMonth int64)

type SubscriptionDetails

type SubscriptionDetails struct {
	SubscriptionId string `json:"subscriptionId"`
}

type Transaction

type Transaction struct {
	Amount int64 `json:"amount"`

	Currency             string              `json:"currency"`
	DetailedErrorCode    string              `json:"detailedErrorCode"`    // erro da adquirente
	DetailedErrorMessage string              `json:"detailedErrorMessage"` // erro da adquirente
	ErrorCode            string              `json:"errorCode"`            // erro payzen
	ErrorMessage         string              `json:"errorMessage"`         // erro payzen
	DetailedStatus       string              `json:"detailedStatus"`       //
	OperationType        string              `json:"operationType"`        // DEBIT,CREDIT,VERIFICATION
	Uuid                 string              `json:"uuid"`
	PaymentMethodToken   string              `json:"paymentMethodToken"`
	PaymentMethodType    string              `json:"paymentMethodType"` // CARD
	ShopId               string              `json:"shopId"`
	Status               string              `json:"status"`
	TransactionDetails   *TransactionDetails `json:"transactionDetails"`
	TransactionStatus    TransactionStatus
	PaymentStatus        PaymentStatus
	ResponseCode         int64 `json:"responseCode,omitempty"`
	// contains filtered or unexported fields
}

func (*Transaction) BuildStatus

func (this *Transaction) BuildStatus()

func (*Transaction) GetSOAPStatus

func (this *Transaction) GetSOAPStatus() api.TransactionStatus

func (*Transaction) HasError

func (this *Transaction) HasError() bool

type TransactionDetails

type TransactionDetails struct {
	ExternalTransactionId string               `json:"externalTransactionId"` // nsu
	Nsu                   string               `json:"nsu"`                   // nsu
	SubscriptionDetails   *SubscriptionDetails `json:"subscriptionDetails"`
}

type TransactionOptions

type TransactionOptions struct {
	CardOptions *CardOptions `json:"cardOptions"`
}

type TransactionStatus

type TransactionStatus int64
const (
	ACCEPTED TransactionStatus = 1 + iota
	AUTHORISED
	AUTHORISED_TO_VALIDATE
	CANCELLED
	CAPTURED
	EXPIRED
	PARTIALLY_AUTHORISED
	REFUSED
	UNDER_VERIFICATION
	WAITING_AUTHORISATION
	WAITING_AUTHORISATION_TO_VALIDATE
	ERROR
	EMPTY
	UNKNOW
)

type TransationResponse

type TransationResponse struct {
	Answer              *Transaction `json:"answer"`
	ApplicationProvider string       `json:"applicationProvider"` //"PAYZEN",
	ApplicationVersion  string       `json:"applicationVersion"`  //"5.26.0",
	Metadata            string       `json:"metadata"`            //null,
	Mode                string       `json:"mode"`                //"TEST",
	ServerDate          string       `json:"serverDate"`          //"2021-07-29T22:15:42+00:00",
	ServerUrl           string       `json:"serverUrl"`           //"https://api.payzen.com.br",
	Status              string       `json:"status"`              //"ERROR",
	Ticket              string       `json:"ticket"`              //"a4609adcc22e429ca6cd34526d48cccf",
	Version             string       `json:"version"`             //"V4",
	WebService          string       `json:"webService"`          //"PCI/Charge/CreateToken"
	Response            string
	Request             string
}

type Webhook

type Webhook struct {
	JsonParser *support.JsonParser
	Debug      bool

	EntityValidator    *validator.EntityValidator
	ValidationErrors   map[string]string
	HasValidationError bool
}

func NewDefaultWebhook

func NewDefaultWebhook() *Webhook

func NewWebhook

func NewWebhook(lang string, sallerToken string) *Webhook

func (*Webhook) Parse

func (this *Webhook) Parse(body []byte) (*WebhookData, error)

func (*Webhook) SetDebug

func (this *Webhook) SetDebug()

type WebhookData

type WebhookData struct {
	Answer          *Answer `json:"kr-answer" valid:"Required"`
	Response        *PayZenResult
	KrAnswerType    string `json:"kr-answer-type" valid:"Required"`
	KrAnswer        string
	KrHash          string `json:"kr-hash" valid:"Required"`
	KrHashAlgorithm string `json:"kr-hash-algorithm" valid:"Required"`
	KrHashKey       string `json:"kr-hash-key" valid:"Required"`
	Raw             string `json:"row" valid:"Required"`
}

func NewWebhookData

func NewWebhookData() *WebhookData

Jump to

Keyboard shortcuts

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