From fe1766242f7fd5c015f20e5f411912ae11198867 Mon Sep 17 00:00:00 2001 From: jiangyong Date: Sat, 15 Mar 2025 12:41:42 +0800 Subject: [PATCH] auth --- server/controller/payment.go | 10 ++++++++++ server/server.go | 1 + server/service/pay.go | 27 +++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/server/controller/payment.go b/server/controller/payment.go index b0c3b48..e160a3d 100644 --- a/server/controller/payment.go +++ b/server/controller/payment.go @@ -16,6 +16,16 @@ type Payment struct { func NewPayment() *Payment { return &Payment{} } + +func (q *Payment) AlipayAuth(ctx *gin.Context) { + sess := ctx.Keys[session.ContextSession].(*session.AdminSession) + authCode := ctx.Query("auth_code") + state := ctx.Query("state") + + data := service.NewPay().AlipayAuth(sess, authCode, state) + ctx.JSON(http.StatusOK, session.NewRsp(data)) +} + func (q *Payment) Pay(ctx *gin.Context) { sess := ctx.Keys[session.ContextSession].(*session.AdminSession) corp, err := dao.NewCorpDao().GetByHost(sess.GetHeader().Host) diff --git a/server/server.go b/server/server.go index d2012a2..d283673 100644 --- a/server/server.go +++ b/server/server.go @@ -17,6 +17,7 @@ func initRoutge(engine *gin.Engine) { noTokenGroup.Use(base.Recovery).Use(base.Before) noTokenGroup.POST("/pay", controller.NewPayment().Pay) + noTokenGroup.GET("/payment/auth/alipay", controller.NewPayment().AlipayAuth) noTokenGroup.POST("/payment", controller.NewPayment().Pay) apiGroup.GET("/payment", controller.NewPayment().List) apiGroup.GET("/payment/suggest", controller.NewPayment().Suggest) diff --git a/server/service/pay.go b/server/service/pay.go index e0717a5..e8e7db0 100644 --- a/server/service/pay.go +++ b/server/service/pay.go @@ -25,6 +25,33 @@ func NewPay() *Pay { return &Pay{} } +func (p *Pay) AlipayAuth(sess *session.AdminSession, authCode, state string) interface{} { + + corp, err := dao.NewCorpDao().GetByHost(sess.GetHeader().Host) + session.CheckDBError(err) + session.CheckNilError(corp) + cli := config.GetAliPayClient(corp.GetConfig().PayChannel) + + var req alipay.SystemOauthToken + req.Code = authCode + req.GrantType = "authorization_code" + res, err := cli.SystemOauthToken(context.Background(), req) + if err != nil { + log.Errorf("error :%s", err.Error()) + panic(config.ErrInternal.New().Append(err)) + } + if !res.IsSuccess() { + log.Errorf(goutil.EncodeJSON(res)) + panic(config.ErrInternal.New().Append(goutil.EncodeJSON(res))) + } + + data := make(map[string]interface{}) + data["state"] = state + data["userid"] = res.UserId + log.Errorf("state=%s,userid=%s", state, res.UserId) + return data +} + func (p *Pay) Pay(corp *model.Corp, req *api.PayReq) { user, err := dao.NewStaffUserDao().GetByUsername(corp.Id, req.Username)