piaotong

package module
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: Oct 21, 2022 License: MIT Imports: 11 Imported by: 0

README

piaotong

GoDoc

Golang SDK for 票通

Usage

Open blue invoice

c := piaotong.New(piaotong.Config{})
resp, _ := c.OpenBlueInvoice(ctx, &piaotong.OpenBlueInvoiceRequest{})
fmt.Println(resp)

Development

Install pre-commit
# if you havn't install pre-commit on your mac
brew install pre-commit

# install pre-commit into your git hooks
pre-commit install
Install commitlint
npm install -g commitlint
npm install -g @commitlint/config-conventional
Install golangci-lint
brew install golangci/tap/golangci-lint
brew upgrade golangci/tap/golangci-lint

Add below json snappet to your vscode settings:

    "go.lintTool": "golangci-lint",
    "go.lintFlags": [
        "--fast"
      ]

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrInvalidSignature = errors.New("invalid signature")

Functions

This section is empty.

Types

type Client

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

func New

func New(config Config) *Client

func (*Client) Decrypt

func (c *Client) Decrypt(content string) ([]byte, error)

func (*Client) Encrypt

func (c *Client) Encrypt(data []byte) (string, error)

func (*Client) GenerateInvoiceReqSerialNo

func (c *Client) GenerateInvoiceReqSerialNo() string

func (*Client) GenerateSerialNo

func (c *Client) GenerateSerialNo() string

GenerateSerialNo returns a serialNo specified in the API doc.

func (*Client) GetEnterpriseInfo

func (c *Client) GetEnterpriseInfo(
	ctx context.Context, req *GetEnterpriseInfoRequest,
) (*GetEnterpriseInfoResponse, error)

func (*Client) OpenBlueInvoice

func (c *Client) OpenBlueInvoice(
	ctx context.Context, req *OpenBlueInvoiceRequest,
) (*OpenBlueInvoiceResponse, error)

func (*Client) OpenRedInvoice

func (c *Client) OpenRedInvoice(
	ctx context.Context, req *OpenRedInvoiceRequest,
) (*OpenRedInvoiceResponse, error)

func (*Client) PlatformCode

func (c *Client) PlatformCode() string

func (*Client) PlatformName

func (c *Client) PlatformName() string

func (*Client) QueryInvoice

func (c *Client) QueryInvoice(
	ctx context.Context, req *QueryInvoiceRequest,
) (*QueryInvoiceResponse, error)

func (*Client) Register

func (c *Client) Register(
	ctx context.Context, req *RegisterRequest,
) (*RegisterResponse, error)

func (*Client) SignRequest

func (c *Client) SignRequest(req *Request) error

SignRequest 对向票通发起的请求进行签名

func (*Client) SignResponse

func (c *Client) SignResponse(res *Response) error

SignResponse 对返回给票通的响应进行签名

func (*Client) VerifyRequest

func (c *Client) VerifyRequest(req *Request) error

VerifyRequest 验证票通请求签名

func (*Client) VerifyResponse

func (c *Client) VerifyResponse(res *Response) error

VerifyResponse 验证票通响应签名

type Config

type Config struct {
	Host               string
	PlatformCode       string
	PlatformName       string // 平台简称
	PlatformPrivateKey string // PKCS #1, PEM form
	PiaotongPublicKey  string // PKCS #1, PEM form
	TripleDESKey       string
}

type Error

type Error struct {
	Code     string
	Msg      string
	Sign     string
	SerialNo string
	Content  string
}

func (*Error) Error

func (e *Error) Error() string

type GetEnterpriseInfoRequest

type GetEnterpriseInfoRequest struct {
	TaxpayerNum    string `json:"taxpayerNum"`
	EnterpriseName string `json:"enterpriseName"`
}

type GetEnterpriseInfoResponse

type GetEnterpriseInfoResponse struct {
	TaxpayerNum               string `json:"taxpayerNum"`
	EnterpriseName            string `json:"enterpriseName"`
	LegalPersonName           string `json:"legalPersonName"`
	ContactsName              string `json:"contactsName"`
	ContactsEmail             string `json:"contactsEmail"`
	ContactsPhone             string `json:"contactsPhone"`
	RegionCode                string `json:"regionCode"`
	CityName                  string `json:"cityName"`
	EnterpriseAddress         string `json:"enterpriseAddress"`
	InvitationCode            string `json:"invitationCode"`
	ReviewStatus              string `json:"reviewStatus"`
	ReviewOpinion             string `json:"reviewOpinion"`
	TerminalType              string `json:"terminalType"`
	InvoiceKind               string `json:"invoiceKind"`
	InvoiceLayoutFileType     string `json:"invoiceLayoutFileType"`
	BlockchainInvSingleQuota  string `json:"blockchainInvSingleQuota"`
	BlockchainInvDailyQuota   string `json:"blockchainInvDailyQuota"`
	BlockchainInvMonthlyQuota string `json:"blockchainInvMonthlyQuota"`
	ServiceStatus             string `json:"serviceStatus"`

	TerminalList []*TerminalItem `json:"terminalList"`
}

type GoodsItem

type GoodsItem struct {
	GoodsName              string `json:"goodsName"`
	TaxClassificationCode  string `json:"taxClassificationCode"`
	SpecificationModel     string `json:"specificationModel,omitempty"`
	MeteringUnit           string `json:"meteringUnit,omitempty"`
	Quantity               string `json:"quantity,omitempty"`
	IncludeTaxFlag         string `json:"includeTaxFlag,omitempty"`
	UnitPrice              string `json:"unitPrice,omitempty"`
	InvoiceAmount          string `json:"invoiceAmount"`
	TaxRateValue           string `json:"taxRateValue"`
	TaxRateAmount          string `json:"taxRateAmount,omitempty"`
	DiscountAmount         string `json:"discountAmount,omitempty"`
	DiscountTaxRateAmount  string `json:"discountTaxRateAmount,omitempty"`
	DeductionAmount        string `json:"deductionAmount,omitempty"`
	PreferentialPolicyFlag string `json:"preferentialPolicyFlag,omitempty"`
	ZeroTaxFlag            string `json:"zeroTaxFlag,omitempty"`
	VatSpecialManage       string `json:"vatSpecialManage,omitempty"`
}

type OpenBlueInvoiceRequest

type OpenBlueInvoiceRequest struct {
	TaxpayerNum        string `json:"taxpayerNum"`
	InvoiceReqSerialNo string `json:"invoiceReqSerialNo"`
	BuyerName          string `json:"buyerName"`
	BuyerTaxpayerNum   string `json:"buyerTaxpayerNum,omitempty"`
	BuyerAddress       string `json:"buyerAddress,omitempty"`
	BuyerTel           string `json:"buyerTel,omitempty"`
	BuyerBankName      string `json:"buyerBankName,omitempty"`
	BuyerBankAccount   string `json:"buyerBankAccount,omitempty"`
	SellerAddress      string `json:"sellerAddress,omitempty"`
	SellerTel          string `json:"sellerTel,omitempty"`
	SellerBankName     string `json:"sellerBankName,omitempty"`
	SellerBankAccount  string `json:"sellerBankAccount,omitempty"`
	ItemName           string `json:"itemName,omitempty"`
	CasherName         string `json:"casherName,omitempty"`
	ReviewerName       string `json:"reviewerName,omitempty"`
	DrawerName         string `json:"drawerName,omitempty"`
	TakerName          string `json:"takerName,omitempty"`
	TakerTel           string `json:"takerTel,omitempty"`
	TakerEmail         string `json:"takerEmail,omitempty"`
	SpecialInvoiceKind string `json:"specialInvoiceKind,omitempty"`
	Remark             string `json:"remark,omitempty"`
	DefinedData        string `json:"definedData,omitempty"`
	TradeNo            string `json:"tradeNo,omitempty"`
	ExtensionNum       string `json:"extensionNum,omitempty"`
	MachineCode        string `json:"machineCode,omitempty"`
	AgentInvoiceFlag   string `json:"agentInvoiceFlag,omitempty"`
	ShopNum            string `json:"shopNum,omitempty"`

	ItemList []*GoodsItem `json:"itemList"`
}

type OpenBlueInvoiceResponse

type OpenBlueInvoiceResponse struct {
	InvoiceReqSerialNo string `json:"invoiceReqSerialNo"`
	QRCodePath         string `json:"qrCodePath"` // base64 decoded
	QRCode             string `json:"qrCode"`     // base64 encoded
}

type OpenRedInvoiceRequest

type OpenRedInvoiceRequest struct {
	TaxpayerNum        string `json:"taxpayerNum"`
	InvoiceReqSerialNo string `json:"invoiceReqSerialNo"`
	InvoiceCode        string `json:"invoiceCode"`
	InvoiceNo          string `json:"invoiceNo"`
	RedReason          string `json:"redReason"`
	Amount             string `json:"amount"`
	DefinedData        string `json:"definedData,omitempty"`
}

type OpenRedInvoiceResponse

type OpenRedInvoiceResponse struct {
	InvoiceReqSerialNo string `json:"invoiceReqSerialNo"`
	QRCodePath         string `json:"qrCodePath"`       // base64 decoded
	QRCode             string `json:"qrCode,omitempty"` // base64 encoded
}

type QueryInvoiceRequest

type QueryInvoiceRequest struct {
	TaxpayerNum        string `json:"taxpayerNum"`
	InvoiceReqSerialNo string `json:"invoiceReqSerialNo"`
}

type QueryInvoiceResponse

type QueryInvoiceResponse struct {
	TaxpayerNum              string `json:"taxpayerNum"`
	InvoiceReqSerialNo       string `json:"invoiceReqSerialNo"`
	InvoiceType              string `json:"invoiceType"`
	Code                     string `json:"code"`
	Msg                      string `json:"msg"`
	TradeNo                  string `json:"tradeNo,omitempty"`
	SecurityCode             string `json:"securityCode,omitempty"`
	QRCode                   string `json:"qrCode,omitempty"`
	InvoiceCode              string `json:"invoiceCode,omitempty"`
	InvoiceNo                string `json:"invoiceNo,omitempty"`
	InvoiceDate              string `json:"invoiceDate,omitempty"`
	NoTaxAmount              string `json:"noTaxAmount,omitempty"`
	TaxAmount                string `json:"taxAmount,omitempty"`
	InvoiceLayoutFileType    string `json:"invoiceLayoutFileType,omitempty"`
	InvoicePdf               string `json:"invoicePdf,omitempty"`
	DownloadURL              string `json:"downloadUrl,omitempty"`              // base64 decoded
	VatPlatformInvPreviewURL string `json:"vatPlatformInvPreviewUrl,omitempty"` // base64 decoded
	ExtensionNum             string `json:"extensionNum,omitempty"`
	DiskNo                   string `json:"diskNo,omitempty"`
	InvPreviewQrcodePath     string `json:"invPreviewQrcodePath,omitempty"` // base64 decoded
	InvPreviewQrcode         string `json:"invPreviewQrcode,omitempty"`     // base64 encoded
}

type RegisterRequest

type RegisterRequest struct {
	TaxpayerNum                string `json:"taxpayerNum"`
	EnterpriseName             string `json:"enterpriseName"`
	LegalPersonName            string `json:"legalPersonName"`
	ContactsName               string `json:"contactsName"`
	ContactsEmail              string `json:"contactsEmail"`
	ContactsPhone              string `json:"contactsPhone"`
	RegionCode                 string `json:"regionCode"`
	CityName                   string `json:"cityName"`
	EnterpriseAddress          string `json:"enterpriseAddress"`
	TaxRegistrationCertificate string `json:"taxRegistrationCertificate"`
	TaxControlDeviceType       string `json:"taxControlDeviceType"`
}

type RegisterResponse

type RegisterResponse struct {
	TaxpayerNum    string `json:"taxpayerNum"`
	EnterpriseName string `json:"enterpriseName"`
}

type Request

type Request struct {
	PlatformCode string `json:"platformCode"`
	SignType     string `json:"signType"`
	Sign         string `json:"sign"`
	Format       string `json:"format"`
	Timestamp    string `json:"timestamp"`
	Version      string `json:"version"`
	SerialNo     string `json:"serialNo"`
	Content      string `json:"content,omitempty"`
}

func (*Request) SignatureContent

func (r *Request) SignatureContent() string

type Response

type Response struct {
	Code     string `json:"code"`
	Msg      string `json:"msg"`
	Sign     string `json:"sign"`
	SerialNo string `json:"serialNo"`
	Content  string `json:"content,omitempty"`
}

func (*Response) SignatureContent

func (r *Response) SignatureContent() string

type TerminalItem

type TerminalItem struct {
	DiskType         string `json:"diskType"`
	ExtensionNum     string `json:"extensionNum"`
	MachineCode      string `json:"machineCode"`
	Available        string `json:"available"`
	ServiceStartTime string `json:"serviceStartTime"`
	ServiceEndTime   string `json:"serviceEndTime"`
}

Jump to

Keyboard shortcuts

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