☰ Meniu · Primii pași
Început

Primii pași

Creează o cheie de test, verific-o, înscrie un oaspete și aplică un bon. Cinci apeluri, cam cinci minute.

  1. 1
    Creează o cheie de test

    În panoul localului deschide Dezvoltatori → Chei API, alege Test și permisiunile de care ai nevoie. Cheia este afișată o singură dată și începe cu sk_test_. Dacă dezvolți pentru mai multe localuri, roagă fiecare local să creeze o cheie pentru tine sau scrie-ne și îți configurăm un cont de partener.

  2. 2
    Verifică cheia

    Apelează GET /v1/account. Primești localul, programele lui de fidelitate și permisiunile cheii. Dacă primești 401, cheia este greșită sau revocată.

  3. 3
    Înscrie un oaspete

    Apelează POST /v1/members cu telefonul, prenumele și consent: true. Răspunsul conține numărul cardului și linkurile pentru adăugarea lui în Apple Wallet sau Google Wallet.

  4. 4
    Aplică un bon

    Apelează POST /v1/transactions cu id-ul tău de bon în external_id, numărul cardului și suma. Răspunsul arată ce a primit oaspetele și noul sold.

  5. 5
    Anulează-l

    Apelează POST /v1/transactions/{external_id}/void. Soldul revine la valoarea de dinainte.

1. Verifică cheia

curl
curl https://loyaltyfy.io/api/v1/account \
  -H "Authorization: Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc"
Răspuns · 200
{
  "object": "account",
  "id": "73267e72-7f6e-4ddd-bfa2-bd6746500794",
  "slug": "api-sandbox",
  "name": "API Sandbox",
  "timezone": "Europe/Chisinau",
  "livemode": false,
  "key": { "id": "65b6f90b-ba6f-47ce-886f-2deb9be1f087", "scopes": ["*"] },
  "programs": [
    {
      "id": "06af6eba-eaf5-4662-8a5e-2b6b52c65314",
      "slug": "default",
      "name": "Sandbox Cashback",
      "mechanic": "cashback",
      "currency": "MDL",
      "published": true,
      "barcode": "card_code128",
      "stamps_required": null,
      "cashback_rate": 5
    },
    {
      "id": "1480831a-9331-46dc-b055-90d14c844fb8",
      "slug": "stamps",
      "name": "Sandbox Stamps",
      "mechanic": "stamps",
      "currency": "MDL",
      "published": true,
      "barcode": "card_qr",
      "stamps_required": 5,
      "cashback_rate": null
    }
  ],
  "locations": []
}

Atenție la lista programs: un local poate avea mai multe programe (de exemplu cashback pentru clienții fideli și ștampile pentru cafea). mechanic îți spune ce valori contează pentru un membru: cashback, stamps, visit_discount și altele.

2. Înscrie un oaspete

curl
curl https://loyaltyfy.io/api/v1/members \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 7d1b2c4e-enrol-000123" \
  -d '{
    "phone": "+37366791102",
    "first_name": "Ion",
    "last_name": "Popescu",
    "card_number": "2000111703779",
    "language": "ro",
    "consent": true
  }'
Răspuns · 201
{
  "object": "member",
  "id": "6dacfe0a-2500-44c6-a37c-05c660b093b4",
  "card_number": "2000111703779",
  "serial": "b90273b1-10c9-46eb-ba74-8fef48266b5d",
  "first_name": "Ion",
  "last_name": "Popescu",
  "phone": "+37366791102",
  "email": null,
  "birthday": null,
  "language": "ro",
  "marketing_consent": false,
  "program": {
    "id": "06af6eba-eaf5-4662-8a5e-2b6b52c65314",
    "name": "Sandbox Cashback",
    "mechanic": "cashback",
    "barcode": "card_code128"
  },
  "stamps": null,
  "cashback": {
    "balance": 1250,
    "currency": "MDL",
    "earn_rate": 5,
    "level": null,
    "redeem_max_percent": 30,
    "min_amount": 10000,
    "expires_at": "2027-01-04T18:17:17.721+00:00"
  },
  "discount": null,
  "visits": 1,
  "total_spent": 25000,
  "wallet": {
    "apple_url": "https://loyaltyfy.io/api/wallet/issue/3832466f-...?platform=apple&t=...",
    "google_url": "https://loyaltyfy.io/api/wallet/issue/3832466f-...?platform=google&t=...",
    "card_url": "https://loyaltyfy.io/wallet/3832466f-...?t=..."
  },
  "created_at": "2026-10-06T18:17:15.594+00:00"
}

card_number este opțional. Dacă îl omiți, emitem noi un număr de 13 cifre. Trimite-l când casa are deja propriile carduri și cardul din wallet trebuie să poarte același număr.

3. Aplică un bon

curl
curl https://loyaltyfy.io/api/v1/transactions \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "external_id": "CHK-2026-000123",
    "member": "2000111703779",
    "amount": 25000,
    "currency": "MDL",
    "register_id": "POS-1",
    "closed_at": "2026-10-06T18:17:00+03:00",
    "line_items": [
      { "sku": "1001", "name": "Espresso", "quantity": 2, "unit_price": 4000, "category": "Coffee" },
      { "sku": "2005", "name": "Cheesecake", "quantity": 1, "unit_price": 17000, "category": "Desserts" }
    ]
  }'
Răspuns · 201
{
  "object": "transaction",
  "id": "f8acbb16-0b3b-4afc-acbb-e5eabd4dd072",
  "external_id": "CHK-2026-000123",
  "status": "completed",
  "amount": 25000,
  "redeem_amount": 0,
  "cashback_earned": 1250,
  "stamps_earned": 0,
  "reward_unlocked": false,
  "net_amount": 25000,
  "currency": "MDL",
  "register_id": "POS-1",
  "closed_at": "2026-10-06T15:17:00+00:00",
  "livemode": false,
  "created_at": "2026-10-06T18:17:17.921+00:00",
  "voided_at": null,
  "member": {
    "object": "member",
    "id": "6dacfe0a-2500-44c6-a37c-05c660b093b4",
    "card_number": "2000111703779",
    "cashback": { "balance": 1250, "currency": "MDL", "earn_rate": 5, ... },
    ...
  }
}

4. Anulează-l

curl
curl -X POST https://loyaltyfy.io/api/v1/transactions/CHK-2026-000123/void \
  -H "Authorization: Bearer sk_test_..."
Tot ce faci cu o cheie sk_test_ este marcat cu livemode: false. Membrii și bonurile de test sunt înregistrări reale în contul localului, așa că folosește un local de test sau curăță după tine. Vezi Testare.
Întrebări despre integrare: api@loyaltyfy.io. Răspundem în cel mult o zi lucrătoare.