{"id":5970,"date":"2018-06-22T18:45:29","date_gmt":"2018-06-22T18:45:29","guid":{"rendered":"https:\/\/cheesecakelabs.com\/blog\/?p=5970\/"},"modified":"2022-07-01T17:23:34","modified_gmt":"2022-07-01T17:23:34","slug":"google-play-iap-first-setup-test-sandbox","status":"publish","type":"post","link":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/","title":{"rendered":"Google Play IAP First Setup with test sandbox"},"content":{"rendered":"<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Hi there, I wanted to talk a little bit about my experience with the <\/span><span style=\"font-weight: 400;\">In app<\/span><span style=\"font-weight: 400;\"> purchase from Google Play. I believe it can be confusing to understand it at first (l surely had some trouble) but once you get to know it better it becomes a great asset. <\/span><\/p>\n<p style=\"text-align: left;\"><!--more--><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">At first I had trouble configuring the Google Play IAP structure through the google console and once that was done I spent some time trying to setup the sandbox for testing the purchases.<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Because I had trouble finding that information, this post will be focused in three topics: first an introduction of Google play IAP services, second a step by step to configure the minimum you need to start testing and lastly how indeed to configure testing correctly. Those who just want information about a specific part of the setup, feel free to jump directly to steps <a href=\"#step2\">2. How to configure an app in the google play console<\/a><\/span><span style=\"font-weight: 400;\">&nbsp;or <a href=\"#step3\">3. Setup sandbox testers<\/a><\/span><b><\/b><span style=\"font-weight: 400;\">. And if you are a more experienced user of the google play console, you will probably know most of this already<\/span><\/p>\n<h1 style=\"text-align: left;\">1. Google Play IAP Overview<\/h1>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">An In app purchase in my understanding is a purchase that happens completely inside an application. In other words, you never leave the app to perform the purchase. There are several tools that can be used to provide the functionality in Android apps but I want to focus on Google&#8217;s solution for now.<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">It is important to remember that Google Play IAP is not able to solve all kinds of problems. First of all, in the documentation it says <\/span><span style=\"color: #000000;\"><a style=\"color: #000000;\" href=\"https:\/\/developer.android.com\/google\/play\/billing\/billing_overview\"><i><span style=\"font-weight: 400;\">&#8220;Google Play Billing is a service provided by Google Play that lets you sell digital content from inside an Android app or \u201cin-app.\u201d<\/span><\/i><\/a><\/span><span style=\"font-weight: 400;\"> That means that the service is made to <\/span><b>enable digital products<\/b><span style=\"font-weight: 400;\"> to be commercialized inside applications. You can&#8217;t use iap to sell physical products or services and that can become a limitation depending on your business.<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Another important factor is that all purchases made with the system are sent to the account registered in the Google Play Console, which is a complication if we are talking about marketplaces that allow transactions between users.<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">It is also important to keep in mind the definition of digital products or digital content because there is a fee for selling those products inside applications and that fee is applicable even if you don&#8217;t use Google&#8217;s solution for the purchases. In my understanding the definition of digital product could be simplified to &#8220;digital content that is consumed inside the application&#8221;, for instance, a subscription to a newsletter, the purchase of gold coins in a game, the upgrade of app services to a pro account, and so on.<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">The core reasons I like to use this tool are :<\/span><\/p>\n<p><b>Easy<\/b><span style=\"font-weight: 400;\"> &#8211; Google play does most of the heavy lifting. Google has an IAP library that was updated to a new version and nowadays can be imported directly from gradle. To get familiar with it I suggest taking a look at the example provided in the documentation <\/span><span style=\"font-weight: 400;\"><a href=\"https:\/\/github.com\/googlesamples\/android-play-billing\/tree\/master\/TrivialDrive_v2\">Trivial Drive V2<\/a>.<\/span><\/p>\n<p><b>Safe<\/b><span style=\"font-weight: 400;\"> &#8211; The app side does not handle direct communication with the store. All the communication is handled through an interface provided by the Google Play app (which must be installed in the device for the purchases to work).<\/span><\/p>\n<p style=\"text-align: left;\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5979\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-2.58.26-PM.png\" alt=\"\" width=\"641\" height=\"450\"><\/p>\n<p><b>Sandbox<\/b><span style=\"font-weight: 400;\"> &#8211; The sandbox has evolved a lot since its first release and now it is really good to test and validate the flow. That is mostly because it gives you control of test subscriptions cancellation (Apple&#8217;s sandbox really can&#8217;t compare in test subscription control) and also because it uses the real purchase flow (You have to input valid purchase data, like existing credit cards and so on, but when the sandbox is active it does not charge). <\/span><\/p>\n<p><b>UI Consistency<\/b><span style=\"font-weight: 400;\"> &#8211; Last but not least, it is a good way to provide consistency because any android user who has ever downloaded an app from the google play already knows how the flow works since it is the same.<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Aside from that, google play has a lot of tools to manage consumable products, and subscriptions. It also has many features to provide conversion between different types of subscriptions, automatically converting the credits that have been already payed and making the necessary adjustments. Also it is important to notice that In regards to the delivery of content to the user, that responsibility lies completely with us, the service they provide works only for purchase validation.<\/span><\/p>\n<h1 id=\"step2\">2. How to configure an app in the Google Play console<\/h1>\n<p><span style=\"font-weight: 400;\">To start using the Google Play IAP service and be able to send applications to the Google Play store, first you need to have a Google Play Developer Account. Although there is a cost to purchase one of those accounts I find it is worth it in the long run because it doesn&#8217;t expire.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Once you have your developer account, to start using the Google Play IAP service inside an application, you need to create an app inside the google play console. The console will generate a public key for your application to identify requests made to their system. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The first setup for the app in the console can be a bit painful but I will put the steps I generally take. First in the initial screen in the Google play console just click &#8220;Create Application&#8221; and the following dialog should appear.<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-5983\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.10.04-PM.png\" alt=\"\" width=\"794\" height=\"499\" srcset=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.10.04-PM.png 794w, https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.10.04-PM-768x483.png 768w\" sizes=\"(max-width: 794px) 100vw, 794px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Choose the application language and name and click create. It will then appear in the applications list in the dashboard as a Draft.<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-5984\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.10.43-PM.png\" alt=\"\" width=\"794\" height=\"46\" srcset=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.10.43-PM.png 794w, https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.10.43-PM-768x44.png 768w\" sizes=\"(max-width: 794px) 100vw, 794px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Note the trash icon in the right side, as long as the application is still a draft it can be deleted. Once it has been published we can only unpublish it but not delete.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">After creating the app as a draft, it will already generate the public key needed to be added in the app. To get it, go into the app and find the &#8220;Services &amp; APIs&#8221; section.<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-5985\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.10.55-PM.png\" alt=\"\" width=\"792\" height=\"498\" srcset=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.10.55-PM.png 792w, https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.10.55-PM-768x483.png 768w\" sizes=\"(max-width: 792px) 100vw, 792px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">It is important to notice that to complete the first setup of the app, we need an apk file to be put in the console, and the package name chosen for the project can&#8217;t be changed afterwards. Therefore choose wisely and setup the IAP lib in the project. <\/span><span style=\"font-weight: 400;\">The Trivial Drive V2<\/span><span style=\"font-weight: 400;\"> gives a very good example on how to do that. And to actually test it you will most likely go through this setup with a dummy app.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">After setting things in the project and generating a signed apk, remember to save the keys used for signing it, they are important for the future because the console will not accept another signature, I usually store it inside the app folder and put it in the git structure to ensure it won&#8217;t be lost if anything happens with my machine or hd.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"> Once you have the apk, there are four steps to be performed to publish the app in an internal testing track. They can be done in any order and are in the sections, &#8220;App Releases&#8221;, &#8220;Store Listing&#8221;, &#8220;Content Rating&#8221; and &#8220;Pricing and Distribution&#8221;.<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-5986\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.12.17-PM.png\" alt=\"\" width=\"793\" height=\"498\" srcset=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.12.17-PM.png 793w, https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.12.17-PM-768x482.png 768w\" sizes=\"(max-width: 793px) 100vw, 793px\" \/><\/p>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">App Release<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">In the app release section, go to the bottom of the screen and find the internal test track, click &#8220;Manage&#8221;, than click &#8220;Add Release&#8221;.<\/span><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-5987\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.14.18-PM.png\" alt=\"\" width=\"799\" height=\"299\" srcset=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.14.18-PM.png 799w, https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.14.18-PM-768x287.png 768w\" sizes=\"(max-width: 799px) 100vw, 799px\" \/> <img decoding=\"async\" class=\"alignnone size-medium wp-image-5988\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.14.28-PM.png\" alt=\"\" width=\"793\" height=\"500\" srcset=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.14.28-PM.png 793w, https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.14.28-PM-768x484.png 768w\" sizes=\"(max-width: 793px) 100vw, 793px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Google has recently released a service to manage the signing of your app and you will be prompted to decide if you want to use it or opt out. Either way, choose one and then add your apk to the available space (If you opt out you can still sign the service in the future but that will not be as simple). <\/span><span style=\"font-weight: 400;\">Then fill the rest of the form and click save. Once that is done, you can also click to review, but if all the other steps are not completed, the button to &#8220;start the rollout&#8221; will be disabled. So we will comeback to this once we finish the other steps.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">2. Content Rating<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Fill in a valid email and then answer the questionnaire. When finished click &#8220;<\/span><span style=\"font-weight: 400;\">save<\/span><span style=\"font-weight: 400;\">&#8220;, then click &#8220;<\/span><span style=\"font-weight: 400;\">calculate rating<\/span><span style=\"font-weight: 400;\">&#8221; and finally click &#8220;<\/span><span style=\"font-weight: 400;\">apply rating<\/span><span style=\"font-weight: 400;\">&#8220;.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">3. Pricing and distribution<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Here you gotta decide if your app will be free or not and where it will be available (Don&#8217;t forget that if you choose it to be free it won&#8217;t be allowed to change afterwards). After that you have to answer another questionnaire. Just fill it in and click save.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">4. Store Listing<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">This item is a little bit trickier than the questionnaires above. To make it simple, you need to fill two descriptions of the app, a short and a detailed one, both of which can be altered in the future so you can put one word in each and it will already be accepted (since these are mandatory fields).<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">You must provide at least two images from screens, another image for the &#8220;hi-res icon&#8221; and one for the &#8220;feature graphic&#8221; totalizing at least four mandatory images. All these images can be changed in the future as well. Because of that I usually use empty prints from a phone, and blanks respecting the sizes requested for the icon and graphic.<\/span><\/p>\n<p style=\"text-align: left;\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5989 aligncenter\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.18.30-PM.png\" alt=\"\" width=\"377\" height=\"489\"><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">After that you just need to choose an application type and category and in the end of the page you can opt to not provide a privacy policy yet (You will need one to do a release but for now that is fine). Then just click save.<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">If you followed all the steps correctly you should have all the checks marked green like below.<\/span><\/p>\n<p style=\"text-align: left;\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5990\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.19.31-PM.png\" alt=\"\" width=\"755\" height=\"474\"><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">This way you can just go back to the app releases section, find the apk you already put in the internal tests and just click &#8220;Review&#8221; and then &#8220;Start Rollout to Internal Test&#8221;. Once that is done, sadly, we must wait about 3h before the apk is truly available (That time is an average and it may be much faster, but I wouldn&#8217;t recommend staying still). &nbsp;Which gives us more than enough time to setup the IAP sandbox.<\/span><\/p>\n<h1 id=\"step3\">3. Setup Sandbox Testers<\/h1>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Once you rolled out your apk for internal testing it should appear in the app releases section something like the following:<\/span><\/p>\n<p style=\"text-align: left;\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5991\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.20.33-PM.png\" alt=\"\" width=\"758\" height=\"125\" srcset=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.20.33-PM.png 758w, https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.20.33-PM-750x125.png 750w\" sizes=\"(max-width: 758px) 100vw, 758px\" \/><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Click manage again and then drop down the &#8220;manage testers&#8221; dropdown, select the testing method as internal test and then create a list for testers. And click save. This list will generate an opt in link which must be provided to the testers and they will be able to download the app from google play once they opt in. However being able to test the app does not mean that they will be able to test purchases, at this point, any purchase done in the app will be counted as a real purchase.<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">The last step to ensure your testers can use the sandbox purchase flow is a little tricky because its hidden in the general settings of your Google Play Console instead of inside the app itself. <\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Go to the start screen of your google play console and find in the left menu the settings section, then scroll down to the bottom to find the section &#8220;License Testing&#8221;. There you just fill in the emails you want to NOT be charged by google play when testing. Any email that is not in this list but is in the previous one will be charged.<\/span><\/p>\n<p style=\"text-align: left;\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5992\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.21.07-PM.png\" alt=\"\" width=\"759\" height=\"481\"><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Finally with all this set, when the app is processed by google play you can go back to the App release section of your app and get in the manage tester section and there will be a URL for you to send your testers so they can opt in and download the apk.<\/span><\/p>\n<p style=\"text-align: left;\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5993\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.22.04-PM.png\" alt=\"\" width=\"706\" height=\"515\"><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Now you are all set, you can use the Google Play IAP flow in your app and it should appear close to the example below.<\/span><\/p>\n<p style=\"text-align: left;\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5994 aligncenter\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/Screen-Shot-2018-06-22-at-3.22.40-PM.png\" alt=\"\" width=\"422\" height=\"325\"><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">If that message does not show, the purchase will be charged so be careful and warn your testers. For the flow to work you will need real card data so, keep a sharp eye for this detail.<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">All in all, I think Google IAP is a pretty neat tool and can be useful in a variety of ways. In the post I just discussed it in a shallow manner and apologize if that may cause any displeasure. My objective here was to focus on the initial setup and how\/where to configure the IAP test purchases because I thought that setup to be confusing at first and had a difficult time finding the information on the right way to make it work. I hope this helps someone in the future to find that info faster.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi there, I wanted to talk a little bit about my experience with the In app purchase from Google Play. I believe it can be confusing to understand it at first (l surely had some trouble) but once you get to know it better it becomes a great asset.<\/p>\n","protected":false},"author":65,"featured_media":5997,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[432],"tags":[],"class_list":["post-5970","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Google Play IAP First Setup with test sandbox<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Google Play IAP First Setup with test sandbox\" \/>\n<meta property=\"og:description\" content=\"Hi there, I wanted to talk a little bit about my experience with the In app purchase from Google Play. I believe it can be confusing to understand it at first (l surely had some trouble) but once you get to know it better it becomes a great asset.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/\" \/>\n<meta property=\"og:site_name\" content=\"Cheesecake Labs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/cheesecakelabs\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-22T18:45:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-01T17:23:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/blog_lek-01.png\" \/>\n\t<meta property=\"og:image:width\" content=\"6250\" \/>\n\t<meta property=\"og:image:height\" content=\"2250\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Cheesecake Labs\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@cheesecakelabs\" \/>\n<meta name=\"twitter:site\" content=\"@cheesecakelabs\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/\"},\"author\":{\"name\":\"Arthur Sady\"},\"headline\":\"Google Play IAP First Setup with test sandbox\",\"datePublished\":\"2018-06-22T18:45:29+00:00\",\"dateModified\":\"2022-07-01T17:23:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/\"},\"wordCount\":2101,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/blog_lek-01.png\",\"articleSection\":[\"Engineering\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/\",\"url\":\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/\",\"name\":\"Google Play IAP First Setup with test sandbox\",\"isPartOf\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/blog_lek-01.png\",\"datePublished\":\"2018-06-22T18:45:29+00:00\",\"dateModified\":\"2022-07-01T17:23:34+00:00\",\"author\":{\"@type\":\"person\",\"name\":\"Arthur Sady\"},\"breadcrumb\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#primaryimage\",\"url\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/blog_lek-01.png\",\"contentUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/blog_lek-01.png\",\"width\":6250,\"height\":2250,\"caption\":\"Cellphone with Google Play on the screen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cheesecakelabs.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google Play IAP First Setup with test sandbox\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/#website\",\"url\":\"https:\/\/cheesecakelabs.com\/blog\/\",\"name\":\"Cheesecake Labs\",\"description\":\"Nearshore outsourcing company for Web and Mobile design and engineering services, and staff augmentation for startups and enterprises..\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cheesecakelabs.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"name\":\"Arthur Sady\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/arthur-300x300.jpg\",\"contentUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/arthur-300x300.jpg\",\"caption\":\"Arthur Sady\"},\"description\":\"10 years of experience in Marketing and Sales in the Technology sector. My main purpose is help, support and structure efficient operations and also develop independent and multidisciplinary teams.\",\"url\":\"https:\/\/cheesecakelabs.com\/blog\/autor\/arthursady\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Google Play IAP First Setup with test sandbox","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/","og_locale":"en_US","og_type":"article","og_title":"Google Play IAP First Setup with test sandbox","og_description":"Hi there, I wanted to talk a little bit about my experience with the In app purchase from Google Play. I believe it can be confusing to understand it at first (l surely had some trouble) but once you get to know it better it becomes a great asset.","og_url":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/","og_site_name":"Cheesecake Labs","article_publisher":"https:\/\/www.facebook.com\/cheesecakelabs","article_published_time":"2018-06-22T18:45:29+00:00","article_modified_time":"2022-07-01T17:23:34+00:00","og_image":[{"width":6250,"height":2250,"url":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/blog_lek-01.png","type":"image\/png"}],"author":"Cheesecake Labs","twitter_card":"summary_large_image","twitter_creator":"@cheesecakelabs","twitter_site":"@cheesecakelabs","twitter_misc":{"Written by":null,"Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#article","isPartOf":{"@id":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/"},"author":{"name":"Arthur Sady"},"headline":"Google Play IAP First Setup with test sandbox","datePublished":"2018-06-22T18:45:29+00:00","dateModified":"2022-07-01T17:23:34+00:00","mainEntityOfPage":{"@id":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/"},"wordCount":2101,"commentCount":0,"image":{"@id":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#primaryimage"},"thumbnailUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/blog_lek-01.png","articleSection":["Engineering"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/","url":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/","name":"Google Play IAP First Setup with test sandbox","isPartOf":{"@id":"https:\/\/cheesecakelabs.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#primaryimage"},"image":{"@id":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#primaryimage"},"thumbnailUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/blog_lek-01.png","datePublished":"2018-06-22T18:45:29+00:00","dateModified":"2022-07-01T17:23:34+00:00","author":{"@type":"person","name":"Arthur Sady"},"breadcrumb":{"@id":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#primaryimage","url":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/blog_lek-01.png","contentUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2018\/06\/blog_lek-01.png","width":6250,"height":2250,"caption":"Cellphone with Google Play on the screen"},{"@type":"BreadcrumbList","@id":"https:\/\/cheesecakelabs.com\/blog\/google-play-iap-first-setup-test-sandbox\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cheesecakelabs.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Google Play IAP First Setup with test sandbox"}]},{"@type":"WebSite","@id":"https:\/\/cheesecakelabs.com\/blog\/#website","url":"https:\/\/cheesecakelabs.com\/blog\/","name":"Cheesecake Labs","description":"Nearshore outsourcing company for Web and Mobile design and engineering services, and staff augmentation for startups and enterprises..","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cheesecakelabs.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","name":"Arthur Sady","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cheesecakelabs.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/arthur-300x300.jpg","contentUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/arthur-300x300.jpg","caption":"Arthur Sady"},"description":"10 years of experience in Marketing and Sales in the Technology sector. My main purpose is help, support and structure efficient operations and also develop independent and multidisciplinary teams.","url":"https:\/\/cheesecakelabs.com\/blog\/autor\/arthursady\/"}]}},"_links":{"self":[{"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/posts\/5970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/comments?post=5970"}],"version-history":[{"count":1,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/posts\/5970\/revisions"}],"predecessor-version":[{"id":10239,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/posts\/5970\/revisions\/10239"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/media\/5997"}],"wp:attachment":[{"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/media?parent=5970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/categories?post=5970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/tags?post=5970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}