IABwrapper
Wrapper around anjlab's Android In-app Billing Version 3 to be used in Kivy apps
Install
pip install iabwrapper
or add it in buildozer.spec requirements
requirements = ..., iabwrapper==0.0.5
Important ( Add these into your buildozer.spec )
-
android.gradle_repositories = "mavenCentral()"
-
android.gradle_dependencies = com.anjlab.android.iab.v3:library:2.0.0,
-
android.meta_data = billing_pubkey = "Your License Key from Play Console"
-
Necessary permissions:
android.permissions = INTERNET,ACCESS_NETWORK_STATE,com.android.vending.BILLING
Usage
- Import
from iabwrapper import BillingProcessor
- Create an Instance
bp = BillingProcessor( license_key, onProductPurchasedMethod, onBillingErrorMethod, onPurchaseHistoryRestoredMethod=None, onBillingInitializedMethod=None, ) # license_key is the license key string from Google Play Console # onProductPurchasedMethod expects two arguments: productId and purchaseInfo # onBillingErrorMethod expects two arguments: errorCode and error (use error.message to get the error message) # onPurchaseHistoryRestoredMethod does not expect any arguments # onBillingInitializedMethod does not expect any arguments
Useful Methods
-
Purchase a product
purchase_product(product_id)
-
Consume a product(non-subscription)
consume_purchase_async(product_id, success_listener=None, error_listener=None) # Both success_listener and error_listener doesn't take any arguments
-
Get details about a product (non-subscription)
get_purchase_listing_async(product_id, success_listener=None, error_listener=None) # Both success_listener and error_listener expects a single argument. # success_listener gets a list with one element. Following details are available: if product_info.size() != 0: product_info = product_info[0] details= { "productId": product_info.productId, "title": product_info.title, "description": product_info.description, "isSubscription": product_info.isSubscription, "currency": product_info.currency, "priceValue": product_info.priceValue, "priceText": product_info.priceText, } # error_listener gets a string with error message.
-
Subscribe to a product
subscribe_product(product_id)
-
Get details about a subscription
get_subscription_listing_async(product_id, success_listener=None, error_listener=None) # Both success_listener and error_listener expects a single argument. # Same as get_purchase_listing_async
-
Update information about users owned purchases/subscriptions. Use it to restore Purchases & Subscriptions.
load_owned_purchases_async(success_listener=None, error_listener=None) # Both success_listener and error_listener doesn't take any arguments.
-
Check if service is initialized
is_initialized()
-
Check if a product is already purchased(non-subscription)
is_purchased(product_id)
-
Check if a product is already subscribed
is_subscribed(product_id)
-
Before any usage it's good practice to check in-app billing services availability. In some older devices or chinese ones it may happen that Play Market is unavailable or is deprecated and doesn't support in-app billing.
is_iab_service_available()
-
Please notice that calling BillingProcessor.isIabServiceAvailable() (only checks Play Market app installed or not) is not enough because there might be a case when it returns true but still payment won't succeed. Therefore, it's better to call bp.isConnected() after initializing BillingProcessor
is_connected()
-
List owned products(non-subscription)
list_owned_products() # Returns a list of product ids
-
List owned subscriptions
list_owned_subscriptions() # Returns a list of product ids
-
Get very detailed info about a product(non-subscription)
get_purchase_info(product_id) # Returns a `PurchaseInfo` object. Following details are available: purchase_info = bp.get_purchase_info(product_id) details = { "responseData": purchase_info.responseData, "signature": purchase_info.signature, "purchaseData":{ "orderId": purchase_info.purchaseData.orderId, "productId": purchase_info.purchaseData.productId, "purchaseTime": purchase_info.purchaseData.purchaseTime, "purchaseToken": purchase_info.purchaseData.purchaseToken, "purchaseState": purchase_info.purchaseData.purchaseState, "autoRenewing": purchase_info.purchaseData.autoRenewing, } }
-
Get very detailed info about a subscription
get_subscription_purchase_info(product_id) # Returns a `PurchaseInfo` object. Same as get_purchase_info
Example
See available demo application
More
To know more about what a method does, please see anjlab's android-inapp-billing-v3 docs for reference.
Metadata
Release files for IABwrapper 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| IABwrapper-1.0.0.tar.gz | 4.8 kB | Without provenance | Details for IABwrapper-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| IABwrapper-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for IABwrapper-1.0.0-py3-none-any.whl |
Total release size: 10.0 kB
Release files / IABwrapper-1.0.0.tar.gz
| Download URL | IABwrapper-1.0.0.tar.gz |
|---|---|
| Size | 4.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4fa8798c709ef16e6d581d406a3437854bf4142b7567085856c9ebbc2655ebf3
|
|
BLAKE2b-256 checksum How to use checksums |
177afb651dda710bbb015bd394ff758b8d250a02e4bf324176c945869156cec2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.6
|
Release files / IABwrapper-1.0.0-py3-none-any.whl
| Download URL | IABwrapper-1.0.0-py3-none-any.whl |
|---|---|
| Size | 5.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e5ff2954dbefd9f2fb158246e5066a31fea04697f3dc68aabcc00b452d4d650a
|
|
BLAKE2b-256 checksum How to use checksums |
49a2a19bb0967cd8366b8486e820e7ba027d995b32974b8d9f605efd6fd68b36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.6
|
Security for IABwrapper 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.