Guide
Ricetta: crediti API
Vendi crediti prepagati per un’API o una funzione di AI e scalane uno a chiamata. Se il saldo non basta, rispondi 402 con un link di ricarica.
Gli acquirenti pagano in anticipo un pacchetto di crediti; ogni chiamata ne consuma alcuni. Perly Pay tiene il conto: il consumo è una sola chiamata atomica che non va sotto zero, e ogni acquirente ha la sua pagina di ricarica. Niente viene addebitato da solo: quando i crediti finiscono, l’acquirente ricarica. Tutto sui crediti è in Sell credits; qui, la ricetta intorno.
sell-credits del plugin Perly Pay realizza questa ricetta nel tuo progetto. L’esempio eseguibile è examples/api-credits (MIT) nel repository del plugin.Come funziona
- 1
Un pacchetto di crediti
Un prodotto e un prezzo con
model: "credit_pack",unit_amountin centesimi ecredits. Una volta per modalità. - 2
I tuoi utenti sono clienti
Si creano una volta con
external_id(il tuo id utente); poicredits.*accettano quell’id. - 3
Ricariche
credits.topUpUrl(userId)è la pagina dell’acquirente: sceglie un pacchetto e paga. Ogni pacchetto pagato aggiunge crediti. - 4
Consumo a chiamata
Prima
credits.consume(userId, cost, { idempotencyKey }), poi il lavoro. Un nuovo tentativo con la stessa chiave restituisce il primo consumo, quindi la chiave di ogni chiamata la genera il tuo server e non la prende mai da chi chiama. - 5
Non basta?
insufficient_credits(409) non consuma nulla: rispondi402con la pagina di ricarica, non con un 500.
Esegui l’esempio
- 1
Installa
npm installinexamples/api-credits(Node 20.12+). - 2
Chiave
Copia
.env.examplein.enve metti una chiave di test (sk_test_…) inPERLY_PAY_SECRET_KEY. - 3
Prepara
npm run setupcrea il prodotto e il prezzo con la tua chiave e stampa i loro id per.env. - 4
Avvia
npm start(onpm run dev), come dice il suo README. - 5
Paga senza wallet
Chiama
POST /v1/shout(402), apri la pagina che restituiscePOST /top-up, scegli un pacchetto, premi Simulate payment sulla fattura e chiama di nuovo: 200 eX-Credits-Remaining: 499.
Errori comuni
- Consumare senza chiave di idempotenza: una chiamata ripetuta scala due volte.
- Prendere la chiave del consumo da ciò che invia il client (un header
Idempotency-Key): la stessa chiave restituisce il primo consumo come successo e il client riceve di nuovo il lavoro senza pagare. - Controllare il saldo e poi consumare in due passi.
consumeimpedisce già di andare sotto zero; il saldo serve per mostrarlo. - Prima il lavoro, poi il consumo. Al contrario: prima il consumo.
- Id di test con una chiave live. Prodotti, prezzi e webhook appartengono a una modalità: prima del lancio, ripeti la configurazione con
sk_live_….