A BTCPay Server plugin that adds Async Payjoin (BIP 77) support to the checkout flow. The plugin uses C# bindings to the Rust Payjoin Dev Kit generated via UniFFI.
Warning
This plugin is under active development and is intended for demo/testing purposes. Do not use in production with real funds.
git clone --recurse-submodules https://github.com/ValeraFinebits/btcpayserver-payjoin-plugin
cd btcpayserver-payjoin-pluginGenerate the C# bindings from the Rust FFI crate, then build the .NET solution:
cd rust-payjoin/payjoin-ffi/csharp
bash ./scripts/generate_bindings.sh
cd ../../..
dotnet restore BTCPayServer.Plugins.Payjoin.sln
dotnet build BTCPayServer.Plugins.Payjoin.sln -c Releasedotnet test BTCPayServer.Plugins.Payjoin.sln -c ReleaseEntity Framework migrations for the plugin use the dedicated design-time startup project at BTCPayServer.Plugins.Payjoin.Migrations.
List migrations:
dotnet ef migrations list --project BTCPayServer.Plugins.Payjoin/BTCPayServer.Plugins.Payjoin.csproj --startup-project BTCPayServer.Plugins.Payjoin.Migrations/BTCPayServer.Plugins.Payjoin.Migrations.csprojAdd a migration:
dotnet ef migrations add <MigrationName> --project BTCPayServer.Plugins.Payjoin/BTCPayServer.Plugins.Payjoin.csproj --startup-project BTCPayServer.Plugins.Payjoin.Migrations/BTCPayServer.Plugins.Payjoin.Migrations.csproj --output-dir MigrationsRemove the latest migration:
dotnet ef migrations remove --project BTCPayServer.Plugins.Payjoin/BTCPayServer.Plugins.Payjoin.csproj --startup-project BTCPayServer.Plugins.Payjoin.Migrations/BTCPayServer.Plugins.Payjoin.Migrations.csproj --force- Async Payjoin Rust implementation: https://github.com/payjoin/rust-payjoin
- BTCPay Server plugin development docs: https://docs.btcpayserver.org/Development/Plugins/