🎨 Support in-app purchase PRO Features and Subscription on iOS https://github.com/siyuan-note/siyuan/issues/14159

This commit is contained in:
Daniel 2025-03-19 18:01:14 +08:00
parent f72e736f09
commit 8bf263a871
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -60,6 +60,22 @@ func VerifyAppStoreTransaction(accountToken, transactionID string) (retCode int,
retCode = -2
retMsg = "unknown error"
accountToken = strings.TrimSpace(accountToken)
transactionID = strings.TrimSpace(transactionID)
if "" == accountToken || "" == transactionID {
retCode = -6
retMsg = "invalid parameters"
logging.LogErrorf(retMsg)
return
}
if 36 != len(accountToken) {
retCode = -6
retMsg = fmt.Sprintf("invalid accountToken [%s]", accountToken)
logging.LogErrorf(retMsg)
return
}
if util.ContainerIOS != util.Container {
retCode = -3
retMsg = fmt.Sprintf("invalid container [%s]", util.Container)
@ -67,6 +83,14 @@ func VerifyAppStoreTransaction(accountToken, transactionID string) (retCode int,
return
}
user := model.Conf.GetUser()
if nil == user || "" == user.UserToken {
retCode = -4
retMsg = "account not logged in"
logging.LogErrorf(retMsg)
return
}
cloudRegionArg := accountToken[19:20]
if "0" != cloudRegionArg && "1" != cloudRegionArg {
retCode = -1
@ -84,10 +108,17 @@ func VerifyAppStoreTransaction(accountToken, transactionID string) (retCode int,
}
userID := strings.ReplaceAll(accountToken[22:], "-", "")
if user.UserId != userID {
retCode = -5
retMsg = fmt.Sprintf("invalid user [userID=%s, accountToken=%s]", user.UserId, accountToken)
logging.LogErrorf(retMsg)
return
}
verifyURL := util.GetCloudServer() + "/apis/siyuan/verifyAppStoreTransaction"
result := gulu.Ret.NewResult()
request := httpclient.NewCloudRequest30s()
resp, reqErr := request.SetSuccessResult(result).SetCookies(&http.Cookie{Name: "symphony", Value: model.Conf.GetUser().UserToken}).
resp, reqErr := request.SetSuccessResult(result).SetCookies(&http.Cookie{Name: "symphony", Value: user.UserToken}).
SetBody(map[string]string{"transactionId": transactionID, "accountToken": accountToken, "userId": userID}).Post(verifyURL)
if nil != reqErr {
retCode = -2