- 后端: FastAPI + SQLAlchemy + SQLite, JWT认证, 代理支持的AirwallexClient - 前端: React 18 + Vite + Ant Design 5, 中文界面 - 功能: 卡片管理, 持卡人管理, 交易记录, API令牌, 系统设置, 审计日志 - 第三方API: X-API-Key认证, 权限控制 - Docker部署: docker-compose编排前后端
4.8 KiB
4.8 KiB
UNOFFICIAL Airwallex Python SDK
A simple SDK for interacting with the Airwallex API.
Features
- SOMEWHAT Comprehensive implementation of the Airwallex API
- Both synchronous and asynchronous client support
- Automatic authentication and token refresh
- Built-in rate limiting and retry logic
- Type checking with Pydantic models
Installation
pip install airwallex-sdk
Quick Start
Payments API
Synchronous Usage
from airwallex import AirwallexClient
from airwallex.models.payment import PaymentCreateRequest, PaymentAmount
# Initialize the client
client = AirwallexClient(
client_id="your_client_id",
api_key="your_api_key"
)
# List accounts
accounts = client.accounts.list()
for account in accounts:
print(f"Account: {account.account_name} ({account.id})")
# Fetch a specific account
account = client.accounts.fetch("account_id")
print(account.show()) # Print a formatted representation
# Create a payment
payment_request = PaymentCreateRequest(
request_id="unique_request_id",
amount=PaymentAmount(value=100.00, currency="USD"),
source={
"type": "account",
"account_id": "account_id"
},
beneficiary={
"type": "bank_account",
"id": "beneficiary_id"
},
payment_method="swift"
)
payment = client.payments.create_from_model(payment_request)
print(f"Payment created with ID: {payment.id}")
# Use generator to iterate through all payments
for payment in client.payments():
print(f"Payment {payment.id}: {payment.amount.value} {payment.amount.currency}")
Asynchronous Usage
import asyncio
from airwallex import AirwallexAsyncClient
from airwallex.models.beneficiary import BeneficiaryCreateRequest, BankDetails
async def main():
# Initialize the async client
client = AirwallexAsyncClient(
client_id="your_client_id",
api_key="your_api_key"
)
# List accounts
accounts = await client.accounts.list_async()
# Create a beneficiary
beneficiary_request = BeneficiaryCreateRequest(
name="John Doe",
type="bank_account",
bank_details=BankDetails(
account_name="John Doe",
account_number="123456789",
swift_code="ABCDEFGH",
bank_country_code="US"
)
)
beneficiary = await client.beneficiaries.create_from_model_async(beneficiary_request)
print(f"Beneficiary created with ID: {beneficiary.id}")
# Async generator to iterate through all beneficiaries
async for ben in client.beneficiaries.paginate_async_generator():
print(f"Beneficiary: {ben.name}")
await client.close()
# Run the async function
asyncio.run(main())
Issuing API
Working with Cardholders and Cards
from airwallex import AirwallexClient
from airwallex.models.issuing_cardholder import CardholderCreateRequest, Individual, Name, Address
from airwallex.models.issuing_card import CardCreateRequest, AuthorizationControls, CardProgram
# Initialize the client
client = AirwallexClient(
client_id="your_client_id",
api_key="your_api_key"
)
# Create a cardholder
cardholder_request = CardholderCreateRequest(
email="john.doe@example.com",
individual=Individual(
name=Name(
first_name="John",
last_name="Doe",
title="Mr"
),
date_of_birth="1982-11-02",
address=Address(
city="Melbourne",
country="AU",
line1="44 Example St",
postcode="3121",
state="VIC"
),
cardholder_agreement_terms_consent_obtained="yes",
express_consent_obtained="yes"
),
type="INDIVIDUAL"
)
cardholder = client.issuing_cardholder.create_cardholder(cardholder_request)
print(f"Cardholder created with ID: {cardholder.cardholder_id}")
# Create a virtual card
card_request = CardCreateRequest(
cardholder_id=cardholder.cardholder_id,
request_id="unique-request-id",
created_by="API User",
form_factor="VIRTUAL",
is_personalized=True,
authorization_controls=AuthorizationControls(
allowed_currencies=["USD", "AUD"],
allowed_transaction_count="MULTIPLE"
),
program=CardProgram(
id="your_program_id",
name="Default Program"
)
)
card = client.issuing_card.create_card(card_request)
print(f"Card created with ID: {card.card_id}")
# Get card details
card_details = client.issuing_card.get_card_details(card.card_id)
print(f"Card Number: {card_details.card_number}")
print(f"CVV: {card_details.cvv}")
print(f"Expiry: {card_details.expiry_month}/{card_details.expiry_year}")
Documentation
For detailed documentation, see https://www.airwallex.com/docs/api.
License
This project is licensed under the MIT License - see the LICENSE file for details.