مرجع API · شحن العدادات
شحن عداد
POST/v1/wallets/{walletId}/meter-charges
اشحن العداد بمعرّف عملية تحفظه قبل الإرسال. يعني الردّ 202 أن الشحن قُبل أو أن التحقق من نتيجته ما زال جاريًا.
الصلاحيةmeter_charges:create
المصادقةشراء موقَّع
ردّ أنيسموقَّع
حدود الموظفين التي يُحتسب ضمنهاكل الاستدعاءات، المشتريات (حدّ الطلبات)
حزمة SDK لـ .NETanis.MeterCharges.CreateAsync(walletId, operationId, request)
- كل ردّ معالجة بالحالة
202 يحتوي فقط operationId وoperationType وstatus: "processing"؛ وتكون operationType هي meterCharge. تستخدم القراءة الكاملة الحالة 200. - عدم ظهور العملية في القراءة لا يثبت غيابها. أعد المحتوى المحفوظ نفسه بمعرّف العملية نفسه وتوقيع جديد. يبقى الردّ على العملية المكررة
202 أثناء تأخر ظهورها. لا تُغلق العملية بالرمز idempotency_conflict والحالة 409 إلا إذا كشفت هذه المحاولة تكرار العملية بعد مرور 60 ثانية أو أكثر منذ قبولها الأول، ثم لم تجدها قراءة لاحقة خاصة بتطبيقك. غياب القراءة أو انتهاء المهلة وحده لا يثبت التعارض. ولا يثبت هذا الرمز أن شيئًا لم يُخصم: فقد يكون الطلب الأول قُبل بالفعل، فاقرأ العملية قبل أي محاولة جديدة. - تُحتسب عملية الشراء ضمن حدّ
orders الحالي وسقف الإنفاق اليومي نفسه للتطبيق مع طلبات البطاقات والمشتريات الأخرى.
المعاملات
| الاسم | الموضع | النوع | ملاحظات |
|---|
walletIdإلزامي | path | UUID | معرّف UUID بأحرف صغيرة مع الشرطات. |
الاستدعاء
موقَّع بمفتاحك، مع رقم استخدام لمرة واحدة (nonce) وبصمة للمحتوى ومعرّف العملية في Idempotency-Key.
الترويسات: Signature-Input، Signature، Content-Digest، Nonce، Idempotency-Key، X-Anis-Date، Accept-Language (اختياري). تضبطها حزم SDK كلها نيابةً عنك.
المحتوى: CreateMeterChargeRequest، بصيغة JSON.
| الحقل | النوع | ملاحظات |
|---|
packageIdإلزامي | UUID | معرّف الباقة المختارة من قائمة الباقات. |
meterNumberإلزامي | string | رقم العداد كنص؛ احتفظ بأصفاره الأولى. |
expectedTotalإلزامي | any | الإجمالي الذي أكّدته من الباقة أو عرض السعر، بصيغة Money وعملة LYD. |
externalReference | string | مرجعك الخاص؛ يظهر إن أرسلته. |
الردود
| الحالة | المعنى | المحتوى |
|---|
| 200 | نجاح. | MeterCharge |
| 202 | قُبل — لا نتيجة بعد. | MeterChargeAccepted |
| 400 | مرفوض: الاستدعاء الموقّع غير سليم البنية. | مشكلة |
| 401 | مرفوض: لم تتم المصادقة. | مشكلة |
| 403 | مرفوض: غير مسموح. | مشكلة |
| 404 | مرفوض: غير موجود، أو ليس لك. | مشكلة |
| 409 | مرفوض: يتعارض مع الحالة الحالية. | مشكلة |
| 422 | مرفوض: الاستدعاء يخالف قاعدة. | مشكلة |
| 429 | مرفوض: بلغتَ حدًا. | مشكلة |
| 503 | لا قرار: خدمة مطلوبة غير متاحة. | مشكلة |
كل ردّ على هذا الاستدعاء موقَّع من أنيس — النجاح وكل رفض. اشترط وجود التوقيع وتحقّق منه قبل أن تتصرف بناءً على الردّ؛ والردّ بلا توقيع فشل، لا يُعدّ ردًّا (كيف).
حالات الرفض
كل رفض لهذا الاستدعاء مشكلةٌ موقَّعة. ابنِ منطقك على رمزها code؛ وكلٌّ منها يرتبط بصفحة تشرح معناه وما عليك فعله.
الأنواع
CreateMeterChargeRequest
| الحقل | النوع | ملاحظات |
|---|
packageIdإلزامي | UUID | معرّف الباقة المختارة من قائمة الباقات. |
meterNumberإلزامي | string | رقم العداد كنص؛ احتفظ بأصفاره الأولى. |
expectedTotalإلزامي | any | الإجمالي الذي أكّدته من الباقة أو عرض السعر، بصيغة Money وعملة LYD. |
externalReference | string | مرجعك الخاص؛ يظهر إن أرسلته. |
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 | سعر التجزئة المثبّت في كل حالة؛ لا تستبدل به إجمالي الدفع. |
externalReference | string | مرجعك الخاص؛ يظهر إن أرسلته. |
createdAtموجود دائمًا | string (date-time) | وقت تسجيل الشحن بتوقيت UTC. |
completedAt | string (date-time) | وقت نجاح الشحن؛ ويُحذف في حالتي المعالجة والفشل. |
receipt | MeterReceipt | يظهر بعد نجاح الشحن؛ ويضم جميع الرموز. |
failure | MeterFailure | سبب فشل الشحن ورسالته باللغتين؛ يظهر عند الفشل. |
refund | MeterRefund | يوضح عند فشل الشحن هل عاد المال أو لم يُخصم أو ما زال قيد الإعادة. |
MeterChargePackage
| الحقل | النوع | ملاحظات |
|---|
idموجود دائمًا | UUID | معرّف باقة شحن العداد. |
nameموجود دائمًا | string | اسم واحد محفوظ للباقة، وليس كائن نص بلغتين. |
gecolPackageNameموجود دائمًا | string | اسم الباقة لدى شركة الكهرباء. |
Money
| الحقل | النوع | ملاحظات |
|---|
amountموجود دائمًا | string | نص عشري، وليس عدد JSON. قد يكون رصيد المحفظة سالبًا عند استخدام الدين المسموح. تتبع الأسعار والإجماليات قواعد المبلغ لكل مسار. |
currencyموجود دائمًا | string | رمز عملة من ثلاثة أحرف كبيرة، مثل LYD. اقرأ عملة المحفظة من balance.currency. |
asOf | string (date-time) | وقت قراءة هذا السعر أو الرصيد. |
MeterReceipt
| الحقل | النوع | ملاحظات |
|---|
receiptNumber | string | رقم الإيصال الوارد من شركة الكهرباء. |
creditedAmount | string | نص المبلغ المضاف كما ورد من شركة الكهرباء دون تغيير؛ وليس إجمالي المحفظة. |
tokensموجود دائمًا | list of MeterToken | كل رموز الشركة بترتيبها، بما فيها تغيير المفتاح قبل إضافة الرصيد. |
taxesموجود دائمًا | list of MeterTax | بنود الضرائب في إيصال الشركة. |
MeterToken
| الحقل | النوع | ملاحظات |
|---|
sequenceموجود دائمًا | integer | ترتيب الرمز لدى الشركة؛ احتفظ بالفجوات دون إعادة الترقيم. |
labelموجود دائمًا | string | تسمية الرمز الواردة من الشركة. |
codeموجود دائمًا | string | نص الرمز كاملًا، بما فيه المسافات والأصفار الأولى. |
description | string | وصف الرمز للعرض إن ورد. |
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 |
message | LocalizedText | رسالتان بالعربية والإنجليزية تصفان نتيجة الشحن. |
LocalizedText
| الحقل | النوع | ملاحظات |
|---|
ar | string | النص العربي؛ يُحذف حين يكون فارغًا. |
en | string | النص الإنجليزي؛ يُحذف حين يكون فارغًا. |
MeterRefund
| الحقل | النوع | ملاحظات |
|---|
statusموجود دائمًا | MeterRefundStatus | تعني refunded عودة المال، وnotCharged عدم خصمه، وpending أنه لم يعد بعد. |
amount | any | مبلغ الإعادة بصيغة Money إن ورد؛ لا تستنتج التسوية من المبلغ وحده. |
MeterChargeAccepted
| الحقل | النوع | ملاحظات |
|---|
operationIdموجود دائمًا | UUID | قيمة UUID نفسها المرسلة في Idempotency-Key لهذا الشراء. |
operationTypeموجود دائمًا | string | تكون دائمًا meterCharge. القيم: meterCharge |
statusموجود دائمًا | string | تكون دائمًا processing؛ النتيجة لم تصبح نهائية. القيم: processing |