58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
package withdrawctrl
|
|
|
|
import (
|
|
"bytes"
|
|
"errors"
|
|
"fmt"
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"91porn-server/common/log"
|
|
"91porn-server/common/rchgutil"
|
|
"91porn-server/web/service/withdrawser"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// GoldFishCallBack 金鱼结构回调函数
|
|
func GoldFishCallBack(ctx *gin.Context) {
|
|
if err := func() error {
|
|
exchg := rchgutil.GoldFishExchangeRes{}
|
|
e := rchgutil.GoldFishExchange{}
|
|
if err := ctx.ShouldBindJSON(&exchg); err != nil {
|
|
log.Error(fmt.Sprintf("GoldFish callback parameter bind fail error:%+v:", err))
|
|
return err
|
|
}
|
|
log.Info(fmt.Sprintf("GoldFish callback parameter data:%+v:", exchg))
|
|
buf := bytes.Buffer{}
|
|
buf.WriteString(strconv.Itoa(exchg.Code))
|
|
buf.WriteString(exchg.Mark)
|
|
buf.WriteString(exchg.MercID)
|
|
buf.WriteString(exchg.Money)
|
|
buf.WriteString(exchg.OID)
|
|
buf.WriteString(exchg.Status)
|
|
buf.WriteString(exchg.TradeNo)
|
|
buf.WriteString(e.GetAppSecret())
|
|
if !rchgutil.VerifySign(exchg.Sign, buf.String()) {
|
|
log.Error("GoldFish callback sign verify fail")
|
|
return errors.New("check sign fail")
|
|
}
|
|
moneyf, err := strconv.ParseFloat(exchg.Money, 64)
|
|
if err != nil {
|
|
log.Error(fmt.Sprintf("GoldFish callback ParseFloat fail error:%+v:", err))
|
|
return err
|
|
}
|
|
moneyf = moneyf * 100
|
|
money := int64(moneyf)
|
|
if err = withdrawser.ExchgCallBack(exchg.TradeNo, exchg.OID, money, exchg.Status, exchg.Mark); err != nil {
|
|
log.Error(fmt.Sprintf("GoldFish RechargeCallBack fail error:%+v:", err))
|
|
return err
|
|
}
|
|
return nil
|
|
}(); err != nil {
|
|
ctx.String(http.StatusBadRequest, "fail")
|
|
return
|
|
}
|
|
ctx.String(http.StatusOK, "success")
|
|
}
|