[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"url-settings":86,"blog-\u002Fblog\u002Fgoogle-pay-in-flutter":671,"blog-author-\u002Fblog\u002Fgoogle-pay-in-flutter":1691,"i-material-symbols:arrow-back-rounded":1706},{"id":4,"extension":5,"footer":6,"header":73,"meta":83,"stem":84,"__hash__":85},"navigation\u002Fdata\u002Fshared\u002Fnavigation.yml","yml",{"brand":7,"columns":13,"legal":63},{"name":8,"tagline":9,"downloadCta":10},"Pieces","The memory layer for modern work.",{"label":11,"href":12},"All downloads","\u002Fdownloads",[14,26,39,51],{"title":15,"links":16},"Product",[17,20,23],{"label":18,"href":19},"Pieces Desktop","\u002F",{"label":21,"href":22},"Pieces Enterprise","\u002Fenterprise",{"label":24,"href":25},"Pieces MCP","\u002Fmcp",{"title":27,"links":28},"Resources",[29,33,36],{"label":30,"href":31,"external":32},"Documentation","url:docs.home",true,{"label":34,"href":35},"Blog","\u002Fblog",{"label":37,"href":38,"external":32},"GitHub","url:github.org",{"title":40,"links":41},"Community",[42,45,48],{"label":43,"href":44,"external":32},"Discord","url:social.discord",{"label":46,"href":47,"external":32},"X \u002F Twitter","url:social.x",{"label":49,"href":50,"external":32},"LinkedIn","url:social.linkedin",{"title":52,"links":53},"Company",[54,57,60],{"label":55,"href":56},"About","\u002Fabout",{"label":58,"href":59},"Updates","\u002Fupdates",{"label":61,"href":62},"Contact","\u002Fcontact",[64,67,70],{"label":65,"href":66},"Privacy Policy","\u002Flegal\u002Fprivacy",{"label":68,"href":69},"Refund Policy","\u002Flegal\u002Frefund",{"label":71,"href":72},"Terms of Service","\u002Flegal\u002Fterms",{"links":74,"signIn":75,"contact":78,"cta":80},[],{"label":76,"href":77},"Manage account","url:portal.home",{"label":79,"href":62},"Get in touch",{"label":81,"href":82},"Download","url:routes.downloads",{},"data\u002Fshared\u002Fnavigation","XlSALC7vYCXHcmcXnjJViwIZKsqnQWF4bn4o9RrcSBE",{"id":87,"extension":5,"links":88,"meta":668,"stem":669,"__hash__":670},"urlSettings\u002Fdata\u002Fshared\u002Furls.yml",[89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,303,307,311,314,318,322,326,330,334,338,342,346,350,354,358,362,366,370,374,378,382,386,390,394,398,402,406,410,414,418,422,426,430,434,438,442,446,450,454,458,461,465,469,473,477,481,485,488,491,494,497,501,505,508,512,516,520,524,528,532,536,540,544,548,552,556,559,563,567,571,575,579,582,585,588,592,595,599,603,607,611,614,618,622,625,628,631,635,639,643,646,649,652,656,660,664],{"key":90,"label":91,"href":92},"downloads.desktop","Desktop download page","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdownload",{"key":94,"label":95,"href":96},"downloads.macOS.dmgArm64","macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg-arm64\u002Fdownload",{"key":98,"label":99,"href":100},"downloads.macOS.dmgIntel","macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg\u002Fdownload",{"key":102,"label":103,"href":104},"downloads.macOS.pkg","macOS PKG","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg\u002Fdownload",{"key":106,"label":107,"href":108},"downloads.macOS.universal","Desktop macOS Universal","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fmacos-universal\u002Fdownload",{"key":110,"label":111,"href":112},"downloads.macOS.pkgArm64","Desktop macOS PKG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pfd-arm64\u002Fdownload",{"key":114,"label":115,"href":116},"downloads.macOS.pkgIntel","Desktop macOS PKG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pfd\u002Fdownload",{"key":118,"label":119,"href":120},"downloads.windows.appinstaller","Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fpieces_for_x.appinstaller",{"key":122,"label":123,"href":124},"downloads.windows.exe","Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fwindows-exe\u002Fdownload",{"key":126,"label":127,"href":128},"downloads.windows.msix","Windows MSIX","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fwindows-msix\u002Fdownload",{"key":130,"label":131,"href":132},"downloads.windows.suiteManager","Windows Suite Manager","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_suite_windows\u002Fappinstaller\u002Fdownload",{"key":134,"label":135,"href":136},"downloads.linux.flatpakRepo","Linux Flatpak repository","https:\u002F\u002Fbuilds.pieces.app\u002Fpieces-flatpak-repo\u002Fpieces-flatpak.flatpakrepo",{"key":138,"label":139,"href":140},"downloads.linux.snapDesktop","Linux Snap Desktop","https:\u002F\u002Fsnapcraft.io\u002Fpieces-for-developers",{"key":142,"label":143,"href":144},"downloads.linux.snapPiecesOS","Linux Snap PiecesOS","https:\u002F\u002Fsnapcraft.io\u002Fpieces-os",{"key":146,"label":147,"href":148},"downloads.linux.snap","Desktop Linux Snap package","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fsnap\u002Fdownload",{"key":150,"label":151,"href":152},"downloads.piecesOS.macOS.dmgArm64","PiecesOS macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg-arm64\u002Fdownload",{"key":154,"label":155,"href":156},"downloads.piecesOS.macOS.dmgIntel","PiecesOS macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg\u002Fdownload",{"key":158,"label":159,"href":160},"downloads.piecesOS.macOS.universal","PiecesOS macOS Universal","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fmacos-universal\u002Fdownload",{"key":162,"label":163,"href":164},"downloads.piecesOS.macOS.pkgArm64","PiecesOS macOS PKG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pos-launch-only-arm64\u002Fdownload",{"key":166,"label":167,"href":168},"downloads.piecesOS.macOS.pkgIntel","PiecesOS macOS PKG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pos-launch-only\u002Fdownload",{"key":170,"label":171,"href":172},"downloads.piecesOS.windows.appinstaller","PiecesOS Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fos_server.appinstaller",{"key":174,"label":175,"href":176},"downloads.piecesOS.windows.exe","PiecesOS Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fwindows-exe\u002Fdownload",{"key":178,"label":179,"href":180},"downloads.piecesOS.windows.msix","PiecesOS Windows MSIX","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fwindows-msix\u002Fdownload",{"key":182,"label":183,"href":184},"downloads.piecesOS.linux.snap","PiecesOS Linux Snap package","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fsnap\u002Fdownload",{"key":186,"label":187,"href":188},"downloads.combined.macOS.appleSilicon","Combined macOS installer Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-arm64\u002Fdownload",{"key":190,"label":191,"href":104},"downloads.combined.macOS.intel","Combined macOS installer Intel",{"key":193,"label":194,"href":195},"downloads.guides.macOS","macOS installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fmacos-installation-guide",{"key":197,"label":198,"href":199},"downloads.guides.windows","Windows installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fwindows-installation-guide",{"key":201,"label":202,"href":203},"downloads.guides.linux","Linux installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide",{"key":205,"label":206,"href":207},"downloads.guides.linuxFlatpak","Linux Flatpak installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide\u002Fflatpak",{"key":209,"label":210,"href":211},"downloads.guides.linuxSnap","Linux Snap installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide\u002Fsnap",{"key":213,"label":214,"href":215},"downloads.guides.piecesOS","PiecesOS manual installation","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fmanual-installation",{"key":217,"label":218,"href":219},"extensions.chrome","Chrome extension","https:\u002F\u002Fchrome.google.com\u002Fwebstore\u002Fdetail\u002Fpieces-save-code-snippets\u002Figbgibhbfonhmjlechmeefimncpekepm",{"key":221,"label":222,"href":223},"extensions.firefox","Firefox add-on","https:\u002F\u002Faddons.mozilla.org\u002Fen-US\u002Ffirefox\u002Faddon\u002Fpieces-save-code-from-the-web\u002F",{"key":225,"label":226,"href":227},"extensions.edge","Edge add-on","https:\u002F\u002Fmicrosoftedge.microsoft.com\u002Faddons\u002Fdetail\u002Fpieces-save-code-snippet\u002Fhglfimcdgonaeeobjckfdabcldfidmim",{"key":229,"label":230,"href":231},"extensions.vscode","VS Code extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.pieces-vscode",{"key":233,"label":234,"href":235},"extensions.visualStudio","Visual Studio extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.PiecesVisualStudio",{"key":237,"label":238,"href":239},"extensions.jetbrains","JetBrains plugin","https:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F17328-pieces--save-search-share--reuse-code-snippets",{"key":241,"label":242,"href":243},"extensions.obsidian","Obsidian plugin","https:\u002F\u002Fobsidian.md\u002Fplugins?id=pieces-for-developers",{"key":245,"label":246,"href":247},"extensions.sublime","Sublime package","https:\u002F\u002Fpackagecontrol.io\u002Fpackages\u002FPieces",{"key":249,"label":250,"href":251},"extensions.neovim","Neovim plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neo_vim",{"key":253,"label":254,"href":255},"extensions.jupyterlab","JupyterLab plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fjupyterlab-pieces",{"key":257,"label":258,"href":259},"extensions.cli","Pieces CLI","https:\u002F\u002Fpypi.org\u002Fproject\u002Fpieces-cli\u002F",{"key":261,"label":262,"href":263},"docs.home","Documentation home","https:\u002F\u002Fdocs.pieces.app",{"key":265,"label":266,"href":267},"docs.getStarted","Get started docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces",{"key":269,"label":270,"href":271},"docs.api","API docs","https:\u002F\u002Fdocs.pieces.app\u002Fapi",{"key":273,"label":274,"href":275},"docs.desktop.overview","Desktop overview","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop",{"key":277,"label":278,"href":279},"docs.desktop.onboarding","Desktop onboarding","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fonboarding",{"key":281,"label":282,"href":283},"docs.desktop.timeline","Desktop timeline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Ftimeline",{"key":285,"label":286,"href":287},"docs.desktop.summaries","Desktop summaries docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fsingle-click-summaries",{"key":289,"label":290,"href":291},"docs.desktop.search","Desktop conversational search docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fconversational-search",{"key":293,"label":294,"href":295},"docs.desktop.drive","Desktop drive docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdrive",{"key":297,"label":298,"href":299},"docs.desktop.account","Desktop account settings docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fconfiguration\u002Faccount",{"key":301,"label":302,"href":92},"docs.desktop.download","Desktop download docs",{"key":304,"label":305,"href":306},"docs.piecesOS.overview","PiecesOS overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies",{"key":308,"label":309,"href":310},"docs.piecesOS.details","PiecesOS details docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os",{"key":312,"label":313,"href":215},"docs.piecesOS.install","PiecesOS install docs",{"key":315,"label":316,"href":317},"docs.piecesOS.quickMenu","PiecesOS quick menu docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fquick-menu",{"key":319,"label":320,"href":321},"docs.piecesOS.storage","On-device storage docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fon-device-storage",{"key":323,"label":324,"href":325},"docs.piecesOS.troubleshooting","PiecesOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Ftroubleshooting",{"key":327,"label":328,"href":329},"docs.mcp.overview","MCP overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp",{"key":331,"label":332,"href":333},"docs.mcp.cursor","MCP Cursor docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcursor",{"key":335,"label":336,"href":337},"docs.mcp.vscode","MCP VS Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fvs-code",{"key":339,"label":340,"href":341},"docs.mcp.claudeDesktop","MCP Claude Desktop docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-desktop",{"key":343,"label":344,"href":345},"docs.mcp.claudeCode","MCP Claude Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-code",{"key":347,"label":348,"href":349},"docs.mcp.claudeCowork","MCP Claude Cowork docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-cowork",{"key":351,"label":352,"href":353},"docs.mcp.githubCopilot","MCP GitHub Copilot docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgithub-copilot",{"key":355,"label":356,"href":357},"docs.mcp.goose","MCP Goose docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoose",{"key":359,"label":360,"href":361},"docs.mcp.windsurf","MCP Windsurf docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fwindsurf",{"key":363,"label":364,"href":365},"docs.mcp.zed","MCP Zed docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fzed",{"key":367,"label":368,"href":369},"docs.mcp.jetbrains","MCP JetBrains docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fjetbrains-ides",{"key":371,"label":372,"href":373},"docs.mcp.continueDev","MCP Continue docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcontinue-dev",{"key":375,"label":376,"href":377},"docs.mcp.cline","MCP Cline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcline",{"key":379,"label":380,"href":381},"docs.mcp.raycast","MCP Raycast docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fraycast",{"key":383,"label":384,"href":385},"docs.mcp.rovoDevCli","MCP Rovo Dev CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Frovo-dev-cli",{"key":387,"label":388,"href":389},"docs.mcp.openaiCodexCli","MCP OpenAI Codex CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenai-codex-cli",{"key":391,"label":392,"href":393},"docs.mcp.googleGeminiCli","MCP Google Gemini CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoogle-gemini-cli",{"key":395,"label":396,"href":397},"docs.mcp.amazonQ","MCP Amazon Q docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Famazon-q-developer",{"key":399,"label":400,"href":401},"docs.mcp.chatgptDev","MCP ChatGPT Developer Mode docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fchatgpt-developer-mode",{"key":403,"label":404,"href":405},"docs.mcp.openclaw","MCP OpenClaw docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenclaw",{"key":407,"label":408,"href":409},"docs.mcp.mcpRemote","MCP Remote docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fmcp-remote",{"key":411,"label":412,"href":413},"docs.mcp.ngrok","MCP ngrok docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fngrok-setup",{"key":415,"label":416,"href":417},"docs.troubleshooting.macOS","macOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fmacos",{"key":419,"label":420,"href":421},"docs.troubleshooting.windows","Windows troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fwindows",{"key":423,"label":424,"href":425},"docs.troubleshooting.linux","Linux troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Flinux",{"key":427,"label":428,"href":429},"docs.privacy","Privacy and security docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fprivacy-security-your-data",{"key":431,"label":432,"href":433},"docs.support","Support docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fsupport",{"key":435,"label":436,"href":437},"portal.home","Pieces portal","https:\u002F\u002Fportal.pieces.app",{"key":439,"label":440,"href":441},"site.home","Website home","https:\u002F\u002Fpieces.app",{"key":443,"label":444,"href":445},"site.about","About page","https:\u002F\u002Fpieces.app\u002Fabout",{"key":447,"label":448,"href":449},"site.features","Features page","https:\u002F\u002Fpieces.app\u002Ffeatures",{"key":451,"label":452,"href":453},"site.plugins","Plugins page","https:\u002F\u002Fpieces.app\u002Fplugins",{"key":455,"label":456,"href":457},"site.contact","Contact page","https:\u002F\u002Fpieces.app\u002Fcontact",{"key":459,"label":58,"href":460},"site.updates","https:\u002F\u002Fpieces.app\u002Fupdates",{"key":462,"label":463,"href":464},"site.news","News","https:\u002F\u002Fpieces.app\u002Fnews",{"key":466,"label":467,"href":468},"site.events","Community events","https:\u002F\u002Fpieces.app\u002Fcommunity\u002Fevents",{"key":470,"label":471,"href":472},"site.userStories","User stories","https:\u002F\u002Fpieces.app\u002Fuser-stories",{"key":474,"label":475,"href":476},"site.academy","Academy","https:\u002F\u002Fpieces.app\u002Flearn\u002Facademy",{"key":478,"label":479,"href":480},"site.support","Website support","https:\u002F\u002Fpieces.app\u002Fsupport",{"key":482,"label":483,"href":484},"site.standup","Standup","https:\u002F\u002Fpieces.app\u002Fstandup",{"key":486,"label":34,"href":487},"site.blog","https:\u002F\u002Fcode.pieces.app\u002Fblog",{"key":489,"label":43,"href":490},"social.discord","https:\u002F\u002Fdiscord.gg\u002Fgetpieces",{"key":492,"label":46,"href":493},"social.x","https:\u002F\u002Fx.com\u002Fgetpieces",{"key":495,"label":496,"href":493},"social.twitter","Twitter",{"key":498,"label":499,"href":500},"social.instagram","Instagram","https:\u002F\u002Fwww.instagram.com\u002Fgetpieces\u002F",{"key":502,"label":503,"href":504},"social.tiktok","TikTok","https:\u002F\u002Fwww.tiktok.com\u002F@getpieces",{"key":506,"label":49,"href":507},"social.linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fgetpieces\u002F",{"key":509,"label":510,"href":511},"social.youtube","YouTube","https:\u002F\u002Fyoutube.com\u002F@getpieces",{"key":513,"label":514,"href":515},"github.org","GitHub organization","https:\u002F\u002Fgithub.com\u002Fpieces-app",{"key":517,"label":518,"href":519},"github.support","GitHub support","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport",{"key":521,"label":522,"href":523},"github.issues","GitHub issues","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fissues",{"key":525,"label":526,"href":527},"github.discussions","GitHub discussions","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fdiscussions",{"key":529,"label":530,"href":531},"github.documentation","GitHub documentation","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fdocumentation",{"key":533,"label":534,"href":535},"github.opensource","GitHub open source","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fopensource",{"key":537,"label":538,"href":539},"github.sdks.python","Python SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-python",{"key":541,"label":542,"href":543},"github.sdks.typescript","TypeScript SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-typescript",{"key":545,"label":546,"href":547},"github.sdks.dart","Dart SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-dart",{"key":549,"label":550,"href":551},"github.sdks.kotlin","Kotlin SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-kotlin",{"key":553,"label":554,"href":555},"github.plugins.obsidian","Obsidian plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fobsidian-pieces",{"key":557,"label":558,"href":255},"github.plugins.jupyterlab","JupyterLab plugin repository",{"key":560,"label":561,"href":562},"github.plugins.sublime","Sublime plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_sublime",{"key":564,"label":565,"href":566},"github.plugins.neovim","Neovim plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neovim",{"key":568,"label":569,"href":570},"github.cliAgent","CLI agent repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fcli-agent",{"key":572,"label":573,"href":574},"github.mcpDart","MCP Dart repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fmcp_dart",{"key":576,"label":577,"href":578},"github.awesomePieces","Awesome Pieces repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fawesome-pieces",{"key":580,"label":581,"href":66},"legal.privacyPolicy","Privacy policy",{"key":583,"label":584,"href":69},"legal.refundPolicy","Refund policy",{"key":586,"label":587,"href":72},"legal.terms","Terms",{"key":589,"label":590,"href":591},"legal.security","Legal security","https:\u002F\u002Fpieces.app\u002Flegal\u002Fsecurity",{"key":593,"label":594,"href":511},"videos.youtubeChannel","YouTube channel",{"key":596,"label":597,"href":598},"videos.gettingStartedDesktop","Getting started desktop video","https:\u002F\u002Fyoutu.be\u002FdUr1lRM_TYk",{"key":600,"label":601,"href":602},"videos.snippetDiscoveryxR","Snippet discovery video","https:\u002F\u002Fyoutu.be\u002FG6vb1USw-30",{"key":604,"label":605,"href":606},"sales.bookACall","Book a sales call","https:\u002F\u002Fcalendar.app.google\u002FWVUDtUfNy5Vst3sH7",{"key":608,"label":609,"href":610},"sales.enterprise","Enterprise form","https:\u002F\u002Fgetpieces.typeform.com\u002Fto\u002FaVQFTvpE",{"key":612,"label":613,"href":527},"sales.feedback","Feedback discussions",{"key":615,"label":616,"href":617},"sales.earlyAccess","Early access form","https:\u002F\u002Fgetpieces.typeform.com\u002Fearlyaccess",{"key":619,"label":620,"href":621},"sales.supportEmail","Support email","mailto:support@pieces.app",{"key":623,"label":624,"href":19},"routes.home","Home route",{"key":626,"label":627,"href":56},"routes.about","About route",{"key":629,"label":630,"href":12},"routes.downloads","Downloads route",{"key":632,"label":633,"href":634},"routes.thanks","Post-install thanks route","\u002Finstall\u002Fthanks",{"key":636,"label":637,"href":638},"routes.pricing","Pricing route","\u002Fpricing",{"key":640,"label":641,"href":642},"cta.freeTrial","Start free trial CTA (Pieces Pro) — used by \u002Fcampaigns\u002F* landing pages","https:\u002F\u002Fcampaigns.pieces.app\u002F",{"key":644,"label":645,"href":22},"routes.enterprise","Enterprise route",{"key":647,"label":648,"href":62},"routes.contact","Contact route",{"key":650,"label":651,"href":59},"routes.updates","Updates route",{"key":653,"label":654,"href":655},"routes.migrationError","Migration error route","\u002Fmigration\u002Ferror",{"key":657,"label":658,"href":659},"routes.authenticated","Post-login authenticated route","\u002Fauth\u002Fsigned-in",{"key":661,"label":662,"href":663},"routes.signed-out","Signed out route","\u002Fauth\u002Fsigned-out",{"key":665,"label":666,"href":667},"routes.authentication-error","Authentication error route","\u002Fauth\u002Ferror",{},"data\u002Fshared\u002Furls","2AvfSWI6bZACH5Kr1ZS3txMLjteRjCjbDR_ul1uRZ9Q",{"id":672,"title":673,"author":674,"authorPhoto":675,"authorPhotoAlt":676,"authorSlug":677,"body":678,"buttonText":1678,"buttonUrl":1678,"category":1679,"date":1680,"description":1681,"draft":1682,"editorsPick":1682,"extension":1683,"featured":1682,"image":1684,"imageAlt":1685,"meta":1686,"navigation":32,"ogImage":1678,"ogImageAlt":1678,"path":1687,"seo":1688,"stem":1689,"tags":1678,"__hash__":1690},"blog\u002Fblog\u002Fgoogle-pay-in-flutter.md","Google Pay in Flutter","Aseem Wangoo","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fauthor.jpeg","Aseem Wangoo.","aseem-wangoo",{"type":679,"value":680,"toc":1652},"minimark",[681,686,710,713,716,723,727,730,733,736,742,747,763,767,788,801,807,827,830,840,846,853,859,866,879,893,896,902,910,913,925,937,946,952,966,972,978,982,989,992,997,1003,1009,1014,1020,1025,1031,1037,1043,1114,1118,1121,1164,1167,1197,1202,1205,1223,1228,1319,1322,1332,1336,1344,1350,1356,1382,1385,1392,1443,1456,1468,1471,1488,1492,1501,1510,1514,1522,1565,1571,1577,1583,1589,1595,1598,1604,1615,1621,1628,1631,1635,1638,1641,1644],[682,683,685],"h2",{"id":684},"what-is-google-pay","What is Google Pay?",[687,688,689,690,697,698,703,704,709],"p",{},"Google Pay, also known as G Pay, is a convenient ",[691,692,696],"a",{"href":693,"rel":694},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDigital_wallet",[695],"nofollow","digital wallet"," platform and ",[691,699,702],{"href":700,"rel":701},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FE-commerce_payment_system",[695],"online payment"," system that was created by Google. It allows users to make in-app, online, and in-person ",[691,705,708],{"href":706,"rel":707},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FContactless_payment",[695],"contactless purchases"," using their mobile devices. While the service is available globally, users in the United States and India can also use Google Pay on an iOS device, although its functionality is somewhat limited compared to Android devices. Google Pay also offers a handy feature called the \"Google Pay widget\". This widget can be added to the home screen of your Android device, providing quick access to the Google Pay app and making it even more convenient to use. With just a few taps, you can easily make a payment or access your stored passes and other digital information using the Google Pay widget.",[687,711,712],{},"In addition to being a payment platform, Google Pay also supports passes such as coupons, boarding passes, campus ID cards, car keys, event tickets, movie tickets, public transportation tickets, store cards, health records, and loyalty cards. This means that users can keep all of their important digital information in one place, making it easy to access and use.",[687,714,715],{},"Overall, Google Pay is a versatile and convenient tool for making payments and managing various types of digital information all in one place.",[687,717,718],{},[719,720],"img",{"alt":721,"src":722},"The Google Pay logo.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-001.png",[682,724,726],{"id":725},"how-it-works","How it Works",[687,728,729],{},"Google Pay offers a simple and streamlined payment process when making purchases within an app. When a user taps the Google Pay button in any app, a payment sheet will appear. This payment sheet displays all the payment methods that are currently saved to the user's Google Account.",[687,731,732],{},"From there, users can easily select their preferred payment method from the list, without having to manually enter any payment details. If necessary, users can also quickly add a shipping address or enter new payment information before finalizing the payment.",[687,734,735],{},"This approach makes the payment process quicker and more convenient for users, as they can complete their transactions without having to leave the app or enter their payment details repeatedly. Overall, Google Pay's payment sheet offers a seamless and hassle-free payment experience for users.",[687,737,738],{},[719,739],{"alt":740,"src":741},"A system diagram of Google Pay.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-002.png",[743,744,746],"h3",{"id":745},"google-pay-payment-flow","Google Pay Payment Flow",[748,749,750,754,757,760],"ol",{},[751,752,753],"li",{},"The user taps the G Pay button and sees a payment sheet with a list of supported payment methods.",[751,755,756],{},"The user selects a payment method and G Pay returns a payment token for the selected method to the app.",[751,758,759],{},"The app submits the payment token to the backend.",[751,761,762],{},"The backend processes the purchase and sends the payment token to the Payment Service Provider (PSP).",[682,764,766],{"id":765},"integration-of-google-pay","Integration of Google Pay",[687,768,769,770,775,776,781,782,787],{},"We will be looking at the ",[691,771,774],{"href":772,"rel":773},"https:\u002F\u002Fpub.dev\u002Fpackages\u002Fpay",[695],"pay"," package for the integration of Google Pay. This package takes care of both ",[691,777,780],{"href":778,"rel":779},"https:\u002F\u002Fwww.apple.com\u002Fsg\u002Fapple-pay\u002F",[695],"Apple Pay"," and ",[691,783,786],{"href":784,"rel":785},"https:\u002F\u002Fpay.google.com\u002F",[695],"Google Pay",".",[687,789,790,791,796,797,800],{},"Under the hood, this package uses the ",[691,792,795],{"href":793,"rel":794},"https:\u002F\u002Fdevelopers.google.com\u002Fpay\u002Fapi",[695],"Google Pay API",". The things required to set up the Pay API will eventually be required to integrate the ",[691,798,774],{"href":772,"rel":799},[695]," package.",[687,802,803],{},[804,805,806],"strong",{},"Setup:",[808,809,810,819],"ul",{},[751,811,812,813,818],{},"Check out their integration requirements ",[691,814,817],{"href":815,"rel":816},"https:\u002F\u002Fdevelopers.google.com\u002Fpay\u002Fapi\u002Fandroid\u002Foverview",[695],"here",". It basically mentions their environments, brand guidelines, and other stuff.",[751,820,821,822,826],{},"Check out their request for production access ",[691,823,817],{"href":824,"rel":825},"https:\u002F\u002Fdevelopers.google.com\u002Fpay\u002Fapi\u002Fandroid\u002Fguides\u002Ftest-and-deploy\u002Frequest-prod-access",[695],", wherein you set up the access to the Google Wallet API and other checklists.",[687,828,829],{},"Now, let's set up your code.",[687,831,832,833,836,837],{},"Internally, the Google API requires the following Gradle dependency (",[804,834,835],{},"from android native",") which is handled by the ",[804,838,839],{},"pay package:",[687,841,842],{},[843,844,845],"code",{},"implementation \"com.google.android.gms:play-services-wallet:18.0.0\"",[687,847,848,849,852],{},"Hence, we need to change the following in the ",[843,850,851],{},"build.gradle"," of your app:",[687,854,855],{},[719,856],{"alt":857,"src":858},"A code snippet to change your SDK versions.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-003.png",[687,860,861],{},[691,862,865],{"href":863,"rel":864},"https:\u002F\u002Framan.pieces.cloud\u002F?p=56984fb6e9",[695],"Save to Pieces",[808,867,868],{},[751,869,870,871,875,876],{},"Include the ",[691,872,874],{"href":772,"rel":873},[695],"package"," inside your ",[843,877,878],{},"pubspec.yaml",[687,880,881,882,887,888,787],{},"Now you have access to the ",[691,883,886],{"href":884,"rel":885},"https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fpay\u002Flatest\u002Fpay\u002FGooglePayButton-class.html",[695],"GooglePayButton"," and the ",[691,889,892],{"href":890,"rel":891},"https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fpay\u002Flatest\u002Fpay\u002FApplePayButton-class.html",[695],"ApplePayButton",[743,894,886],{"id":895},"googlepaybutton",[687,897,898],{},[719,899],{"alt":900,"src":901},"The Pay with G Pay button.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-004.png",[687,903,904,906,907,787],{},[843,905,886],{}," is a Flutter widget to show the Google Pay button according to the rules and constraints specified in ",[843,908,909],{},"PayButton",[687,911,912],{},"This widget provides an alternative UI-based integration path that wraps the API calls of the payment libraries and includes them as part of the lifecycle of the widget. Hence:",[808,914,915],{},[751,916,917,918,921,922,787],{},"The widget only shows if the ",[843,919,920],{},"Pay.userCanPay","method returns ",[843,923,924],{},"true",[687,926,927,928,930,931,936],{},"For instance, if the code is running on iOS, then ",[843,929,892],{}," will be shown (provided you have set up the ",[691,932,935],{"href":933,"rel":934},"https:\u002F\u002Fdeveloper.apple.com\u002Fdocumentation\u002Fpasskit\u002Fapple_pay\u002Fsetting_up_apple_pay_requirements",[695],"ApplePay configuration",").",[808,938,939],{},[751,940,941,942,945],{},"Tapping the button automatically triggers the ",[843,943,944],{},"Pay.showPaymentSelector"," method, which starts the payment process.",[687,947,948,949,951],{},"This is what ",[843,950,886],{}," looks like:",[687,953,954,958,959,958,961,958,964],{},[955,956,957],"em",{},"Note:"," ",[843,960,886],{},[955,962,963],{},"extends from",[843,965,909],{},[687,967,968],{},[719,969],{"alt":970,"src":971},"The Google Pay Button code.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-005.png",[687,973,974],{},[691,975,865],{"href":976,"rel":977},"https:\u002F\u002Framan.pieces.cloud\u002F?p=32d64e800d",[695],[743,979,981],{"id":980},"payment-configuration","Payment Configuration",[687,983,984,985,988],{},"In the above snippet, we see ",[843,986,987],{},"PaymentConfiguration",", which is a required parameter. This parameter holds the information about a payment transaction.",[687,990,991],{},"It loads the configuration information needed for the payment transaction, which is based on the source. There are two options available for this:",[748,993,994],{},[751,995,996],{},"From a remote server, like this:",[687,998,999],{},[719,1000],{"alt":1001,"src":1002},"Configuring from a remote server.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-006.png",[687,1004,1005],{},[691,1006,865],{"href":1007,"rel":1008},"https:\u002F\u002Framan.pieces.cloud\u002F?p=f8b74b85b6",[695],[748,1010,1011],{},[751,1012,1013],{},"From the assets folder, like this:",[687,1015,1016],{},[719,1017],{"alt":1018,"src":1019},"Configuring from the Assets folder.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-007.png",[1021,1022,1024],"h4",{"id":1023},"inside-paymentconfiguration","Inside PaymentConfiguration",[687,1026,1027,1028,1030],{},"The ",[843,1029,987],{}," is JSON in which each parameter stands for a request object as per the Google Pay API.",[687,1032,1033],{},[719,1034],{"alt":1035,"src":1036},"The Payment Configuration JSON.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-008.png",[687,1038,1039],{},[691,1040,865],{"href":1041,"rel":1042},"https:\u002F\u002Framan.pieces.cloud\u002F?p=37a84ea683",[695],[808,1044,1045,1061,1073,1086,1094,1102],{},[751,1046,1047,1050,1053,1054,1057,1058],{},[843,1048,1049],{},"provider",[955,1051,1052],{},":"," This can either be ",[843,1055,1056],{},"apple_pay"," or ",[843,1059,1060],{},"google_pay",[751,1062,1063,1066,1068,1069,1072],{},[843,1064,1065],{},"data",[955,1067,1052],{}," This is the core of the ",[843,1070,1071],{},"PaymentRequest"," which is a JSON Object itself",[751,1074,1075,1078,1053,1080,1057,1083],{},[843,1076,1077],{},"environment",[955,1079,1052],{},[843,1081,1082],{},"TEST",[843,1084,1085],{},"PRODUCTION",[751,1087,1088,1091,1093],{},[843,1089,1090],{},"apiVersion",[955,1092,1052],{}," The value is 2 for this specification",[751,1095,1096,1099,1101],{},[843,1097,1098],{},"apiVersionMinor",[955,1100,1052],{}," The value is 0 for this specification",[751,1103,1104,1107,1109,1110,1113],{},[843,1105,1106],{},"allowedPaymentMethods",[955,1108,1052],{}," This is of type ",[843,1111,1112],{},"PaymentMethod"," and specifies the support for one or more payment methods supported by the G Pay API",[682,1115,1117],{"id":1116},"payment-method","Payment Method",[687,1119,1120],{},"This comprises 3 properties:",[748,1122,1123,1134,1145],{},[751,1124,1125,1128,958,1130,1133],{},[843,1126,1127],{},"type",[955,1129,1052],{},[843,1131,1132],{},"CARD"," is the only supported value for this parameter",[751,1135,1136,1139,1109,1141,1144],{},[843,1137,1138],{},"tokenizationSpecification",[955,1140,1052],{},[843,1142,1143],{},"TokenizationSpecification"," and has two properties (explained below)",[751,1146,1147,1150,1152,1153,1156,1157,781,1160,1163],{},[843,1148,1149],{},"parameters",[955,1151,1052],{}," This is of the type ",[843,1154,1155],{},"CardParameter"," and has ",[804,1158,1159],{},"2 required",[804,1161,1162],{},"5 optional"," parameters (explained below)",[743,1165,1143],{"id":1166},"tokenizationspecification",[808,1168,1169,1182],{},[751,1170,1171,1173,1175,1176,1178,1179],{},[843,1172,1127],{},[955,1174,1052],{}," For ",[843,1177,1132],{}," payment method, use ",[843,1180,1181],{},"PAYMENT_GATEWAY",[751,1183,1184,1186,1188,1189,781,1192,1195],{},[843,1185,1149],{},[955,1187,1052],{}," Comprises a Gateway object which has two properties: ",[843,1190,1191],{},"gateway",[843,1193,1194],{},"gatewayMerchantId",[804,1196,787],{},[687,1198,1199],{},[955,1200,1201],{},"Note: The values for gateway depend on the supported gateway.",[743,1203,1155],{"id":1204},"cardparameter",[808,1206,1207],{},[751,1208,1209,1212,1213,1216,1217,781,1220],{},[843,1210,1211],{},"allowedAuthMethods"," (",[804,1214,1215],{},"required","): A string array of fields that are supported to authenticate a card transaction. ",[843,1218,1219],{},"PAN_ONLY",[843,1221,1222],{},"CRYPTOGRAM_3DS",[687,1224,1225],{},[955,1226,1227],{},"Note: We can only use these two under a TEST environment.",[808,1229,1230,1242,1253,1297],{},[751,1231,1232,958,1235,1241],{},[843,1233,1234],{},"allowedCardNetworks",[955,1236,1237,1238,1240],{},"(",[804,1239,1215],{},"):"," One or more card networks that you and the Google Pay API support, e.g., AMEX, DISCOVER, INTERAC, JCB, MASTERCARD, or VISA**.**",[751,1243,1244,1247,1249,1250,1252],{},[843,1245,1246],{},"billingAddressRequired",[955,1248,1052],{}," Set to ",[843,1251,924],{}," if you require a billing address. This can increase friction.",[751,1254,1255,1258,1152,1260,1263,1264],{},[843,1256,1257],{},"billingAddressParameters",[955,1259,1052],{},[843,1261,1262],{},"BillingAddressParameters"," and has two parameters (explained below).",[808,1265,1266,1276],{},[751,1267,1268,1271,1249,1273,1275],{},[843,1269,1270],{},"phoneNumberRequired",[955,1272,1052],{},[843,1274,924],{}," if a phone number is required to process the transaction.",[751,1277,1278,1281,1283,1284,1286,1287,1290,1293,1294,1296],{},[843,1279,1280],{},"merchantInfo",[955,1282,1052],{}," This ",[843,1285,1280],{},"object provides information about the merchant that requests payment data and comprises of ",[843,1288,1289],{},"merchantName",[955,1291,1292],{},","," the name rendered in the payment sheet. In the ",[843,1295,1082],{}," environment, or if a merchant isn't recognized, a “Pay Unverified Merchant” message is displayed on the payment sheet.",[751,1298,1299,1302,1283,1304,1307,1308,1311,1312,1314,1315,1318],{},[843,1300,1301],{},"transactionInfo",[955,1303,1052],{},[843,1305,1306],{},"TransactionInfo"," object is used to present a payment authorization dialog. It comprises a ",[843,1309,1310],{},"currencyCode","(required)",[804,1313,1292],{}," an ISO 4217 Alphabetic currency code,and a",[843,1316,1317],{},"countryCode",", an ISO 3166–1 alpha-2 country code where the transaction is processed.",[743,1320,1262],{"id":1321},"billingaddressparameters",[808,1323,1324],{},[751,1325,1326,1329,1331],{},[843,1327,1328],{},"format",[955,1330,1052],{}," The billing address format, which is required to complete the transaction, e.g., MIN(Name, country code, and postal code) and FULL (long list of parameters).",[682,1333,1335],{"id":1334},"payment-results","Payment Results",[687,1337,1338,1339,1342],{},"Once the G Pay button is clicked, it triggers the presentation of the payment sheet. Once the user makes a selection, the sheet closes and you receive the result inside ",[843,1340,1341],{},"onPaymentResult",[804,1343,787],{},[687,1345,1346],{},[719,1347],{"alt":1348,"src":1349},"A code snippet screenshot.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-009.png",[687,1351,1352],{},[691,1353,865],{"href":1354,"rel":1355},"https:\u002F\u002Framan.pieces.cloud\u002F?p=549e4ea165",[695],[808,1357,1358,1364,1370],{},[751,1359,1360,1362,1093],{},[843,1361,1090],{},[955,1363,1052],{},[751,1365,1366,1368,1101],{},[843,1367,1098],{},[955,1369,1052],{},[751,1371,1372,1375,1377,1378,1381],{},[843,1373,1374],{},"paymentMethodData",[955,1376,1052],{}," This value is of type ",[843,1379,1380],{},"PaymentMethodData"," and comprises four parameters:",[743,1383,1380],{"id":1384},"paymentmethoddata",[687,1386,1387,1388,1391],{},"If the selection is successful, the result is fulfilled with a ",[843,1389,1390],{},"PaymentData","object that includes relevant information about the payment method selected:",[808,1393,1394,1401,1409,1420],{},[751,1395,1396,1398,1400],{},[843,1397,1127],{},[955,1399,1052],{}," PaymentMethod type that was selected in the G Pay payment sheet",[751,1402,1403,1406,1408],{},[843,1404,1405],{},"description",[955,1407,1052],{}," This contains the user-facing message describing the payment method",[751,1410,1411,1414,1377,1416,1419],{},[843,1412,1413],{},"tokenizationData",[955,1415,1052],{},[843,1417,1418],{},"PaymentMethodTokentizationData"," and consists of two parameters (explained below)",[751,1421,1422,1425,1427,1428,1431,958,1433,1436,781,1440],{},[843,1423,1424],{},"info",[955,1426,1052],{}," This comprises three parameters: ",[843,1429,1430],{},"billingAddress",[804,1432,1292],{},[843,1434,1435],{},"cardDetails",[955,1437,1438],{},[804,1439,1292],{},[843,1441,1442],{},"cardNetwork",[687,1444,1445,1446,1451,1452,1455],{},"The billing address is present in the form of an ",[691,1447,1450],{"href":1448,"rel":1449},"https:\u002F\u002Fdevelopers.google.com\u002Fpay\u002Fapi\u002Fandroid\u002Freference\u002Fresponse-objects#Address",[695],"Address Object",". ",[843,1453,1454],{},"CardDetails"," are present in a string that represents the details of the card. This value is commonly the last four digits of the selected payment account number.",[687,1457,1458,1461,1462,1464,1465,787],{},[843,1459,1460],{},"CardNetwork"," is also a string that represents the payment card network of the selected payment. This value is one of the values present inside the format of ",[843,1463,1234],{}," in ",[843,1466,1467],{},"CardParameters",[743,1469,1418],{"id":1470},"paymentmethodtokentizationdata",[748,1472,1473,1480],{},[751,1474,1475,1477,1479],{},[843,1476,1127],{},[955,1478,1052],{}," Type of tokenization applied to the selected payment method",[751,1481,1482,1485,1487],{},[843,1483,1484],{},"token",[955,1486,1052],{}," Generated payment method token, e.g. PAYMENT_GATEWAY, DIRECT",[682,1489,1491],{"id":1490},"after-payment-result","After Payment Result",[687,1493,1494,1495,1497,1498,1500],{},"You can now use this payment method information to perform the actual transaction. For instance, you can get the ",[843,1496,1413],{}," from the above response and extract the ",[843,1499,1484],{}," from it.",[687,1502,1503,1504,1509],{},"Then, use this token to perform payment through your payment gateway. Check out the ",[691,1505,1508],{"href":1506,"rel":1507},"https:\u002F\u002Fdevelopers.google.com\u002Fpay\u002Fapi\u002F#participating-google-pay-processors",[695],"list of supported processors"," to find out more about specific implementation details on each processor.",[743,1511,1513],{"id":1512},"ui-elements","UI Elements",[687,1515,1516,1518,1519,1521],{},[843,1517,886],{}," exposes one of the parameters called ",[843,1520,1127],{}," (which is an enum) inside its definition. We can play with this param in order to display the Button as per the requirements. Following are the options provided:",[748,1523,1524,1530,1535,1540,1545,1550,1555,1560],{},[751,1525,1526,1529],{},[843,1527,1528],{},"GooglePayButtonType.pay"," (this is the default value)",[751,1531,1532],{},[843,1533,1534],{},"GooglePayButtonType.book",[751,1536,1537],{},[843,1538,1539],{},"GooglePayButtonType.buy",[751,1541,1542],{},[843,1543,1544],{},"GooglePayButtonType.checkout",[751,1546,1547],{},[843,1548,1549],{},"GooglePayButtonType.donate",[751,1551,1552],{},[843,1553,1554],{},"GooglePayButtonType.order",[751,1556,1557],{},[843,1558,1559],{},"GooglePayButtonType.plain",[751,1561,1562],{},[843,1563,1564],{},"GooglePayButtonType.subscribe",[687,1566,1567,1568,1570],{},"For instance, if you set the type to ",[843,1569,1564],{},", the result would be:",[687,1572,1573],{},[719,1574],{"alt":1575,"src":1576},"A Subscribe with G Pay button.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-010.png",[687,1578,1579,1580,787],{},"If you prefer to have more control over each individual request separately from the button, you can instantiate a payment client and add the buttons to your layout independently using ",[843,1581,1582],{},"RawGooglePayButton",[687,1584,1585],{},[719,1586],{"alt":1587,"src":1588},"The code for a raw G Pay button.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-011.png",[687,1590,1591],{},[691,1592,865],{"href":1593,"rel":1594},"https:\u002F\u002Framan.pieces.cloud\u002F?p=c3964eb78f",[695],[687,1596,1597],{},"The result of this button is:",[687,1599,1600],{},[719,1601],{"alt":1602,"src":1603},"A plain G Pay button.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-012.png",[687,1605,1606,1607,1610,1611,1614],{},"Once the user clicks this button, you can initiate the request using ",[843,1608,1609],{},"Pay.withAssets",", which is an alternative to a ",[843,1612,1613],{},"Pay","object with a list of configurations in String format.‍",[687,1616,1617],{},[719,1618],{"alt":1619,"src":1620},"A screenshot of a code snippet.","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fimg-013.png",[687,1622,1623],{},[691,1624,1627],{"href":1625,"rel":1626},"https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fpay\u002Flatest\u002Fpay\u002FPay-class.html",[695],"Save with Pieces",[687,1629,1630],{},"The response, which is the Google Pay token, can be sent to your server\u002FPSP.",[682,1632,1634],{"id":1633},"use-pieces-to-store-your-flutter-snippets","Use Pieces to Store Your Flutter Snippets",[687,1636,1637],{},"When working on Flutter applications, you may come across widgets that you want to save and reuse later, but you may not have a safe place to store them. Additionally, while browsing through Flutter and Dart documentation, you may want to save examples that can be useful when implementing a new feature or deciding which widget to use for different scenarios.",[687,1639,1640],{},"This is where Pieces comes in! Pieces is a desktop application with integrations that helps you save all your useful code snippets efficiently. With Pieces, you can easily save any code snippets from StackOverflow by clicking a button using the chrome extension. Additionally, your code can be autosaved from locally-hosted ML algorithms that recognize your code patterns.",[687,1642,1643],{},"With auto-classification of snippets by language and the ability to share code with others using generated links, Pieces makes it easy to manage and share your code snippets. The Pieces suite is continuously being developed, and new features are being added to share, reuse, and save code snippets more effectively. Overall, Pieces is a powerful tool that can help you streamline your development process and make coding more efficient.",[687,1645,1646,1651],{},[691,1647,1650],{"href":1648,"rel":1649},"https:\u002F\u002Fpieces.app\u002Finstall",[695],"Try Pieces now using the personal plan for free","!",{"title":1653,"searchDepth":1654,"depth":1654,"links":1655},"",2,[1656,1657,1661,1665,1670,1674,1677],{"id":684,"depth":1654,"text":685},{"id":725,"depth":1654,"text":726,"children":1658},[1659],{"id":745,"depth":1660,"text":746},3,{"id":765,"depth":1654,"text":766,"children":1662},[1663,1664],{"id":895,"depth":1660,"text":886},{"id":980,"depth":1660,"text":981},{"id":1116,"depth":1654,"text":1117,"children":1666},[1667,1668,1669],{"id":1166,"depth":1660,"text":1143},{"id":1204,"depth":1660,"text":1155},{"id":1321,"depth":1660,"text":1262},{"id":1334,"depth":1654,"text":1335,"children":1671},[1672,1673],{"id":1384,"depth":1660,"text":1380},{"id":1470,"depth":1660,"text":1418},{"id":1490,"depth":1654,"text":1491,"children":1675},[1676],{"id":1512,"depth":1660,"text":1513},{"id":1633,"depth":1654,"text":1634},null,"Software Development","2022-07-14T00:00:00.000Z","Google Pay is a digital wallet platform and online payment system developed by Google for contactless payments. Learn how to integrate it with your Flutter apps in this article!",false,"md","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fgoogle-pay-in-flutter\u002Fhero.png","Google Pay in Flutter.",{},"\u002Fblog\u002Fgoogle-pay-in-flutter",{"title":673,"description":1681},"blog\u002Fgoogle-pay-in-flutter","Efl7jdhg7_O9BjgoqxyaAkzJKuJPcS_7jcQBQk2LVyM",{"id":1692,"title":674,"body":1693,"description":1697,"draft":1682,"extension":1683,"meta":1700,"navigation":32,"path":1701,"photo":1702,"photoAlt":1678,"seo":1703,"stem":1704,"__hash__":1705},"authors\u002Fauthors\u002Faseem-wangoo.md",{"type":679,"value":1694,"toc":1698},[1695],[687,1696,1697],{},"Aseem is a seasoned software engineer with over 10 years of expertise and leadership experience. Who combines technical proficiency with strategic insight to deliver impactful solutions and guide teams toward success.",{"title":1653,"searchDepth":1654,"depth":1654,"links":1699},[],{},"\u002Fauthors\u002Faseem-wangoo","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fauthors\u002Fplaceholder.svg",{"title":674,"description":1697},"authors\u002Faseem-wangoo","BykQHOcgQJBv43HQCbia0i-Yq_w6EXmHMny9Py5gycQ",{"left":1707,"top":1707,"width":1708,"height":1708,"rotate":1707,"vFlip":1682,"hFlip":1682,"body":1709},0,24,"\u003Cpath fill=\"currentColor\" d=\"m7.825 13l4.9 4.9q.3.3.288.7t-.313.7q-.3.275-.7.288t-.7-.288l-6.6-6.6q-.15-.15-.213-.325T4.426 12t.063-.375t.212-.325l6.6-6.6q.275-.275.688-.275t.712.275q.3.3.3.713t-.3.712L7.825 11H19q.425 0 .713.288T20 12t-.288.713T19 13z\"\u002F>"]