Btcpay Server
Installation
Add this line to your application's Gemfile:
gem 'btcpay'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install btcpay
Usage
Required Params
Auth Token
At least one of the following auth tokens are required. Auth tokens can be created via the following:
auth_token
Scoped Api Tokens can be created via
/Manage/APIKeysBTCPAY_AUTH_TOKENenvironment variable can also be used
basic_auth_token
Legacy Api Key can be created per store via
/stores/{store-id}/TokensBTCPAY_BASIC_AUTH_TOKENenvironment variable can also be used
Base Url
A base_url is required to interact with the server.
BTCPAY_BASE_URLenvironment variable can also be used
client = BtcPay.new(auth_token: 'foobar', base_url: 'http://localhost:49392')
Response
A response consists of the following accessible attributes:
#body- rubified response body#code- response status code#headers- response headers#raw- unaltered response body#status-:success/:failure
Request object types
All endpoints are accessed via namespaced Api resource. Example: client.users.create({ email: '[email protected]', password: 'password', isAdministrator: false })
Api Keys:
GET #currentPOST #create(payload)DELETE #revoke(key)DELETE #revoke!
Health:
GET #status
Lightning:
- TODO - Set up local lightning network, testing, etc.
Pull Payments:
GET #get(pull_payment_id)GET #payoutsPOST #create_payout(pull_payment_id, payload)
Server:
GET #info
Store:
GET #allPOST #create(payload)GET #get(store_id)DELETE #delete(store_id)PUT #update(store_id, payload)
- ##### Invoices:
GET #all(store_id)POST #create(store_id, payload)GET #get(store_id, invoice_id)DELETE #delete(store_id, invoice_id)POST #update_status(store_id, invoice_id, payload, status)POST #unarchive(store_id, invoice_id)
- ##### Payment Requests:
GET #all(store_id)POST #create(store_id, payload)GET #get(store_id, request_id)DELETE #delete(store_id, request_id)PUT #update(store_id, request_id, payload)
- ##### Payouts:
POST #approve(store_id, payout_id, payload)DELETE #delete(store_id, payout_id)
- ##### Pull Payments:
GET #all(store_id)POST #create(store_id, payload)DELETE #delete(store_id, pull_payment_id)
Users:
GET #mePOST #create(payload)
Request helpers
Api Keys:
- ##### Authorize
GET #html(permissions: [], application_name:, strict: true, selective_stores: false)#link(permissions: [], application_name:, strict: true, selective_stores: false)
Environment Variables
btcpay can be initialized with either arguments or ENV:
| Variable | Description | Default |
|---|---|---|
BTCPAY_AUTH_TOKEN |
BtcPay Auth Token | - |
BTCPAY_BASIC_AUTH_TOKEN |
BtcPay Basic Auth Token | - |
BTCPAY_BASE_URL |
BtcPay Base Url | - |
BtcPay Docker Compose
To get up and running locally quickly, a BTCPayServer docker-compose file has been added to test local API interactions. To get up and running:
$ docker-compose -f docker-compose.btcpay.yml up$ open http://localhost:49392- Note:
regtestenvironment default to allow for block/coin creation for test purpose testnetenvironment should be used for integration/staging testing prior to production promotion.mainnetis the real network.
- Note:
Development
After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on Gitlab at https://gitlab.com/snogrammer/btcpay.
License
The gem is available as open source under the terms of the MIT License.