enterprise/server/controller/qyweixin.go

91 lines
2.6 KiB
Go
Raw Normal View History

2023-08-13 21:24:54 +08:00
package controller
import (
"enterprise/common/config"
2024-01-24 16:19:06 +08:00
"enterprise/common/global"
2024-01-22 22:58:56 +08:00
"enterprise/server/service"
2024-01-24 16:19:06 +08:00
"enterprise/server/session"
"fmt"
2023-08-13 21:24:54 +08:00
"github.com/gin-gonic/gin"
2024-01-24 16:19:06 +08:00
log "github.com/sirupsen/logrus"
"github.com/smbrave/goutil"
"github.com/spf13/cast"
2024-01-22 22:50:20 +08:00
"gitlab.batiao8.com/open/gosdk/qyweixin"
2024-01-24 16:19:06 +08:00
"net/http"
"strings"
"time"
2023-08-13 21:24:54 +08:00
)
type QyWeixin struct {
}
func (q *QyWeixin) Approve(ctx *gin.Context) {
cfg := config.GetConfig()
2024-01-22 22:50:20 +08:00
2024-01-22 22:58:56 +08:00
reply := new(service.Approve).Reply
2024-01-22 22:50:20 +08:00
qyApp := qyweixin.NewApp(&qyweixin.AppConfig{
Corpid: cfg.QyWeixin.Corpid,
2023-08-13 21:24:54 +08:00
Secret: cfg.QyWeixin.ApproveSecret,
Agent: cfg.QyWeixin.ApproveAgent,
2024-01-22 22:50:20 +08:00
Token: config.QyWeixinAgentToken,
AesKey: config.QyWeixinAgentAesKey,
2024-01-22 22:58:56 +08:00
Replay: reply,
2023-08-13 21:24:54 +08:00
})
2024-01-22 22:50:20 +08:00
qyApp.Callback(ctx)
2023-08-13 21:24:54 +08:00
}
2024-01-24 16:19:06 +08:00
func (q *QyWeixin) Pay(ctx *gin.Context) {
userid := ctx.Query("userid")
amount := cast.ToInt64(ctx.Query("amount"))
title := ctx.Query("title")
pass := ctx.Query("pass")
if pass != "1c9dea1fb85cf06ab0b4d946d49aa92f" {
panic("password error")
}
2024-01-24 16:38:05 +08:00
// 获取openid
approve := qyweixin.NewAppApprove(&qyweixin.AppConfig{
Corpid: config.GetConfig().QyWeixin.Corpid,
2024-01-24 16:48:04 +08:00
Secret: config.GetConfig().QyWeixin.EnterpriseSecret,
Agent: config.GetConfig().QyWeixin.EnterpriseAgent,
2024-01-24 16:38:05 +08:00
})
openid, err := approve.GetOpenid(userid)
if err != nil {
panic(err)
}
2024-01-24 16:19:06 +08:00
// 支付费用
var req qyweixin.PayReq
2024-01-24 16:41:24 +08:00
req.BillNo = fmt.Sprintf("API%s%s", time.Now().Format("20060102150405"), userid)
2024-01-24 16:19:06 +08:00
req.Title = title
2024-01-24 16:38:05 +08:00
req.Openid = openid
2024-01-24 16:19:06 +08:00
req.TotalAmount = amount
qyPay := qyweixin.NewAppPay(&qyweixin.PayConfig{
Corpid: config.GetConfig().QyWeixin.Corpid,
2024-01-24 16:48:04 +08:00
Secret: config.GetConfig().QyWeixin.EnterpriseSecret,
Agent: config.GetConfig().QyWeixin.EnterpriseAgent,
2024-01-24 16:19:06 +08:00
SerialNumber: config.GetConfig().WxPay.PaySerialNumber,
ApiKey: config.GetConfig().WxPay.PayApiKeyV2,
MchId: config.GetConfig().WxPay.PayMchId,
CertPem: config.GetConfig().WxPay.PayCertPem,
KeyPem: config.GetConfig().WxPay.PayKeyPem,
})
2024-01-24 16:38:05 +08:00
2024-01-24 16:19:06 +08:00
if err := qyPay.PayMoney(&req); err != nil {
log.Errorf("pay error :%s", err.Error())
panic(err)
}
message := make([]string, 0)
message = append(message, fmt.Sprintf("【红包发放】[%s]", userid))
2024-01-24 16:21:03 +08:00
message = append(message, fmt.Sprintf("发放金额:%s", goutil.FormatMoney(amount)))
2024-01-24 16:19:06 +08:00
message = append(message, fmt.Sprintf("员工名称:%s", userid))
message = append(message, fmt.Sprintf("费用说明:%s", title))
if err := global.SendMessage([]string{"jiangyong"}, strings.Join(message, "\n")); err != nil {
log.Errorf("send message error :%s", err.Error())
}
ctx.JSON(http.StatusOK, session.NewRspOk())
}