This allows external services to integrate with the payouts system to process payouts. This is also a step to allow plugins to provide payout processors.
* It provides the payment proof through the greenfield payoust api.
* It allows you to set the state of a payout outside of the usual flow:
* When state is awaiting payment, allow setting to In progess or completed
* When state is in progress, allow setting back to awaiting payment
Fix and test for a regression introduced with #4243: As the `PayPaymentRequest` action allows anonymous access, the `CookieAuthorizationHandler` isn;t run and hence the `GetCurrentStore` returns `null`.
This leads to an exception when creating the invoice. Store needs to be fetched seperately - like [before](4bbc7d9662 (diff-bdc264670a171e862d09fdf1a1c9f3ca14b41982a3c4c8e66d4f780cdde9f21dL241)).
* [Greenfield] Can create an invoice for a payment request via Greenfield
* Add allowPendingInvoiceReuse so payment request invoices can be reused
* Add PayPaymentRequest to the LocalBTCPayServerClient
* Allow amount to be specified if same as PR amount
* Opt-in for new checkout
* Update wording
* Create invoice view update
* Remove jQuery from checkout testing code
* Checkout v2 basics
* WIP
* WIP 2
* Updates and fixes
* Updates
* Design updates
* More design updates
* Cheating and JS fixes
* Use checkout form id whenever invoices get created
* Improve email form handling
* Cleanups
* Payment method exclusion cases for Lightning and LNURL
TODO: Cases and implementation need to be discussed
* Introduce CheckoutType in API and replace UseNewCheckout in backend
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* Add logo upload
* Add brand color definition
* Cleanups
* Add logo to store selector
* Improve brand color handling
* Update color input
* Add logo dimensions hint
* Fixes
* Fix pattern and warning in js logs for color validation
* Fix condition, add test
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* Update WalletTransactions pagination default settings
Remove the numeric page selection and add displaying data of last 30 days by default.
* Update WalletTransactions to show txs based on Days
* Update text formatting on WalletTransactions view
Keeps the logic changes. Just undo the formatting of the file from previous commit
* Update WalletTransactions to show all after second load
Utilize Model.Days instead of new variables
Moved javascript code to PageFootContent section
* Update WalletTransactions to use ajax for infinite scroll
* Cleanups
* Apply skip and count only when not prefiltering
* Infinite scroll mode
* Improve datetime formatting and switching
* Upgrade NBXplorer to include get_wallets_recent bugfix
* Revert "Upgrade NBXplorer to include get_wallets_recent bugfix"
This reverts commit b390d942d74d88bb1da3ab8e3407184a527175ef.
* JS fixes
* Upgrade ChromeDriver and BundleMinifier
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
* Added custodian account trade support
* UI updates
* Improved UI spacing and field sizes + Fixed input validation
* Reset error message when opening trade modal
* Better error handing + test + surface error in trade modal in UI
* Add delete confirmation modal
* Fixed duplicate ID in site nav
* Replace jQuery.ajax with fetch for onTradeSubmit
* Added support for minimumTradeQty to trading pairs
* Fixed LocalBTCPayServerClient after previous refactoring
* Handling dust amounts + minor API change
* Replaced jQuery with Fetch API + UX improvements + more TODOs
* Moved namespace because Rider was unhappy
* Major UI improvements when swapping or changing assets, fixed bugs in min trade qty, fixed initial qty after an asset change etc
* Commented out code for easier debugging
* Fixed missing default values
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
* Payjoin label fixes
* When a payjoin label was applied, coin selection filter would not work
* When a payjoin happened with a receive address wallet, the payjoin label was not applied
* Coin selection shows when a utxo is currently reserved for a payjoin. Applies both to UI and to GF API
* remove reserved label
* Update BTCPayServer/Payments/PayJoin/PayJoinEndpointController.cs
This cleans up the client factory for plugins so that it is less hectic looking. Additionally, it fixes a bug where if you reuse the factory after setting a store, the state might stick.
* WIP New APIs for dealing with custodians/exchanges
* Simplified things
* More API refinements + index.html file for quick viewing
* Finishing touches on spec
* Switched cryptoCode to paymentMethod as this allows us to differentiate between onchain and lightning
* Moved draft API docs to "/docs-draft"
* WIP baby steps
* Added DB migration for CustodianAccountData
* Rough but working POST /v1/api/custodian-account + GET /v1/api/custodian
* WIP + early Kraken API client
* Moved service registration to proper location
* Working create + list custodian accounts + permissions + WIP Kraken client
* Kraken API Balances call is working
* Added asset balances to response
* List Custodian Accounts call does not load assetBalances by default, because it can fail. Can be requested when needed.
* Call to get the details of 1 specific custodian account
* Added permissions to swagger
* Added "tradableAssetPairs" to Kraken custodian response + cache the tradable pairs in memory for 24 hours
* Removed unused file
* WIP + Moved files to better locations
* Updated docs
* Working API endpoint to get info on a trade (same response as creating a new trade)
* Working API endpoints for Deposit + Trade + untested Withdraw
* Delete custodian account
* Trading works, better error handling, cleanup
* Working withdrawals + New endpoint for getting bid/ask prices
* Completed withdrawals + new endpoint for getting info on a past withdrawal to simplify testing, Enums are output as strings,
* Better error handling when withdrawing to a wrong destination
* WithdrawalAddressName in config is now a string per currency (dictionary)
* Added TODOs
* Only show the custodian account "config" to users who are allowed
* Added the new permissions to the API Keys UI
* Renamed KrakenClient to KrakenExchange
* WIP Kraken Config Form
* Removed files for UI again, will make separate PR later
* Fixed docs + Refactored to use PaymentMethod more + Added "name" to custodian account + Using cancelationToken everywhere
* Updated withdrawal info docs
* First unit test
* Complete tests for /api/v1/custodians and /api/v1/custodian-accounts endpoints + Various improvements and fixes
* Mock custodian and more exceptions
* Many more tests + cleanup, moved files to better locations
* More tests
* WIP more tests
* Greenfield API tests complete
* Added missing "Name" column
* Cleanup, TODOs and beginning of Kraken Tests
* Added Kraken tests using public endpoints + handling of "SATS" currency
* Added 1st mocked Kraken API call: GetAssetBalancesAsync
* Added assert for bad config
* Mocked more Kraken API responses + added CreationDate to withdrawal response
* pr review club changes
* Make Kraken Custodian a plugin
* Re-added User-Agent header as it is required
* Fixed bug in market trade on Kraken using a percentage as qty
* A short delay so Kraken has the time to execute the market order and we don't fetch the details too quickly.
* Merged the draft swagger into the main swagger since it didn't work anymore
* Fixed API permissions test
* Removed 2 TODOs
* Fixed unit test
* After a utxo rescan, the cached balance should be invalidated
* Fixed Kraken plugin build issues
* Added Kraken plugin to build
* WIP UI + config form
* Create custodian account almost working - only need to add in the config form
* Working form, but lacks refinement
* Viewing balances + Editing custodian account works, but cannot change the withdrawal destination config because that is an object using a name with [] in it
* cleanup
* Minor cleanup, comments
* Working: Delete custodian account
* Moved the MockCustodian used in tests to a new plugin + linked it to the tests
* WIP viewing custodian account balances
* Split the Mock custodian into a Mock + Fake, various UI improvements and minor fixes
* Minor UI fixes
* Removed broken link
* Removed links to anchors as they cannot pass the tests since they use JavaScript
* Removed non-existing link. Even though it was commented out, the test still broke?
* Added TODOs
* Now throwing BadConfigException if API key is invalid
* UI improvements
* Commented out unfinished API endpoints. Can be finished later.
* Show fiat value for fiat assets
* Removed Kraken plugin so I can make a PR
Removed more Kraken files
* Add experimental route on UICustodianAccountsControllre
* Removed unneeded code
* Cleanup code
* Processed Nicolas' feedback
Co-authored-by: Kukks <evilkukka@gmail.com>
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* Public Invoice receipt
* implement payment,s qr, better ui, and fix invoice bug
* General view updates
* Update admin details link
* Update view
* add missing check
* Refactor
* make payments and qr shown by default
* move cusotmization options to own ReceiptOptions
* Make sure to sanitize values inside PosData partial
* Refactor
* Make sure that ReceiptOptions for the StoreData is never null, and that values are always set in API
* add receipt link to checkout and add tests
* add receipt link to lnurl
* Use ReceiptOptions.Merge
* fix lnurl
* fix chrome
* remove i18n parameterization
* Fix swagger
* Update translations
* Fix warning
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>