Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SDK-2377 added failure reasons to idv #356

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
d679d8f
SDK-2265 Retrieve Receipt
LuborRod Mar 21, 2023
3806985
Add several tests to SDK-2265
LuborRod Apr 10, 2023
3dcc7a7
SDK-2265 Retrieve Receipt Fix Decryption (#353)
saurabh-yoti May 7, 2024
a6d34f6
Sdk 2265 examples (#354)
mehmet-yoti Jun 18, 2024
b8b963a
SDK-2265 added test FetchShareReceipt and updated ReceiptItemKeyTest,…
mehmet-yoti Jun 19, 2024
a46dd7e
SDK-2265 added test FetchShareReceipt DigitalIdentityClient
mehmet-yoti Jun 19, 2024
5ad4d8b
SDK-2265 php 7.4 type hint remove
mehmet-yoti Jun 20, 2024
6748e2d
SDK-2377 added failure reasons to idv
mehmet-yoti Jun 20, 2024
2cb05e6
SDK-2377 added failure reasons to idv
mehmet-yoti Jun 20, 2024
3bb1f1b
SDK-2377 update naming
mehmet-yoti Jun 20, 2024
0901194
SDK-2265 merge conflicts resolve
mehmet-yoti Jun 20, 2024
7e4c333
SDK-2265 added missing test
mehmet-yoti Jun 20, 2024
0931fc9
SDK-2265 added missing tests
mehmet-yoti Jun 20, 2024
3adf06c
SDK-2265 added missing tests
mehmet-yoti Jun 20, 2024
d61b0cd
SDK-2265 added missing tests
mehmet-yoti Jun 20, 2024
1c8629c
SDK-2265 added missing features
mehmet-yoti Jun 20, 2024
e1fdcd5
SDK-2265 removed digital identity examples from profile example
mehmet-yoti Jun 21, 2024
8271c28
Merge branch 'SDK-2265' into SDK-2377-php-add-failure-reason-info-to-…
mehmet-yoti Jun 21, 2024
438786f
Merge branch 'development' into SDK-2377-php-add-failure-reason-info-…
mehmet-yoti Jun 21, 2024
47e15f4
SDK-2377 added validations to classes
mehmet-yoti Jun 24, 2024
80251fd
Sdk 2357 php failure receipt error details (#355)
mehmet-yoti Jun 24, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ coverage
.scannerwork

.DS_Store
.php-cs-fixer.cache
2 changes: 1 addition & 1 deletion .php-cs-fixer.cache

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion examples/doc-scan/app/Http/Controllers/HomeController.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public function show(Request $request, DocScanClient $client)
->withSources($searchProfileSources)
->withShareUrl(false)
->withRemoveDeceased(true)
->withApiKey('qiKTHG7Mgqj31mK2d21F7QPpaVBp9zKc')
->withApiKey('api-key')
->withClientRef("string")
->withMonitoring(true)
->withTags(['tag1'])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,32 @@ class FailureReasonResponse
/**
* @var string
*/
private $stringCode;

private $reasonCode;
/**
* @var RequirementNotMetDetails
*/
private $requirementsNotMetDetails;
/**
* @param string $stringCode
* @param array<string, mixed> $data
*/
public function __construct(string $stringCode)
public function __construct(array $data)
{
$this->stringCode = $stringCode;
$this->reasonCode = $data["reason_code"];
$this->requirementsNotMetDetails = new RequirementNotMetDetails($data["requirements_not_met_details"]);
}

/**
* @return string
*/
public function getStringCode(): string
public function getReasonCode(): string
{
return $this->reasonCode;
}
/**
* @return RequirementNotMetDetails
*/
public function getRequirementNotMetDetails(): RequirementNotMetDetails
{
return $this->stringCode;
return $this->requirementsNotMetDetails;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<?php

namespace Yoti\DocScan\Session\Retrieve\IdentityProfile;

class RequirementNotMetDetails
{
/**
* @var string
*/
private $failureType;
/**
* @var string
*/
private $documentType;
/**
* @var string
*/
private $documentCountryIsoCode;
/**
* @var string
*/
private $auditId;
/**
* @var string
*/
private $details;

/**
* @param array<int, array<string, string>> $data
*/
public function __construct(array $data)
{
$this->failureType = $data[0]["failure_type"] ?? '';
$this->details = $data[0]["details"] ?? '';
$this->auditId = $data[0]["audit_id"] ?? '';
$this->documentCountryIsoCode = $data[0]["document_country_iso_code"] ?? '';
$this->documentType = $data[0]["document_type"] ?? '';
}

/**
* @return string
*/
public function getFailureType(): string
{
return $this->failureType;
}
/**
* @return string
*/
public function getDetails(): string
{
return $this->details;
}
/**
* @return string
*/
public function getAuditId(): string
{
return $this->auditId;
}
/**
* @return string
*/
public function getDocumentCountryIsoCode(): string
{
return $this->documentCountryIsoCode;
}
/**
* @return string
*/
public function getDocumentType(): string
{
return $this->documentType;
}
}
2 changes: 1 addition & 1 deletion src/DocScan/Session/Retrieve/IdentityProfileResponse.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public function __construct(array $sessionData)
$this->result = $sessionData['result'];

if (isset($sessionData['failure_reason'])) {
$this->failureReason = new FailureReasonResponse($sessionData['failure_reason']['reason_code']);
$this->failureReason = new FailureReasonResponse($sessionData['failure_reason']);
}

if (isset($sessionData['identity_profile_report'])) {
Expand Down
37 changes: 37 additions & 0 deletions src/Identity/ErrorReason.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

namespace Yoti\Identity;

class ErrorReason
{
/**
* @var RequirementNotMetDetails
*/
private $requirementNotMetDetails;

/**
* @param array<int, array<string, string>> $data
*/
public function __construct(array $data)
{
if (isset($data[0])) {
$this->requirementNotMetDetails = new RequirementNotMetDetails($data);
} else {
$this->requirementNotMetDetails = new RequirementNotMetDetails([[
"failure_type" => '',
"details" => '',
"audit_id" => '',
"document_country_iso_code" => '',
"document_type" => ''
]]);
}
}

/**
* @return RequirementNotMetDetails
*/
public function getRequirementNotMetDetails(): RequirementNotMetDetails
{
return $this->requirementNotMetDetails;
}
}
17 changes: 9 additions & 8 deletions src/Identity/Receipt.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,14 @@
class Receipt
{
private string $id;

private string $sessionId;

private \DateTime $timestamp;

private ApplicationContent $applicationContent;

private UserContent $userContent;

private ?string $rememberMeId;

private ?string $parentRememberMeId;

private ?string $error;
private ?ErrorReason $errorReason;

public function __construct(
string $id,
Expand All @@ -33,7 +27,8 @@ public function __construct(
UserContent $userContent,
?string $rememberMeId,
?string $parentRememberMeId,
?string $error
?string $error,
?ErrorReason $errorReason
) {
$this->id = $id;
$this->sessionId = $sessionId;
Expand All @@ -43,6 +38,7 @@ public function __construct(
$this->rememberMeId = $rememberMeId;
$this->parentRememberMeId = $parentRememberMeId;
$this->error = $error;
$this->errorReason = $errorReason;
}

public function getId(): string
Expand Down Expand Up @@ -94,4 +90,9 @@ public function getError(): ?string
{
return $this->error;
}

public function getErrorReason(): ?ErrorReason
{
return $this->errorReason;
}
}
10 changes: 10 additions & 0 deletions src/Identity/ReceiptBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ class ReceiptBuilder
private ?string $parentRememberMeId = null;

private ?string $error = null;
private ?ErrorReason $errorReason = null;


public function withId(string $id): self
{
Expand Down Expand Up @@ -82,6 +84,13 @@ public function withError(string $error = null): self
return $this;
}

public function withErrorReason(ErrorReason $errorReason = null): self
{
$this->errorReason = $errorReason;

return $this;
}

public function build(): Receipt
{
return new Receipt(
Expand All @@ -93,6 +102,7 @@ public function build(): Receipt
$this->rememberMeId,
$this->parentRememberMeId,
$this->error,
$this->errorReason
);
}
}
1 change: 1 addition & 0 deletions src/Identity/ReceiptParser.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ public function createFailure(WrappedReceipt $wrappedReceipt): Receipt
->withSessionId($wrappedReceipt->getSessionId())
->withTimestamp($wrappedReceipt->getTimestamp())
->withError($wrappedReceipt->getError())
->withErrorReason($wrappedReceipt->getErrorReason())
->build();
}

Expand Down
75 changes: 75 additions & 0 deletions src/Identity/RequirementNotMetDetails.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<?php

namespace Yoti\Identity;

class RequirementNotMetDetails
{
/**
* @var string
*/
private $failureType;
/**
* @var string
*/
private $documentType;
/**
* @var string
*/
private $documentCountryIsoCode;
/**
* @var string
*/
private $auditId;
/**
* @var string
*/
private $details;

/**
* @param array<int, array<string, string>> $data
*/
public function __construct(array $data)
{
$this->failureType = $data[0]["failure_type"] ?? '';
$this->details = $data[0]["details"] ?? '';
$this->auditId = $data[0]["audit_id"] ?? '';
$this->documentCountryIsoCode = $data[0]["document_country_iso_code"] ?? '';
$this->documentType = $data[0]["document_type"] ?? '';
}

/**
* @return string
*/
public function getFailureType(): string
{
return $this->failureType;
}
/**
* @return string
*/
public function getDetails(): string
{
return $this->details;
}
/**
* @return string
*/
public function getAuditId(): string
{
return $this->auditId;
}
/**
* @return string
*/
public function getDocumentCountryIsoCode(): string
{
return $this->documentCountryIsoCode;
}
/**
* @return string
*/
public function getDocumentType(): string
{
return $this->documentType;
}
}
13 changes: 13 additions & 0 deletions src/Identity/WrappedReceipt.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class WrappedReceipt
private ?string $parentRememberMeId = null;

private ?string $error = null;
private ?ErrorReason $errorReason = null;

/**
* @param array<string, mixed> $sessionData
Expand Down Expand Up @@ -62,6 +63,13 @@ public function __construct(array $sessionData)
if (isset($sessionData['error'])) {
$this->error = $sessionData['error'];
}
if (isset($sessionData['errorDetails'])) {
if (isset($sessionData["error_details"]["error_reason"]["requirements_not_met_details"])) {
$this->errorReason = new ErrorReason(
$sessionData['errorDetails']['error_reason']['requirements_not_met_details']
);
}
}
}

public function getId(): string
Expand Down Expand Up @@ -132,6 +140,11 @@ public function getError(): ?string
return $this->error;
}

public function getErrorReason(): ?ErrorReason
{
return $this->errorReason;
}

private function base64decode(string $encoded): string
{
$decoded = base64_decode($encoded, true);
Expand Down
2 changes: 1 addition & 1 deletion tests/DocScan/DocScanClientTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ public function testParseIdentityProfileResponse()
$this->assertEquals('someStringHere', $sessionResult->getIdentityProfile()->getSubjectId());
$this->assertEquals(
'MANDATORY_DOCUMENT_COULD_NOT_BE_PROVIDED',
$sessionResult->getIdentityProfile()->getFailureReason()->getStringCode()
$sessionResult->getIdentityProfile()->getFailureReason()->getReasonCode()
);

$this->assertEquals(
Expand Down
Loading
Loading