QUQU quick start
1. Register at https://delta.ququgate.com/ (test sandbox created automatically).
2. Register the HTTPS origin of your return URL. Configure the merchant callback and create/copy its secret.
3. Create a test API key. Store it server-side as QUQU_API_KEY. Its full value is shown once.
4. Set QUQU_ORDER_ID (persisted), QUQU_RETURN_URL, run python payment_client.py.
5. Open payment_url, continue to the clearly marked sandbox and choose processing/settlement/success/cancellation.
6. Inspect payment history, EUR ledger, USDT balance and callback delivery. The sandbox uses an illustrative 1:1 rate, never real money.
7. Enable 2FA and submit a live application. Only an administrator can approve/create live access.
8. Select the approved live project, check its return domains/callback secret and create a separate live API key.
Live requests contact the actual payment partner. Test accounts and keys do not provide live access.

Callback sample:
Set QUQU_CALLBACK_SECRET and optionally QUQU_WEBHOOK_DB, run python webhook_receiver.py.
Expose /webhooks/payments through your own HTTPS reverse proxy. Keep the receiver bound to loopback.
Replace the sample paid_orders recording with a transaction that verifies the existing order and amount.
Deduplicate event_id and payment_id. Reject stale signatures; retries use a new timestamp and signature.
Do not use the provider's callback secret here. Do not treat browser return as proof of payment.

Read USDT balance: GET https://kappa.ququgate.com/v1/settlement/balance with Authorization: Bearer <project-key>.
Read USDT history: GET /v1/settlement/entries?limit=50&cursor=<next_cursor>.
EUR /v1/balance and /v1/wallets remain unchanged; /v1/history/payments contains every payment status.
USDT is an internal settlement ledger, no blockchain transfers or withdrawals are performed.
Fees/rolling/fixed reserve and approved FX quote are configured per project by the administrator.
