> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK لـ Ruby للتحقق من KYC وفحص AML والمعاملات

> دليل البدء السريع لحزمة Didit الرسمية لـ Ruby: استدعاءات واجهات الخادم عبر net/http، والتحقق من webhook في Rails، وفحص رموز المصادقة.

حزمة Didit الرسمية لـ Ruby. تتطلب Ruby 3.1 أو أحدث، وتستخدم `net/http` من المكتبة القياسية. راجع [نظرة عامة على حزم SDK من جانب الخادم](https://docs.didit.me/ar/integration/server-sdks/overview.md) لمعرفة ما تشترك فيه جميع الحزم.

## التثبيت

```bash theme={null}
gem install didit-sdk
```

الحزمة هي [`didit-sdk` على RubyGems](https://rubygems.org/gems/didit-sdk). يوجد مصدرها وسجل تغييراتها في [didit-protocol/sdk-ruby](https://github.com/didit-protocol/sdk-ruby) على GitHub.

أو أضف `gem "didit-sdk"` إلى ملف Gemfile الخاص بك، ثم نفّذ `bundle install`. حمّل الحزمة باستخدام `require "didit"`.

## إعداد العميل

يقرأ `Didit::Client.new` القيمة `DIDIT_API_KEY` من متغيرات البيئة. مرّر وسائط بالأسماء لتجاوزها، أو لتعيين معرّفات المؤسسة والتطبيق اللذين تحتاجهما الاستدعاءات المرتبطة بالتطبيق (الحالات والشبكات والتقارير التنظيمية). حقول الطلب هي وسائط بالأسماء باستخدام أسماء الحقول في API نفسه، أما الاستجابات فهي كائنات تحتوي على خاصية قراءة لكل حقل، ويمكن الوصول إليها عبر `[:field]` و`to_h`.

```ruby theme={null}
require "didit"

didit = Didit::Client.new(
  api_key: ENV["DIDIT_API_KEY"],
  organization_id: ENV["DIDIT_ORGANIZATION_ID"],
  application_id: ENV["DIDIT_APPLICATION_ID"],
  timeout: 30,
  max_retries: 2
)

# Options for a single call.
decision = didit.with_options(timeout: 5, max_retries: 0).sessions.retrieve_decision("11111111-2222-3333-4444-555555555555")
puts decision.status
```

## إنشاء جلسة

أنشئ [جلسة تحقق](https://docs.didit.me/ar/sessions-api/create-session.md) لسير عمل، ثم وجّه المستخدم إلى عنوان URL الخاص بها.

```ruby theme={null}
require "didit"

didit = Didit::Client.new

session = didit.sessions.create(
  workflow_id: "11111111-2222-3333-4444-555555555555",
  vendor_data: "user-123",
  callback: "https://example.com/verification/done"
)
puts session.url
```

## قراءة القرار

عندما ينتهي المستخدم (أو عند وصول webhook)، [اقرأ القرار](https://docs.didit.me/ar/sessions-api/retrieve-session.md). كل نتيجة من نتائج الميزات هي قائمة تحتوي على إدخال واحد لكل عقدة في سير العمل.

```ruby theme={null}
require "didit"

didit = Didit::Client.new

decision = didit.sessions.retrieve_decision("11111111-2222-3333-4444-555555555555")
puts decision.status
(decision.id_verifications || []).each do |verification|
  puts verification.status
end
```

## التحقق من webhook

مرّر النص الخام كما استُلم تمامًا، ومعه رؤوس الطلب. تُطلق الدالة `verify` الاستثناء `Didit::WebhookVerificationError` لأي تسليم غير صالح أو غير حديث، وتعيد حدثًا مُحدَّد النوع في الحالات الأخرى.

```ruby theme={null}
require "didit"

WEBHOOK_SECRET = ENV.fetch("DIDIT_WEBHOOK_SECRET", "")

def handle_webhook(raw_body, headers)
  event = Didit::Webhooks.verify(raw_body, headers, WEBHOOK_SECRET)
  case event
  when Didit::Webhooks::StatusUpdatedEvent
    puts "#{event.session_id} #{event.status}"
  end
  200
rescue Didit::WebhookVerificationError => e
  puts "rejected: #{e.reason}"
  400
end
```

في Rails، استدعِ `handle_webhook(request.raw_post, request.headers)`. أثناء تدوير السر، مرّر الاثنين معًا: `[new_secret, old_secret]`. راجع [Webhooks](https://docs.didit.me/ar/integration/webhooks.md) للاطلاع على الأحداث ومخطط التوقيع.

## فحص معاملة

أرسل دفعة أو عملية سحب أو تحويلًا بالعملات المشفرة إلى [مراقبة المعاملات](https://docs.didit.me/ar/transaction-monitoring/overview.md)، وتتضمن الاستجابة حالتها ودرجة المخاطر.

```ruby theme={null}
require "didit"

didit = Didit::Client.new

transaction = didit.transactions.create(
  transaction_id: "txn-1001",
  transaction_category: "finance",
  transaction_details: { direction: "outbound", amount: 1500, currency: "EUR" },
  subject: { entity_type: "individual", vendor_data: "user-123", full_name: "Maria Garcia" }
)
puts "#{transaction.status} #{transaction.score}"
```

## التحقق من رموز Authentication

تتحقق `Didit::Authentication` من رموز الوصول التي يوقّعها مُصدر [Authentication](https://docs.didit.me/ar/authentication/overview.md) الخاص بك، في الواجهة الخلفية لديك، دون استدعاء Didit لكل طلب. كما تتبادل رموز التفويض، وتجدّد الرموز، وتتحقق من الجلسات وتُبطلها، وتشغّل عمليات التحقق التصاعدية.

> [!NOTE]
>
> يُجري التحقق من الرمز الفحوصات الموضحة في [التحقق من رمز على الخادم الخاص بك](https://docs.didit.me/ar/authentication/tokens-and-jwks.md#التحقق-من-رمز-على-الخادم-لديك)، بالاستناد إلى مُصدر تطبيقك ومفاتيح توقيعه.

```ruby theme={null}
require "didit"

# Your issuer URL, or Didit::Authentication.from_publishable_key("pk_live_...", client_id: ...).
AUTH = Didit::Authentication.new("https://your-app.auth.didit.me", client_id: "your-application-id")

def current_user(access_token)
  AUTH.verify_access_token(access_token).sub
rescue Didit::TokenVerificationError => e
  puts "rejected: #{e.reason}"
  nil
end
```

## الأخطاء

```ruby theme={null}
require "didit"

didit = Didit::Client.new

begin
  didit.sessions.retrieve_decision("11111111-2222-3333-4444-555555555555")
rescue Didit::NotFoundError
  puts "no such session"
rescue Didit::APIStatusError => e
  puts "#{e.status} #{e.request_id}"
end
```

## القوائم والملفات

```ruby theme={null}
require "didit"

didit = Didit::Client.new

# Lists page through every result.
didit.sessions.list(status: "Approved").auto_paging_each do |session|
  puts session.session_id
end

# Uploads take a Pathname, an IO or Didit::FilePart. A String is sent as the file's bytes.
result = didit.id_verification.verify(
  front_image: Pathname("id-front.jpg"),
  back_image: Pathname("id-back.jpg")
)
puts result.to_h
```

تتضمن صفحات endpoint الخاصة بالخادم في [مرجع API](https://docs.didit.me/ar/api-reference/overview.md) نموذج Ruby لعمليتها، باستثناء نقاط النهاية والحقول التي لم يتضمنها أي إصدار 1.0.1 بعد، والمذكورة في [النظرة العامة](https://docs.didit.me/ar/integration/server-sdks/overview.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.