Implement bitcoin donations via BTCPay

This commit is contained in:
2024-02-14 11:09:03 +01:00
parent 26d613bdca
commit 079ee8833c
46 changed files with 1142 additions and 114 deletions

32
spec/fixtures/btcpay/create_invoice.rb vendored Normal file
View File

@@ -0,0 +1,32 @@
{
"id" => "Q9GBe143MXHkdpZeH4Ftx5",
"storeId" => "AxQQ6oH4YX7n5pH1JPBLu97QD6RTybtj8m2W8YzhYr6T",
"amount" => "1",
"checkoutLink" => "http://10.1.1.163:23001/i/Q9GBe143MXHkdpZeH4Ftx5",
"status" => "New",
"additionalStatus" => "None",
"monitoringExpiration" => 1707995026,
"expirationTime" => 1707908626,
"createdTime" => 1707907726,
"availableStatusesForManualMarking" =>["Settled", "Invalid"],
"archived" => false,
"type" => "Standard",
"currency" => "EUR",
"metadata" => {},
"checkout" => {
"speedPolicy" => "MediumSpeed",
"paymentMethods" => ["BTC", "BTC-LightningNetwork"],
"defaultPaymentMethod" => "BTC-LightningNetwork",
"expirationMinutes" => 15,
"monitoringMinutes" => 1440,
"paymentTolerance" => 0.0,
"redirectURL" => "http://localhost:3000/contributions/donations",
"redirectAutomatically" => false,
"requiresRefundEmail" => false,
"defaultLanguage" => nil,
"checkoutType" => nil,
"lazyPaymentMethods" => nil},
"receipt" => {
"enabled" => nil, "showQR" => nil, "showPayments" => nil
}
}

View File

@@ -0,0 +1,41 @@
{
"id": "MCkDbf2cUgBuuisUCgnRnb",
"storeId": "AxQQ6oH4YX7n5pH1JPBLu97QD6RTybtj8m2W8YzhYr6T",
"amount": "1",
"checkoutLink": "http://10.1.1.163:23001/i/MCkDbf2cUgBuuisUCgnRnb",
"status": "Settled",
"additionalStatus": "None",
"monitoringExpiration": 1708169508,
"expirationTime": 1708083108,
"createdTime": 1708082208,
"availableStatusesForManualMarking": [
],
"archived": false,
"type": "Standard",
"currency": "EUR",
"metadata": {
},
"checkout": {
"speedPolicy": "MediumSpeed",
"paymentMethods": [
"BTC",
"BTC-LightningNetwork"
],
"defaultPaymentMethod": "BTC-LightningNetwork",
"expirationMinutes": 15,
"monitoringMinutes": 1440,
"paymentTolerance": 0.0,
"redirectURL": "http://localhost:3000/contributions/donations/27/confirm_btcpay",
"redirectAutomatically": true,
"requiresRefundEmail": false,
"defaultLanguage": null,
"checkoutType": null,
"lazyPaymentMethods": null
},
"receipt": {
"enabled": null,
"showQR": null,
"showPayments": null
}
}

View File

@@ -0,0 +1,46 @@
[
{
"activated": true,
"destination": "bc1qtvwjguv679lcch9a9zxzxcengq3t3zgd5zm0pd",
"paymentLink": "bitcoin:bc1qtvwjguv679lcch9a9zxzxcengq3t3zgd5zm0pd",
"rate": "48532.8",
"paymentMethodPaid": "0",
"totalPaid": "0.00002061",
"due": "0",
"amount": "0.00002061",
"networkFee": "0",
"payments": [
],
"paymentMethod": "BTC",
"cryptoCode": "BTC",
"additionalData": {
}
},
{
"activated": true,
"destination": "lnbc20610n1pju73pqpp5rrvhc34tzt3vz70r33c2n2qqtm6hxau2hyl9w23kvrx56vhsfh5sdphg3hkuct5d9hkugr5dus8g6r9yp9k7umddaejqcm0dacx2unpw35hvegcqzzsxqyz5vqsp56grmnp2ezj4n323squu2p2e09g5lgncsr7f34084p5dyjgmwcssq9qyyssqfrc9x37qcvvpsx8m4zvu9glvcfcmqzs9ttfsg30g2gjxfkylvp8rdud2yx8gshs2jv0rea0etjrcygrc0hp4vckgsfs4grsnl854ajgpurzzp4",
"paymentLink": "lightning:lnbc20610n1pju73pqpp5rrvhc34tzt3vz70r33c2n2qqtm6hxau2hyl9w23kvrx56vhsfh5sdphg3hkuct5d9hkugr5dus8g6r9yp9k7umddaejqcm0dacx2unpw35hvegcqzzsxqyz5vqsp56grmnp2ezj4n323squu2p2e09g5lgncsr7f34084p5dyjgmwcssq9qyyssqfrc9x37qcvvpsx8m4zvu9glvcfcmqzs9ttfsg30g2gjxfkylvp8rdud2yx8gshs2jv0rea0etjrcygrc0hp4vckgsfs4grsnl854ajgpurzzp4",
"rate": "48532.8",
"paymentMethodPaid": "0.00002061",
"totalPaid": "0.00002061",
"due": "0",
"amount": "0.00002061",
"networkFee": "0",
"payments": [
{
"id": "18d97c46ab12e2c179e38c70a9a8005ef573778ab93e572a3660cd4d32f04de9",
"receivedDate": 1708082214,
"value": "0.00002061",
"fee": "0.0",
"status": "Settled",
"destination": "lnbc20610n1pju73pqpp5rrvhc34tzt3vz70r33c2n2qqtm6hxau2hyl9w23kvrx56vhsfh5sdphg3hkuct5d9hkugr5dus8g6r9yp9k7umddaejqcm0dacx2unpw35hvegcqzzsxqyz5vqsp56grmnp2ezj4n323squu2p2e09g5lgncsr7f34084p5dyjgmwcssq9qyyssqfrc9x37qcvvpsx8m4zvu9glvcfcmqzs9ttfsg30g2gjxfkylvp8rdud2yx8gshs2jv0rea0etjrcygrc0hp4vckgsfs4grsnl854ajgpurzzp4"
}
],
"paymentMethod": "BTC-LightningNetwork",
"cryptoCode": "BTC",
"additionalData": {
"paymentHash": "18d97c46ab12e2c179e38c70a9a8005ef573778ab93e572a3660cd4d32f04de9"
}
}
]

View File

@@ -0,0 +1,41 @@
{
"id": "JxjfeJi1TtX8FcWSjEvGxg",
"storeId": "AxQQ6oH4YX7n5pH1JPBLu97QD6RTybtj8m2W8YzhYr6T",
"amount": "0.0001",
"checkoutLink": "http://10.1.1.163:23001/i/JxjfeJi1TtX8FcWSjEvGxg",
"status": "Settled",
"additionalStatus": "None",
"monitoringExpiration": 1708180292,
"expirationTime": 1708093892,
"createdTime": 1708092992,
"availableStatusesForManualMarking": [
],
"archived": false,
"type": "Standard",
"currency": "BTC",
"metadata": {
},
"checkout": {
"speedPolicy": "MediumSpeed",
"paymentMethods": [
"BTC",
"BTC-LightningNetwork"
],
"defaultPaymentMethod": "BTC-LightningNetwork",
"expirationMinutes": 15,
"monitoringMinutes": 1440,
"paymentTolerance": 0.0,
"redirectURL": "http://localhost:3000/contributions/donations/32/confirm_btcpay",
"redirectAutomatically": true,
"requiresRefundEmail": false,
"defaultLanguage": null,
"checkoutType": null,
"lazyPaymentMethods": null
},
"receipt": {
"enabled": null,
"showQR": null,
"showPayments": null
}
}

View File

@@ -0,0 +1,46 @@
[
{
"activated": true,
"destination": "bc1q9fay59qdmtv46d5hpf62vt5eyd7ag98t4h0s3g",
"paymentLink": "bitcoin:bc1q9fay59qdmtv46d5hpf62vt5eyd7ag98t4h0s3g",
"rate": "1.0",
"paymentMethodPaid": "0",
"totalPaid": "0.0001",
"due": "0",
"amount": "0.0001",
"networkFee": "0",
"payments": [
],
"paymentMethod": "BTC",
"cryptoCode": "BTC",
"additionalData": {
}
},
{
"activated": true,
"destination": "lnbc100u1pju7mjqpp54yt6z4g4j294vta90yn35pwch76a4h47txx4m4njfdqmcsa4w50qdphg3hkuct5d9hkugr5dus8g6r9yp9k7umddaejqcm0dacx2unpw35hvegcqzzsxqyz5vqsp5gx3wee4c2gsl7lnmx4qkrha3mkxh926j5qpdqz7wyyya04wks7cq9qyyssq4ft7a69c93kr04hamp5ah958ay222dvdrzr3nl599nx0l3ejpqe4ktarkxdymsxgg6v3evat9e9u0fp2vg2r2z860fn0h04znq9c6psqh8s53q",
"paymentLink": "lightning:lnbc100u1pju7mjqpp54yt6z4g4j294vta90yn35pwch76a4h47txx4m4njfdqmcsa4w50qdphg3hkuct5d9hkugr5dus8g6r9yp9k7umddaejqcm0dacx2unpw35hvegcqzzsxqyz5vqsp5gx3wee4c2gsl7lnmx4qkrha3mkxh926j5qpdqz7wyyya04wks7cq9qyyssq4ft7a69c93kr04hamp5ah958ay222dvdrzr3nl599nx0l3ejpqe4ktarkxdymsxgg6v3evat9e9u0fp2vg2r2z860fn0h04znq9c6psqh8s53q",
"rate": "1.0",
"paymentMethodPaid": "0.0001",
"totalPaid": "0.0001",
"due": "0",
"amount": "0.0001",
"networkFee": "0",
"payments": [
{
"id": "a917a15515928b562fa579271a05d8bfb5dadebe598d5dd6724b41bc43b5751e",
"receivedDate": 1708093015,
"value": "0.0001",
"fee": "0.0",
"status": "Settled",
"destination": "lnbc100u1pju7mjqpp54yt6z4g4j294vta90yn35pwch76a4h47txx4m4njfdqmcsa4w50qdphg3hkuct5d9hkugr5dus8g6r9yp9k7umddaejqcm0dacx2unpw35hvegcqzzsxqyz5vqsp5gx3wee4c2gsl7lnmx4qkrha3mkxh926j5qpdqz7wyyya04wks7cq9qyyssq4ft7a69c93kr04hamp5ah958ay222dvdrzr3nl599nx0l3ejpqe4ktarkxdymsxgg6v3evat9e9u0fp2vg2r2z860fn0h04znq9c6psqh8s53q"
}
],
"paymentMethod": "BTC-LightningNetwork",
"cryptoCode": "BTC",
"additionalData": {
"paymentHash": "a917a15515928b562fa579271a05d8bfb5dadebe598d5dd6724b41bc43b5751e"
}
}
]

View File

@@ -0,0 +1,42 @@
{
"id": "K4e31MhbLKmr3D7qoNYRd3",
"storeId": "AxQQ6oH4YX7n5pH1JPBLu97QD6RTybtj8m2W8YzhYr6T",
"amount": "100",
"checkoutLink": "http://10.1.1.163:23001/i/K4e31MhbLKmr3D7qoNYRd3",
"status": "Processing",
"additionalStatus": "None",
"monitoringExpiration": 1708173683,
"expirationTime": 1708087283,
"createdTime": 1708086383,
"availableStatusesForManualMarking": [
"Settled",
"Invalid"
],
"archived": false,
"type": "Standard",
"currency": "USD",
"metadata": {
},
"checkout": {
"speedPolicy": "MediumSpeed",
"paymentMethods": [
"BTC",
"BTC-LightningNetwork"
],
"defaultPaymentMethod": "BTC-LightningNetwork",
"expirationMinutes": 15,
"monitoringMinutes": 1440,
"paymentTolerance": 0.0,
"redirectURL": "http://localhost:3000/contributions/donations/28/confirm_btcpay",
"redirectAutomatically": true,
"requiresRefundEmail": false,
"defaultLanguage": null,
"checkoutType": null,
"lazyPaymentMethods": null
},
"receipt": {
"enabled": null,
"showQR": null,
"showPayments": null
}
}

View File

@@ -0,0 +1,46 @@
[
{
"activated": true,
"destination": "bc1qqxm55h6yzych9kg6kquak4c73nyv352070tsmh",
"paymentLink": "bitcoin:bc1qqxm55h6yzych9kg6kquak4c73nyv352070tsmh",
"rate": "52259.2",
"paymentMethodPaid": "0.00191354",
"totalPaid": "0.00191354",
"due": "0",
"amount": "0.00191354",
"networkFee": "0",
"payments": [
{
"id": "21da85563274d0c3975273c1a2a8551bddeebb68b8f8a3242f63dd4cc238b480-1",
"receivedDate": 1708086448,
"value": "0.00191354",
"fee": "0.0",
"status": "Processing",
"destination": "bc1qqxm55h6yzych9kg6kquak4c73nyv352070tsmh"
}
],
"paymentMethod": "BTC",
"cryptoCode": "BTC",
"additionalData": {
}
},
{
"activated": true,
"destination": "lnbc1913540n1pju74r0pp5vpnw6l84ytu5u5evehn00xwsrppg7w45cj4mrwjwng474w7x3ugqdphg3hkuct5d9hkugr5dus8g6r9yp9k7umddaejqcm0dacx2unpw35hvegcqzzsxqyz5vqsp5sscc8ufdw29lpv9z09c6edhzc2njg0lmspsk8sdunek7yrkeu3mq9qyyssqnzz9xrhpy7sej5k62vcjju253kxx87jveq7vusl2sgaeuyh48ph9ecuud6f329syuut3z8w544c6ynhtx4ratundzmp7fs6sdll8g0spurjhnx",
"paymentLink": "lightning:lnbc1913540n1pju74r0pp5vpnw6l84ytu5u5evehn00xwsrppg7w45cj4mrwjwng474w7x3ugqdphg3hkuct5d9hkugr5dus8g6r9yp9k7umddaejqcm0dacx2unpw35hvegcqzzsxqyz5vqsp5sscc8ufdw29lpv9z09c6edhzc2njg0lmspsk8sdunek7yrkeu3mq9qyyssqnzz9xrhpy7sej5k62vcjju253kxx87jveq7vusl2sgaeuyh48ph9ecuud6f329syuut3z8w544c6ynhtx4ratundzmp7fs6sdll8g0spurjhnx",
"rate": "52259.2",
"paymentMethodPaid": "0",
"totalPaid": "0.00191354",
"due": "0",
"amount": "0.00191354",
"networkFee": "0",
"payments": [
],
"paymentMethod": "BTC-LightningNetwork",
"cryptoCode": "BTC",
"additionalData": {
"paymentHash": "6066ed7cf522f94e532ccde6f799d018428f3ab4c4abb1ba4e9a2beabbc68f10"
}
}
]

View File

@@ -0,0 +1,41 @@
{
"id": "K4e31MhbLKmr3D7qoNYRd3",
"storeId": "AxQQ6oH4YX7n5pH1JPBLu97QD6RTybtj8m2W8YzhYr6T",
"amount": "100",
"checkoutLink": "http://10.1.1.163:23001/i/K4e31MhbLKmr3D7qoNYRd3",
"status": "Settled",
"additionalStatus": "None",
"monitoringExpiration": 1708173683,
"expirationTime": 1708087283,
"createdTime": 1708086383,
"availableStatusesForManualMarking": [
],
"archived": false,
"type": "Standard",
"currency": "USD",
"metadata": {
},
"checkout": {
"speedPolicy": "MediumSpeed",
"paymentMethods": [
"BTC",
"BTC-LightningNetwork"
],
"defaultPaymentMethod": "BTC-LightningNetwork",
"expirationMinutes": 15,
"monitoringMinutes": 1440,
"paymentTolerance": 0.0,
"redirectURL": "http://localhost:3000/contributions/donations/28/confirm_btcpay",
"redirectAutomatically": true,
"requiresRefundEmail": false,
"defaultLanguage": null,
"checkoutType": null,
"lazyPaymentMethods": null
},
"receipt": {
"enabled": null,
"showQR": null,
"showPayments": null
}
}

View File

@@ -0,0 +1,46 @@
[
{
"activated": true,
"destination": "bc1qqxm55h6yzych9kg6kquak4c73nyv352070tsmh",
"paymentLink": "bitcoin:bc1qqxm55h6yzych9kg6kquak4c73nyv352070tsmh",
"rate": "52259.2",
"paymentMethodPaid": "0.00191354",
"totalPaid": "0.00191354",
"due": "0",
"amount": "0.00191354",
"networkFee": "0",
"payments": [
{
"id": "218652f351508c46cfd99de1c6cdc0dcb66bc1bbfaf38578235d080046a96305-1",
"receivedDate": 1708106396,
"value": "0.00191354",
"fee": "0.0",
"status": "Settled",
"destination": "bc1qqxm55h6yzych9kg6kquak4c73nyv352070tsmh"
}
],
"paymentMethod": "BTC",
"cryptoCode": "BTC",
"additionalData": {
}
},
{
"activated": true,
"destination": "lnbc1913540n1pju74r0pp5vpnw6l84ytu5u5evehn00xwsrppg7w45cj4mrwjwng474w7x3ugqdphg3hkuct5d9hkugr5dus8g6r9yp9k7umddaejqcm0dacx2unpw35hvegcqzzsxqyz5vqsp5sscc8ufdw29lpv9z09c6edhzc2njg0lmspsk8sdunek7yrkeu3mq9qyyssqnzz9xrhpy7sej5k62vcjju253kxx87jveq7vusl2sgaeuyh48ph9ecuud6f329syuut3z8w544c6ynhtx4ratundzmp7fs6sdll8g0spurjhnx",
"paymentLink": "lightning:lnbc1913540n1pju74r0pp5vpnw6l84ytu5u5evehn00xwsrppg7w45cj4mrwjwng474w7x3ugqdphg3hkuct5d9hkugr5dus8g6r9yp9k7umddaejqcm0dacx2unpw35hvegcqzzsxqyz5vqsp5sscc8ufdw29lpv9z09c6edhzc2njg0lmspsk8sdunek7yrkeu3mq9qyyssqnzz9xrhpy7sej5k62vcjju253kxx87jveq7vusl2sgaeuyh48ph9ecuud6f329syuut3z8w544c6ynhtx4ratundzmp7fs6sdll8g0spurjhnx",
"rate": "52259.2",
"paymentMethodPaid": "0",
"totalPaid": "0.00191354",
"due": "0",
"amount": "0.00191354",
"networkFee": "0",
"payments": [
],
"paymentMethod": "BTC-LightningNetwork",
"cryptoCode": "BTC",
"additionalData": {
"paymentHash": "6066ed7cf522f94e532ccde6f799d018428f3ab4c4abb1ba4e9a2beabbc68f10"
}
}
]