مرجع API · شحن العدادات

قراءة عملية شحن

GET/v1/meter-charges/{operationId}

تابع الشحن، واقرأ جميع رموزه عند النجاح، أو سبب الفشل وحالة إعادة المال.

الصلاحيةmeter_charges:read
المصادقةقراءة موقَّعة
ردّ أنيسموقَّع
حدود الموظفين التي يُحتسب ضمنهاكل الاستدعاءات
حزمة SDK لـ ‎.NETanis.MeterCharges.GetAsync(operationId)
  • كل ردّ معالجة بالحالة 202 يحتوي فقط operationId وoperationType وstatus: "processing"؛ وتكون operationType هي meterCharge. تستخدم القراءة الكاملة الحالة 200.
  • إذا رُفض الإنشاء وسُجّل رفضًا فلا عملية شحن نشأت: تعيد القراءة هذا الرفض المسجّل (409 أو 422) مع Idempotency-Replayed: true، ولم يُخصم شيء. وعند القراءة يعني idempotency_conflict أنه لا توجد عملية شحن عداد لتطبيقك بهذا المعرّف.

المعاملات

الاسمالموضعالنوعملاحظات
operationIdإلزاميpathUUIDمعرّف UUID بأحرف صغيرة مع الشرطات.

الاستدعاء

موقَّعة بمفتاحك. بلا محتوى وبلا رقم استخدام لمرة واحدة (nonce).

الترويسات: Signature-Input، Signature، X-Anis-Date، Accept-Language (اختياري). تضبطها حزم SDK كلها نيابةً عنك.

المحتوى: لا يوجد.

الردود

الحالةالمعنىالمحتوى
200نجاح.MeterCharge
202قُبل — لا نتيجة بعد.MeterChargeAccepted
400مرفوض: الاستدعاء الموقّع غير سليم البنية.مشكلة
401مرفوض: لم تتم المصادقة.مشكلة
403مرفوض: غير مسموح.مشكلة
404مرفوض: غير موجود، أو ليس لك.مشكلة
409مرفوض: يتعارض مع الحالة الحالية.مشكلة
422مرفوض: الاستدعاء يخالف قاعدة.مشكلة
429مرفوض: بلغتَ حدًا.مشكلة
503لا قرار: خدمة مطلوبة غير متاحة.مشكلة

كل ردّ على هذا الاستدعاء موقَّع من أنيس — النجاح وكل رفض. اشترط وجود التوقيع وتحقّق منه قبل أن تتصرف بناءً على الردّ؛ والردّ بلا توقيع فشل، لا يُعدّ ردًّا (كيف).

حالات الرفض

كل رفض لهذا الاستدعاء مشكلةٌ موقَّعة. ابنِ منطقك على رمزها code؛ وكلٌّ منها يرتبط بصفحة تشرح معناه وما عليك فعله.

الخطأالرمزالحالة
بيانات اعتماد غير صالحةinvalid_credentials401
استدعاء موقّع غير سليم البنيةmalformed_signed_request400
صلاحية غير كافيةinsufficient_scope403
عنوان المصدر غير مسموحsource_ip_not_allowed403
تجاوزت حدّ الاستدعاءاتrate_limited429
فشل التحققvalidation_failed422
الخدمة غير متاحةdependency_unavailable503
انتهت مهلة الاستدعاءrequest_timeout504
خطأ داخليinternal_error500
غير موجودresource_not_found404
الرصيد غير كافٍinsufficient_balance409
تغيّر السعرprice_changed409
الباقة غير متاحةpackage_unavailable409
العداد مرفوضmeter_rejected422
معرّف العملية مستخدم من قبلidempotency_conflict409

الأنواع

MeterCharge

الحقلالنوعملاحظات
operationIdموجود دائمًاUUIDقيمة UUID نفسها المرسلة في Idempotency-Key لهذا الشراء.
statusموجود دائمًاMeterChargeStatusتكون processing أو succeeded أو failed. وتحتاج قراءة الفشل إلى refund.status لتوضيح مصير المال.
walletIdموجود دائمًاstringالمحفظة المستخدمة في هذا الشراء.
meterNumberموجود دائمًاstringرقم العداد كنص؛ احتفظ بأصفاره الأولى.
packageموجود دائمًاMeterChargePackageالباقة المسجّلة لهذا الشحن.
totalموجود دائمًاMoneyإجمالي تكلفة المحفظة المثبّت في كل حالة بصيغة Money وعملة LYD.
personalPriceموجود دائمًاMoneyسعر التجزئة المثبّت في كل حالة؛ لا تستبدل به إجمالي الدفع.
externalReferencestringمرجعك الخاص؛ يظهر إن أرسلته.
createdAtموجود دائمًاstring (date-time)وقت تسجيل الشحن بتوقيت UTC.
completedAtstring (date-time)وقت نجاح الشحن؛ ويُحذف في حالتي المعالجة والفشل.
receiptMeterReceiptيظهر بعد نجاح الشحن؛ ويضم جميع الرموز.
failureMeterFailureسبب فشل الشحن ورسالته باللغتين؛ يظهر عند الفشل.
refundMeterRefundيوضح عند فشل الشحن هل عاد المال أو لم يُخصم أو ما زال قيد الإعادة.

MeterChargeStatus

MeterChargePackage

الحقلالنوعملاحظات
idموجود دائمًاUUIDمعرّف باقة شحن العداد.
nameموجود دائمًاstringاسم واحد محفوظ للباقة، وليس كائن نص بلغتين.
gecolPackageNameموجود دائمًاstringاسم الباقة لدى شركة الكهرباء.

Money

الحقلالنوعملاحظات
amountموجود دائمًاstringنص عشري، وليس عدد JSON. قد يكون رصيد المحفظة سالبًا عند استخدام الدين المسموح. تتبع الأسعار والإجماليات قواعد المبلغ لكل مسار.
currencyموجود دائمًاstringرمز عملة من ثلاثة أحرف كبيرة، مثل LYD. اقرأ عملة المحفظة من balance.currency.
asOfstring (date-time)وقت قراءة هذا السعر أو الرصيد.

MeterReceipt

الحقلالنوعملاحظات
receiptNumberstringرقم الإيصال الوارد من شركة الكهرباء.
creditedAmountstringنص المبلغ المضاف كما ورد من شركة الكهرباء دون تغيير؛ وليس إجمالي المحفظة.
tokensموجود دائمًاlist of MeterTokenكل رموز الشركة بترتيبها، بما فيها تغيير المفتاح قبل إضافة الرصيد.
taxesموجود دائمًاlist of MeterTaxبنود الضرائب في إيصال الشركة.

MeterToken

الحقلالنوعملاحظات
sequenceموجود دائمًاintegerترتيب الرمز لدى الشركة؛ احتفظ بالفجوات دون إعادة الترقيم.
labelموجود دائمًاstringتسمية الرمز الواردة من الشركة.
codeموجود دائمًاstringنص الرمز كاملًا، بما فيه المسافات والأصفار الأولى.
descriptionstringوصف الرمز للعرض إن ورد.

MeterTax

الحقلالنوعملاحظات
descriptionموجود دائمًاstringوصف الضريبة الأصلي من شركة الكهرباء بالعربية، دون تغيير.
amountموجود دائمًاstringنص مبلغ الشركة الأصلي؛ دون تحويل إلى مقياس Money.

MeterFailure

الحقلالنوعملاحظات
codeموجود دائمًاstringقيمة لفشل قراءة الشحن، وليست رمز مشكلة HTTP. القيم: meter_number_invalid, meter_not_whitelisted, meter_not_linked, meter_removed, meter_inactive, meter_account_blocked, meter_data_incomplete, meter_debt_exceeds_package, package_unavailable, package_limit_reached, token_not_written, insufficient_balance, gecol_unavailable, charge_failed
messageLocalizedTextرسالتان بالعربية والإنجليزية تصفان نتيجة الشحن.

LocalizedText

الحقلالنوعملاحظات
arstringالنص العربي؛ يُحذف حين يكون فارغًا.
enstringالنص الإنجليزي؛ يُحذف حين يكون فارغًا.

MeterRefund

الحقلالنوعملاحظات
statusموجود دائمًاMeterRefundStatusتعني refunded عودة المال، وnotCharged عدم خصمه، وpending أنه لم يعد بعد.
amountanyمبلغ الإعادة بصيغة Money إن ورد؛ لا تستنتج التسوية من المبلغ وحده.

MeterRefundStatus

MeterChargeAccepted

الحقلالنوعملاحظات
operationIdموجود دائمًاUUIDقيمة UUID نفسها المرسلة في Idempotency-Key لهذا الشراء.
operationTypeموجود دائمًاstringتكون دائمًا meterCharge. القيم: meterCharge
statusموجود دائمًاstringتكون دائمًا processing؛ النتيجة لم تصبح نهائية. القيم: processing