{"id":25296470,"url":"https://github.com/jewelshkjony/googleplaybilling","last_synced_at":"2025-10-28T03:30:22.482Z","repository":{"id":60321203,"uuid":"517465856","full_name":"jewelshkjony/GooglePlayBilling","owner":"jewelshkjony","description":"An in-app-billing extension to monetize your app products using google play store billing library 6.1.0.","archived":false,"fork":false,"pushed_at":"2024-01-18T08:58:21.000Z","size":14152,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-01-18T12:33:09.667Z","etag":null,"topics":["aix","android","app-inventor","billing","billing-extension","extension","google-play","google-play-billing","in-app-billing","in-app-purchase","in-app-subscription","java","kodular","monetize","niotron","play-console"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jewelshkjony.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":"jewelshkjony"}},"created_at":"2022-07-25T00:08:17.000Z","updated_at":"2024-01-14T17:23:32.000Z","dependencies_parsed_at":"2024-01-18T09:55:27.706Z","dependency_job_id":null,"html_url":"https://github.com/jewelshkjony/GooglePlayBilling","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jewelshkjony%2FGooglePlayBilling","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jewelshkjony%2FGooglePlayBilling/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jewelshkjony%2FGooglePlayBilling/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jewelshkjony%2FGooglePlayBilling/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jewelshkjony","download_url":"https://codeload.github.com/jewelshkjony/GooglePlayBilling/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238585162,"owners_count":19496436,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aix","android","app-inventor","billing","billing-extension","extension","google-play","google-play-billing","in-app-billing","in-app-purchase","in-app-subscription","java","kodular","monetize","niotron","play-console"],"created_at":"2025-02-13T02:58:03.370Z","updated_at":"2025-10-28T03:30:22.111Z","avatar_url":"https://github.com/jewelshkjony.png","language":null,"funding_links":["https://github.com/sponsors/jewelshkjony"],"categories":[],"sub_categories":[],"readme":"# GooglePlayBilling - InAppBilling Extension\nAn in-app-billing extension to monetize your app products using google play store billing library 7.0.0.\n\n**Reminder:** Starting on August 2, 2023, all new apps must use Billing Library version 5 or newer. By November 1, 2023, all updates to existing apps must use Billing Library version 5 or newer. [Learn more](https://developer.android.com/google/play/billing/deprecation-faq).\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/aix.png\"/\u003e\n\n## Start Connection\nYou must use this function to starts up BillingClient setup process asynchronously.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/start-connection.png\"/\u003e\n\n\u003cb\u003eBillingServiceConnected:\u003c/b\u003e Sdk is ready run any billing operation.\\\n\u003cb\u003eBillingServiceDisconnected:\u003c/b\u003e Sdk is disconnected from billing service.\n\n## Billing Service Error\nThis event will be triggered when the extension got any error while doing any billing operation.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/billing-service-error.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003efunction Name\u003c/b\u003e → It’s return the name of function which got error.\n\u003cli\u003e \u003cb\u003eerror\u003c/b\u003e → It’s return the error message as string.\n\n## End Connection\nCloses the connection and releases all held resources such as service connections.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/end-connection.png\"/\u003e\n\n## Is Ready\nChecks if the client is currently connected to the service, so that requests to other methods will succeed.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/is-ready.png\"/\u003e\n\n## Is Subscription Supported\nIf feature is not supported then return false.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/is-subscription-supported.png\"/\u003e\n\n## Product Type\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/product-type.png\"/\u003e\n\n## Show In App Messages\nIf you've enabled in-app messaging, Google Play will show users messaging during grace period and account hold once per day and provide them an opportunity to fix their payment without leaving the app. We recommend that you call this API whenever the user opens the app to determine whether the message should be shown. If the user successfully recovered their subscription, you will receive purchase token. You should then use this purchase token to call the Google Play Developer API and refresh the subscription status in your app.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/in-app-message-demo.jpg\"/\u003e\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/show-in-app-message.png\"/\u003e\n\nThe subscription status changed. For example, a subscription has been recovered from a suspend state. Developers should expect the purchase token to be returned with this response code and use the purchase token with the Google Play Developer API.\n\n\u003cli\u003e \u003cb\u003epurchaseToken\u003c/b\u003e → It’s return the purchase token as string.\n\u003cli\u003e \u003cb\u003eresponse Code\u003c/b\u003e → It’s return the response code as integer.\n\n## Get Product Details\nPerforms a network query the details of products available for sale in your app. Watch demo block for better understanding.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/get-product-details.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003ename\u003c/b\u003e → It’s return the name of product as string.\n\u003cli\u003e \u003cb\u003etitle\u003c/b\u003e → It’s return the title of product as string.\n\u003cli\u003e \u003cb\u003eproduct Id\u003c/b\u003e → It’s return the given product id string.\n\u003cli\u003e \u003cb\u003eproductType\u003c/b\u003e → It’s return the type of product string.\n\u003cli\u003e \u003cb\u003edescription\u003c/b\u003e → It’s return the description of product as string.\n\u003cli\u003e \u003cb\u003eprice\u003c/b\u003e → It’s return the formatted price of product as string.\n\u003cli\u003e \u003cb\u003eproductDetails\u003c/b\u003e → It’s return the object of ProductDetails.\n\u003cli\u003e \u003cb\u003eresponse Code\u003c/b\u003e → It’s return the response code as integer.\n\u003cli\u003e \u003cb\u003ereason\u003c/b\u003e → It’s return the reason for error as string.\n\u003cli\u003e \u003cb\u003emessage\u003c/b\u003e → It’s return the details error message as string.\n\n## Get Multiple Product Details\nPerforms a network query the details of products available for sale in your app. Set productIds and productTypes as list. Watch demo block for better understanding.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/get-multiple-product-details.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003enames\u003c/b\u003e → It’s return the names of products as list of string.\n\u003cli\u003e \u003cb\u003etitles\u003c/b\u003e → It’s return the titles of product as list of string.\n\u003cli\u003e \u003cb\u003eproductIds\u003c/b\u003e → It’s return the given products ids list of string.\n\u003cli\u003e \u003cb\u003eproductTypes\u003c/b\u003e → It’s return the types of products list of string.\n\u003cli\u003e \u003cb\u003edescriptions\u003c/b\u003e → It’s return the descriptions of products as list of string.\n\u003cli\u003e \u003cb\u003eprices\u003c/b\u003e → It’s return the formatted price of product as list of string.\n\u003cli\u003e \u003cb\u003eproductDetailsList\u003c/b\u003e → It’s return the objects of ProductDetails as list.\n\u003cli\u003e \u003cb\u003eresponse Code\u003c/b\u003e → It’s return the response code as integer.\n\u003cli\u003e \u003cb\u003ereason\u003c/b\u003e → It’s return the reason for error as string.\n\u003cli\u003e \u003cb\u003emessage\u003c/b\u003e → It’s return the details error message as string.\n  \n## Get Offer Token\nYou can get \u003cb\u003eproductDetails\u003c/b\u003e from \u003cb\u003eGotProductDetails\u003c/b\u003e event.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/get-offer-token.png\"/\u003e\n\n## Launch Billing Flow\nInitiates the billing flow for an in-app purchase or subscription. You can get \u003cb\u003eproductDetails\u003c/b\u003e from \u003cb\u003eGotProductDetails\u003c/b\u003e event.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/launch-billing-flow.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003epurchase\u003c/b\u003e → It’s return the object of Purchase. Use this purchase object to Consume or Acknowledge this purchase.\n\u003cli\u003e \u003cb\u003eresponse Code\u003c/b\u003e → It’s return the response code as integer.\n\u003cli\u003e \u003cb\u003ereason\u003c/b\u003e → It’s return the reason for error as string.\n\u003cli\u003e \u003cb\u003emessage\u003c/b\u003e → It’s return the details error message as string.\n\n## Launch Billing Flow With\nInitiates the billing flow for an in-app purchase or subscription.\nYou can get \u003cb\u003eproductDetails\u003c/b\u003e from \u003cb\u003eGotProductDetails\u003c/b\u003e event.\n\n\u003cb\u003eisOfferPersonalized:\u003c/b\u003e The Google Play purchase screen indicating that the price was customized for the user.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/launch-billing-flow-with.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003epurchase\u003c/b\u003e → It’s return the object of Purchase. Use this purchase object to Consume or Acknowledge this purchase.\n\u003cli\u003e \u003cb\u003eresponse Code\u003c/b\u003e → It’s return the response code as integer.\n\u003cli\u003e \u003cb\u003ereason\u003c/b\u003e → It’s return the reason for error as string.\n\u003cli\u003e \u003cb\u003emessage\u003c/b\u003e → It’s return the details error message as string.\n\n## Launch Bundle Billing Flow\nInitiates the billing flow for bundle of in-app purchase or subscription.\nYou can get \u003cb\u003eproductDetailsList\u003c/b\u003e from \u003cb\u003eGotMultipleProductDetails\u003c/b\u003e event.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/launch-bundle-billing-flow.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003epurchase\u003c/b\u003e → It’s return the object of Purchase. Use this purchase object to Consume or Acknowledge this purchase.\n\u003cli\u003e \u003cb\u003eresponse Code\u003c/b\u003e → It’s return the response code as integer.\n\u003cli\u003e \u003cb\u003ereason\u003c/b\u003e → It’s return the reason for error as string.\n\u003cli\u003e \u003cb\u003emessage\u003c/b\u003e → It’s return the details error message as string.\n\n\u003cbr\u003e\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/Bundle%20Billing%20Flow%20Demo.jpg\"/\u003e\n  \n## 🔁 Launch Subscription Update Flow\nUpdate purchase flow for in-app subscription product to update it’s billing cycle or launch for price change. You need to set the old purchase token to update the product with new prices. You can store the old purchase token locally or into your own server for later use.\n  \n![image](https://github.com/jewelshkjony/GooglePlayBilling/assets/75406851/0377c963-f416-4f23-a92f-132bd11dfaac)\n\n## 💸 User Selected Alternative Billing\n  \n![image](https://github.com/jewelshkjony/GooglePlayBilling/assets/75406851/62ab76d6-9e29-4242-b545-2f83a8a066ce)\n\nThis event will be triggered when South Korean user select alternative billing option during payment time.\\\nMethod to allow users in South Korea to select an alternative billing option.\\\nEnables the ability for users to select an alternative billing option during the purchase flow.\n  \n![image](https://github.com/jewelshkjony/GooglePlayBilling/assets/75406851/b57402ff-2b67-4e65-9a5a-355f30ab3a39)\n\n## Get Purchase Details\nGet \u003cb\u003epurchase\u003c/b\u003e object from \u003cb\u003eGotPurchase\u003c/b\u003e event.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/get-purchase-details.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003eorderId\u003c/b\u003e → It’s return the order id from the purchase as string.\n\u003cli\u003e \u003cb\u003eisAcknowledge\u003c/b\u003e → It’s return true if the purchase is acknowledged, otherwise false.\n\u003cli\u003e \u003cb\u003eisAutoRenewing\u003c/b\u003e → It’s return true if product is auto renewable.\n\u003cli\u003e \u003cb\u003epurchaseTime\u003c/b\u003e → It’s return the time of purchase as long.\n\u003cli\u003e \u003cb\u003epurchaseToken\u003c/b\u003e → It’s return the purchase token as string.\n\u003cli\u003e \u003cb\u003ejson\u003c/b\u003e → It’s return the json of the purchase object as string.\n\n## Consume\nFor consumables, this method fulfills the acknowledgement requirement and indicates that your app has granted entitlement to the user. This method also enables your app to make the one-time product available for purchase again.\nGet \u003cb\u003epurchase\u003c/b\u003e object from \u003cb\u003eGotPurchase\u003c/b\u003e event.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/consume.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003etoken\u003c/b\u003e → It’s return the purchase token as string.\n\u003cli\u003e \u003cb\u003eresponse Code\u003c/b\u003e → It’s return the response code as integer.\n\u003cli\u003e \u003cb\u003ereason\u003c/b\u003e → It’s return the reason for error as string.\n\u003cli\u003e \u003cb\u003emessage\u003c/b\u003e → It’s return the details error message as string.\n\n## Consume With\nFor consumables, this method fulfills the acknowledgement requirement and indicates that your app has granted entitlement to the user. This method also enables your app to make the one-time product available for purchase again. Use purchase token to consume the purchase. Get \u003cb\u003epurchaseToken\u003c/b\u003e from \u003cb\u003eGotPurchaseDetails\u003c/b\u003e event.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/consume-with.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003etoken\u003c/b\u003e → It’s return the purchase token as string.\n\u003cli\u003e \u003cb\u003eresponse Code\u003c/b\u003e → It’s return the response code as integer.\n\u003cli\u003e \u003cb\u003ereason\u003c/b\u003e → It’s return the reason for error as string.\n\u003cli\u003e \u003cb\u003emessage\u003c/b\u003e → It’s return the details error message as string.\n\n## Acknowledge\nTo acknowledge non-consumable purchases, use this function.\nGet \u003cb\u003epurchase\u003c/b\u003e object from \u003cb\u003eGotPurchase\u003c/b\u003e event.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/acknowledge.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003etoken\u003c/b\u003e → It’s return the purchase token as string.\n\u003cli\u003e \u003cb\u003eresponse Code\u003c/b\u003e → It’s return the response code as integer.\n\u003cli\u003e \u003cb\u003ereason\u003c/b\u003e → It’s return the reason for error as string.\n\u003cli\u003e \u003cb\u003emessage\u003c/b\u003e → It’s return the details error message as string.\n\n## Acknowledge With\nTo acknowledge non-consumable purchases, use this function. Use purchase token to acknowledge the purchase. Get \u003cb\u003epurchaseToken\u003c/b\u003e from \u003cb\u003eGotPurchaseDetails\u003c/b\u003e event.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/acknowledge-with.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003etoken\u003c/b\u003e → It’s return the purchase token as string.\n\u003cli\u003e \u003cb\u003eresponse Code\u003c/b\u003e → It’s return the response code as integer.\n\u003cli\u003e \u003cb\u003ereason\u003c/b\u003e → It’s return the reason for error as string.\n\u003cli\u003e \u003cb\u003emessage\u003c/b\u003e → It’s return the details error message as string.\n\n## Query Purchases\nFetch for a user’s subscription purchases. Returns only active subscriptions and non-consumed one-time purchases.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/query-purchases.png\"/\u003e\n\n## Is Purchased\nGet \u003cb\u003epurchasesList\u003c/b\u003e from \u003cb\u003eQueryPurchasesSuccess\u003c/b\u003e event.\nNow you can check that product is purchased by user or not by product id. If user purchased the product then it will return true, otherwise false.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/is-purchased.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003eproductIds\u003c/b\u003e → It’s return products ids as list of string.\n\u003cli\u003e \u003cb\u003epurchasesState\u003c/b\u003e → It’s return purchases states as list of integer. (0 == UNSPECIFIED_STATE, 1 == PURCHASED and 2 == PENDING).\n\u003cli\u003e \u003cb\u003epurchasesToken\u003c/b\u003e → It’s return purchases token as list of string.\n\u003cli\u003e \u003cb\u003eorderIds\u003c/b\u003e → It’s return order ids as list of string.\n\u003cli\u003e \u003cb\u003epurchasesList\u003c/b\u003e → It’s return the purchase object as list.\n\u003cli\u003e \u003cb\u003esize\u003c/b\u003e → It’s return the size of list as integer.\n\u003cli\u003e \u003cb\u003eresponse Code\u003c/b\u003e → It’s return the response code as integer.\n\u003cli\u003e \u003cb\u003ereason\u003c/b\u003e → It’s return the reason for error as string.\n\u003cli\u003e \u003cb\u003emessage\u003c/b\u003e → It’s return the details error message as string.\n\n## Get Purchase History\nReturns the most recent purchase made by the user for each product, even if that purchase is expired, canceled, or consumed.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/get-purchases-history.png\"/\u003e\n\n\u003cli\u003e \u003cb\u003equantities\u003c/b\u003e → It’s return quantities of purchases of product as list of integer.\n\u003cli\u003e \u003cb\u003epurchaseTimes\u003c/b\u003e → It’s return purchase time as list of long.\n\u003cli\u003e \u003cb\u003edeveloperPayloads\u003c/b\u003e → It’s return developer payloads as list of string.\n\u003cli\u003e \u003cb\u003eoriginalJsons\u003c/b\u003e → It’s return json of purchase object as list of string.\n\u003cli\u003e \u003cb\u003epurchaseTokens\u003c/b\u003e → It’s return purchases token as list of string.\n\u003cli\u003e \u003cb\u003esignatures\u003c/b\u003e → It’s return signatures as list of string.\n\u003cli\u003e \u003cb\u003eproductIds\u003c/b\u003e → It’s return products ids as list of string.\n\u003cli\u003e \u003cb\u003esize\u003c/b\u003e → It’s return the size of list as integer.\n\u003cli\u003e \u003cb\u003eresponse Code\u003c/b\u003e → It’s return the response code as integer.\n\u003cli\u003e \u003cb\u003ereason\u003c/b\u003e → It’s return the reason for error as string.\n\u003cli\u003e \u003cb\u003emessage\u003c/b\u003e → It’s return the details error message as string.\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Implementation Guide Video **↓**\n\n[![AdmobAds](http://img.youtube.com/vi/F0i_6fgmpJ4/0.jpg)](https://www.youtube.com/watch?v=F0i_6fgmpJ4\u0026list=PLczFHGJFYQrmQZMn4DZvjSbWjMqvEO3OD)\n  \n* If you're facing any issues, please submit your issues here → \u003ca href=\"https://github.com/jewelshkjony/GooglePlayBilling/issues\"\u003eSubmit Issues\u003c/a\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eTesting \u0026 Live Videos\u003c/b\u003e\u003c/summary\u003e\n\n## Test Purchasing Video\nhttps://user-images.githubusercontent.com/75406851/186835232-ceb0fd95-d7da-4cb9-aa93-731252f89602.mp4\n\n\u003cbr\u003e\n\n## Live / Real Purchasing Video\nhttps://user-images.githubusercontent.com/75406851/188348269-0fda606a-93b7-4633-bcca-55a933393561.mp4\n\n\u003cbr\u003e\n\n## Purchases Statements\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/Purchases-history.jpeg\"/\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eExample blocks\u003c/b\u003e\u003c/summary\u003e\n\nThis is very simple example blocks for using this extension.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/single-in-app-demo.png\"/\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\nGetting multiple products in single request.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/multiple-in-app-demo.png\"/\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\nPurchasing bundle of product using GetMultipleProductDetails and LaunchMultipleBillingFlow.\n\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/blob/main/images/multiple-billing-flow-demo.png\"/\u003e\n\u003c/details\u003e\n  \n## ➤ Release Notes ↷\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e6.1.0\u003c/b\u003e\u003c/summary\u003e\n\n● Extension size increased 187 KB.\n\n● Added 4 new functions and events.\n\n● Added 1 new property.\n\n\u003c/details\u003e\n\n* **\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e6.0.1\u003c/b\u003e\u003c/summary\u003e\n\n●  Update Play Billing Library to be compatible with Android 14.\n\u003c/details\u003e\n\n* **\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e6.0.0\u003c/b\u003e\u003c/summary\u003e\n\n●  Replaced `ProrationMode` by `ReplacementMode`.\n\n●  Removed order ID for `PENDING` purchases.\\\n\u003csmall\u003e(Previously, the order ID would always be created even if the purchase was pending. Starting with version 6.0.0, an order ID will not be created for pending purchases, and for these purchases, the order ID will be populated after the purchase is moved to the `PURCHASED` state.)\u003c/small\u003e\n\n●  Added new network error response code.\\\n\u003csmall\u003e(A new network error response code, `NETWORK_ERROR`, has been added starting with PBL version 6.0.0. This code is returned when an error occurs due to a network connection issue. These network connection errors were previously reported as `SERVICE_UNAVAILABLE`.)\u003c/small\u003e\n\n●  Added additional logging.\\\n\u003csmall\u003e(The Play Billing Library 6 release includes additional logging, which provides insight into API usage (such as success and failure) and service connection issues. This information will be used to improve the performance of the Play Billing Library and provide better support for errors.)\u003c/small\u003e\n\n●  Extension size increased 139 KB.\n\n●  To migrate from `V5` to `V6`\\\n\u003csmall\u003e(I'll charge very small amount for the `MAJOR` update only. MINOR updates will be totally free for all migrated users.)\u003c/small\u003e\n\u003c/details\u003e\n\n* **\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e5.2.0\u003c/b\u003e\u003c/summary\u003e\n\n●  Extension size increased 149 KB.\n\n●  Added method to allow users in South Korea to select an alternative billing option.\n\u003c/details\u003e\n\n* **\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e5.1.0\u003c/b\u003e\u003c/summary\u003e\n\n●  Extension size increased 11 KB.\n\n●  Added `GetOfferTokens` method.\n\n●  Added `GetOfferIds` method.\n\n●  Added `GetBasePlanIds` method.\n\n●  Added `GetOfferTags` method.\n\u003c/details\u003e\n\n* **\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e5.0.0\u003c/b\u003e\u003c/summary\u003e\n\n●  Introduced a new model for subscriptions, including new entities that enable you to create multiple offers for a single subscription product.\n\n●  Added `isOfferPersonalized` method for EU personalized pricing disclosure requirements.\n\n●  \u003cdel\u003e`LaunchPriceChangeFlow`\u003c/del\u003e has been deprecated and will be removed in a future release.\n\n●  Removed \u003cdel\u003e`setVrPurchaseFlow`\u003c/del\u003e, which was previously used when instantiating a purchase flow. In previous versions, this method redirected the user to complete the purchase on their Android device. Once you remove this method, users will complete the purchase through the standard purchase flow.\n\u003c/details\u003e\n\n## More Extensions\n\n\u003ca href=\"https://github.com/jewelshkjony?tab=repositories\"\u003eSee more extensions\u003c/a\u003e\n\n## Extension specifications:\n\u003cimg src=\"https://github.com/jewelshkjony/GooglePlayBilling/raw/main/images/download.png\"/\u003e \u003ca href=\"https://t.me/jewelshkjony/\"\u003ecom.jewel.googleplaybilling.aix\u003c/a\u003e (567 KB) \\\n💰 \u003cb\u003ePrice:\u003c/b\u003e $12 USD\\\n⚙️ \u003cb\u003eSDK Version:\u003c/b\u003e 7.0.0\\\n🌎 \u003cb\u003eLast amendment:\u003c/b\u003e 01 July 2024\\\n⚖️ \u003cb\u003eLicense:\u003c/b\u003e \u003ca href=\"https://github.com/jewelshkjony/Extensions/blob/main/LICENSE.md#terms-and-conditions-for-the-extension\" target=\"_blank\"\u003eTerms \u0026 Conditions\u003c/a\u003e \\\n🤝 \u003cb\u003eSupported builder:\u003c/b\u003e \u003ca href=\"https://www.kodular.io/\"\u003eKodular\u003c/a\u003e, \u003ca href=\"https://niotron.com/\"\u003eNiotron\u003c/a\u003e, \u003ca href=\"https://appzard.com/\"\u003eAppZard\u003c/a\u003e, \u003ca href=\"https://androidbuilder.in/\"\u003eAndroidBuilder\u003c/a\u003e, \u003ca href=\"http://ai2.appinventor.mit.edu/\"\u003eApp Inventor\u003c/a\u003e and it's other distributions.\n\n## 📫 How to reach me ↓\n\n\u003ca href=\"https://discordapp.com/users/795698765959790632\"\u003eDiscord\u003c/a\u003e | \u003ca href=\"https://t.me/jewelshkjony\"\u003eTelegram\u003c/a\u003e | \u003ca href=\"https://wa.me/8801775668913\"\u003eWhatsApp\u003c/a\u003e | \u003ca href=\"https://fb.com/jewelshkjony\"\u003eFacebook\u003c/a\u003e | \u003ca href=\"https://m.me/jewelshkjony\"\u003eMessenger\u003c/a\u003e | \u003ca href=\"https://m.youtube.com/c/JewelShikderJony?sub_confirmation=1\"\u003eYoutube\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjewelshkjony%2Fgoogleplaybilling","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjewelshkjony%2Fgoogleplaybilling","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjewelshkjony%2Fgoogleplaybilling/lists"}