uvd-x402-sdk 0.3.1__tar.gz → 0.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {uvd_x402_sdk-0.3.1/src/uvd_x402_sdk.egg-info → uvd_x402_sdk-0.3.2}/PKG-INFO +57 -1
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/README.md +56 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/pyproject.toml +1 -1
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/__init__.py +1 -1
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2/src/uvd_x402_sdk.egg-info}/PKG-INFO +57 -1
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/LICENSE +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/setup.cfg +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/client.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/config.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/decorators.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/exceptions.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/integrations/__init__.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/integrations/django_integration.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/integrations/fastapi_integration.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/integrations/flask_integration.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/integrations/lambda_integration.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/models.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/networks/__init__.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/networks/base.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/networks/evm.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/networks/near.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/networks/solana.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/networks/stellar.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/response.py +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk.egg-info/SOURCES.txt +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk.egg-info/dependency_links.txt +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk.egg-info/requires.txt +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk.egg-info/top_level.txt +0 -0
- {uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/tests/test_client.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: uvd-x402-sdk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Python SDK for x402 payments - gasless crypto payments across 14 blockchains with multi-stablecoin support (USDC, EURC, AUSD, PYUSD)
|
|
5
5
|
Author-email: Ultravioleta DAO <dev@ultravioletadao.xyz>
|
|
6
6
|
Project-URL: Homepage, https://github.com/UltravioletaDAO/uvd-x402-sdk-python
|
|
@@ -702,6 +702,55 @@ pyusd = get_token_config("ethereum", "pyusd")
|
|
|
702
702
|
| `ausd` | Agora USD | 6 | Agora Finance |
|
|
703
703
|
| `pyusd` | PayPal USD | 6 | PayPal/Paxos |
|
|
704
704
|
|
|
705
|
+
### Critical Implementation Notes
|
|
706
|
+
|
|
707
|
+
#### EIP-712 Domain Names Vary by Chain
|
|
708
|
+
|
|
709
|
+
The same token may use **different EIP-712 domain names on different chains**. This affects signature verification.
|
|
710
|
+
|
|
711
|
+
| Token | Ethereum | Base | Avalanche |
|
|
712
|
+
|-------|----------|------|-----------|
|
|
713
|
+
| EURC | `"Euro Coin"` | `"EURC"` | `"Euro Coin"` |
|
|
714
|
+
| USDC | `"USD Coin"` | `"USD Coin"` | `"USD Coin"` |
|
|
715
|
+
| AUSD | `"AUSD"` | N/A | `"AUSD"` |
|
|
716
|
+
| PYUSD | `"PayPal USD"` | N/A | N/A |
|
|
717
|
+
|
|
718
|
+
**Important:** Always use `get_token_config()` to get the correct domain name. Never hardcode domain names.
|
|
719
|
+
|
|
720
|
+
```python
|
|
721
|
+
# CORRECT: Use get_token_config for each chain
|
|
722
|
+
eurc_base = get_token_config("base", "eurc")
|
|
723
|
+
# TokenConfig(name="EURC", version="2", ...)
|
|
724
|
+
|
|
725
|
+
eurc_ethereum = get_token_config("ethereum", "eurc")
|
|
726
|
+
# TokenConfig(name="Euro Coin", version="2", ...)
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
#### PYUSD Signature Format (PayPal USD)
|
|
730
|
+
|
|
731
|
+
PYUSD uses the Paxos implementation which only supports the **v,r,s signature variant** of `transferWithAuthorization`. This is different from Circle's USDC/EURC which support both compact bytes and v,r,s variants.
|
|
732
|
+
|
|
733
|
+
**Backend implications:**
|
|
734
|
+
- The x402 facilitator (v1.9.0+) automatically handles this by detecting PYUSD and using `transferWithAuthorization_1(v,r,s)` instead of `transferWithAuthorization_0(bytes signature)`
|
|
735
|
+
- If using a custom facilitator, ensure it supports the v,r,s variant for PYUSD
|
|
736
|
+
|
|
737
|
+
#### Token Info Must Be Passed to Facilitator
|
|
738
|
+
|
|
739
|
+
When using non-USDC tokens, your backend **must** pass the token info (including EIP-712 domain) to the facilitator. This is done via the `extra` field in `paymentRequirements`:
|
|
740
|
+
|
|
741
|
+
```python
|
|
742
|
+
# When building payment requirements for the facilitator
|
|
743
|
+
payment_requirements = {
|
|
744
|
+
"asset": token_address, # Use actual token address, NOT hardcoded USDC
|
|
745
|
+
"extra": {
|
|
746
|
+
"name": token_config.name, # EIP-712 domain name
|
|
747
|
+
"version": token_config.version, # EIP-712 domain version
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
Without this, the facilitator will use wrong EIP-712 domain and signature verification will fail with "invalid signature" error.
|
|
753
|
+
|
|
705
754
|
---
|
|
706
755
|
|
|
707
756
|
## Error Handling
|
|
@@ -877,6 +926,13 @@ MIT License - see LICENSE file.
|
|
|
877
926
|
|
|
878
927
|
## Changelog
|
|
879
928
|
|
|
929
|
+
### v0.3.2 (2025-12-21)
|
|
930
|
+
|
|
931
|
+
- Added critical implementation notes for multi-token support:
|
|
932
|
+
- EIP-712 domain names vary by chain (e.g., EURC is "Euro Coin" on Ethereum but "EURC" on Base)
|
|
933
|
+
- PYUSD uses v,r,s signature variant (Paxos implementation)
|
|
934
|
+
- Token info must be passed to facilitator via `extra` field
|
|
935
|
+
|
|
880
936
|
### v0.3.1 (2025-12-21)
|
|
881
937
|
|
|
882
938
|
- Removed GHO and crvUSD token support (not EIP-3009 compatible)
|
|
@@ -653,6 +653,55 @@ pyusd = get_token_config("ethereum", "pyusd")
|
|
|
653
653
|
| `ausd` | Agora USD | 6 | Agora Finance |
|
|
654
654
|
| `pyusd` | PayPal USD | 6 | PayPal/Paxos |
|
|
655
655
|
|
|
656
|
+
### Critical Implementation Notes
|
|
657
|
+
|
|
658
|
+
#### EIP-712 Domain Names Vary by Chain
|
|
659
|
+
|
|
660
|
+
The same token may use **different EIP-712 domain names on different chains**. This affects signature verification.
|
|
661
|
+
|
|
662
|
+
| Token | Ethereum | Base | Avalanche |
|
|
663
|
+
|-------|----------|------|-----------|
|
|
664
|
+
| EURC | `"Euro Coin"` | `"EURC"` | `"Euro Coin"` |
|
|
665
|
+
| USDC | `"USD Coin"` | `"USD Coin"` | `"USD Coin"` |
|
|
666
|
+
| AUSD | `"AUSD"` | N/A | `"AUSD"` |
|
|
667
|
+
| PYUSD | `"PayPal USD"` | N/A | N/A |
|
|
668
|
+
|
|
669
|
+
**Important:** Always use `get_token_config()` to get the correct domain name. Never hardcode domain names.
|
|
670
|
+
|
|
671
|
+
```python
|
|
672
|
+
# CORRECT: Use get_token_config for each chain
|
|
673
|
+
eurc_base = get_token_config("base", "eurc")
|
|
674
|
+
# TokenConfig(name="EURC", version="2", ...)
|
|
675
|
+
|
|
676
|
+
eurc_ethereum = get_token_config("ethereum", "eurc")
|
|
677
|
+
# TokenConfig(name="Euro Coin", version="2", ...)
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
#### PYUSD Signature Format (PayPal USD)
|
|
681
|
+
|
|
682
|
+
PYUSD uses the Paxos implementation which only supports the **v,r,s signature variant** of `transferWithAuthorization`. This is different from Circle's USDC/EURC which support both compact bytes and v,r,s variants.
|
|
683
|
+
|
|
684
|
+
**Backend implications:**
|
|
685
|
+
- The x402 facilitator (v1.9.0+) automatically handles this by detecting PYUSD and using `transferWithAuthorization_1(v,r,s)` instead of `transferWithAuthorization_0(bytes signature)`
|
|
686
|
+
- If using a custom facilitator, ensure it supports the v,r,s variant for PYUSD
|
|
687
|
+
|
|
688
|
+
#### Token Info Must Be Passed to Facilitator
|
|
689
|
+
|
|
690
|
+
When using non-USDC tokens, your backend **must** pass the token info (including EIP-712 domain) to the facilitator. This is done via the `extra` field in `paymentRequirements`:
|
|
691
|
+
|
|
692
|
+
```python
|
|
693
|
+
# When building payment requirements for the facilitator
|
|
694
|
+
payment_requirements = {
|
|
695
|
+
"asset": token_address, # Use actual token address, NOT hardcoded USDC
|
|
696
|
+
"extra": {
|
|
697
|
+
"name": token_config.name, # EIP-712 domain name
|
|
698
|
+
"version": token_config.version, # EIP-712 domain version
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
Without this, the facilitator will use wrong EIP-712 domain and signature verification will fail with "invalid signature" error.
|
|
704
|
+
|
|
656
705
|
---
|
|
657
706
|
|
|
658
707
|
## Error Handling
|
|
@@ -828,6 +877,13 @@ MIT License - see LICENSE file.
|
|
|
828
877
|
|
|
829
878
|
## Changelog
|
|
830
879
|
|
|
880
|
+
### v0.3.2 (2025-12-21)
|
|
881
|
+
|
|
882
|
+
- Added critical implementation notes for multi-token support:
|
|
883
|
+
- EIP-712 domain names vary by chain (e.g., EURC is "Euro Coin" on Ethereum but "EURC" on Base)
|
|
884
|
+
- PYUSD uses v,r,s signature variant (Paxos implementation)
|
|
885
|
+
- Token info must be passed to facilitator via `extra` field
|
|
886
|
+
|
|
831
887
|
### v0.3.1 (2025-12-21)
|
|
832
888
|
|
|
833
889
|
- Removed GHO and crvUSD token support (not EIP-3009 compatible)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "uvd-x402-sdk"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.2"
|
|
8
8
|
description = "Python SDK for x402 payments - gasless crypto payments across 14 blockchains with multi-stablecoin support (USDC, EURC, AUSD, PYUSD)"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: uvd-x402-sdk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Python SDK for x402 payments - gasless crypto payments across 14 blockchains with multi-stablecoin support (USDC, EURC, AUSD, PYUSD)
|
|
5
5
|
Author-email: Ultravioleta DAO <dev@ultravioletadao.xyz>
|
|
6
6
|
Project-URL: Homepage, https://github.com/UltravioletaDAO/uvd-x402-sdk-python
|
|
@@ -702,6 +702,55 @@ pyusd = get_token_config("ethereum", "pyusd")
|
|
|
702
702
|
| `ausd` | Agora USD | 6 | Agora Finance |
|
|
703
703
|
| `pyusd` | PayPal USD | 6 | PayPal/Paxos |
|
|
704
704
|
|
|
705
|
+
### Critical Implementation Notes
|
|
706
|
+
|
|
707
|
+
#### EIP-712 Domain Names Vary by Chain
|
|
708
|
+
|
|
709
|
+
The same token may use **different EIP-712 domain names on different chains**. This affects signature verification.
|
|
710
|
+
|
|
711
|
+
| Token | Ethereum | Base | Avalanche |
|
|
712
|
+
|-------|----------|------|-----------|
|
|
713
|
+
| EURC | `"Euro Coin"` | `"EURC"` | `"Euro Coin"` |
|
|
714
|
+
| USDC | `"USD Coin"` | `"USD Coin"` | `"USD Coin"` |
|
|
715
|
+
| AUSD | `"AUSD"` | N/A | `"AUSD"` |
|
|
716
|
+
| PYUSD | `"PayPal USD"` | N/A | N/A |
|
|
717
|
+
|
|
718
|
+
**Important:** Always use `get_token_config()` to get the correct domain name. Never hardcode domain names.
|
|
719
|
+
|
|
720
|
+
```python
|
|
721
|
+
# CORRECT: Use get_token_config for each chain
|
|
722
|
+
eurc_base = get_token_config("base", "eurc")
|
|
723
|
+
# TokenConfig(name="EURC", version="2", ...)
|
|
724
|
+
|
|
725
|
+
eurc_ethereum = get_token_config("ethereum", "eurc")
|
|
726
|
+
# TokenConfig(name="Euro Coin", version="2", ...)
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
#### PYUSD Signature Format (PayPal USD)
|
|
730
|
+
|
|
731
|
+
PYUSD uses the Paxos implementation which only supports the **v,r,s signature variant** of `transferWithAuthorization`. This is different from Circle's USDC/EURC which support both compact bytes and v,r,s variants.
|
|
732
|
+
|
|
733
|
+
**Backend implications:**
|
|
734
|
+
- The x402 facilitator (v1.9.0+) automatically handles this by detecting PYUSD and using `transferWithAuthorization_1(v,r,s)` instead of `transferWithAuthorization_0(bytes signature)`
|
|
735
|
+
- If using a custom facilitator, ensure it supports the v,r,s variant for PYUSD
|
|
736
|
+
|
|
737
|
+
#### Token Info Must Be Passed to Facilitator
|
|
738
|
+
|
|
739
|
+
When using non-USDC tokens, your backend **must** pass the token info (including EIP-712 domain) to the facilitator. This is done via the `extra` field in `paymentRequirements`:
|
|
740
|
+
|
|
741
|
+
```python
|
|
742
|
+
# When building payment requirements for the facilitator
|
|
743
|
+
payment_requirements = {
|
|
744
|
+
"asset": token_address, # Use actual token address, NOT hardcoded USDC
|
|
745
|
+
"extra": {
|
|
746
|
+
"name": token_config.name, # EIP-712 domain name
|
|
747
|
+
"version": token_config.version, # EIP-712 domain version
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
Without this, the facilitator will use wrong EIP-712 domain and signature verification will fail with "invalid signature" error.
|
|
753
|
+
|
|
705
754
|
---
|
|
706
755
|
|
|
707
756
|
## Error Handling
|
|
@@ -877,6 +926,13 @@ MIT License - see LICENSE file.
|
|
|
877
926
|
|
|
878
927
|
## Changelog
|
|
879
928
|
|
|
929
|
+
### v0.3.2 (2025-12-21)
|
|
930
|
+
|
|
931
|
+
- Added critical implementation notes for multi-token support:
|
|
932
|
+
- EIP-712 domain names vary by chain (e.g., EURC is "Euro Coin" on Ethereum but "EURC" on Base)
|
|
933
|
+
- PYUSD uses v,r,s signature variant (Paxos implementation)
|
|
934
|
+
- Token info must be passed to facilitator via `extra` field
|
|
935
|
+
|
|
880
936
|
### v0.3.1 (2025-12-21)
|
|
881
937
|
|
|
882
938
|
- Removed GHO and crvUSD token support (not EIP-3009 compatible)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/integrations/django_integration.py
RENAMED
|
File without changes
|
{uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/integrations/fastapi_integration.py
RENAMED
|
File without changes
|
{uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/integrations/flask_integration.py
RENAMED
|
File without changes
|
{uvd_x402_sdk-0.3.1 → uvd_x402_sdk-0.3.2}/src/uvd_x402_sdk/integrations/lambda_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|