@@ -0,0 +1,58 @@
|
||||
package withdrawctrl
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"91porn-server/app/service/withdrawser"
|
||||
"91porn-server/common/log"
|
||||
"91porn-server/common/rchgutil"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// GoldFishCallBack 金鱼结构回调函数
|
||||
func GoldFishCallBack(ctx *gin.Context) {
|
||||
if err := func() error {
|
||||
exchg := rchgutil.GoldFishExchangeRes{}
|
||||
if err := ctx.ShouldBindJSON(&exchg); err != nil {
|
||||
log.Error(fmt.Sprintf("GoldFish callback parameter bind fail error:%+v:", err))
|
||||
return err
|
||||
}
|
||||
e := rchgutil.GoldFishExchange{}
|
||||
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)
|
||||
exchg.TradeNo = rchgutil.EChgIDDisassemble(exchg.TradeNo)
|
||||
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")
|
||||
}
|
||||
Reference in New Issue
Block a user