package apple import ( "encoding/base64" "encoding/json" "testing" "time" ) func TestParseTransactionJWS(t *testing.T) { payload := map[string]interface{}{ "bundleId": "co.airoport.app.ios", "productId": "com.airport.vpn.pass.30d", "transactionId": "1000000000001", "originalTransactionId": "1000000000000", "purchaseDate": float64(time.Now().UnixMilli()), } data, _ := json.Marshal(payload) b64 := base64.RawURLEncoding.EncodeToString(data) jws := "header." + b64 + ".signature" p, err := ParseTransactionJWS(jws) if err != nil { t.Fatalf("parse error: %v", err) } if p.ProductId != payload["productId"] { t.Fatalf("productId not match") } if p.BundleId != payload["bundleId"] { t.Fatalf("bundleId not match") } if p.OriginalTransactionId != payload["originalTransactionId"] { t.Fatalf("originalTransactionId not match") } }