Skip to main content

General Interaction

Interaction Flow with QR Code Scanning for Credential Issuance and Verification

Overview

One of the primary user interaction flows in our system involves QR code scanning for credential issuance or verification. The QR code often embeds a credential offer or a verification request.

Organizations can monitor event callbacks for issuing and verifying credentials, ensuring they are always aware of ongoing activities. In some cases, making the QR code usage more interactive can be beneficial. For instance, displaying messages during the different phases of issuance and verification helps users understand what is happening or updates the frontend about various states to display specific screens.

The technology used for integration can vary based on the application. However, this documentation outlines a possible implementation flow.

Specifically, we present two scenarios:

  • Check using Dizme Agent
  • Check using Business Logic

Check using Dizme Agent

The organization obtains the URL for the credential request by invoking the verify/request on the Dizme Agent (Credx). Then, it generates a QR code containing the obtained URL and displays it on the frontend. Simultaneously, the organization initiates polling towards the verifier/status API of Dizme Agent (Credx) and, based on the received status, decides what to display.

Example:

  • Status = READ: Display a loading indicator instead of the QR code to indicate that the QR code has been scanned by the wallet.
  • Status = SUCCESS: Display a message indicating that the credentials have been verified.
  • Status = BL_SUCCESS: Display a message indicating that the credentials have also been approved by the Business Logic.
@startuml
actor User
participant "Frontend" as FE
participant "Dizme Agent (Credx)" as DA
participant "Business Logic" as BL

User -> FE: Scans QR Code
FE -> DA: verify/request
DA -> FE: Returns URL
FE -> User: Displays QR Code
User -> FE: Scans QR Code
FE -> DA: verifier/status (Polling)
DA -> FE: status = READ
FE -> User: Display Loading
DA -> FE: status = SUCCESS
FE -> User: Display Verified Message
DA -> BL: Callback with status
BL -> FE: status = BL_SUCCESS
FE -> User: Display Approved Message
@enduml