与onfido集成的django应用程序。

django-onfido的Python项目详细描述


https://travis-ci.org/yunojuno/django-onfido.svg?branch=masterhttps://badge.fury.io/py/django-onfido.svg

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

使用量

主要用例如下:

  1. 从您的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'>
  1. 为申请人创建支票+报告:
>>>fromonfido.helpersimportcreate_check>>>create_check(applicant,'standard',['identity','right_to_work'])>>>assertCheck.objects.count()==1>>>assertReport.objects.count()==2

这将在onfido上创建checkreport对象,并将它们作为django模型对象本地存储。

  1. 等待回调事件更新报告和检查的状态:
DEBUG Received Onfido callback: {"payload":{...}}
DEBUG Processing 'check.completed' action on check.bd8232c4-...

注意:如果使用回调功能,则必须设置ONFIDO_WEBHOOK_TOKEN 属性(请参阅下面的设置部分)。回调处理程序将强制验证 在webhooks documentation中指定的x签名请求头。

从给定实体的api返回的原始json(ApplicantCheckReport)作为raw属性存储在模型中,并且 这可以解析为相关的模型属性。(是的,这确实意味着 重复数据。)在- object basis是一个只读的fetch/pull模式(analagous to git操作 相同的名字)。如果对对象调用fetch方法,它将使用 原始json中的href值,用于从api获取最新数据和 解析它,但不保存更改。如果要更新对象, 改用pull方法。

Report对象是一种特殊情况,其中来自api的原始数据通常 包含您可能不希望在本地存储的敏感信息 (护照号码、签证信息、个人资料)。为了四处走动 这是一个scrub_report_data函数,它将删除 分析原始数据之前的属性。默认情况下,这将删除 breakdownproperties元素。

>>>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对象中清除敏感数据的函数。默认实现将删除breakdownproperties

测试

这个项目有很好的测试覆盖率(>;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的支持非常零散。它做了我们现在需要它做的事, 我们将随着我们的发展而扩展它。如果您需要或想要其他功能, 参与进来:-)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
反射Java反射:高负载下的NoSuchMethodException   java RxJava:one request>list of Integer>sequence of requests for each int>result to list   java为什么循环之前索引会增加   JavaSpring远程处理和RESTfulURL   java Hibernate搜索仅对我的实体的一部分进行索引   使用DPAD快速滚动时,java RecyclerView onCreateViewHolder调用过多   java将JSON解析到一个表中   java导航抽屉标题textview nullpointerexception   基于接口的Java链接队列   java Guice运行时依赖项参数重新注入   java展平/压缩ZSH中的深度嵌套目录   JavaSpring:Http406此请求标识的资源只能   java如何制作Android启动器图标   Java代码在windows上显示不正确(包含希腊语句子)   使用yourkit进行内存分析所用的java时间   java为什么可以序列化属性而不能序列化对象本身?