iap
This commit is contained in:
13
user.go
13
user.go
@ -5,6 +5,7 @@ import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/awa/go-iap/appstore/api"
|
||||
@ -60,8 +61,8 @@ func queryUserHandler(c echo.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
// 查询 vip 表
|
||||
err = db.MySQL.QueryRow("SELECT IsVIP FROM vip WHERE ID = ?", response.ID).Scan(&response.VIP)
|
||||
// 查询 vip 表,因为可能VIP过期,所以要加上时间戳的判断。这里的服务器是东八区时间。
|
||||
err = db.MySQL.QueryRow("SELECT IsVIP FROM vip WHERE ID = ? and ExpDate >= ?", response.ID, time.Now()).Scan(&response.VIP)
|
||||
if err == sql.ErrNoRows {
|
||||
response.VIP = 0 // 默认非VIP
|
||||
} else if err != nil {
|
||||
@ -188,6 +189,12 @@ func UpdateOrderByVerify(ID int, AppAcountToken string, OriginTransID string, tr
|
||||
currentTime := time.Now()
|
||||
nextDay := time.Now().AddDate(0, 0, Duration)
|
||||
|
||||
// 如果是Sandbox交易,那么直接使用Transaction中的过期时间,注意匹配时区
|
||||
if strings.EqualFold(string(transantion.Environment), "Sandbox") {
|
||||
nextDay = time.Unix(transantion.ExpiresDate/1000, 0).In(time.Local)
|
||||
logger.Debug("Sandbox ExpireDate", zap.Any("ExpireDate", nextDay), zap.Any("NowDate", currentTime))
|
||||
}
|
||||
|
||||
// TODO: transaction.TransactionReason 有新购和续费,需要区分;同一个购买或者续费事件,可能有通知多次,需要排重
|
||||
var tmpID int
|
||||
errDup := db.MySQL.QueryRow("SELECT ID from vip where TransactionID = ? and OriginalTransactionID = ? and IsVip = 1 and ExpDate > ?", transantion.TransactionID, transantion.OriginalTransactionId, currentTime).Scan(&tmpID)
|
||||
@ -196,7 +203,7 @@ func UpdateOrderByVerify(ID int, AppAcountToken string, OriginTransID string, tr
|
||||
logger.Info("duplicate request", zap.Int("ID", ID), zap.String("AppAcountToken", AppAcountToken), zap.String("OriginTransID", OriginTransID), zap.String("TransactionID", transantion.TransactionID))
|
||||
return nil
|
||||
} else if errDup != nil {
|
||||
logger.Error("query error", zap.Error(errDup), zap.Int("ID", ID), zap.String("AppAcountToken", AppAcountToken), zap.String("OriginTransID", OriginTransID))
|
||||
logger.Info("prepare to insert record", zap.Int("ID", ID), zap.String("AppAcountToken", AppAcountToken), zap.String("OriginTransID", OriginTransID))
|
||||
// 这里不返回,继续尝试更新。
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user