tkcashgame_v4/pkg/appstore/utils.go

44 lines
1.6 KiB
Go
Raw Normal View History

2025-10-22 10:01:11 +00:00
package appstore
import (
"encoding/base64"
"encoding/json"
"fmt"
"strings"
)
type SignedTansactionInfo struct {
TransactionId string `json:"transactionId,omitempty"`
OriginalTransactionId string `json:"originalTransactionId,omitempty"`
BundleId string `json:"bundleId,omitempty"`
ProductId string `json:"productId,omitempty"`
PurchaseDate int `json:"purchaseDate,omitempty"`
OriginalPurchaseDate int `json:"originalPurchaseDate,omitempty"`
Quantity int `json:"quantity,omitempty"`
Type string `json:"type,omitempty"`
InAppOwnershipType string `json:"inAppOwnershipType,omitempty"`
SignedDate int `json:"signedDate,omitempty"`
RevocationReason int `json:"revocationReason,omitempty"`
RevocationDate int `json:"revocationDate,omitempty"`
Environment string `json:"environment,omitempty"`
TransactionReason string `json:"transactionReason,omitempty"`
Storefront string `json:"storefront,omitempty"`
StorefrontId string `json:"storefrontId,omitempty"`
}
// 解析苹果返回的receiptInof
func ParseReceiptInfo(signedPayload string) (*SignedTansactionInfo, error) {
segments := strings.Split(signedPayload, ".")
payloadBytes, err := base64.RawURLEncoding.DecodeString(segments[1])
if err != nil {
return nil, fmt.Errorf("error decoding payload: %w", err)
}
var info SignedTansactionInfo
if err := json.Unmarshal(payloadBytes, &info); err != nil {
return nil, fmt.Errorf("error unmarshalling payload: %w", err)
}
return &info, nil
}