ربط الهوية - OAuth 2.0

لإتاحة جلسات مستخدم سلسة (مثل الوصول إلى مزايا برنامج الولاء والعروض المخصّصة) وعمليات دفع مصادَق عليها، عليك تنفيذ ميزة "ربط الهوية" باستخدام OAuth 2.0. إذا لم تنفّذ عملية ربط الهوية، عليك توفير خيار الدفع كضيف.

يُرجى استشارة فريقك القانوني بشأن أي أسئلة حول لوائح الخصوصية وممارسات الموافقة.

المتطلبات الأساسية

  • البروتوكول: نفِّذ مسار رمز التفويض في OAuth 2.0 (RFC 6749 2.3.1).
  • مصادقة العميل: يجب أن تتوافق مع المصادقة الأساسية عبر HTTP (client_secret_basic) في نقطة نهاية الرمز المميز.
  • نطاقات: يجب أن تتوافق مع نطاقات UCP العادية المحدّدة في هذا القسم.
  • الاكتشاف: يجب استضافة ملف بيانات وصفية على /.well-known/oauth-authorization-server (RFC 8414) للسماح للمنصة باكتشاف نقاط النهاية.

المستويات

يجب تنفيذ النطاق التالي الذي يمنح الإذن لجميع عمليات دورة حياة الدفع (الحصول على البيانات، والإنشاء، والتعديل، والحذف، والإلغاء، والإكمال).

  • اسم النطاق: ucp:scopes:checkout_session

تجربة المستخدم: يجب عرض النطاقات المطلوبة في شاشة موافقة واحدة مجمّعة (مثلاً، "السماح لـ Google بإدارة جلسات الدفع") بدلاً من مفاتيح التبديل الفنية الدقيقة.

الربط المبسّط في Google

الربط السلس من Google هو إضافة اختيارية إلى بروتوكول OAuth 2.0 العادي. تستفيد هذه العملية من تأكيدات JWT لدمج عمليات التحقّق من النية وتبادل الرموز المميّزة على نقطة نهاية رمز OAuth 2.0 المميز (النيات check وcreate وget).

ننصح باستخدام ميزة "الربط المبسّط" من Google لتوفير تجربة سلسة للمستخدم. تتيح هذه الميزة للمستخدمين ربط الحسابات أو إنشاء حسابات جديدة باستخدام ملفهم الشخصي على Google بدون مغادرة واجهة Google. بما أنّ عملية الربط تتم بالكامل ضمن واجهة مستخدم Google، لا يلزم توفير واجهة أمامية للربط. يقلّل ذلك من تكاليف التطوير، ويزيل عمليات إعادة التوجيه في المتصفّح، ويمكن أن يزيد من معدلات الإحالات الناجحة.

  • المواصفات: يجب أن يتوافق التنفيذ مع متطلبات الربط السلس.
  • المعايير: يستند هذا البروتوكول إلى مفاهيم من RFC 7523، لكنّه يختلف عنه بهدف تعزيز الأمان.

بيانات خادم التفويض الوصفية (مثال بتنسيق JSON)

يجب نشر عنصر JSON هذا على https://[your-domain]/.well-known/oauth-authorization-server

مثال:

{
  "issuer": "https://merchant.example.com",
  "authorization_endpoint": "https://merchant.example.com/oauth2/authorize",
  "token_endpoint": "https://merchant.example.com/oauth2/token",
  "revocation_endpoint": "https://merchant.example.com/oauth2/revoke",
  "scopes_supported": [
    "ucp:scopes:checkout_session"
  ],
  "response_types_supported": [
    "code"
  ],
  "grant_types_supported": [
    "authorization_code",
    "refresh_token"
  ],
  "token_endpoint_auth_methods_supported": [
    "client_secret_basic"
  ],
  "service_documentation": "https://merchant.example.com/docs/oauth2"
}