与onfido集成的django应用程序。
django-onfido的Python项目详细描述
Django onfido
与onfido api集成的django应用程序(v2)
背景
onfido是一个在线身份验证服务。它提供对 测试范围(身份、工作权利、犯罪史、信用报告)。它 假设你只对这个项目感兴趣,因为你 已经知道onfido做了什么,所以我不会在这里重复。如果你愿意 要了解更多信息,请访问他们的网站。
如果使用onfido的是,并且使用的是django,那么这个项目可以是 用于管理OnFIDO对现有Django用户的检查。它处理 api交互,以及提供回调webhook 支持实时状态更新。
安装
该项目可以通过pypi作为django-onfido:
$ pip install django-onfido
主包本身就是onfido:
>>>fromonfidoimportapi,models,views,urls,admin,signals,helpers,decorators
使用量
主要用例如下:
- 从您的django用户创建onfido申请人:
>>>fromdjango.contrib.authimportget_user_model>>>fromonfido.helpersimportcreate_applicant>>>user=get_user_model().objects.last()# any old one will do>>>applicant=create_applicant(user)DEBUGMakingPOSTrequesttohttps://api.onfido.com/v2/applicantsDEBUG<Response[201]>DEBUG{u'first_name':u'hugo',u'last_name':u'rb',u'middle_name':None,...}DEBUGCreatingnewOnfidoapplicantfromJSON:{u'first_name':u'hugo',u'last_name':u'rb',...}<Applicantid=a2c98eae-XXXuser='hugo'>
- 为申请人创建支票+报告:
>>>fromonfido.helpersimportcreate_check>>>create_check(applicant,'standard',['identity','right_to_work'])>>>assertCheck.objects.count()==1>>>assertReport.objects.count()==2
这将在onfido上创建check和report对象,并将它们作为django模型对象本地存储。
- 等待回调事件更新报告和检查的状态:
DEBUG Received Onfido callback: {"payload":{...}} DEBUG Processing 'check.completed' action on check.bd8232c4-...
注意:如果使用回调功能,则必须设置ONFIDO_WEBHOOK_TOKEN 属性(请参阅下面的设置部分)。回调处理程序将强制验证 在webhooks documentation中指定的x签名请求头。
从给定实体的api返回的原始json(Applicant, Check,Report)作为raw属性存储在模型中,并且 这可以解析为相关的模型属性。(是的,这确实意味着 重复数据。)在- object basis是一个只读的fetch/pull模式(analagous to git操作 相同的名字)。如果对对象调用fetch方法,它将使用 原始json中的href值,用于从api获取最新数据和 解析它,但不保存更改。如果要更新对象, 改用pull方法。
Report对象是一种特殊情况,其中来自api的原始数据通常 包含您可能不希望在本地存储的敏感信息 (护照号码、签证信息、个人资料)。为了四处走动 这是一个scrub_report_data函数,它将删除 分析原始数据之前的属性。默认情况下,这将删除 breakdown和properties元素。
>>>check=Check.objects.last()>>>check.raw{"id":"c26f22d5-4903-401f-8a48-7b0211d03c1f","created_at":"2016-10-15T19:05:50Z","status":"awaiting_applicant","type":"standard","result":"clear","href":"applicants/123/checks/456"}>>>check.fetch()# fetch and parse the latest raw data>>>check.pull()# calls fetch and then saves the object
有一个管理命令onfido_sync,可用于pull所有对象 在一个小房间里。它接受一个位置参数-“applicator”、“check”或“report”,并且有两个 选项---filter和--exclude-这两个选项都用多个空格分隔 可用于管理所用查询集的参数。
示例:
$ ./manage.py onfido_sync check $ ./manage.py onfido_sync report $ ./manage.py onfido_sync check --filter complete $ ./manage.py onfido_sync check --exclude complete
设置
以下设置可以指定为环境设置或在django设置中。
- ONFIDO_API_KEY:您的api密钥,在onfido帐户的设置下找到。
- ONFIDO_WEBHOOK_TOKEN:(可选)onfido webhook回调令牌-如果使用webhook,则为必需。
可以在django设置中指定以下设置:
- ONFIDO_LOG_EVENTS:(可选)如果为true,则来自api的回调事件也将记录为Event对象。默认为false。
- ONFIDO_REPORT_SCRUBBER:(可选)用于从Report对象中清除敏感数据的函数。默认实现将删除breakdown和properties。
测试
这个项目有很好的测试覆盖率(>;90%),并且测试本身运行通过tox。
$ pip install tox $ tox
如果要手动运行测试,请确保安装了需求和django。
$ pip install -r requirements.txt $ pip install django==1.8 # your version goes here $ python manage.py test onfido.tests
如果你在窃听这个项目,请继续报道。
贡献
标准GH规则适用:将回购复制到您自己的帐户,创建分支机构, 请确保更新测试并提交请求。
状态
这个项目发展得很早。我们在Yunojuno使用它, 但“请清空”。它目前只支持“标准”检查,并且 对完整api的支持非常零散。它做了我们现在需要它做的事, 我们将随着我们的发展而扩展它。如果您需要或想要其他功能, 参与进来:-)。