Poradniki
Przepis: klucze licencyjne
Sprzedawaj aplikację desktopową, CLI, wtyczkę lub szablon z kluczami licencyjnymi. Aplikacja sprawdza klucz bez żadnego sekretu w środku.
Perly Pay wydaje klucz, gdy płatność zostanie zrealizowana, liczy aktywacje na urządzeniach i odpowiada na pytanie „czy ten klucz jest ważny dla tego produktu tutaj?” przez publiczne endpointy. Program, który dystrybuujesz, używa LicenseClient — nie potrzebuje klucza tajnego.
sell-license-keys wtyczki Perly Pay. Działający przykład to examples/license-keys (MIT) w repozytorium wtyczki.Jak to działa
- 1
Produkt wydający klucze
issues_license: trueilicense_activation_limit(urządzeń na klucz), z ceną jednorazową, dożywotnią, okresową albo subskrypcją. - 2
Sprzedaż
Link do płatności na stronie albo faktura dla każdego kupującego.
- 3
Wyślij klucz
Po webhooku
license.created(jego obiekt to klucz) albo przezlicenseKeys.list({ customer })poinvoice.fulfilled. Paragon nie zawiera klucza. - 4
Aktywacja w aplikacji
activate({ key, product, instance_name })z nazwą, która nie zmienia się na tym urządzeniu; zapisz identyfikator aktywacji. - 5
Sprawdzenie przy starcie
validate({ key, product, instance }). Wyraźnevalid: falseblokuje; bez sieci przez kilka dni obowiązuje ostatnia dobra odpowiedź.
Uruchom przykład
- 1
Zainstaluj
npm installwexamples/license-keys(Node 20.12+). - 2
Klucz
Skopiuj
.env.exampledo.envi wpisz klucz testowy (sk_test_…) wPERLY_PAY_SECRET_KEY. - 3
Przygotuj
npm run setuptworzy produkt i cenę Twoim kluczem i drukuje ich identyfikatory do.env. - 4
Uruchom
npm start(lubnpm run dev), jak mówi jego README. - 5
Zapłać bez portfela
npm run buy-test -- you@example.comkupuje kopię w trybie testowym i drukuje klucz; potemnpm run app -- activate <key>inpm run app -- pro hello.
Pułapki
- Klucz
sk_…w aplikacji. Wyciągnie go każdy; program, który dystrybuujesz, używa tylkoLicenseClient. - Bez
productwywołanie jest odrzucane (parameter_missing). Podawaj go zawsze; klucz do czegokolwiek innego dajewrong_product. instance_name, który zmienia się przy każdym uruchomieniu: każde uruchomienie zjada aktywację.