diff --git a/api/kasa.go b/api/kasa.go index c535f74..e1ded75 100644 --- a/api/kasa.go +++ b/api/kasa.go @@ -40,7 +40,7 @@ func createReceiptPayCash(PayType int, sum float64, comment string) ReceiptPay { } } -func createReceiptPayCard(PayType int, sum float64, comment string, cardmask string, bankID string) ReceiptPay { +func createReceiptPayCard(PayType int, sum float64, comment string, cardmask string, bankID string, rrnCode string, authCode string) ReceiptPay { return ReceiptPay{ Type: PayType, Sum: sum, @@ -48,6 +48,8 @@ func createReceiptPayCard(PayType int, sum float64, comment string, cardmask str Paysys: "parking_pos", Cardmask: cardmask, BankID: bankID, + Rrn: rrnCode, + AuthCode: authCode, } } @@ -59,7 +61,7 @@ func getReceiptSum(rows []ReceiptRow, taxgrp string) float64 { return sum } -func createReceipt(PayType int, sum float64, comment string, cardmask string, bankID string, name string, cnt int, price float64, disc float64, taxgrp string) Receipt { +func createReceipt(PayType int, sum float64, comment string, cardmask string, bankID string, name string, cnt int, price float64, disc float64, taxgrp string, rrnCode string, authCode string) Receipt { rows := []ReceiptRow{createReceiptRow(name, cnt, price, comment, disc, taxgrp)} sum = getReceiptSum(rows, taxgrp) @@ -69,7 +71,7 @@ func createReceipt(PayType int, sum float64, comment string, cardmask string, ba Disc: 0, DiscType: 0, Rows: rows, - Pays: []ReceiptPay{createReceiptPayCard(PayType, sum, comment, cardmask, bankID)}, + Pays: []ReceiptPay{createReceiptPayCard(PayType, sum, comment, cardmask, bankID, rrnCode, authCode)}, } fmt.Println("Receipt sum:", r.Sum) @@ -109,19 +111,19 @@ func createReceipt(PayType int, sum float64, comment string, cardmask string, ba // } // } -func createFiscal(source string, cashier string, PayType int, sum float64, comment string, cardmask string, bankID string, name string, cnt int, price float64, disc float64, taxgrp string) FiskalCheck { +func createFiscal(source string, cashier string, PayType int, sum float64, comment string, cardmask string, bankID string, name string, cnt int, price float64, disc float64, taxgrp string, rrnCode string, authCode string) FiskalCheck { return FiskalCheck{ Source: source, Fiscal: Fiscal{ Task: 1, Cashier: cashier, - Receipt: createReceipt(PayType, sum, comment, cardmask, bankID, name, cnt, price, disc, taxgrp), + Receipt: createReceipt(PayType, sum, comment, cardmask, bankID, name, cnt, price, disc, taxgrp, rrnCode, authCode), }, } } -func (k *Kasa) NewSell(ctx context.Context, PayType int, sum float64, comment string, cardmask string, bankID string, name string, cnt int, price float64, disc float64, taxgrp string) (*KasaResponse, error) { - fiscal := createFiscal("kasa", "test", PayType, sum, comment, cardmask, bankID, name, cnt, price, disc, taxgrp) +func (k *Kasa) NewSell(ctx context.Context, PayType int, sum float64, comment string, cardmask string, bankID string, name string, cnt int, price float64, disc float64, taxgrp string, rrnCode string, authCode string) (*KasaResponse, error) { + fiscal := createFiscal("kasa", "test", PayType, sum, comment, cardmask, bankID, name, cnt, price, disc, taxgrp, rrnCode, authCode) // create a POST request to the kasa api https://kasa.vchasno.ua/api/v3/fiscal/execute with resty request, err := k.resty.R().SetBody(fiscal).SetHeader("Authorization", k.token).Post("https://kasa.vchasno.ua/api/v3/fiscal/execute") diff --git a/vchasno.go b/vchasno.go index 5c0892c..d586f80 100644 --- a/vchasno.go +++ b/vchasno.go @@ -17,16 +17,23 @@ const ( ) type SellParams struct { - PayType int - Sum float64 - Comment string + PayType int + Sum float64 + Comment string + Name string + Cnt int + Price float64 + Disc float64 + Taxgrp string + CardParams CardParams +} + +type CardParams struct { Cardmask string BankID string - Name string - Cnt int - Price float64 - Disc float64 - Taxgrp string + + RrnCode string + AuthCode string } func NewVchasno(token string) *Vchasno { @@ -38,7 +45,7 @@ func NewVchasno(token string) *Vchasno { func (v *Vchasno) NewSell(params SellParams) (*api.KasaResponse, error) { ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - return v.api.NewSell(ctx, params.PayType, params.Sum, params.Comment, params.Cardmask, params.BankID, params.Name, params.Cnt, params.Price, params.Disc, params.Taxgrp) + return v.api.NewSell(ctx, params.PayType, params.Sum, params.Comment, params.CardParams.Cardmask, params.CardParams.BankID, params.Name, params.Cnt, params.Price, params.Disc, params.Taxgrp, params.CardParams.RrnCode, params.CardParams.AuthCode) } func SetDefaultParams() SellParams {