Documentation
¶
Index ¶
Constants ¶
const Month = time.Hour * 24 * 30
Variables ¶
var BlockchainNamespace = New("blockchain-namespace", func(c *zip.Ctx) *namespace.Namespace { db := datastore.New(c.Context()) ns := namespace.New(db) ns.Id_ = blockchains.BlockchainNamespace ns.Name = blockchains.BlockchainNamespace ns.IntId = 1234567890 err := ns.GetOrCreate("Name=", blockchains.BlockchainNamespace) if err != nil { log.Warn("Failed to put namespace: %v", err) } ns.Id_ = blockchains.BlockchainNamespace ns.Name = blockchains.BlockchainNamespace ns.IntId = 1234567890 ns.MustUpdate() return ns })
var Collection = New("collection", func(c *zip.Ctx) *collection.Collection { db := getNamespaceDb(c) collection := collection.New(db) collection.Slug = "such-tees-pack" collection.GetOrCreate("Slug=", collection.Slug) collection.Name = "Such tees pack" collection.Description = "Much tees in one pack!" collection.Published = true collection.Available = true collection.MustPut() return collection })
var Coupon = New("coupon", func(c *zip.Ctx) *coupon.Coupon { db := getNamespaceDb(c) now := time.Now() p := Product(c) cpn := coupon.New(db) cpn.Code_ = strings.ToUpper("sad-coupon") cpn.GetOrCreate("Code=", cpn.Code_) cpn.Name = "Sad Coupon" cpn.Type = "flat" cpn.EndDate = now.Add(Month) cpn.Once = true cpn.Enabled = true cpn.Amount = 500 cpn.ProductId = p.Id() cpn.MustPut() cpn = coupon.New(db) cpn.Code_ = strings.ToUpper("such-coupon") cpn.GetOrCreate("Code=", cpn.Code_) cpn.Name = "Such Coupon" cpn.Type = "flat" cpn.EndDate = now.Add(Month) cpn.Once = true cpn.Enabled = true cpn.Amount = 500 cpn.MustPut() prod := product.New(db) prod.Slug = "doge-shirt" prod.GetOrCreate("Slug=", prod.Slug) cpn = coupon.New(db) cpn.Code_ = strings.ToUpper("FREE-DOGE") cpn.GetOrCreate("Code=", cpn.Code_) cpn.Name = "Free DogeShirt" cpn.Type = "free-item" cpn.EndDate = now.Add(Month) cpn.Once = true cpn.Enabled = true cpn.FreeProductId = prod.Id() cpn.FreeQuantity = 1 cpn.MustPut() cpn = coupon.New(db) cpn.Code_ = strings.ToUpper("NO-DOGE-LEFT-BEHIND") cpn.GetOrCreate("Code=", cpn.Code_) cpn.Dynamic = true cpn.Limit = 1 cpn.Name = "Free DogeShirt" cpn.Type = "free-item" cpn.EndDate = now.Add(Month) cpn.Once = true cpn.Enabled = true cpn.FreeProductId = prod.Id() cpn.FreeQuantity = 1 cpn.MustPut() cpn = coupon.New(db) cpn.Code_ = "TRYFREE" cpn.GetOrCreate("Code=", cpn.Code_) cpn.Name = "Try Hanzo Free" cpn.Type = "flat" cpn.Amount = 500 cpn.Enabled = true cpn.Once = true cpn.Filter = "order" cpn.CampaignId = "tryfree-growth" cpn.MustPut() return cpn })
var Discount = New("discount", func(c *zip.Ctx) *discount.Discount { db := getNamespaceDb(c) prod := product.New(db) prod.Slug = "batman" prod.GetOrCreate("Slug=", prod.Slug) prod.Name = "Batman T-shirt" prod.Headline = "Batman." prod.Description = "It's a batman t-shirt." prod.Options = []*product.Option{ &product.Option{ Name: "Size", Values: []string{"Batwing"}, }, &product.Option{ Name: "Size", Values: []string{"Batmobile"}, }, } prod.Price = 9900 prod.Currency = currency.USD prod.MustPut() dis := discount.New(db) dis.Name = "Bulk Discount" dis.Type = discount.Bulk dis.GetOrCreate("Name=", dis.Name) dis.Scope.Type = scope.Organization dis.Target.Type = target.Product dis.Target.ProductId = prod.Id() rule1 := discount.Rule{ Trigger: rule.Trigger{ Quantity: rule.Quantity{ Start: 2, }, }, Action: rule.Action{ Discount: rule.Discount{ Flat: 5, }, }, } rule2 := discount.Rule{} rule2.Trigger.Quantity.Start = 3 rule2.Action.Discount.Flat = 16 dis.Rules = []discount.Rule{rule1, rule2} dis.MustUpdate() return dis })
var Form = New("form", func(c *zip.Ctx) *form.Form { db := getNamespaceDb(c) f := form.New(db) f.Name = "Such Tees Newsletter" f.SendWelcome = true f.Type = "signup" f.EmailList.Id = "cc383800a7" f.EmailList.Enabled = true f.ThankYou.Type = thankyou.Redirect f.ThankYou.Url = "http://suchtees.com/thanks/" f.Facebook.Id = "6031480185266" f.Facebook.Value = "0.00" f.Facebook.Currency = "USD" f.Google.Category = "Subscription" f.Google.Name = "Newsletter Sign-up" f.MustPut() return f })
var GenerateTestBitcoinTransaction = New("generate-test-bitcoin-transaction", func(c *zip.Ctx) { db := datastore.New(c.Context()) ctx := db.Context w := wallet.New(db) w.Id_ = "test-btc-wallet" w.UseStringKey = true w.GetOrCreate("Id_=", "test-btc-wallet") if len(w.Accounts) == 0 { if _, err := w.CreateAccount("Test input account", blockchains.BitcoinTestnetType, []byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } if _, err := w.CreateAccount("Test output account 1", blockchains.BitcoinTestnetType, []byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } if _, err := w.CreateAccount("Test output account 2", blockchains.BitcoinTestnetType, []byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } } sender, ok := w.GetAccountByName("Test input account") if !ok { panic(errors.New("Sender Account Not Found.")) } receiver1, ok := w.GetAccountByName("Test output account 1") if !ok { panic(errors.New("Sender Account Not Found.")) } receiver2, ok := w.GetAccountByName("Test output account 2") if !ok { panic(errors.New("Sender Account Not Found.")) } log.Info("Accounts Found", ctx) log.Info("Sender Address", sender.Address) log.Info("Receiver 1 Address", receiver1.Address) log.Info("Receiver 2 Address", receiver2.Address) if err := sender.Decrypt([]byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } if err := receiver1.Decrypt([]byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } if err := receiver2.Decrypt([]byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } in := []bitcoin.Origin{bitcoin.Origin{TxId: "5b60d0684a8201ddac20f713782a1f03682b508e90d99d0887b4114ad4ccfd2c", OutputIndex: 0}} out := []bitcoin.Destination{bitcoin.Destination{Value: 1000, Address: receiver1.Address}, bitcoin.Destination{Value: 5000, Address: receiver2.Address}} senderAccount := bitcoin.Sender{ PrivateKey: sender.PrivateKey, PublicKey: sender.PublicKey, Address: sender.Address, } client := bitcoin.New(db.Context, config.Bitcoin.TestNetNodes[0], config.Bitcoin.TestNetUsernames[0], config.Bitcoin.TestNetPasswords[0]) log.Info("Created Bitcoin client.") rawTrx, _ := bitcoin.CreateTransaction(client, in, out, senderAccount, 0) log.Info("Raw transaction hex: %v", rawTrx) log.Info("Not sending raw transaction because this is a generation Fixture. Check the Send-bitcoin-transaction to actually send it to the node.") })
var GetTestBitcoinTransaction = New("test-bitcoin-gettransaction", func(c *zip.Ctx) { db := datastore.New(c.Context()) client := bitcoin.New(db.Context, config.Bitcoin.TestNetNodes[0], config.Bitcoin.TestNetUsernames[0], config.Bitcoin.TestNetPasswords[0]) log.Info("Created Bitcoin client.") res, err := client.GetRawTransaction("5b60d0684a8201ddac20f713782a1f03682b508e90d99d0887b4114ad4ccfd2c") if err != nil { panic(err) } log.Info("Btcd Node Response: %v", "", res) })
var Order = New("order", func(c *zip.Ctx) *order.Order { db := getNamespaceDb(c) u := UserCustomer(c) p := Product(c) Coupon(c) ord := order.New(db) ord.UserId = u.Id() ord.GetOrCreate("UserId=", ord.UserId) ord.ShippingAddress.Name = "Jackson Shirts" ord.ShippingAddress.Line1 = "1234 Kansas Drive" ord.ShippingAddress.City = "Overland Park" ctr, _ := country.FindByISO3166_2("US") sd, _ := ctr.FindSubDivision("Kansas") ord.ShippingAddress.State = sd.Code ord.ShippingAddress.Country = ctr.Codes.Alpha2 ord.ShippingAddress.PostalCode = "66212" ord.Currency = currency.USD ord.Items = []LineItem{ LineItem{ ProductCachedValues: productcachedvalues.ProductCachedValues{ Price: currency.Cents(100), }, ProductId: p.Id(), Quantity: 20, }, } ord.CouponCodes = []string{"SUCH-COUPON", "FREE-DOGE"} ord.UpdateAndTally(nil) ord.MustPut() return ord })
var Organization = New("organization", func(c *zip.Ctx) *organization.Organization { BlockchainNamespace(c) db := datastore.New(c.Context()) usr := User(c).(*user.User) org := organization.New(db) org.Name = "suchtees" org.SecretKey = []byte("prettyprettyteesplease") org.GetOrCreate("Name=", org.Name) org.FullName = "Such Tees, Inc." org.Owners = []string{usr.Id()} org.Websites = []website.Website{website.Website{Type: website.Production, Url: "http://suchtees.com"}} org.AddDefaultTokens() org.AuthorizeNet.Sandbox.LoginId = "" org.AuthorizeNet.Sandbox.TransactionKey = "" org.AuthorizeNet.Sandbox.Key = "Simon" org.Ethereum.Address = "0xf2fccc0198fc6b39246bd91272769d46d2f9d43b" org.Bitcoin.Address = "" org.Bitcoin.TestAddress = "mrPFGX5ViUZk2s8i5soBCkrFVzRwngK8DQ" org.Paypal.ConfirmUrl = "http://hanzo.ai" org.Paypal.CancelUrl = "http://hanzo.ai" org.Paypal.Live.Email = "dev@hanzo.ai" org.Paypal.Live.SecurityUserId = "dev@hanzo.ai" org.Paypal.Live.ApplicationId = "APP-80W284485P519543T" org.Paypal.Live.SecurityPassword = "" org.Paypal.Live.SecuritySignature = "" org.Paypal.Test.Email = "dev@hanzo.ai" org.Paypal.Test.SecurityUserId = "dev@hanzo.ai" org.Paypal.Test.ApplicationId = "APP-80W284485P519543T" org.Paypal.Test.SecurityPassword = "" org.Paypal.Test.SecuritySignature = "" org.WalletPassphrase = "1234" { w, _ := org.GetOrCreateWallet(org.Datastore()) a1, _ := w.CreateAccount("Test Ethereum", blockchains.EthereumRopstenType, []byte(org.WalletPassphrase)) a1.Withdrawable = true a2, _ := w.CreateAccount("Test Bitcoin", blockchains.BitcoinTestnetType, []byte(org.WalletPassphrase)) a2.Withdrawable = true w.MustUpdate() } integrations := []Integration{ Integration{ Type: "facebook-pixel", Id: "920910517982389", }, Integration{ Type: "google-analytics", Id: "UA-65099214-1", }, } org.Analytics = Analytics{Integrations: integrations} org.MustPut() hashid.RegisterNamespace(org.Name, org.Key().IntID()) if org.DefaultStore == "" { nsdb := datastore.New(org.Namespaced(org.Context())) stor := store.New(nsdb) stor.GetOrCreate("Name=", "Default") stor.Name = "Default" stor.Currency = org.Currency stor.MustUpdate() trs := taxrates.New(nsdb) trs.GetOrCreate("StoreId=", stor.Id()) trs.StoreId = stor.Id() trs.MustCreate() srs := shippingrates.New(nsdb) srs.GetOrCreate("StoreId=", stor.Id()) srs.StoreId = stor.Id() srs.MustCreate() org.DefaultStore = stor.Id() org.MustUpdate() } stor, _ := org.GetDefaultStore() trs, _ := stor.GetTaxRates() trs.GeoRates = []taxrates.GeoRate{ taxrates.GeoRate{ GeoRate: georate.New( "US", "MO", "", "64108", 0, 0, 0.08475, 0, ), }, taxrates.GeoRate{ GeoRate: georate.New( "US", "MO", "", "", 0, 0, 0.04225, 0, ), }, } trs.MustUpdate() srs, _ := stor.GetShippingRates() srs.GeoRates = []shippingrates.GeoRate{ shippingrates.GeoRate{ GeoRate: georate.New( "US", "", "", "", 0, 0, 0, 499, ), }, shippingrates.GeoRate{ GeoRate: georate.New( "", "", "", "", 0, 0, 0, 999, ), }, } srs.MustUpdate() usr.Organizations = []string{org.Id()} usr.MustPut() return org })
var Plan = New("plan", func(c *zip.Ctx) *plan.Plan { db := getNamespaceDb(c) pln := plan.New(db) pln.Slug = "much-shirts" pln.GetOrCreate("Slug=", pln.Slug) pln.Name = "Much Monthly Shirt" pln.Description = `wow such shirt much tee nice shop so hip so doge ` pln.Price = 2000 pln.Currency = currency.USD pln.Interval = Monthly pln.IntervalCount = 1 pln.MustPut() return pln })
var PlatformWallet = New("platform-wallet", func(c *zip.Ctx) *wallet.Wallet { BlockchainNamespace(c) db := datastore.New(c.Context()) w := wallet.New(db) w.Id_ = "platform-wallet" w.UseStringKey = true w.GetOrCreate("Id_=", "platform-wallet") if _, ok := w.GetAccountByName("Ethereum Ropsten Test Account"); !ok { if _, err := w.CreateAccount("Ethereum Ropsten Test Account", blockchains.EthereumRopstenType, []byte(config.Ethereum.TestPassword)); err != nil { panic(err) } } if _, ok := w.GetAccountByName("Ethereum Deposit Account"); !ok { if _, err := w.CreateAccount("Ethereum Deposit Account", blockchains.EthereumType, []byte(config.Ethereum.DepositPassword)); err != nil { panic(err) } } if _, ok := w.GetAccountByName("Bitcoin Test Account"); !ok { if _, err := w.CreateAccount("Bitcoin Test Account", blockchains.BitcoinTestnetType, []byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } } if _, ok := w.GetAccountByName("Bitcoin Deposit Account"); !ok { if _, err := w.CreateAccount("Bitcoin Deposit Account", blockchains.BitcoinType, []byte(config.Bitcoin.DepositPassword)); err != nil { panic(err) } } return w })
This wallet stores special platform level Addresses
var ProSubscription = New("pro-subscription", func(c *zip.Ctx) *subscription.Subscription { db := getNamespaceDb(c) now := time.Now() sub := subscription.New(db) sub.GetOrCreate("PlanId=", trial.PlanSlug) sub.PlanId = trial.PlanSlug sub.Status = subscription.Active sub.PeriodStart = now.Add(-Month) sub.PeriodEnd = now.Add(Month) sub.MustPut() return sub })
ProSubscription gives the fixture org a current pro subscription, so the billing paywall admits it.
billing/paywall gates the admin APIs behind one of three unlocks — a pro subscription, a live trial credit, or a redeemed invite — and correctly offers no test bypass. Without one of them every API suite gets 402 subscription_required, which is the paywall working, not a bug in the suite.
A subscription is the unlock chosen here because it is the state a paying customer is actually in: trial credit expires and an invite is a one-off, so either would make the suites model an edge case while claiming to exercise the ordinary path.
Status Active with PeriodEnd in the future is what paywall.hasSubscription looks for, and PlanId must be trial.PlanSlug — the gate matches on the plan slug, so a subscription to any other plan does not unlock anything.
var Product = New("product", func(c *zip.Ctx) *product.Product { db := getNamespaceDb(c) prod := product.New(db) prod.Slug = "doge-shirt" prod.GetOrCreate("Slug=", prod.Slug) prod.Name = "Such T-shirt" prod.Headline = "wow such shirt much tee" prod.Description = `wow such shirt much tee nice shop so hip so doge ` prod.Options = []*product.Option{ &product.Option{ Name: "Size", Values: []string{"Much", "Wow"}, }, } prod.Price = 2000 prod.Currency = currency.USD prod.MustPut() prod = product.New(db) prod.Slug = "sad-keanu-shirt" prod.GetOrCreate("Slug=", prod.Slug) prod.Name = "Sad Keanu T-shirt" prod.Headline = "Oh Keanu" prod.Description = "Sad Keanu is sad." prod.Options = []*product.Option{ &product.Option{ Name: "Size", Values: []string{"Sadness"}, }, } prod.Price = 2500 prod.Currency = currency.USD prod.MustPut() return prod })
var Referral = New("referral", func(c *zip.Ctx) *referral.Referral { db := getNamespaceDb(c) ord := Order(c) u := User(c) ref := referral.New(db) ref.UserId = u.Id() ref.OrderId = ord.Id() ref.GetOrCreate("OrderId=", ref.OrderId) ref.MustPut() return ref })
var Referrer = New("referrer", func(c *zip.Ctx) *referrer.Referrer { db := getNamespaceDb(c) u := User(c) ref := referrer.New(db) ref.UserId = u.Id() ref.GetOrCreate("UserId=", ref.UserId) ref.Program.Triggers = []int{0} ref.Program.Actions = []referralprogram.Action{referralprogram.Action{Type: referralprogram.StoreCredit}} ref.Program.Actions[0].CreditAction = referralprogram.CreditAction{Currency: currency.USD, Amount: currency.Cents(1000)} ref.MustPut() return ref })
var SECDemo = New("sec-demo", func(c *zip.Ctx) *organization.Organization { db := datastore.New(c.Context()) org := organization.New(db) org.Name = "sec-demo" org.GetOrCreate("Name=", org.Name) u := user.New(db) u.Email = "sec@hanzo.ai" u.GetOrCreate("Email=", u.Email) u.FirstName = "SEC" u.LastName = "User" u.Organizations = []string{org.Id()} u.PasswordHash, _ = password.Hash("secdemo2") u.Put() org.FullName = "SEC DEMO" org.Owners = []string{u.Id()} org.Websites = []website.Website{website.Website{Type: website.Production, Url: "https://sec.hanzo.ai"}} org.SecretKey = []byte("XzJn6Asyd9ZVSuaCDHjxj3tuhAb6FPLnzZ5VU9Md6VwsMrnCHrkcz8ZBBxqMURJD") org.AddDefaultTokens() org.Fees.Card.Flat = 50 org.Fees.Card.Percent = 0.05 org.Fees.Affiliate.Flat = 30 org.Fees.Affiliate.Percent = 0.30 org.Fees.Ethereum.Flat = 0 org.Fees.Ethereum.Percent = 0.06 org.Email.Enabled = true org.Email.Defaults.From = email.Email{ Name: "Hanzo", Address: "info@hanzo.ai", } org.SignUpOptions.ImmediateLogin = true org.SignUpOptions.AccountsEnabledByDefault = true eth := &integration.Integration{ Type: integration.EthereumType, Enabled: true, Ethereum: integration.Ethereum{ Address: "0xf8f59f0269c4f6d7b5c5ab98d70180eaa0c7507e", TestAddress: "0xf8f59f0269c4f6d7b5c5ab98d70180eaa0c7507e", }, } if len(org.Integrations.FilterByType(eth.Type)) == 0 { org.Integrations = org.Integrations.MustAppend(eth) } org.MustUpdate() return org })
var SendTestBitcoinOrder = New("send-test-bitcoin-order", func(c *zip.Ctx) { org := Organization(c).(*organization.Organization) accessToken := org.MustGetTokenByName("test-published-key") ctx := org.Datastore().Context db := getNamespaceDb(c) u := UserCustomer(c) ord := order.New(db) ord.UserId = u.Id() ord.ShippingAddress.Name = "Jackson Shirts" ord.ShippingAddress.Line1 = "1234 Kansas Drive" ord.ShippingAddress.City = "Overland Park" ctr, _ := country.FindByISO3166_2("US") sd, _ := ctr.FindSubDivision("Kansas") ord.ShippingAddress.State = sd.Code ord.ShippingAddress.Country = ctr.Codes.Alpha2 ord.ShippingAddress.PostalCode = "66212" ord.Type = accounts.BitcoinType ord.Currency = currency.BTC ord.Subtotal = currency.Cents(1e5) ord.Mode = order.ContributionMode ch := checkout.Authorization{ Order: ord, } j := json.Encode(ch) log.Info("Sending To %s", "https://api.hanzo.ai/checkout/authorize/", c) log.Info("Sending Test Order: %s", j, c) client := &http.Client{} req, err := http.NewRequestWithContext(ctx, "POST", "https://api.hanzo.ai/checkout/authorize/", strings.NewReader(j)) if err != nil { panic(err) } req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", accessToken.String) if res, err := client.Do(req); err != nil { panic(err) } else { log.Info("Hanzo Test Response: %v", res, c) } })
var SendTestBitcoinTransaction = New("send-test-bitcoin-transaction", func(c *zip.Ctx) { transactionId := "62e3949e3e143bfc2ce904a8fe68532962444870360320394c3d358666ce453d" db := datastore.New(c.Context()) ctx := db.Context w := wallet.New(db) w.Id_ = "test-btc-wallet" w.UseStringKey = true w.GetOrCreate("Id_=", "test-btc-wallet") if len(w.Accounts) == 0 { if _, err := w.CreateAccount("Test input account", blockchains.BitcoinTestnetType, []byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } if _, err := w.CreateAccount("Test output account 1", blockchains.BitcoinTestnetType, []byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } if _, err := w.CreateAccount("Test output account 2", blockchains.BitcoinTestnetType, []byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } } sender, ok := w.GetAccountByName("Test input account") if !ok { panic(errors.New("Sender Account Not Found.")) } receiver1, ok := w.GetAccountByName("Test output account 1") if !ok { panic(errors.New("Sender Account Not Found.")) } receiver2, ok := w.GetAccountByName("Test output account 2") if !ok { panic(errors.New("Sender Account Not Found.")) } log.Info("Accounts Found", ctx) log.Info("Sender Address", sender.Address) log.Info("Receiver 1 Address", receiver1.Address) log.Info("Receiver 2 Address", receiver2.Address) if err := sender.Decrypt([]byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } if err := receiver1.Decrypt([]byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } if err := receiver2.Decrypt([]byte(config.Bitcoin.TestPassword)); err != nil { panic(err) } in := []bitcoin.Origin{ bitcoin.Origin{TxId: transactionId, OutputIndex: 0}, } out := []bitcoin.Destination{bitcoin.Destination{Value: 100000, Address: receiver1.Address}, bitcoin.Destination{Value: 500000, Address: receiver2.Address}} senderAccount := bitcoin.Sender{ PrivateKey: sender.PrivateKey, PublicKey: sender.PublicKey, Address: sender.Address, } client := bitcoin.New(db.Context, config.Bitcoin.TestNetNodes[0], config.Bitcoin.TestNetUsernames[0], config.Bitcoin.TestNetPasswords[0]) log.Info("Created Bitcoin client.") rawTrx, err := bitcoin.CreateTransaction(client, in, out, senderAccount, 0) if err != nil { panic(err) } log.Info("Raw transaction hex: %v", rawTrx) res, err := client.SendRawTransaction(rawTrx) if err != nil { panic(err) } log.Info("Btcd Node Response: %v", "", res) })
var SendTestEthereumOrder = New("send-test-ethereum-order", func(c *zip.Ctx) { org := Organization(c).(*organization.Organization) accessToken := org.MustGetTokenByName("test-published-key") ctx := org.Datastore().Context db := getNamespaceDb(c) u := UserCustomer(c) ord := order.New(db) ord.UserId = u.Id() ord.ShippingAddress.Name = "Jackson Shirts" ord.ShippingAddress.Line1 = "1234 Kansas Drive" ord.ShippingAddress.City = "Overland Park" ctr, _ := country.FindByISO3166_2("US") sd, _ := ctr.FindSubDivision("Kansas") ord.ShippingAddress.State = sd.Code ord.ShippingAddress.Country = ctr.Codes.Alpha2 ord.ShippingAddress.PostalCode = "66212" ord.Type = accounts.EthereumType ord.Currency = currency.ETH ord.Subtotal = currency.Cents(100000000) ord.Mode = order.ContributionMode ch := checkout.Authorization{ Order: ord, } j := json.Encode(ch) log.Info("Sending To %s", "https://api.hanzo.ai/checkout/authorize/", c) log.Info("Sending Test Order: %s", j, c) client := &http.Client{} req, err := http.NewRequestWithContext(ctx, "POST", "https://api.hanzo.ai/checkout/authorize/", strings.NewReader(j)) if err != nil { panic(err) } req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", accessToken.String) if res, err := client.Do(req); err != nil { panic(err) } else { log.Info("Hanzo Test Response: %v", res, c) } })
var Store = New("store", func(c *zip.Ctx) *store.Store { db := getNamespaceDb(c) stor := store.New(db) stor.Slug = "suchtees" stor.GetOrCreate("Slug=", stor.Slug) stor.Name = "JPY Store" stor.Domain = "suchtees.com" stor.Prefix = "/" stor.Currency = currency.JPY stor.TaxNexus = []Address{Address{Line1: "123 Such St", City: "Tee City"}, Address{Line1: "456 Noo Ln", City: "Memetown"}} prod := Product(c).(*product.Product) price := currency.Cents(30000) stor.Listings[prod.Id()] = store.Listing{ ProductId: prod.Id(), Price: &price, } stor.MustPut() return stor })
var Submission = New("submission", func(c *zip.Ctx) *submission.Submission { db := getNamespaceDb(c) sub := submission.New(db) sub.Email = "fan@suchfan.com" sub.Metadata["message"] = "Hi I am a fan!" sub.MustPut() return sub })
var Token = New("token", func(c *zip.Ctx) *token.Token { db := getNamespaceDb(c) token := token.New(db) token.Email = "test@test.com" token.GetOrCreate("Email=", token.Email) token.UserId = "fake" token.MustPut() return token })
var Transaction = New("transaction", func(c *zip.Ctx) *transaction.Transaction { db := getNamespaceDb(c) u := User(c) tran := transaction.New(db) tran.DestinationId = u.Id() tran.GetOrCreate("DestinationId=", tran.DestinationId) tran.Type = "deposit" tran.Currency = currency.USD tran.Amount = 1000 tran.MustPut() return tran })
var User = New("user", func(c *zip.Ctx) *user.User { db := datastore.New(c.Context()) usr := user.New(db) usr.Email = "dev@hanzo.ai" usr.GetOrCreate("Email=", usr.Email) usr.FirstName = "Jackson" usr.LastName = "Shirts" usr.Phone = "(999) 999-9999" usr.PasswordHash, _ = password.Hash("suchtees") usr.MustPut() return usr })
var UserCustomer = New("user-customer", func(c *zip.Ctx) *user.User { db := getNamespaceDb(c) usr := user.New(db) usr.Email = "dev@hanzo.ai" usr.GetOrCreate("Email=", usr.Email) usr.FirstName = "Jackson" usr.LastName = "Shirts" usr.Phone = "(999) 999-9999" usr.PasswordHash, _ = password.Hash("suchtees") usr.MustPut() return usr })
var Variant = New("variant", func(c *zip.Ctx) *variant.Variant { db := getNamespaceDb(c) prod := Product(c).(*product.Product) v := variant.New(db) v.Parent = prod.Key() v.SKU = "T-SHIRT-M" v.GetOrCreate("SKU=", v.SKU) v.ProductId = prod.Id() v.Options = []variant.Option{variant.Option{Name: "Size", Value: "Much"}} v.ProductId = prod.Id() v.Price = 2000 v.Currency = currency.USD v.MustPut() v2 := variant.New(db) v2.Parent = prod.Key() v2.SKU = "T-SHIRT-W" v2.GetOrCreate("SKU=", v2.SKU) v2.ProductId = prod.Id() v2.Options = []variant.Option{variant.Option{Name: "Size", Value: "Wow"}} v2.ProductId = prod.Id() v2.Price = 2000 v2.Currency = currency.USD v2.MustPut() prod.Variants = []*variant.Variant{v, v2} prod.Put() return v })
Functions ¶
Types ¶
Source Files
¶
- 89r.go
- amazingairfare.go
- aura.go
- bellabeat.go
- billmont.go
- blockchain-namespace.go
- celebcoins.go
- collection.go
- coupon.go
- cove.go
- cover-enable-welcome.go
- cover-referralprogram.go
- cover.go
- crowdkeen.go
- cryptounderground.go
- cycliq.go
- damon-email.go
- damon-forms.go
- damon-founders.go
- damon-integrations.go
- damon-referral-program.go
- damon-stores.go
- damon-test-orders.go
- damon.go
- discount.go
- emix.go
- esx-referral.go
- esx.go
- f2kstoned.go
- fixtures.go
- form.go
- generate-bitcoin-transactions.go
- halcyon-analytics.go
- halcyon-forms.go
- halcyon.go
- hanzo-ico.go
- hanzo.go
- kanoa-bf.go
- kanoa-cs-users.go
- kanoa-forms.go
- kanoa-mailchimp.go
- kanoa-ss.go
- kanoa.go
- karma-coupon.go
- karma-forms.go
- karma-products-trunkshow.go
- karma-products.go
- karma-rates.go
- karma-trikini.go
- karma.go
- kpak.go
- luckybets.go
- ludela-products.go
- ludela.go
- lux.go
- makeupfit.go
- masamune.go
- moveordertonewuser.go
- myle.go
- optinvent.go
- order.go
- organization.go
- palladium46.go
- plan.go
- platform-wallet.go
- platform.go
- product.go
- referral.go
- referrer.go
- reneekelly.go
- reset-keys.go
- sa-mailchimp.go
- sa-referralprogram.go
- sa-shipstation.go
- sa-shirts.go
- sa-support.go
- sa.go
- seaval.go
- sec-demo.go
- send-test-bitcoin-order.go
- send-test-bitcoin-transactions.go
- send-test-ethereum-order.go
- soltrackr.go
- store.go
- submission.go
- subscription.go
- swap-demo.go
- test-bitcoin-gettransaction-rpc.go
- token.go
- transaction.go
- triller-forms.go
- triller.go
- unikrn.go
- user-customer.go
- user.go
- utils.go
- variant.go
- verus-forms.go
- verus.go
- victor.go