VKarmaneSDK 1.0.0

VKarmaneSDK 1.0.0

Alexander Kulabukhov 维护。



  • a.kulabukhov

VKarmaneSDK

VKarmaneSDK 是一个包含简化“从 VKarmaneSDK 填充”功能集成的工具库。

要求

要运行 VKarmaneSDK,需要的 iOS 版本为 9.0 或更高。

如何连接到项目?

VKarmaneSDK 通过 CocoaPods 分发。要连接,请在 Podfile 中添加以下行

pod 'VKarmaneSDK'

为了启动测试应用程序,需要从 Example 文件夹执行 pod install。在 Assets 文件夹中可以找到可以使用在您的应用程序中与 VKarmaneSDK 进行交互的图像。

准备工作

为了在 production 中使用“从 VKarmaneSDK 填充”功能,需要将您的应用程序的 url 方案添加到我们应用程序中的受信任列表中。有关添加的任何问题,都可以通过发送邮件至 [email protected] 联系我们。

示例使用 SDK

检查 in-car system 的安装

    if VKarmaneSDK.isAppInstalled {
        showVkarmaneButton()
    } else {
        hideVkarmameButton()
    }

数据文件请求和获取方案

  1. 在您的应用程序中生成一对密钥(建议异步执行此操作,因为它相当重要,并可能暂时阻止界面)。
  2. 公钥编码为 Base64。
  3. 调用创建链接的方法以使用感兴趣参数跳转到 in-car system。
  4. 执行跳转。
  5. 处理从 in-car system 获得的 URL,使用最初生成的密钥解密数据。

获取用户护照数据示例

    // 1-2. Создаем и сохраняем ключи, кодируем публичный ключ
    let keys = try! VKarmaneSDK.makeKeys()
    self.keys = keys
    let publicKeyBase64 = try! keys.publicKey.getData().base64EncodedString()
    
    // 3. Создаем ссылку
    // Метод может выбросить ошибку `VKarmaneSDK.GetDocumentsLinkBuilderError`, если параметры не прошли валидацию
    let vkarmaneLink = try! VKarmaneSDK.GetDocumentsLinkBuilder(xSource: "Vkarmane example",
                                                                xSuccessLink: "vkarmanesdkexample://documents_success",
                                                                xErrorLink: "vkarmanesdkexample://documents_error",
                                                                xCancelLink: "vkarmanesdkexample://documents_cancel",
                                                                kinds: [DocumentKind.RusNationalID],
                                                                publicKey: publicKeyBase64,
                                                                isMultichoice: false)
                                                                .build()
    
    // 4. Переходим
    UIApplication.shared.open(vkarmaneLink, options: [:])
    
    // 5. В AppDelegate получаем и расшифровываем данные изначально сгенерированным `keys.privateKey`
    func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool {
        if let vkarmaneResult = getResult(from: url) {
            // handle data or error
        }
    }
    
    func getResult(from url: URL) -> Result? {
        guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false) else { return nil }
    
        switch components.host {
        case Const.successPath:
            do { return .success(jsonString: try VKarmaneSDK.getJsonFromLink(url, privateKey: self.keys.privateKey)) }
            catch { return .failure(error: error) }
        case Const.errorPath:
            return .failure(error: VKarmaneSDK.getErrorFromLink(url))
        case Const.cancelPath:
            return .cancelled
        default:
            return nil
        }
    }

调用 getJsonFromLink(url) 可以从返回的结果中获取 JSON 字符串和错误。如果为 xSuccessLinkxErrorLink 指定了不同的 URL,则可以使用单独的方法 getErrorFromLink(url) 获取错误(如上例所示)。

协议描述

SDK 中实现的交互协议基于 x-callback-url。deeplink 以启动 in-car system 的形式看起来如下

vkarmaneapp://x-callback-url/v2/<action>?<action-params>&<x-callback-params>

可用操作 (action)

名称 描述
get_documents 提出让用户选择一个(或多个)由 action-params 中指定的类型的文档。

可用的动作参数 (action-params)

action 名称 描述 类型 必需性 默认值
get_documents kinds 文档类型列表 VKarmaneSDK.DocumentKind -
get_documents publicKey 编码为Base64的RSA-2048公共密钥 String -
get_documents isMultichoice 文档选择模式的切换,如果传入true,则用户可以选择多个文档 Boolean false

启动ВКармане的x-callback-params参数

名称 描述
x-source 第三方应用程序的名称
x-success 调用第三方应用程序并传入用户选中文档数据的deeplink,作为参数data,该deeplink将包含文档内容的url encoded JSON,不含图片
x-error 发生错误时调用第三方应用程序的deeplink。作为参数code,链接将添加包含错误信息的code参数,请参见以下可能的错误代码。
x-cancel 用户取消操作时调用第三方应用程序的deeplink

所有列出的参数都是必需的

错误代码 (code)

描述
1 ВКармане应用不支持获取到的deeplink
2 不正确的action
3 不正确的x-callback-params
4 不正确的action-params
5 处理deeplink时在ВКармане应用中发生错误
6 用户未在ВКармане应用中授权
7 加密错误
为确保用户安全,当发生包含错误代码3的情况时,ВКармане应用中的进程会中断,并显示一个消息,指出传递了错误的参数。

支持的文档类型 (kinds)

描述
RusNationalID 俄罗斯联邦护照
RusDriversLic 驾照
RusDriversLicOld 旧版驾照
RusDriversLicOldest 最旧版驾照
RusInternationalID 国际护照
RusSNILS 社会保障号码
RusINN 税务登记号
RusBirthCert 出生证明
RusMedIns 城乡居民基本医疗保险证
RusVehicleRegID 行驶证
RusPTS 车辆登记证
RusOSAGO 机动车交通事故责任强制保险
RusKASKO 机动车商业保险
RusMilitaryCard 军人证
银行卡 银行卡

示例

包含“从口袋中填充”的示例集成。

支持

  • 所有提出的问题均可发送至 [email protected]
  • 错误和功能请求请发至 issues 部分

值参考手册

  • sexCode
描述
0
1
  • citizenshipCountryCode
名称
0 阿富汗
1 阿尔巴尼亚
2 阿尔及利亚
3 安道尔
4 安哥拉
5 安提瓜和巴布达
6 阿根廷
7 亚美尼亚
8 澳大利亚
9 奥地利
10 阿塞拜疆
11 巴哈马
12 巴林
13 孟加拉国
14 巴巴多斯
15 白俄罗斯
16 比利时
17 伯利兹
18 贝宁
19 不丹
20 玻利维亚
21 波斯尼亚和黑塞哥维那
22 博茨瓦纳
23 巴西
24 文莱
25 保加利亚
26 布基纳法索
27 缅甸
28 布隆迪
29 柬埔寨
30 喀麦隆
31 加拿大
32 佛得角
33 中非共和国
34 乍得
35 智利
36 中国
37 哥伦比亚
38 科摩罗
39 刚果民主共和国
40 哥斯达黎加
41 科特迪瓦
42 克罗地亚
43 古巴
44 塞浦路斯
45 捷克共和国
46 丹麦
47 吉布提
48 多米尼克
49 多米尼加共和国
50 东帝汶
51 厄瓜多尔
52 埃及
53 萨尔瓦多
54 赤道几内亚
55 埃塞俄比亚
56 爱沙尼亚
57 埃фи俄比亚
58 斐济
59 芬兰
60 法国
61 加蓬
62 冈比亚
63 格鲁吉亚
64 德国
65 加纳
66 希腊
67 格林纳达
68 危地马拉
69 几内亚
70 几内亚比绍
71 海地
72 洪都拉斯
73 香港
74 匈牙利
75 冰岛
76 印度
77 印度尼西亚
78 伊朗
79 伊拉克
80 爱尔兰
81 以色列
82 意大利
83 牙买加
84 日本
85 约旦
86 哈萨克斯坦
87 肯尼亚
88 基里巴斯
89 朝鲜
90 韩国
91 科索沃
92 科威特
93 吉尔吉斯斯坦
94 老挝
95 拉脱维亚
96 黎巴嫩
97 莱索托
98 利比里亚
99 利比亚
100 列支敦士登
101 立陶宛
102 卢森堡
103 马其顿
104 马达加斯加
105 马拉维
106 马来西亚
107 马尔代夫
108 马里
109 马耳他
110 马绍尔群岛
111 毛里塔尼亚
112 毛里求斯
113 墨西哥
114 密克罗尼西亚
115 摩尔多瓦
116 摩纳哥
117 蒙古
118 黑山
119 摩洛哥
120 莫桑比克
121 纳米比亚
122 瑙鲁
123 尼泊尔
124 荷兰
125 新西兰
126 尼加拉瓜
127 尼日尔
128 尼日利亚
129 挪威
130 阿曼
131 巴基斯坦
132 帕劳
133 巴勒斯坦民族权力机构
134 巴拿马
135 巴布亚新几内亚
136 巴拉圭
137 秘鲁
138 菲律宾
139 波兰
140 葡萄牙
141 卡塔尔
142 罗马尼亚
143 俄罗斯联邦
144 卢旺达
145 圣基茨和尼维斯
146 圣卢西亚
147 圣文森特和格林纳丁斯
148 萨摩亚
149 圣马力诺
150 圣多美和普林西比
151 沙特阿拉伯
152 塞内加尔
153 塞尔维亚
154 塞舌尔群岛
155 塞拉利昂
156 新加坡
157 圣马丁
158 斯洛伐克
159 斯洛文尼亚
160 所罗门群岛
161 索马里
162 南非
163 南苏丹
164 西班牙
165 斯里兰卡
166 苏丹
167 苏里南
168 瑞典
169 瑞士
170 叙利亚
171 塔吉克斯坦
172 坦桑尼亚
173 泰国
174 多哥
175 汤加
176 特里尼达和多巴哥
177 突尼斯
178 土耳其
179 土库曼斯坦
180 图瓦卢
181 乌干达
182 乌克兰
183 阿联酋
184 英国
185 美国
186 乌拉圭
187 乌兹别克斯坦
188 瓦努阿图
189 梵蒂冈
190 委内瑞拉
191 越南
192 也门
193 赞比亚
194 津巴布韦
  • 俄罗司机牌类别代码
描述
0 "A"
1 "B"
2 "C"
3 "D"
4 "BE"
5 "CE"
6 "DE"
7 "有轨电车"
8 "无轨电车"
9 "A1"
10 "B1"
11 "C1"
12 "D1"
13 "C1E"
14 "D1E"
16 "AM"
  • 俄意外险驾驶员代码
描述
0 无限制
1 1
2 2
3 3
4 4
  • 俄意外险分期代码
描述
0 "一次性付清"
1 "半年(两次付款)"
2 "按季度(四次付款)"
3 "现在 + 3个月后剩余部分"
  • 俄意外险付款订单代码
描述
0 一次性付清
1 分期付款
  • 俄意外险鉴定师
描述
false 未选择鉴定师服务
true 已选择鉴定师服务
  • 俄车辆注册ID车辆类别代码
描述
0 A
1 B
2 C
3 D
4 "拖车"
  • 预备类别代码
描述
0 预备类别1
1 预备类别2
  • 预备分组代码
描述
0 RA
1 ВМФ
  • 适用性代码
描述
0 А - 无限制合格
1 Б - 有限制合格
2 В - 衡时动员条件下合格(军事时期)
3 Г - 暂时不合格
4 Д - 不合格

JSON返回数据模型

俄罗斯护照 (RusNationalID)

{
    "kind": "RusNationalID",
    "serial": "9608",
    "number": "437101",
    "dates": {
      "delivery": "2008-12-09"
    },
    "code": "430-040",
    "deliveredBy": "ТП №25 ОТДЕЛА УФМС ПО САНКТ-ПЕТЕРБУРГУ И ЛЕНИНГРАДСКОЙ ОБЛ. В КИРОВСКОМ Р-НЕ ГОР. САНКТ-ПЕТЕРБУРГА",
    "person": {
      "firstName": "Павел",
      "middleName": "Владимирович",
      "lastName": "Федоров",
      "birthDate": "1963-11-12",
      "birthPlace": "с. БОРИСОВКА, ТУРКИНСТАНСКОГО Р-НА, ЧЕМКЕНТСКОЦ ОБЛ. ",
      "sexCode": 0
    },
    "registration": {
      "date": "2016-10-20",
      "department": "ТП N2 МЕЖРАЙОННОГО ОУФМС РОССИИ ПО МОСКОВСКОЙ ОБЛ. В ГОРОДСКОМ ПОСЕЛЕНИИ ЛЮБЕРЦЫ",
      "residence": {
        "humanReadable": "Свердловск. обл, Железногорск, Ленина 126/2, 22",
        "region": "Свердловская область",
        "district": "Устиновский район",
        "point": "Гор. Железногорск",
        "street": "Ул. Ленина",
        "building": "14б",
        "corpus": "2",
        "stroenie": "4",
        "apartment": "22"
    }
}
  

外国护照 (RusInternationalID)

{
    "kind": "RusInternationalID",
    "number": "722836941",
    "dates": {
      "delivery": "2007-02-20",
      "expiration": "2017-02-20"
    },
    "deliveredBy": "МВД-335",
    "person": {
      "firstName": "Александр",
      "middleName": "Русланович",
      "lastName": "Куликов",
      "firstNameEn": "Alexander",
      "lastNameEn": "Kulikov",
      "birthDate": "1990-12-31",
      "birthPlace": "село Кукуево",
      "citizenshipCountryCode": 42,
      "sexCode": 1
    }
}

新式驾驶证 (RusDriversLic)

{
    "kind": "RusDriversLic",
    "serial": "1234",
    "number": "458980",
    "dates": {
      "delivery": "2008-11-02",
      "expiration": "2018-11-02"
    },
    "categories": [
        {
        "dates": {
            "delivery": "1998-09-10",
            "expiration": "2028-09-10"
        },
        "code": 42,
        "notes": "Очки, линзы"
        }
    ],
    "deliveredBy": "ГИБДД 4201",
    "deliveredByEn": "GIBDD 4201",
    "notes": "Очки, линзы обязательны",
    "person": {
      "firstName": "Юрий",
      "middleName": "Алексеевич",
      "lastName": "Ульященко",
      "firstNameEn": "Yuriy",
      "middleNameEn": "Alekseevich",
      "lastNameEn": "Ulyashcenko",
      "birthDate": "1984-03-14",
      "birthPlace": "Кемеровская обл.",
      "birthPlaceEn": "Kemerovskaya obl.",
      "livePlace": "Кемеровская обл.",
      "livePlaceEn": "Kemerovskaya obl.",
    }
  }

旧式驾驶证 (RusDriversLicOld)

{
    "kind": "RusDriversLicOld",
    "category": {
        "A": true,
        "B": false,
        "C": true,
        "D": false,
        "E": true
    },
    "person": {
        "lastNameEn":"Ulyashcenko",
        "lastName":"Ульященко",
        "firstName":"Юрий",
        "firstNameEn":"Yuriy",
        "middleName":"Алексеевич",
        "birthDate":"1984-03-14",
        "birthPlace":"Кемеровская обл.",
        "livePlace":"Кемеровская обл."
    },
    "deliveredBy":"ГИБДД 4201",
    "dates": {
        "delivery":"1998-09-10",
        "expiration":"2020-09-10"
    },
    "notes": "example"
}

最旧式驾驶证 (RusDriversLicOldest)

{
    "kind": "RusDriversLicOldest",
    "category": {
        "A": true,
        "B": false,
        "C": true,
        "D": false,
        "E": true
    }
    "person": {
        "lastName": "Ульященко",
        "lastNameEn": "Ulyashcenko",
        "firstName": "Юрий",
        "firstNameEn": "Yuriy",
        "middleName": "Алексеевич",
        "birthDate": "1984-03-14",
        "birthPlace": "Кемеровская обл.",
        "birthPlaceEn": "Kemerovskaya obl.",
        "livePlace": "Кемеровская обл.",
        "livePlaceEn": "Kemerovskaya obl."
    },
    "deliveredBy": "ГИБДД 4201",
    "dates": {
        "delivery": "1998-09-10",
        "expiration": "2028-09-10"
    },
    "notes": "Очки, линзы обязательны"
}

社会保险号 (RusSNILS)

{
    "kind": "RusSNILS",
    "number": "00187900429",
    "dates": {
      "delivery": "1998-03-19"
    },
    "person": {
      "firstName": "Александр",
      "middleName": "Владимирович",
      "lastName": "Владимиров",
      "birthDate": "1986-01-12",
      "birthPlace": "Оренбургская область, г. Орск"
    }
}

统一社会信用代码 (RusINN)

{
    "kind": "RusINN",
    "serial": "39",
    "number": "004664470",
    "dates": {
      "delivery": "2007-04-25"
    },
    "deliveredBy": "Межрайонной ИФНС России №13 по Ростовской области (МРИ №13 террит. участок 6150 по г. Новочеркасску, код 6150)",
    "inn": "742005900451",
    "person": {
      "firstName": "Артур",
      "middleName": "Вениаминович",
      "lastName": "Кутищев",
      "birthDate": "1997-05-15"
    }
}

出生证明 (RusBirthCert)

{
    "kind": "RusBirthCert",
    "serial": "VI-МЮ",
    "number": "497676",
    "dates": {
      "delivery": "2008-01-02"
    },
    "act": {
      "date": "2015-07-14",
      "recordNumber": "372"
    },
    "father": {
      "firstName": "Павел",
      "middleName": "Вениаминович",
      "lastName": "Калинкин",
      "citizenshipCountryCode": 42
    },
    "mother": {
      "firstName": "Елизавета",
      "middleName": "Тимофеевна",
      "lastName": "Калинкина",
      "citizenshipCountryCode": 42
    },
    "person": {
      "firstName": "Артур",
      "middleName": "Павлович",
      "lastName": "Калинкин",
      "birthDate": "2003-08-07",
      "birthPlace": "п. Боровской Мендыгаринского р-на Кустанайской обл. Республика Казахстан"
    },
    "registrationPlace": "отдел ЗАКС Калининского района г. Новосибирска управления по делам ЗАКС Новосибирской области"
  }

医疗保险 (RusMedIns)

{
    "kind": "RusMedIns",
    "number": "5947300848000179",
    "dates": {
      "expiration": "2017-02-20"
    },
    "letterHeadNumber": "01085451901",
    "person": {
      "firstName": "Галина",
      "middleName": "Александровна",
      "lastName": "Брунькина",
      "birthDate": "1980-02-21"
    }
}

车辆识别代号 (RusVehicleRegID)

{
    "kind": "RusVehicleRegID",
    "dates": {
      "delivery": "2008-01-02"
    },
    "code": "11450504",
    "deliveredBy": "МОГТОРЭР №4 ГИБДД ГУ МВД РФ по г.Москве",
    "notes": "Особые отметки",
    "owner": "Иванов Петр Григорьевич",
    "residence": {
      "humanReadable": "Ленинград, Голикова, 35, 0",
      "region": "Москва",
      "district": "Москва",
      "point": "Санкт-Петербург, settlement",
      "street": "УЛ ЛЕНИ ГОЛИКОВА",
      "building": "35",
      "corpus": "10",
      "stroenie": "2",
      "apartment": "000"
    },
    "serialAndNumber": "37НХ842827",
    "vehicle": {
      "type": "ЛЕГКОВОЙ УНИВЕРСАЛ",
      "body": "Z6FMXXESWMDC67089",
      "categoryCode": 1,
      "chassis": "XLRTE47XS0E575898",
      "color": "ЧЕРНЫЙ",
      "emptyWeight": "1300",
      "engine": {
        "number": "A671605",
        "capacity": "1345",
        "model": "B5254T",
        "power": "132.00/180"
      },
      "makeAndModel": "NISSAN ALMERA CLASSIC",
      "maxWeight": "1500",
      "passport": {
        "serial": "77TX",
        "number": "575939"
      },
      "sign": "A236AO92",
      "vin": "XTAGFL120GY001607",
      "year": 2006
    }
}

机动车登记证 (RusPTS)

{
    "kind": "RusPTS",
    "approvement": {
      "number": "123.FA.3123123",
      "approvedDate": "1990-12-31",
      "deliveredBy": "Таможня Пермского края"
    },
    "dealer": {
      "address": "Москва, ул. Ленина, д.4",
      "deliveredAddress": "Москва, Замкадье ул.Самая-дальняя д.6",
      "deliveredBy": "ГИБДД",
      "deliveredDate": "1990-12-31",
      "notes": "Особые заметки",
      "organization": "Тойота-Центр Москва"
    },
    "export": {
      "country": "Япония",
      "restrictions": "Нельзя управлять в нетрезвом виде",
      "serialAndNumber": "УК123123123"
    },
    "notes": "Заметки",
    "owner": {
      "name": "Ларионов Андрей Петрович",
      "address": "Томск, ул. Московская д. 1",
      "notes": "Заметка",
      "ownershipDocument": "Договор купли-продажи",
      "saleDate": "1990-12-31"
    },
    "serialAndNumber": "70ТТ384938",
    "sts": {
      "serial": "22АА",
      "number": "123456",
      "deliveredBy": "ГИБДД г. Томска",
      "document": "Документ",
      "registrationDate": "1990-12-31",
      "sign": "в234ра 70"
    },
    "vehicle": {
      "type": "Легковые универсал",
      "body": "GTR3857HTRE3",
      "categoryCode": 1,
      "chassis": "12345",
      "color": "Черный",
      "companyAndCountry": "Toyota, Japan",
      "emptyWeight": "1300",
      "engine": {
        "type": "бензиновый",
        "capacity": "1345",
        "modelAndNumber": "VHB 200, 173678",
        "power": "62.5/85"
      },
      "makeAndModel": "Toyota Land Cruiser 200",
      "maxWeight": "1500",
      "vin": "XTAGFL120GY001607",
      "year": 2006
    }
  }

机动车交通事故责任强制保险 (RusOSAGO)

{
    "kind": "RusOSAGO",
    "serial": "ЕЕЕ",
    "number": "2000759617",
    "dates": {
      "delivery": "2008-12-09"
    },
    "company": {
      "name": "ООО Ладастрах",
      "address": "197376, г. СПб, Аптекарская набережная, д.12, 2 эт",
      "phone": "+78127777901"
    },
    "contract": {
      "cost": "150000",
      "period": {
        "begin": "2010-11-15",
        "beginTime": "22:30",
        "end": "2012-11-15",
        "endTime": "22:30"
      }
    },
    "notes": "Заметки",
    "person": {
      "firstName": "Дмитрий",
      "middleName": "Анатольевич",
      "lastName": "Решетнев"
    },
    "vehicle": {
      "makeAndModel": "Toyota Land Cruiser 200",
      "passport": {
        "serial": "77УВ",
        "number": "395249"
      },
      "sign": "Х676МК197",
      "vin": "Z8TXTGF3WHM007672"
    }
}

机动车商业保险 (RusKASKO)

{
    "kind": "RusKASKO",
    "serial": "07305/046",
    "number": "02-069",
    "dates": {
      "delivery": "2008-12-09"
    },
    "company": {
      "name": "ООО \"Ладастрах\"",
      "email": "[email protected]",
      "phone": "+79263141593"
    },
    "contract": {
      "cost": "150000",
      "period": {
        "begin": "2010-11-15",
        "end": "2012-11-15"
      }
    },
    "driversCode": 0,
    "instalment": {
      "code": 1,
      "period": {
        "begin": "2010-11-15"
      }
    },
    "insurance": {
      "civilLiability": "100503",
      "damage": "100501",
      "optionalEquipment": "100504",
      "theft": "100502"
    },
    "notes": "Временное разрешение выдано",
    "paymentOrderCode": 1,
    "person": {
      "serial": "0301",
      "number": "523812",
      "firstName": "Дмитрий",
      "middleName": "Анатольевич",
      "lastName": "Решетнев",
      "birthDate": "1990-12-31",
      "inn": "23492538593",
      "issueDate": "1990-12-31"
    },
    "residence": {
      "humanReadable": "г. Нижний Устюг, ул. Ленина д.4 кв. 20",
      "region": "Москва",
      "district": "Москва",
      "point": "Москва",
      "street": "Ленина",
      "building": "10",
      "corpus": "2",
      "stroenie": "4",
      "apartment": "3"
    },
    "surveyor": false,
    "vehicle": {
      "engine": {
        "power": "100"
      },
      "makeAndModel": "Toyota Land Cruiser 200",
      "passport": {
        "serial": "77УВ",
        "number": "395249"
      },
      "sign": "Х676МК197",
      "vin": "Z8TXTGF3WHM007672",
      "year": 2006
    }
}

军人证 (RusMilitaryCard)

{
    "kind": "RusMilitaryCard",
    "name": "Военный билет",
    "serial": "AA",
    "number": "5461728",
    "dates": {
      "delivery": "1999-05-12"
    },
    "commissariat": "Войковский ОВК г. Рязань",
    "commissionName": "Наименования призывной комиссии",
    "deliveredBy": "Комиссариатом Приморского Края",
    "person": {
      "firstName": "Андрей",
      "middleName": "Александрович",
      "lastName": "Иванов",
      "birthDate": "1990-12-31",
      "birthPlace": "г. Москва",
    },
    "rank": {
      "awardedBy": "Военный комиссар Останкинского района СВАО г. Москвы",
      "order": {
        "number": "398",
        "date": "1999-07-21"
      },
      "rank": "Старший лейтенант"
    },
    "reserve": {
      "categoryCode": 1,
      "groupCode": 0,
      "staff": "Командный"
    },
    "suitabilityCode": 1,
    "vus": {
      "number": "659",
      "code": "659941A",
      "specialty": "Военная разведка"
    }
}

银行卡 (BankCard)

{
    "kind": "BankCard",
    "cardholder": "OLEG TINKOFF",
    "expiryDate": "12/18",
    "number": "4111111111111111"
}