From faff03620ccd59d4e20d6bd2042823881d08bdc6 Mon Sep 17 00:00:00 2001 From: Yann Gerardi Date: Thu, 26 Mar 2026 12:46:50 +0100 Subject: [PATCH 1/3] feat: Add Bridge Wallet to ecosystem page (#59) --- ecosystem.html | 21 ++++++++++++++++++++- images/bridge-wallet-logo.svg | 18 ++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 images/bridge-wallet-logo.svg diff --git a/ecosystem.html b/ecosystem.html index bc24c25..b6a1198 100644 --- a/ecosystem.html +++ b/ecosystem.html @@ -181,6 +181,25 @@ + +
+
+
Bridge Wallet
+
+
+
Payment App
+
+
+
+
+
Bridge Wallet is the self-custodial mobile wallet developed by Mt Pelerin, a regulated Swiss cryptocurrency exchange service. It supports 15 blockchains and more than 30 crypto-assets that can be used to pay via Open Cryptopay. With this app, users can also easily buy crypto, swap & bridge funds across supported chains, and cash out back on a bank account easily.
+
Available on iOS and Android.
+
+ +
+
@@ -1083,4 +1102,4 @@ - \ No newline at end of file + diff --git a/images/bridge-wallet-logo.svg b/images/bridge-wallet-logo.svg new file mode 100644 index 0000000..b939f95 --- /dev/null +++ b/images/bridge-wallet-logo.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + From ebc170fa6945d4844310d6b765bb57886ac3b26d Mon Sep 17 00:00:00 2001 From: joshuakrueger-dfx Date: Thu, 9 Apr 2026 15:59:29 +0200 Subject: [PATCH 2/3] feat: add urble to ecosystem as Payment App (#61) --- ecosystem.html | 36 ++++++++++++++++++++++++++++++++++++ images/urble-logo.jpeg | Bin 0 -> 5262 bytes 2 files changed, 36 insertions(+) create mode 100644 images/urble-logo.jpeg diff --git a/ecosystem.html b/ecosystem.html index b6a1198..1b9843e 100644 --- a/ecosystem.html +++ b/ecosystem.html @@ -575,6 +575,24 @@
+ +
+
urble +
urble
+
+
+
Payment App
+
+
+
+
+
urble is a mobile savings and payments app by Brick Towers, built on Bitcoin, Cardano, Ethereum and Midnight. It enables users to create personalized savings plans for themselves or loved ones, with contributions from friends and family. Through Open CryptoPay, urble users can also spend from their self-custodial wallet in everyday life, including at SPAR stores across Switzerland – connecting digital assets with real-world usage.
+
+ +
+
@@ -1006,6 +1024,24 @@
+ +
+
urble +
urble
+
+
+
Payment App
+
+
+
+
+
urble is a mobile savings and payments app by Brick Towers, built on Bitcoin, Cardano, Ethereum and Midnight. It enables users to create personalized savings plans for themselves or loved ones, with contributions from friends and family. Through Open CryptoPay, urble users can also spend from their self-custodial wallet in everyday life, including at SPAR stores across Switzerland – connecting digital assets with real-world usage.
+
+ +
+
diff --git a/images/urble-logo.jpeg b/images/urble-logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..8b135f28aa609bbfc16702a4f3a3b0440ef3d470 GIT binary patch literal 5262 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 literal 0 HcmV?d00001 From 931a83cc4d2c9fb0c3a19b436fbbf5ee16d6b2f1 Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 14 Apr 2026 10:48:25 +0200 Subject: [PATCH 3/3] docs: update README to match current DFX API (#56) - Add new recipient fields: registrationNumber, storeType, merchantCategory, goodsType, goodsCategory - Add new payment methods: BinanceSmartChain, Firo, Zano, Tron, Cardano, Spark - Rename BitcoinOnChainTaprootAsset to TaprootAsset - Remove deprecated KuCoinPay method - Update country format from full name to ISO code (CH) - Add transaction detail examples for all response types (EVM/Bitcoin/Firo, Monero/Zano/Solana/Tron/Cardano, Lightning, BinancePay) - Restructure Step 4 to cover all transaction flows including broadcast-and-report (Monero, Zano, Solana, Tron, Cardano) and BinancePay deep link - Clarify hex vs tx query parameter usage per blockchain type Co-authored-by: max-tech-bot --- README.md | 171 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 137 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 0db1541..08b2bed 100644 --- a/README.md +++ b/README.md @@ -74,11 +74,16 @@ A GET HTTP call to either of these endpoints will return a JSON with the followi "houseNumber": "7", "zip": "6300", "city": "Zug", - "country": "Switzerland" + "country": "CH" }, "phone": "+123456789", "mail": "mail@my-company.com", - "website": "https://my-company.com/" + "website": "https://my-company.com/", + "registrationNumber": "CHE-123.456.789", + "storeType": "Physical", + "merchantCategory": "RetailTradeOthers", + "goodsType": "Tangible", + "goodsCategory": "FoodGroceryHealthProducts" }, "route": "DFX VM 01", "quote": { @@ -102,6 +107,30 @@ A GET HTTP call to either of these endpoints will return a JSON with the followi ], "available": true }, + { + "method": "Polygon", + "minFee": 36000000139, + "assets": [ ... ], + "available": true + }, + { + "method": "Arbitrum", + "minFee": 12000000, + "assets": [ ... ], + "available": true + }, + { + "method": "Optimism", + "minFee": 1200769, + "assets": [ ... ], + "available": true + }, + { + "method": "Base", + "minFee": 5233418, + "assets": [ ... ], + "available": true + }, { "method": "Ethereum", "minFee": 1682009661, @@ -138,27 +167,48 @@ A GET HTTP call to either of these endpoints will return a JSON with the followi "available": true }, { - "method": "Polygon", - "minFee": 36000000139, - "assets": [ ... ], - "available": true - }, - { - "method": "Arbitrum", - "minFee": 12000000, - "assets": [ ... ], + "method": "BinanceSmartChain", + "minFee": 1000000000, + "assets": [ + { + "asset": "USDT", + "amount": "1.26157" + }, + { + "asset": "USDC", + "amount": "1.261582" + }, + { + "asset": "DAI", + "amount": "1.26158231" + }, + { + "asset": "BNB", + "amount": "0.00168" + } + ], "available": true }, { - "method": "Optimism", - "minFee": 1200769, - "assets": [ ... ], + "method": "Bitcoin", + "minFee": 4.5, + "assets": [ + { + "asset": "BTC", + "amount": "0.00001069" + } + ], "available": true }, { - "method": "Base", - "minFee": 5233418, - "assets": [ ... ], + "method": "Firo", + "minFee": 0, + "assets": [ + { + "asset": "FIRO", + "amount": "0.58823529" + } + ], "available": true }, { @@ -173,12 +223,12 @@ A GET HTTP call to either of these endpoints will return a JSON with the followi "available": true }, { - "method": "Bitcoin", - "minFee": 4.5, + "method": "Zano", + "minFee": 0, "assets": [ { - "asset": "BTC", - "amount": "0.00001069" + "asset": "ZANO", + "amount": "0.58823529" } ], "available": true @@ -189,6 +239,23 @@ A GET HTTP call to either of these endpoints will return a JSON with the followi "assets": [ ... ], "available": true }, + { + "method": "Tron", + "minFee": 0, + "assets": [ ... ], + "available": true + }, + { + "method": "Cardano", + "minFee": 0, + "assets": [ + { + "asset": "ADA", + "amount": "4.883112" + } + ], + "available": true + }, { "method": "BinancePay", "minFee": 0, @@ -201,13 +268,13 @@ A GET HTTP call to either of these endpoints will return a JSON with the followi "available": true }, { - "method": "KuCoinPay", + "method": "TaprootAsset", "minFee": 0, "assets": [], "available": false }, { - "method": "BitcoinOnChainTaprootAsset", + "method": "Spark", "minFee": 0, "assets": [], "available": false @@ -243,6 +310,13 @@ A GET HTTP call to either of these endpoints will return a JSON with the followi } ``` +The `recipient` object includes additional fields describing the merchant: +- `registrationNumber`: Company registration number (e.g. Swiss UID) +- `storeType`: Type of store (`Physical`, `Online`, etc.) +- `merchantCategory`: Category of the merchant +- `goodsType`: Type of goods (`Tangible`, `Intangible`) +- `goodsCategory`: Category of goods being sold + Please note that the offer has an expiry date after which it can no longer be used. If a quote has expired, the wallet should fetch a new one (as explained above) to get the latest exchange rates. #### Exceptions @@ -266,11 +340,16 @@ If there is still no payment pending after the waiting time has elapsed, an HTTP "houseNumber": "7", "zip": "6300", "city": "Zug", - "country": "Switzerland" + "country": "CH" }, "phone": "+123456789", "mail": "mail@my-company.com", - "website": "https://my-company.com/" + "website": "https://my-company.com/", + "registrationNumber": "CHE-123.456.789", + "storeType": "Physical", + "merchantCategory": "RetailTradeOthers", + "goodsType": "Tangible", + "goodsCategory": "FoodGroceryHealthProducts" }, "statusCode": 404, "message": "No pending payment found", @@ -288,7 +367,7 @@ In our example the URL to fetch the transaction details for a payment in ETH on A GET HTTP call to this endpoint will return a JSON with the following structure. ```JSON -// EVM, Bitcoin and Monero +// EVM chains (Ethereum, Polygon, Arbitrum, Optimism, Base, BinanceSmartChain), Bitcoin and Firo { "expiryDate": "2025-05-01T14:34:40.881Z", "blockchain": "Ethereum", @@ -296,6 +375,14 @@ A GET HTTP call to this endpoint will return a JSON with the following structure "hint": "Use this data to create a transaction and sign it. Send the signed transaction back as HEX via the endpoint https://api.dfx.swiss/v1/lnurlp/tx/plp_f1ba466e2f1c0a4e. We check the transferred HEX and broadcast the transaction to the blockchain." } +// Monero, Zano, Solana, Tron and Cardano +{ + "expiryDate": "2025-05-01T14:34:40.881Z", + "blockchain": "Cardano", + "uri": "cardano:addr1qyqjzchnayplhgueg33gukpp2max9gkge4gh6jly93a0dzcm67tl9f0pkykty8my4j4hg8e9suj8nzdrjygmfy6c8d0skmaq5q?amount=4.883112", + "hint": "Use this data to create a transaction and sign it. Broadcast the signed transaction to the blockchain and send the transaction hash back via the endpoint https://api.dfx.swiss/v1/lnurlp/tx/plp_f1ba466e2f1c0a4e" +} + // Internet Computer (ICP) { "expiryDate": "2025-05-01T14:34:40.881Z", @@ -308,6 +395,13 @@ A GET HTTP call to this endpoint will return a JSON with the following structure { "pr": "lnbc12590n1p5p8p66pp5eh5manf8yj39ktlfm7h9y4uzph0wjnt6ngu2c709s9z5wndrfxkshp5kyucf7yxx97e0axrwke7xdy599csdhy67jd5pysz2n3m4d636cgqcqzzsxqzgvsp5wl7m20pwux8p49cumznt2vk3p6x08h0vshnpf2ckqzkwfw6fjdms9qyyssqy4mtye0fekxpgcjftmtqqre43xewmnsu94xmkq4yr8yfuj8se4ynd57s3etcdt3qwrrzx9x2qfm0kpz6kj9wy6ys328znrdvsq6mzrcpw0nfqs" } + +// BinancePay +{ + "expiryDate": "2025-05-01T14:34:40.881Z", + "uri": "bnc://app.binance.com/payment/secpay?tempToken=IzjFLlGOoHAdeUth9FurNGjONDeI5Hq9", + "hint": "Pay in the Binance app by following the deep link bnc://app.binance.com/payment/secpay?tempToken=IzjFLlGOoHAdeUth9FurNGjONDeI5Hq9." +} ``` Please note that the transaction details received belong to the quote from [step 2](#2-payment-details) and have the same expiration date. @@ -321,26 +415,31 @@ The API URL to send the transaction proof back to the payment provider (see belo **Important:** All transaction submission endpoints require the following query parameters: - `quote`: The quote ID from [step 2](#2-payment-details) - `method`: The blockchain/payment method name (must match exactly the method name from the `transferAmounts` array, e.g., "Ethereum", "BinanceSmartChain", "Polygon", etc.) -- `hex`: The raw signed transaction in hexadecimal format -- `tx`: The transaction ID after broadcasting (only for Monero and certain other blockchains) -- `asset`: The asset name (required for Internet Computer, e.g. "ICP", "ckBTC", "ckUSDC") -- `sender`: The sender's Principal ID (only for Internet Computer ICRC-2 approve flow) +- For EVM, Bitcoin and Firo: `hex` — the raw signed transaction in hexadecimal format +- For Monero, Zano, Solana, Tron and Cardano: `tx` — the transaction hash after broadcasting +- For Internet Computer: `asset` — the asset name (e.g. "ICP", "ckBTC", "ckUSDC") and either `sender` (Principal ID, for ICRC-2 approve flow) or `tx` (transaction ID, for direct transfer) +- For Lightning and BinancePay: no transaction submission needed (handled differently) -#### EVM and Bitcoin +#### EVM, Bitcoin and Firo Use the `uri` field from [step 3](#3-transaction-details) to construct and sign a valid transaction. Do not broadcast the transaction but send the raw signed transaction HEX to the payment provider with a GET HTTP request to the URL specified above. You must include the `quote` ID from [step 2](#2-payment-details) and the `method` parameter (blockchain name) in the request. If the call returns a success HTTP code, the Open CryptoPay payment has been successfully completed. +Note that BinanceSmartChain uses the `ethereum:` URI scheme (EIP-681 format with chain ID 56). + In our example the URL would be https://api.dfx.swiss/v1/lnurlp/tx/plp_f1ba466e2f1c0a4e?quote={quote-id}&method={selected-method}&hex={raw-tx-hex}. Further examples: - Ethereum payment: https://api.dfx.swiss/v1/lnurlp/tx/plp_f1ba466e2f1c0a4e?quote=plq_9af8927afe14f2d0&method=Ethereum&hex={raw-tx-hex}. - BNB Smart Chain payment: https://api.dfx.swiss/v1/lnurlp/tx/plp_f1ba466e2f1c0a4e?quote=plq_9af8927afe14f2d0&method=BinanceSmartChain&hex={raw-tx-hex}. +- Firo payment: https://api.dfx.swiss/v1/lnurlp/tx/plp_f1ba466e2f1c0a4e?quote=plq_9af8927afe14f2d0&method=Firo&hex={raw-tx-hex}. -#### Monero +#### Monero, Zano, Solana, Tron and Cardano -Use the `uri` field from [step 3](#3-transaction-details) to construct a valid transaction. Broadcast this transaction to the network and send the resulting raw transaction HEX and the transaction ID to the payment provider with a GET HTTP request to the URL specified above. You must include the `quote` ID from [step 2](#2-payment-details) and the `method` parameter in the request. If the call returns a success HTTP code, the Open CryptoPay payment has been successfully completed. +Use the `uri` field from [step 3](#3-transaction-details) to construct a valid transaction. Broadcast the signed transaction to the blockchain yourself and then send the resulting transaction hash to the payment provider with a GET HTTP request to the URL specified above. You must include the `quote` ID from [step 2](#2-payment-details) and the `method` parameter in the request. If the call returns a success HTTP code, the Open CryptoPay payment has been successfully completed. -In our example the URL would be https://api.dfx.swiss/v1/lnurlp/tx/plp_f1ba466e2f1c0a4e?quote={quote-id}&method=Monero&hex={raw-tx-hex}&tx={tx-id}. +The URL format is `{tx-url}?quote={quote-id}&method={method}&tx={tx-hash}`. + +In our example the URL would be https://api.dfx.swiss/v1/lnurlp/tx/plp_f1ba466e2f1c0a4e?quote=plq_9af8927afe14f2d0&method=Cardano&tx={tx-hash}. #### Internet Computer (ICP) @@ -366,6 +465,10 @@ In our example the URL would be https://api.dfx.swiss/v1/lnurlp/tx/plp_f1ba466e2 Use the invoice from the `pr` field from [step 3](#3-transaction-details) to execute the transaction. The Open CryptoPay payment will be completed as soon as the transaction has been successfully executed. +#### BinancePay + +Use the deep link from the `uri` field from [step 3](#3-transaction-details) to open the Binance app. The payment will be completed within the Binance app. + ### Simplified Flow To simplify the process, steps 2 and 3 can be done with a single HTTP call by adding the `method` and `asset` query parameters to the API URL used to fetch the payment details (in [step 2](#2-payment-details)). This call will return the transaction details as shown in [step 3](#3-transaction-details) or an error code, if the selected method and asset are not available with the payment provider. The simplified flow can be used with both approaches described in [step 2](#2-payment-details).