neropay/README.TXT
2025-03-06 14:50:41 -05:00

179 lines
5.3 KiB
Text

------------------------------------------------------------------------------
/| //| |
//| // | | ___ __ ___ ___
// | // | | // ) ) // ) ) // ) ) // ) ) // / /
// | // | | // / / // / / //___/ / // / / ((___/ /
// |// | | ((___/ / // / / // ((___( ( / /
Monpay (now renamed to Neropay) is a simple GET-only PHP Monero & Wownero
cryptocurrency payment system. it uses the XMPP chat protocol for
notifications, receipts, and support.
Manifest
It is unnecessarily difficult to integrate a cryptocurrency payment system into
one or more online shops and businesses, one is pressured and tempted into
using foreign and bloated APIs or plugins into preexisting (and terrible)
Content Management Systems (CMS) such as 'Wordpress', and yet still not make
100% of the profit, as well as dealing with restrictions, such as a cap on
number of transactions per month. There is some libre-licensed projects that
allow individuals to host crypto payments, but these usually come with caveats
of their own, such as making Monero a second priority, using Javascript, having
a difficult setup, large number of lines, not handling multiple shops or
services, and not allowing for user instantiated services and businesses.
Features
Pros:
* Sale of digital items
* Sale of physical items
* XMPP notifications
* under 1K LOC
* No javascript
* Easy integration with websites
* Optionally redirect users after purchase
* Generates QR codes during payment
* No middle man (other than you)
* No fees
* Self hosted
* No docker
* Support for Wownero WOW
* Automatic documentation via doxygen
Cons:
* PHP sucks
* so does the 'composer' package manager
Setup
1. Install in a web directory
2. Install php-fpm, and php-curl if you havn't, check the output of phpinfo();
3. SQLite for PHP is usually default, check if so
4. Install the monero package, remote node RPC setup is below
monero-wallet-rpc --rpc-bind-port 18083 --disable-rpc-login --wallet-dir wallets --daemon-address soynero.net.org.com.edu.gov:18081
Consider making a service, the following is an example SysVInit service
script:
-------------------------------
#!/bin/sh
### BEGIN INIT INFO
# Provides: monero
# Required-Start: $local_fs $remote_fs $network $syslog $named
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start Monero Wallet RPC
# Description: Start Monero Wallet RPC
### END INIT INFO
NAME=monero
DESC=monero
. /lib/init/vars.sh
. /lib/lsb/init-functions
start_monero() {
# Start the daemon/service
#Change daemon address if necessary!
monero-wallet-rpc --rpc-bind-port 18083 --disable-rpc-login --wallet-dir /var/www/neropay/wallets --daemon-address 127.0.0.1:18081 --log-file /var/log/monero.log --detach
}
stop_monero() {
pkill monero-wallet
}
case "$1" in
start)
start_monero
;;
stop)
stop_monero
case "$?" in
0|1) log_end_msg 0 ;;
2) log_end_msg 1 ;;
esac
;;
*)
echo "Usage: $NAME {start|stop|restart}" >&2
exit 3
;;
esac
-------------------------------
5. Ensure www-data ownership/permissions, unix nonsense
6. Put items in data/items.txt according to the format
7. NGINX/httpd web server configuration
8. Test to see if transactions work
9. Turn off error reporting and benchmarking for live usage
10. Make 'data' directory inaccessible or out of web root
11. Enjoy
Specification
Monpay uses an SQLite database to store concurrent and completed payments,
this was done because Vilyaem wanted to experiment with SQLite, and to prevent
race-condition problems that result in the loss of funds for both parties.
Monpay uses a simple CSV formatted plain-text file as a 'database' for items,
each entry defining the name (or filename) of the item, the type of the item
(physical or digital), the price in XMR of the item, the seller's XMPP address
(for notifications), the Monero address, an optional entry for a 'ledger path'
which would be used to communicate to a locally hosted site what transactions
have occured, and finally, an optional 'redirect' entry, when the transaction
is complete, the user will be redirected to the page specified in the
'redirect' field.
Payments:
In the 'payments' table in 'payments.db'
IP Address (ip)
Temporary monero wallet name (walletname)
Item Name (item)
Amount due (dues)
Status (status)
Items:
name,type,price,seller xmpp,seller payment address,ledgerdir,redirect
Dependencies
* xmpp-php by norgul
* php-qrcode by chillerlan
* monerophp by Monero Integrations
Roadmap
1. Successful digital transactions X
2. Successful physical transactions X
3. Successful merchant support
4. Support Wownero? X
5. Support I2P/Tor?
6. Complete rewrite in C CGI?
License
Public Domain CC0
-----------------------------------------------------------------------------