الحجوزات والمطالبة بالحساب

عند تفعيل «حسابات العملاء»، يستطيع العملاء المسجّل دخولهم رؤية حجوزاتهم وطلباتهم على موقعك، ويستطيع من حجز عندك قبل أن ينشئ حسابًا أن يحوّل ذلك الإيميل إلى تسجيل دخول كامل لاحقًا. وهذه الصفحة موجّهة إلى المطوّر الخاص بك — تشرح ما يمرّ به العملاء، وتعطيه الكود اللازم لربط ذلك.

سجل الحجوزات والطلبات

بعد أن يسجّل العميل دخوله، يستطيع موقعك أن يعرض له قائمة بحجوزاته وطلباته. ويعمل هذا سواء كنت تستخدم «الحجوزات» أم لا — فإن كنت لا تستقبل حجوزات، فإن getBookings() تُرجع قائمة فارغة فحسب.

HelmCustomers.getBookings().then(function (data) {
  // { items: [{ id, reference, spaceLabel, preferredDate, status, createdAt }, ...], nextCursor }
});

HelmCustomers.getOrders().then(function (data) {
  // { items: [{ id, reference, amount, currency, items, status, placedAt }, ...], nextCursor }
});

وتعود الاثنتان 20 عنصرًا في المرة. ولتحميل المزيد، مرّر nextCursor من الاستجابة السابقة:

HelmCustomers.getBookings({ cursor: data.nextCursor }).then(function (more) { /* ... */ });

ولا تعمل هذه إلا بعد تسجيل دخول العميل — نادِها بعد أن تُحسم login()/register()، أو بعد أن تُطلق حزمة SDK حدث ready ومعه عميل مسجّل الدخول. ويحمل كل حجز أيضًا رقمًا مرجعيًا قصيرًا يستطيع العميل ذكره — وهو نفسه الموجود في إيميل التأكيد.

ربط حجز بعميل مسجّل الدخول

افتراضيًا يُطابَق الحجز بالعميل عبر عنوان الإيميل الذي كتبه في نموذج الحجز. وإن كان العميل مسجّل الدخول وقت الحجز، فيستطيع موقعك أن يمرّر رمز وصوله مع إرسال الحجز بدلًا من ذلك، فيرتبط الحجز بحسابه مباشرة بدل أن يُطابَق بالإيميل:

fetch('https://api.usehelm.host/api/public/YOUR_PROJECT_ID/booking', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + HelmCustomers.getAccessToken(),
  },
  body: JSON.stringify({ spaceId: 'studio-a', name, email, preferredDate }),
})

وإن لم يكن العميل مسجّل الدخول، أو انتهت صلاحية الرمز، مرّ الحجز كالمعتاد — ويعود إلى المطابقة بالإيميل، تمامًا كما يفعل اليوم.

المطالبة بحجز تم قبل وجود حساب

الحجز بإيميل فقط — بلا حساب — ينشئ سجلًا يستطيع عميلك المطالبة به لاحقًا. أضف إلى موقعك خطوة بسيطة للمطالبة بالحساب:

// 1. Customer enters the email they booked with
HelmCustomers.claim(email).then(function () {
  // Always resolves the same way, whether or not that email has anything to claim —
  // show a generic "check your inbox" message either way.
});

// 2. Customer opens the emailed link and chooses a password
HelmCustomers.completeClaim(token, password).then(function (data) {
  // On success this logs the customer straight in — data.customer is populated
  // and a 'login' event fires, same as after login()/register(). Passwords need
  // to be at least 8 characters.
});

ويشير الرابط المُرسَل بالإيميل إلى منطقة الحساب في موقعك ومعه رمز المطالبة في العنوان (?token=...) — وهو افتراضيًا /account/claim على موقعك. وإن كانت منطقة الحساب عندك في مكان آخر، فأخبرنا لنوجّه الرابط إليه. وتلك الصفحة لا تحتاج إلا أن تقرأ معامل الاستعلام token، وتطلب كلمة مرور جديدة، وتنادي completeClaim. والرابط يبقى صالحًا 60 دقيقة.

ولأن الرمز ذا الاستخدام الواحد ينتقل داخل العنوان، قدّم صفحة المطالبة مع ترويسة Referrer-Policy: no-referrer (أو وسم <meta name="referrer" content="no-referrer">) حتى لا يتسرّب الرمز إلى أطراف ثالثة في ترويسة Referer.

وبمجرد المطالبة، تظهر حجوزات العميل وطلباته السابقة — المرتبطة بذلك الإيميل أصلًا — في getBookings()/getOrders() فورًا.