- a payment method (
PawPayments) plugged into the standard BillManager payment flow, - a small CGI page for client‑initiated top‑ups that credit the client account on payment.
Download the plugin (.zip)
Ready-to-install
pawpayments-billmgr-<version>.zip (includes install.sh).View source on GitHub
Source, releases, and issue tracker.
File layout
After installation the files live under/usr/local/mgr5/:
Install
The release ships aninstall.sh that copies everything into place and reloads the BillManager core worker.
Configure the payment method
Use the BillManager UI: Settings → Payment methods → Add → Module: PawPayments and fill the wizard.
For headless deployments you can also seed the row directly:
paymethod to your project (paymethod2project) and to a group (paymethod2group) for it to appear in the customer area.
Webhook URLs
Both endpoints must be reachable over HTTPS. If you front BillManager with Nginx, make sure
/mancgi/ is proxied to the BillManager ihttpd (port 1500):
Lifecycle
Checkout. The CGI builds a Paw invoice viaPOST /api/v2/invoices, redirects to payment_url, and on webhook success calls payment.setpaid exactly once — payment status is checked first, so retries never re‑mark a payment as paid.
Top‑up. The customer enters an amount on pawpaymentstopup.php; the CGI creates a Paw invoice and stores its order_id. The webhook handler verifies the signature, checks externalid for duplicates, and creates a BillManager payment row already marked as paid — BillManager itself converts that row into account credit on the next billing cycle event.
Webhooks carrying a permanent_address_id are silently acknowledged with 200 OK.
Smoke test
Missing data with HTTP 200 — confirms the script loads and parses JSON.
End‑to‑end check with a valid signature:
OK with HTTP 200.
Troubleshooting
Plugin debug messages are written to BillManager’s main log:
Uninstall
payment rows even after the method is removed.
