diff --git a/go.mod b/go.mod index 4bc2669..3a8ab88 100644 --- a/go.mod +++ b/go.mod @@ -69,7 +69,7 @@ require ( github.com/ugorji/go/codec v1.2.12 // indirect github.com/xuri/efp v0.0.0-20230802181842-ad255f2331ca // indirect github.com/xuri/nfp v0.0.0-20230819163627-dc951e3ffe1a // indirect - gitlab.batiao8.com/open/gosdk v0.0.0-20240122144735-aed2f871f032 // indirect + gitlab.batiao8.com/open/gosdk v0.0.0-20240124083400-940a627adef3 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.21.0 // indirect diff --git a/server/controller/qyweixin.go b/server/controller/qyweixin.go index 0d2845e..cbd5469 100644 --- a/server/controller/qyweixin.go +++ b/server/controller/qyweixin.go @@ -43,12 +43,22 @@ func (q *QyWeixin) Pay(ctx *gin.Context) { if pass != "1c9dea1fb85cf06ab0b4d946d49aa92f" { panic("password error") } + // 获取openid + approve := qyweixin.NewAppApprove(&qyweixin.AppConfig{ + Corpid: config.GetConfig().QyWeixin.Corpid, + Secret: config.GetConfig().QyWeixin.ApproveSecret, + Agent: config.GetConfig().QyWeixin.ApproveAgent, + }) + openid, err := approve.GetOpenid(userid) + if err != nil { + panic(err) + } // 支付费用 var req qyweixin.PayReq req.BillNo = fmt.Sprintf("API%s_%s", time.Now().Format("20060102150405"), userid) req.Title = title - req.Userid = userid + req.Openid = openid req.TotalAmount = amount qyPay := qyweixin.NewAppPay(&qyweixin.PayConfig{ Corpid: config.GetConfig().QyWeixin.Corpid, @@ -60,6 +70,7 @@ func (q *QyWeixin) Pay(ctx *gin.Context) { CertPem: config.GetConfig().WxPay.PayCertPem, KeyPem: config.GetConfig().WxPay.PayKeyPem, }) + if err := qyPay.PayMoney(&req); err != nil { log.Errorf("pay error :%s", err.Error()) panic(err) diff --git a/server/service/qyweixin_approve.go b/server/service/qyweixin_approve.go index e227f33..ca71a01 100644 --- a/server/service/qyweixin_approve.go +++ b/server/service/qyweixin_approve.go @@ -148,10 +148,17 @@ func (a *Approve) handleRefund(detail *qyweixin.ApproveDetail) { } // 支付费用 + + openid, err := a.approveClient.GetOpenid(newData.Username) + if err != nil { + log.Errorf("GetOpenid error :%s", err.Error()) + return + } + var req qyweixin.PayReq req.BillNo = fmt.Sprintf("BX%s%s", newData.SpNo, butil.CutTail(newData.Username, 12)) req.Title = fmt.Sprintf("【%s】报销", newData.RefundType) - req.Userid = newData.Username + req.Openid = openid req.TotalAmount = int64(100 * newData.RefundAmount) qyPay := qyweixin.NewAppPay(&qyweixin.PayConfig{ Corpid: config.GetConfig().QyWeixin.Corpid,