صدور اطلاعات اعتباری دیجیتال

Credential Manager API به شما امکان می‌دهد اطلاعات اعتباری را برای برنامه‌های دارنده Android (که «کیف پول» نیز نامیده می‌شود) صادر کنید. این راهنما توضیح می‌دهد که چگونه برای دارنده ترجیحی کاربر اعتبارنامه صادر کنید.

پیاده‌سازی

این بخش مراحل لازم برای صدور اطلاعات کاربری دیجیتال را به‌طور دقیق شرح می‌دهد.

افزودن وابستگی‌ها

وابستگی‌های زیر را به دستورگان ساخت gradle اضافه کنید:

کاتلین

dependencies {
    implementation("androidx.credentials:credentials:1.7.0-alpha03")
    implementation("androidx.credentials:credentials-play-services-auth:1.7.0-alpha03")
}

شیار

dependencies {
    implementation "androidx.credentials:credentials:1.7.0-alpha03"
    implementation "androidx.credentials:credentials-play-services-auth:1.7.0-alpha03"
}

مقداردهی اولیه Credential Manager

نمونه‌ای از کلاس CredentialManager را مقداردهی اولیه کنید.

val credentialManager = CredentialManager.create(context)

ایجاد درخواست صدور

درخواست ایجاد مدرک دیجیتال باید حاوی رشته JSON باشد که از پروتکل استاندارد OpenID4VCI پیروی می‌کند. در اینجا نمونه‌ای از ظاهر درخواست OpenID4VCI آورده شده است:

"requests": [
  {
    "protocol": "openid4vci-v1",
    "data": {
      "credential_issuer": "https://digital-credentials.dev",
      "credential_configuration_ids": [
        "com.emvco.payment_card"
      ],
      "grants": {
        "urn:ietf:params:oauth:grant-type:pre-authorized_code": {
          "pre-authorized_code": "..."
        }
      }
    }
  }
]

CreateDigitalCredentialRequest حاوی درخواست صدور ایجاد کنید.

val issuanceRequestJson = "{ ... }" // Your issuance JSON
val createRequest = CreateDigitalCredentialRequest(
    requestJson = issuanceRequestJson,
    origin = null
)

درخواست صدور را ارسال کنید

بااستفاده از تابع createCredential، مدرک شناسایی را برای دارنده کاربر صادر کنید. این تابع، انتخابگر برگه پایین Credential Manager را راه‌اندازی می‌کند که به کاربر اجازه می‌دهد برنامه دارنده را که می‌خواهد اعتبارنامه در آن ذخیره شود انتخاب کند.

try {
    val response = credentialManager.createCredential(
        context = context,
        request = createRequest
    )
    handleSuccess(response as CreateDigitalCredentialResponse)
} catch (e: CreateCredentialException) {
    handleCreateException(e)
}

مدیریت پاسخ

پس‌از ارسال درخواست صدور، CreateDigitalCredentialResponse برگردانده خواهد شد. این پاسخ حاوی رشته responseJson است که نتیجه صدور را شرح می‌دهد.

fun handleSuccess(response: CreateDigitalCredentialResponse) {
    val responseJson = response.responseJson
    // Parse responseJson according to your protocol (e.g. OpenID4VCI)
}

رسیدگی به موارد استثنا

اگر جریان صدور ناموفق باشد، createCredential CreateCredentialException را برمی‌گرداند که برنامه‌تان باید آن را مدیریت کند:

fun handleCreateException(e: CreateCredentialException) {
    when (e) {
        is CreateCredentialCancellationException -> {
            // The user canceled the flow
        }
        is CreateCredentialInterruptedException -> {
            // The flow was interrupted (e.g. by another UI element)
        }
        is CreateCredentialNoCreateOptionException -> {
            // No wallet application is available to handle the request
        }
        is CreateCredentialUnsupportedException -> {
            // The device or the system doesn't support this request
        }
        is CreateCredentialProviderConfigurationException -> {
            // There is a configuration issue with the wallet provider
        }
        is CreateCredentialCustomException -> {
            // A protocol-specific error occurred
            val errorType = e.type
            val errorMessage = e.message
        }
        is CreateCredentialUnknownException -> {
            // An unknown error occurred
        }
        else -> {
            // Generic error handling
        }
    }
}