72 lines
1.9 KiB
Go
72 lines
1.9 KiB
Go
package rechargectrl
|
|
|
|
import (
|
|
"91porn-server/app/service/proxyser"
|
|
"91porn-server/common"
|
|
"bytes"
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"time"
|
|
|
|
"91porn-server/app/service/rechargeser"
|
|
"91porn-server/common/log"
|
|
"91porn-server/common/rchgutil"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// CallBack 支付回调回调函数
|
|
func CallBack(ctx *gin.Context) {
|
|
var transNo string = ""
|
|
var payMoney int64 = 0
|
|
success, err := func() (string, error) {
|
|
var err error
|
|
name := ctx.Param("name")
|
|
rchg := rchgutil.GetNotifyBack(name)
|
|
if rchg == nil {
|
|
log.Error(fmt.Sprintf("%s callback request path invalid.", name))
|
|
return "", errors.New(" request name invalid")
|
|
}
|
|
ata, _ := ctx.GetRawData()
|
|
ctx.Request.Body = io.NopCloser(bytes.NewBuffer(ata))
|
|
bodystr := string(ata)
|
|
log.Info(fmt.Sprintf("%s callback request url +%s, body:%s,contenttype:%s", name, ctx.Request.URL, bodystr, ctx.ContentType()))
|
|
if err = ctx.ShouldBind(rchg); err != nil {
|
|
log.Error(fmt.Sprintf("%s callback parameter bind fail error:%+v:", name, err))
|
|
return "", err
|
|
}
|
|
bs, _ := json.Marshal(rchg)
|
|
log.Info(fmt.Sprintf("%s callback parameter data:%+v:", name, string(bs)))
|
|
rb, err := rchg.Notify()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
rb.TransNo = rchgutil.RChgIDDisassemble(rb.TransNo)
|
|
if rb.SuccessAt.IsZero() {
|
|
rb.SuccessAt = time.Now()
|
|
}
|
|
if rb.PaymentAt.IsZero() {
|
|
rb.PaymentAt = rb.SuccessAt
|
|
}
|
|
if err = rechargeser.RechargeCallBack(ctx, rb.OID, rb.PayMoney, rb.TransNo, rb.Code, rb.PaymentAt, rb.SuccessAt); err != nil {
|
|
log.Error(fmt.Sprintf("%s RechargeCallBack fail error:%+v:", name, err))
|
|
}
|
|
transNo = rb.TransNo
|
|
payMoney = rb.PayMoney
|
|
return rchg.Success(), err
|
|
}()
|
|
if err != nil {
|
|
ctx.String(http.StatusBadRequest, "fail")
|
|
return
|
|
} else {
|
|
//异步处理全民代理分成
|
|
common.Go(func() {
|
|
proxyser.HandelProxyRechargeCommission(nil, transNo, payMoney)
|
|
})
|
|
ctx.String(http.StatusOK, success)
|
|
}
|
|
}
|