This is a demonstration .NET app to show how BitPay can be used in the
context of a retail kiosk. It utilizes the pos
facade and with a simple
configuration file you can customize the posData
fields that are sent to
BitPay. This app uses SQLite database to make it easy to start.
- Create invoices
- View a grid of invoices
- View invoice details
- Store invoices in a database
- Receives instant payment notifications (IPN) to update the database
- Uses EventSource to update the frontend upon receiving IPN
- BitPay Account
- .NET SDK >= 7
This app uses a JSON and YAML configuration files to set BitPay credentials and form fields.
To configure it, you'll need to update bitPayDesign.yaml
.
JSON Key | Description |
---|---|
AppUrl | Sets the application URL used for IPN |
BitPay.Token | Your BitPay token |
BitPay.NotificationEmail | The email you want to use for notifications |
YAML Key | Description |
---|---|
hero.bgColor | CSS color for hero background |
hero.title | The title to show in the hero |
hero.body | The text to show under the title in the hero |
logo | URL for the logo |
mode | Determines whether the app should be run in standard or donation mode |
donation.denominations | Available donations to choose. The highest value determined the maximum donation |
donation.enableOther | Determines whether the app should allow to use own donation value. |
donation.footerText | The text to show in the footer |
donation.buttonSelectedBgColor | CSS color for selected donation background |
donation.buttonSelectedTextColor | CSS color for selected donation text |
posData.fields | See the POS Data Fields section below |
YAML Key | Description |
---|---|
type | Set to "select" |
required | Determines whether the field should be required or not |
id | Field identifier |
name | Field name |
label | Field label |
options.id | (options array) ID for a given selection |
options.label | (options array) Label for a given selection |
options.value | (options array) Value for a given selection |
YAML Key | Description |
---|---|
type | Set to "fieldset" |
required | Determines whether the field should be required or not |
name | Field name |
label | Field label |
options.id | (options array) ID for a given selection |
options.label | (options array) Label for a given selection |
options.value | (options array) Value for a given selection |
YAML Key | Description |
---|---|
type | Set to "text" |
required | Determines whether the field should be required or not |
name | Field name |
label | Field label |
YAML Key | Description |
---|---|
type | Set to "price" |
required | Determines whether the field should be required or not |
name | Field name |
label | Field label |
currency | Currency for the field |
Field with name "price" is required to exists in form.
If field is not added to file bitPayDesign.yaml
, it will be added automatically to form when the application starts.
Docker:
Run docker-compose up
When the app starts, navigate to http://localhost in a browser.
or
Natively:
Run dotnet run --project CsharpKioskDemoDotnet
to run the application.
Run dotnet test
to run tests.