إنتقل إلى المحتوى الرئيسي

سجل التغييرات

سبتمبر 2026

10 سبتمبر

يرسل نموذج HTML الآن حاوية موقَّعة. بدل حقول الفاتورة المنفصلة — data (أي base64url لكائن JSON) وsignature (أي HMAC-SHA256 للسلسلة data). وتغيّرت نقطة النهاية من invoices/createFromForm إلى invoices/form. النماذج القديمة لم تعد تعمل ويجب إعادة بنائها: انظر توقيع نموذج HTML.

8 سبتمبر

الحقول الرقمية في جسم الـ webhook صارت أرقامًا. ستة حقول كانت تُرسل كسلاسل نصية صارت تُرسل أرقامًا: project.commissionRate وinvoice.commissionFiatUSD وinvoice.amountFiatUSD وinvoice.amountFiat وinvoice.calcAmountFiat وpayment.amount. ولم تتغير مجموعة الحقول ولا أسماؤها ولا ترتيبها.

ضع في حسبانك: تُحذف الأصفار الأخيرة، فالمبلغ 10.00 يصل بالشكل 10. والمبالغ الأدنى من 0.0001 تصل بالترميز الأسي، مثلًا 1.0e-6 — تحليل JSON القياسي يعيد الرقم الصحيح؛ ولا ينكسر إلا التحليل اليدوي للسلاسل النصية.

الإشعارات المبنية قبل الإطلاق وغير المسلَّمة بعد تصل بالصيغة القديمة. وعلى جهة الاستقبال قبول الشكلين حتى يفرغ الطابور — ولا يستغرق ذلك أكثر من يومين.

6 سبتمبر

الحقول الرقمية في استجابات API صارت أرقامًا. يشمل ذلك invoices/list وpayments/list وinvoices/create.

الحقلقبلبعد
commissionFiatUSD"0.10"0.1
amountFiatUSD"10.00"10
amountFiat"1000.00"1000
views"0"0
payment.amount"10.500000000"10.5

المفتاح المقيَّد بمشروع صار يطبّق القيد في كل الطرق. كانت بعض الطرق تتجاهل المشروع سابقًا. الآن هو مرشِّح في طرق القوائم، ويرفض الخادم طلب فاتورة أو محفظة من مشروع آخر بالرد Restricted project. والطريقة التي لا تستطيع احترام قيد المشروع مغلقة أمام مفتاح كهذا. التفاصيل في قسم «نطاق المفتاح».

قائمة الدفعات صارت تعيد الدفعات غير المرتبطة. كانت payments/list تعيد سابقًا الدفعات المربوطة بفاتورة فقط. الآن تشمل النتائج كل الدفعات عبر محافظك؛ وغير المرتبطة منها لا تحمل كائن invoice. وهذه بالضبط هي الدفعات اللازمة للربط اليدوي عبر invoices/bindPayment.

إلغاء الفاتورة صار يميّز أسباب الرفض. سابقًا كانت الفاتورة الغائبة والشروط غير المستوفاة تعيدان كلتاهما ردًا عامًا Invoice not found. الآن يعني Invoice not found فقط أن الفاتورة غير موجودة، بينما تعيد الشروط غير المستوفاة Invoice cannot be canceled.

المعرّفات المشوهة صارت تُرفض. تتحقق invoices/list من invoiceId وinvoiceUid وprojectId؛ وpayments/list — من walletId وinvoiceId. والقيمة غير الملائمة تعيد Parameter is filled in incorrectly مع اسم الحقل. سابقًا كان معطى كهذا يُسقط بصمت وتعود النتائج من دون ترشيح.

حدود الفترة صارت تشمل اليوم المسمى كاملًا. يُفسَّر startDate وendDate من 00:00:00 إلى 23:59:59. سابقًا كان يوم النهاية يُقتطع كليًا، وكان استعلام يوم واحد يعيد فقط السجلات المنشأة عند منتصف الليل بالضبط. يشمل ذلك invoices/list وpayments/list وstatistics/invoices وstatistics/payments.

أُضيف حقل المشروع إلى سجل الرصيد. كل عملية في الطريقة billing/history تحمل الآن حقل projectId. وللعمليات على مستوى الحساب — الإيداعات والمكافآت — يكون null.

4 سبتمبر

الوصف والبيانات الخدمية صارا يعودان بشكلهما الأصلي. كان الحقلان description وserviceData يُخزَّنان مرمَّزين، وكانت علامة الاقتباس تصل في استجابات API بالشكل " وعلامة أصغر من بالشكل <. الآن يعود بالضبط ما أرسله التاجر. وعند العرض في HTML هرّب القيمة من جهتك.

نماذج HTML صارت تقبل POST فقط. إنشاء فاتورة باتباع رابط بمعطيات في شريط العنوان لم يعد يعمل — تُقرأ المعطيات من جسم الطلب فقط. فإذا كنت تستخدم روابط، فاستبدل بها نموذجًا بالسمة method="post".

3 سبتمبر

إشعارات الـ webhook صارت موقَّعة. أُضيفت الترويستان X-Timestamp وX-Signature؛ ويُحسب التوقيع بخوارزمية HMAC-SHA256 على المفتاح السري للـ Webhook. والتحقق من التوقيع يتيح لك تمييز الإشعار الأصلي من المزوَّر. الآلية والأمثلة في قسم «التحقق من توقيع الـ Webhook».

التغيير متوافق مع السابق: إذا لم تضف التحقق، يستمر معالجك في العمل كما كان.