mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-05 04:15:50 +00:00
Merge pull request #1497 from ObiajuluM/patch-1
Added Python code samples for checks
This commit is contained in:
94
content/_code-samples/checks/py/account_checks.py
Normal file
94
content/_code-samples/checks/py/account_checks.py
Normal file
@@ -0,0 +1,94 @@
|
||||
from xrpl.clients import JsonRpcClient
|
||||
from xrpl.models import AccountObjects
|
||||
from xrpl.utils import drops_to_xrp, hex_to_str, ripple_time_to_datetime
|
||||
|
||||
client = JsonRpcClient("https://s.altnet.rippletest.net:51234") # Connect to the testnetwork
|
||||
|
||||
|
||||
# Query the ledger for all xrp checks an account has created or received
|
||||
|
||||
|
||||
wallet_addr_to_query = "rPKcw5cXUtREMgsQZqSLkxJTfpwMGg7WcP"
|
||||
|
||||
checks_dict = {}
|
||||
|
||||
sent_checks = []
|
||||
|
||||
received_checks = []
|
||||
|
||||
# Build request
|
||||
req = AccountObjects(account=wallet_addr, ledger_index="validated", type="check")
|
||||
|
||||
# Make request and return result
|
||||
response = client.request(req)
|
||||
result = response.result
|
||||
|
||||
# Parse result
|
||||
if "account_objects" in result:
|
||||
account_checks = result["account_objects"]
|
||||
for check in account_checks:
|
||||
if isinstance(check["SendMax"], str):
|
||||
check_data = {}
|
||||
check_data["sender"] = check["Account"]
|
||||
check_data["receiver"] = check["Destination"]
|
||||
if "Expiration" in check:
|
||||
check_data["expiry_date"] = str(ripple_time_to_datetime(check["Expiration"]))
|
||||
check_data["amount"] = str(drops_to_xrp(check["SendMax"]))
|
||||
check_data["check_id"] = check["index"]
|
||||
if check_data["sender"] == wallet_addr:
|
||||
sent.append(check_data)
|
||||
elif check_data["sender"] != wallet_addr:
|
||||
receive.append(check_data)
|
||||
|
||||
# Sort checks
|
||||
checks_dict["sent"] = sent
|
||||
checks_dict["receive"] = receive
|
||||
print(checks_dict)
|
||||
|
||||
|
||||
|
||||
############################# Query for token checks #############################
|
||||
|
||||
|
||||
|
||||
# Query the ledger for all token checks an account has created or received
|
||||
|
||||
|
||||
wallet_addr_to_query = "rPKcw5cXUtREMgsQZqSLkxJTfpwMGg7WcP"
|
||||
|
||||
checks_dict = {}
|
||||
|
||||
sent_dict = []
|
||||
|
||||
received_dict = []
|
||||
|
||||
# Build request
|
||||
req = AccountObjects(account=wallet_addr, ledger_index="validated", type="check")
|
||||
|
||||
# Make request and return result
|
||||
response = client.request(req)
|
||||
result = response.result
|
||||
|
||||
# Parse result
|
||||
if "account_objects" in result:
|
||||
account_checks = result["account_objects"]
|
||||
for check in account_checks:
|
||||
if isinstance(check["SendMax"], dict):
|
||||
check_data = {}
|
||||
check_data["sender"] = check["Account"]
|
||||
check_data["receiver"] = check["Destination"]
|
||||
if "Expiration" in check:
|
||||
check_data["expiry_date"] = str(ripple_time_to_datetime(check["Expiration"]))
|
||||
check_data["token"] = hex_to_str(check["SendMax"]["currency"])
|
||||
check_data["issuer"] = check["SendMax"]["issuer"]
|
||||
check_data["amount"] = check["SendMax"]["value"]
|
||||
check_data["check_id"] = check["index"]
|
||||
if check_data["sender"] == wallet_addr:
|
||||
sent.append(check_data)
|
||||
elif check_data["sender"] != wallet_addr:
|
||||
receive.append(check_data)
|
||||
|
||||
# Sort checks
|
||||
checks_dict["sent"] = sent
|
||||
checks_dict["receive"] = receive
|
||||
print(checks_dict)
|
||||
32
content/_code-samples/checks/py/cancel_check.py
Normal file
32
content/_code-samples/checks/py/cancel_check.py
Normal file
@@ -0,0 +1,32 @@
|
||||
from xrpl.wallet import Wallet, generate_faucet_wallet
|
||||
from xrpl.clients import JsonRpcClient
|
||||
from xrpl.models import CheckCancel
|
||||
from xrpl.transaction import (safe_sign_and_autofill_transaction,
|
||||
send_reliable_submission)
|
||||
|
||||
client = JsonRpcClient("https://s.altnet.rippletest.net:51234") # Connect to the testnetwork
|
||||
|
||||
"""Cancel a check"""
|
||||
# Sender is the check creator or recipient
|
||||
# If the Check has expired, any address can cancel it
|
||||
|
||||
# Check id
|
||||
check_id = "F944CB379DEE18EFDA7A58A4F81AF1A98C46E54A8B9F2D268F1E26610BC0EB03"
|
||||
|
||||
# Create wallet object
|
||||
sender_wallet = generate_faucet_wallet(client=client)
|
||||
|
||||
# Build check cancel transaction
|
||||
check_txn = CheckCancel(account=sender_wallet.classic_address, check_id=check_id)
|
||||
|
||||
# Sign and submit transaction
|
||||
stxn = safe_sign_and_autofill_transaction(check_txn, sender_wallet, client)
|
||||
stxn_response = send_reliable_submission(stxn, client)
|
||||
|
||||
# Parse response for result
|
||||
stxn_result = stxn_response.result
|
||||
|
||||
# Print result and transaction hash
|
||||
print(stxn_result["meta"]["TransactionResult"])
|
||||
print(stxn_result["hash"])
|
||||
|
||||
74
content/_code-samples/checks/py/cash_check.py
Normal file
74
content/_code-samples/checks/py/cash_check.py
Normal file
@@ -0,0 +1,74 @@
|
||||
from xrpl.clients import JsonRpcClient
|
||||
from xrpl.models import CheckCash, IssuedCurrencyAmount
|
||||
from xrpl.transaction import (safe_sign_and_autofill_transaction,
|
||||
send_reliable_submission)
|
||||
from xrpl.utils import str_to_hex, xrp_to_drops
|
||||
from xrpl.wallet import generate_faucet_wallet
|
||||
|
||||
# Connect to a network
|
||||
client = JsonRpcClient("https://s.altnet.rippletest.net:51234")
|
||||
|
||||
|
||||
# Cash an xrp check
|
||||
|
||||
# Check id
|
||||
check_id = "F944CB379DEE18EFDA7A58A4F81AF1A98C46E54A8B9F2D268F1E26610BC0EB03"
|
||||
|
||||
# Amount to cash
|
||||
amount = 10.00
|
||||
|
||||
# Generate wallet
|
||||
sender_wallet = generate_faucet_wallet(client=client)
|
||||
|
||||
# Build check cash transaction
|
||||
check_txn = CheckCash(account=sender_wallet.classic_address, check_id=check_id, amount=xrp_to_drops(amount))
|
||||
|
||||
# Sign transaction
|
||||
stxn = safe_sign_and_autofill_transaction(check_txn, sender_wallet, client)
|
||||
|
||||
# Submit transaction and wait for result
|
||||
stxn_response = send_reliable_submission(stxn, client)
|
||||
|
||||
# Parse response for result
|
||||
stxn_result = stxn_response.result
|
||||
|
||||
# Print result and transaction hash
|
||||
print(stxn_result["meta"]["TransactionResult"])
|
||||
print(stxn_result["hash"])
|
||||
|
||||
|
||||
|
||||
#################### cash token check #############################
|
||||
|
||||
# Cash token check
|
||||
|
||||
# Token name
|
||||
token = "USD"
|
||||
|
||||
# Amount of token to deliver
|
||||
amount = 10.00
|
||||
|
||||
# Token issuer address
|
||||
issuer = generate_faucet_wallet(client=client).classic_address
|
||||
|
||||
# Create sender wallet object
|
||||
sender_wallet = generate_faucet_wallet(client=client)
|
||||
|
||||
# Build check cash transaction
|
||||
check_txn = CheckCash(account=sender_wallet.classic_address, check_id=check_id, amount=IssuedCurrencyAmount(
|
||||
currency=str_to_hex(token),
|
||||
issuer=issuer,
|
||||
value=amount))
|
||||
|
||||
# Sign transaction
|
||||
stxn = safe_sign_and_autofill_transaction(check_txn, sender_wallet, client)
|
||||
|
||||
# Submit transaction and wait for result
|
||||
stxn_response = send_reliable_submission(stxn, client)
|
||||
|
||||
# Parse response for result
|
||||
stxn_result = stxn_response.result
|
||||
|
||||
# Print result and transaction hash
|
||||
print(stxn_result["meta"]["TransactionResult"])
|
||||
print(stxn_result["hash"])
|
||||
78
content/_code-samples/checks/py/create_check.py
Normal file
78
content/_code-samples/checks/py/create_check.py
Normal file
@@ -0,0 +1,78 @@
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from xrpl.clients import JsonRpcClient
|
||||
from xrpl.models import CheckCreate, IssuedCurrencyAmount
|
||||
from xrpl.transaction import (safe_sign_and_autofill_transaction,
|
||||
send_reliable_submission)
|
||||
from xrpl.utils import datetime_to_ripple_time, str_to_hex, xrp_to_drops
|
||||
from xrpl.wallet import generate_faucet_wallet
|
||||
|
||||
client = JsonRpcClient("https://s.altnet.rippletest.net:51234") # Connect to the testnetwork
|
||||
|
||||
"""Create a token check"""
|
||||
|
||||
check_receiver_addr = "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe" # Example: send back to Testnet Faucet
|
||||
|
||||
token_name = "USD"
|
||||
|
||||
amount_to_deliver = 10.00
|
||||
|
||||
token_issuer = "r9CEVt4Cmcjt68ME6GKyhf2DyEGo2rG8AW"
|
||||
|
||||
# Set check to expire after 5 days
|
||||
expiry_date = datetime_to_ripple_time(datetime.now() + timedelta(days=5))
|
||||
|
||||
# Generate wallet
|
||||
sender_wallet = generate_faucet_wallet(client=client)
|
||||
|
||||
# Build check create transaction
|
||||
check_txn = CheckCreate(account=sender_wallet.classic_address, destination=receiver_addr,
|
||||
send_max=IssuedCurrencyAmount(
|
||||
currency=str_to_hex(token),
|
||||
issuer=issuer,
|
||||
value=amount),
|
||||
expiration=expiry_date)
|
||||
|
||||
# Sign, submit transaction and wait for result
|
||||
stxn = safe_sign_and_autofill_transaction(check_txn, sender_wallet, client)
|
||||
stxn_response = send_reliable_submission(stxn, client)
|
||||
|
||||
# Parse response for result
|
||||
stxn_result = stxn_response.result
|
||||
|
||||
# Print result and transaction hash
|
||||
print(stxn_result["meta"]["TransactionResult"])
|
||||
print(stxn_result["hash"])
|
||||
|
||||
|
||||
############### CREATE XRP CHECK ################################
|
||||
"""Create xrp check"""
|
||||
|
||||
|
||||
check_receiver_addr = "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe" # Example: send back to Testnet Faucet
|
||||
|
||||
amount_to_deliver = 10.00
|
||||
|
||||
# Set check to expire after 5 days
|
||||
expiry_date = datetime_to_ripple_time(datetime.now() + timedelta(days=5))
|
||||
|
||||
|
||||
# Generate wallet
|
||||
sender_wallet = generate_faucet_wallet(client=client)
|
||||
|
||||
# Build check create transaction
|
||||
check_txn = CheckCreate(account=sender_wallet.classic_address,
|
||||
destination=receiver_addr,
|
||||
send_max=xrp_to_drops(amount),
|
||||
expiration=expiry_date)
|
||||
|
||||
# Sign, submit transaction and wait for result
|
||||
stxn = safe_sign_and_autofill_transaction(check_txn, sender_wallet, client)
|
||||
stxn_response = send_reliable_submission(stxn, client)
|
||||
|
||||
# Parse response for result
|
||||
stxn_result = stxn_response.result
|
||||
|
||||
# Print result and transaction hash
|
||||
print(stxn_result["meta"]["TransactionResult"])
|
||||
print(stxn_result["hash"])
|
||||
Reference in New Issue
Block a user