Python SDK for TON Connect 2.0
Project description
PyTonConnect
Python SDK for TON Connect 2.0
Analogue of the @tonconnect/sdk library.
Use it to connect your app to TON wallets via TonConnect protocol. You can find more details and the protocol specification in the docs.
Installation
Install Python 3 package: pip3 install pytonconnect
Examples
Add the tonconnect-manifest
App needs to have its manifest to pass meta information to the wallet. Manifest is a JSON file named as tonconnect-manifest.json
following format:
{
"url": "<app-url>", // required
"name": "<app-name>", // required
"iconUrl": "<app-icon-url>", // required
"termsOfUseUrl": "<terms-of-use-url>", // optional
"privacyPolicyUrl": "<privacy-policy-url>" // optional
}
Make sure that manifest is available to GET by its URL.
Init connector and call restore_connection
.
If user connected his wallet before, connector will restore the connection
import asyncio
from pytonconnect import TonConnect
async def main():
connector = TonConnect(
manifest_url='https://raw.githubusercontent.com/XaBbl4/pytonconnect/main/pytonconnect-manifest.json',
# api_tokens={'tonapi': 'key'},
)
is_connected = await connector.restore_connection()
print('is_connected:', is_connected)
if __name__ == '__main__':
asyncio.get_event_loop().run_until_complete(main())
Fetch wallets list
You can fetch all supported wallets list
wallets_list = connector.get_wallets()
# wallets_list is
# [
# {
# name: str,
# image: str,
# about_url: str,
# bridge_url: str,
# universal_url: str,
# },
# ]
You also can get wallets list using get_wallets
static method:
wallets_list = TonConnect.get_wallets()
Subscribe to the connection status changes
def status_changed(wallet_info):
# update state/reactive variables to show updates in the ui
print('wallet_info:', wallet_info)
unsubscribe()
unsubscribe = connector.on_status_change(status_changed)
# call unsubscribe() later to save resources when you don't need to listen for updates anymore.
Initialize a wallet connection via universal link
generated_url = await connector.connect(wallets_list[0])
print('generated_url:', generated_url)
Then you have to show this link to user as QR-code, or use it as a deep_link. You will receive an update in connector.on_status_change
when user approves connection in the wallet.
Send transaction
transaction = {
'valid_until': 1681223913,
'messages': [
{
'address': '0:0000000000000000000000000000000000000000000000000000000000000000',
'amount': '1',
# 'stateInit': 'base64_YOUR_STATE_INIT' # just for instance. Replace with your transaction state_init or remove
},
{
'address': '0:0000000000000000000000000000000000000000000000000000000000000000',
'amount': '1',
# 'payload': 'base64_YOUR_PAYLOAD' # just for instance. Replace with your transaction payload or remove
}
]
}
try:
result = await connector.send_transaction(transaction)
print('Transaction was sent successfully')
except Exception as e:
if isintance(e, UserRejectsError):
print('You rejected the transaction. Please confirm it to send to the blockchain')
else:
print('Unknown error:', e)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pytonconnect-0.3.1.tar.gz
.
File metadata
- Download URL: pytonconnect-0.3.1.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef9e9b07264c0ca72eb751dc47f6b3a8d42f452fa1db9e786a04ca6d76884c38 |
|
MD5 | 1fe0afacae0f120fc7fcdd78facd294d |
|
BLAKE2b-256 | 6cf02029a9ecfea3f15aab5f8b56817f24f0ff9f8162de6f9f967e4ab44bc65a |
File details
Details for the file pytonconnect-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: pytonconnect-0.3.1-py3-none-any.whl
- Upload date:
- Size: 24.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44f1dcd711f17e2069f6c40cbc137f93e1d78623704b091f5c7b5c44c76373d6 |
|
MD5 | 55ba948b26fd7e6668c61bbded64e484 |
|
BLAKE2b-256 | 979198cdf5124ae37ee61c73c81a48de2cf0a04a399ba17da4028db33159563d |