package service import ( "context" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/util/gconv" ) type ( // 开发票 makeInvoiceAllParam struct { TaxNum string `json:"taxNum"` //企业税号* Tel string `json:"tel"` //登录电子税局手机号或身份证号* Data []MakeInvoiceData `json:"data"` } MakeInvoiceData struct { Type string `json:"type"` //票类* 1 增值税专用发票;2 普通发票 Gmfmc string `json:"gmfmc"` //购买方名称* 人名 Gmfnsrsbh string `json:"gmfnsrsbh"` //购买方纳税人识别号* 身份证号 Id string `json:"id"` //发票流水号* 合作商开具的发票流水号,涉及到回调通知 Gmfdz string `json:"gmfdz"` //购买方地址 Lxdh string `json:"lxdh"` //购买方联系方式 Yhyywdmc string `json:"yhyywdmc"` //购买方开户行 Yhzh string `json:"yhzh"` //购买方银行账号 Fhr string `json:"fhr"` //复核人 Xsfkhh string `json:"xsfkhh"` //销售方开户行 Xsfyhzh string `json:"xsfyhzh"` //销售方银行账号 Notes string `json:"notes"` //发票备注 InvoiceArr []MakeInvoiceItems `json:"invoiceArr"` } MakeInvoiceItems struct { Xmmc string `json:"xmmc"` //项目名称* Je string `json:"je"` //开票金额* WhStatus int `json:"wh_status"` //该开票项是否已调用接口进行维护: 1 已维护;0 未维护 Xhgg string `json:"xhgg"` //型号规格 Dw string `json:"dw"` //单位 Sl string `json:"sl"` //数量 Tsaxrate string `json:"taxrate"` //税率 } //红冲 makeRedInvoiceAllParam struct { TaxNum string `json:"taxNum"` //企业税号* Tel string `json:"tel"` //登录电子税局手机号或身份证号* Data []MakeRedInvoiceData `json:"data"` } MakeRedInvoiceData struct { Num string `json:"num"` //蓝票号码 Date string `json:"date"` //购买方名称* 人名 } ) // MakeSingleInvoice 开单张发票 func (t *TripartiteAuth) MakeSingleInvoice(param MakeInvoiceData) (err error) { return t.makeInvoices([]MakeInvoiceData{param}) } // MakeInvoices 开多张发票(请勿使用,阻塞任务) func (t *TripartiteAuth) makeInvoices(invoices []MakeInvoiceData) (err error) { var ( ctx = context.Background() param = makeInvoiceAllParam{ TaxNum: g.Cfg().MustGet(ctx, "company.taxNum").String(), Tel: g.Cfg().MustGet(ctx, "company.account").String(), Data: invoices, } ) err = CommonDoPost("/index_index/makeInvoiceC", t.GetJsonHeaderWithToken(), gconv.Map(gconv.String(param)), nil) if err != nil { err = gerror.Wrap(err, "开票接口异常") return } return nil } // MakeSingleRedInvoice 红冲发票 func (t *TripartiteAuth) MakeSingleRedInvoice(red MakeRedInvoiceData) (err error) { var ( ctx = context.Background() param = makeRedInvoiceAllParam{ TaxNum: g.Cfg().MustGet(ctx, "company.taxNum").String(), Tel: g.Cfg().MustGet(ctx, "company.account").String(), Data: []MakeRedInvoiceData{red}, } ) err = CommonDoPost("/index_index/makeRedC", t.GetJsonHeaderWithToken(), gconv.Map(gconv.String(param)), nil, ) if err != nil { err = gerror.Wrap(err, "开票红冲异常") return } return nil }