package front
import (
"PaymentCenter/app/third/paymentService"
"github.com/gin-gonic/gin"
"github.com/go-pay/gopay"
"github.com/go-pay/gopay/alipay"
"github.com/go-pay/gopay/wechat/v3"
"github.com/go-pay/xlog"
"github.com/qit-team/snow-core/log/logger"
"net/http"
)
// WxCallback 微信支付回调
func WxCallback(c *gin.Context) {
appId := c.Param("appId")
logger.Info(c, "WxCallback-回调数据APPID", appId)
if appId == "" {
c.String(http.StatusBadRequest, "%s", "fail")
}
// todo 查询应用下的支付配置
var wxConfig paymentService.WxPay
logger.Info(c, "WxCallback-回调数据", c.Request)
notifyReq, err := wechat.V3ParseNotify(c.Request)
if err != nil {
logger.Error(c, "WxCallback-回调数据验签失败", err.Error())
return
}
err = paymentService.WxPayCallBack(notifyReq, wxConfig)
if err != nil {
logger.Error(c, "WxCallback-回调执行失败,失败原因:", err.Error())
return
}
// ====↓↓↓====异步通知应答====↓↓↓====
// 退款通知http应答码为200且返回状态码为SUCCESS才会当做商户接收成功,否则会重试。
// 注意:重试过多会导致微信支付端积压过多通知而堵塞,影响其他正常通知。
c.JSON(http.StatusOK, &wechat.V3NotifyRsp{Code: gopay.SUCCESS, Message: "成功"})
}
// AliCallback 支付宝支付回调
func AliCallback(c *gin.Context) {
appId := c.Param("appId")
logger.Info(c, "AliCallback-回调数据APPID", appId)
if appId == "" {
c.String(http.StatusBadRequest, "%s", "fail")
}
// todo 查询应用下的支付配置
notifyReq, err := alipay.ParseNotifyToBodyMap(c.Request) // c.Request 是 gin 框架的写法
logger.Info(c, "AliCallback-回调数据", c.Request)
if err != nil {
xlog.Error(err)
return
}
var aliConfig paymentService.AliPay
err = paymentService.ALiCallBack(notifyReq, aliConfig)
if err != nil {
logger.Error(c, "AliCallback-回调执行失败,失败原因:", err.Error())
return
}
c.String(http.StatusOK, "%s", "success")
}