shaggyrec / sumsubphp
SumSub的PHP客户端
Requires
- php: ^7.4|^8.0
- guzzlehttp/guzzle: ^7.5
- guzzlehttp/psr7: ^2.4
- psr/http-client: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.5
README
sumsub.com的PHP API客户端
安装
composer require shaggyrec/sumsubphp
使用
use Shaggyrec\SumSubClient\SumSubClient; $sumSub = SumSubClient::getInstance('App Token', 'APP Secret'); $sumSub->getAccessToken('userId', 'levelName');
方法
获取访问令牌
$sumSub->getAccessToken('userId', 'levelName');
创建申请人
申请人代表一个物理人。它可能附有多个身份证明文件,如身份证或护照。可以为同一申请人附加许多不同文档的照片。
$sumSub->createApplicant( 'externalUserId', 'phone', 'email', new FixedInfo( [ firstName => 'firstName', lastName => '', middleName => '', firstNameEn => '', lastNameEn => '', middleNameEn => '', legalName => '', gender => 'M', dob => '', placeOfBirth => '', country => '', nationality => '', addresses => [], ], ) 'levelName', );
更改所需文档集(级别)
此方法根据提供的级别更新所需文档列表。如果您需要添加一个检查步骤,例如,最初只请求了身份证件和自拍照,检查完成后需要获取地址证明,因此您必须将一个额外的步骤添加到当前的所需文档列表中。
$sumSub->changeLevel('applicantId', 'levelName');
添加身份证件
该方法获取一个多部分表单:ID证件JSON元数据和可选的证件照片。如果已存在此类型的ID证件,其数据将合并。如果新对象中也存在现有数据,则将覆盖现有数据。然而,仍将添加新的图片。如果尚未知道文档元数据,只需发送类型和国家即可。例如,“PASSPORT”和“GBR”。这两个字段是必填项。
use Shaggyrec\Sumsubphp\DTO\FileMetadata; $sumSub->addDoc( '$applicantId', new FileMetadata( [ 'idDocType' => 'PASSPORT', 'country' => 'USA', 'firstName' => '', 'middleName' => '', 'lastName' => '', 'issuedDate' => '2015-01-02', 'number' => '40111234567', 'dob' => '2000-02-01', 'placeOfBirth' => 'London' ], $content, // A binary photo of a document );
获取申请人数据
在验证过程中,我们还会从申请人的身份证明文件中提取数据。要获取申请人的完整结构化视图,您应执行以下请求。
$sumSub->getApplicantById('applicantId');
或通过您的用户ID
$sumSub->getApplicantByExternalUserId('yourId');
更改提供的信息(fixedInfo)
如果您想更改我们提供的数据以与文件交叉验证,可以发出一个PATCH请求而不是创建新的申请人,这被强烈不建议。此方法修补申请人的fixedInfo键中的字段。
use Shaggyrec\Sumsubphp\DTO\FixedInfo; $sumSub->changeProvidedInfo( 'applicantId', new FixedInfo( [ firstName => 'firstName', lastName => '', middleName => '', firstNameEn => '', lastNameEn => '', middleNameEn => '', legalName => '', gender => 'M', dob => '', placeOfBirth => '', country => '', nationality => '', addresses => [], ], ), );
获取申请人状态
如果您使用WebSDK或MobileSDK,则建议您使用此方法,因为SDK将在其屏幕中显示拒绝原因和评论。但如果您仍然需要获取拒绝评论,可以使用以下方法。
$sumSub->getApplicantStatus('applicantId');
获取申请人文档状态
如果您需要有关文档的信息,建议您使用此方法。
$sumSub->getRequiredIdDocsStatus('applicantId');
请求申请人检查
在您或您的用户认为我们的系统出错,或者您通过API发送文件并希望我们进行检查的情况下,您可以编程地要求我们重新检查申请人。要这样做,您应通过执行以下请求明确将申请人移动到待处理状态。
$sumSub->requestCheck( 'applicantId', 'reason', // optional );
获取文档图像
如果您对收到最终验证中作为部分的图像感兴趣,应使用此方法。
$sumSub->getDocumentImage( 'inspectionId', // Inspection ID (it's a part of an applicant 'imageId' );
关于imageId https://developers.sumsub.com/api-reference/#getting-applicant-status-api
将申请人添加到黑名单
如果出于某种原因需要将申请人添加到黑名单,可以使用此端点。必须添加将申请人添加到黑名单的原因。
$sumSub->addToBlacklist('applicantId', 'note')
重置单个验证步骤
在某些情况下,需要用户通过已经通过的验证步骤 - 以下方法将允许使步骤无效,以便SDK再次运行并收集新数据。
$sumSub->resetSingleVerificationStep('applicantId', 'step');
可重置的步骤
PHONE_VERIFICATION
EMAIL_VERIFICATION
QUESTIONNAIRE
APPLICANT_DATA
IDENTITY
PROOF_OF_RESIDENCE
SELFIE
重置申请人
在极少数情况下,需要将申请人的状态更改为init。例如,如果用户联系支持请求重新从零开始使用新文件进行验证。
$sumSub->resetApplicant('applicantId');
设置申请人的风险等级
此方法允许您根据自己的标准为申请人设置风险等级。
$sumSub->setRiskLevel( 'applicantId', 'riskLevel', // unknown|low|medium|high '$comment', // Any string );
将图像标记为非活动状态(已删除)
该方法允许您将上传的图像标记为已删除,因此在初始化SDK屏幕时会要求提供新的图像。这可以在您希望用户重新上传之前通过SDK批准的文档的情况下使用。
$sumSub->markImageDeleted('inspectionId', 'imageId');
关于imageId https://developers.sumsub.com/api-reference/#getting-applicant-status-api
添加自定义申请人标签
使用此方法为申请人档案分配自定义标签。在仪表板的全局设置部分创建新标签
$sumSub->addTags('applicantId', ['tag1', 'tagg2]);
处理webhooks
use Shaggyrec\SumSubClient\WebhookHandler; ... // to verify sender WebhookHandler::verifySender('x-payload-digest header', $webhookBody, 'secret key') // to get WebhookResponse object $webhookResponse = WebhookHandler::handle($webhookBody);
或者您可以为WebhookHandler::handleWithVerification函数提供Psr\Http\Message\RequestInterface
use Shaggyrec\SumSubClient\WebhookHandler; ... /** @var Psr\Http\Message\RequestInterface $webhookBody */ $webhookBody; $webhookResponse = WebhookHandler::handleWithVerification($webhookBody, 'SECRET KEY');
要本地运行集成测试,您必须设置您的密钥和API令牌
在tests/integration/phpunit.xml.dist
运行测试
./tests/run.sh