空军薪资代扣贷款手册
QI Tech 的 webhooks 不应以严格方式进行映射。 我们 API 返回的 webhook payload 中可能会包含额外字段。
您可以按照以下文档中的详细说明查询并重发 webhooks:Webhook 重发。
空军代扣贷款系统通过 API 运作,每周七天、每天 24 小时全天候可用,包括节假日。
1. 授权
在提交任何空军代扣贷款请求(查询、债务发行等)之前,需要先上传军人授权同意书,授权 QI 进行查询、批注及工资扣款维护。 上传授权文件,请按照文件上传章节中的步骤进行操作。
上传后将在返回字段 "document_key" 中返回唯一密钥,该密钥需在"authorization_document_key"字段中发送于查询薪资代扣额度请求的 payload 中,详见下方**3. 查询薪资代扣额度。**
2. 在沙箱环境中模拟余额查询、合同列表查询及批注的成功场景
出于测试目的,我们提供了一组可用于模拟沙箱中成功案例的数据,如下所示:
| document_number | registration_code | token | birthdate |
|---|---|---|---|
| 60221284630 | 18571 | abc123 | 1954-09-08 |
| 57343241400 | 72893 | abc123 | 1998-02-06 |
| 13212590696 | 15410 | abc123 | 1959-11-14 |
这些信息应在模拟时发送于请求的 payload 中,结果将通过相应的成功 webhook 返回。
3. 查询薪资代扣额度
在获得 CPF、军人注册编号及授权文件密钥后,集成合作方可通过以下端点对军人的薪资代扣额度进行异步查询:
Request
Request Body
{
"document_number": "45507529710",
"registration_code": "146254221",
"authorization_document_key": "f2bc2369-89ea-4a80-9f64-ba7b1566cd31",
}
CPF 应以文本格式填写,最多 11 个字符,不含"."、不含"-",并在左侧以零填充。 注册编号也应以文本格式填写。
Request Body Params
| 字段 | 类型 | 描述 |
|---|---|---|
document_number | string | 军人的 CPF。 |
registration_code | string | 军人的注册编号。 |
authorization_document_key | uuid | 授权条款的 document_key。 |
Sincronous Response
Response Body
{
"balance_key": "81da8afb-e1b2-4215-8093-c4b5feab8a9f",
"status": "pending_search"
}
由于是异步操作,借款人薪资代扣额度查询数据将通过 webhook 返回。
Response Body Params
| 字段 | 类型 | 描述 |
|---|---|---|
balance_key | string | 薪资代扣额度查询的标识密钥。 |
status | enum | 以下薪资代扣额度查询状态枚举值。 |
薪资代扣额度查询状态枚举值
| 枚举值 | 描述 |
|---|---|
pending_search | 薪资代扣额度查询待空军系统响应。 |
processed | 薪资代扣额度查询已处理。 |
状态 'processed' 仅表示余额请求已有效发送并处理,但不代表请求的成功或失败,相关信息将包含在通过 Webhook 发送的 payload 中,详见下文。
成功查询
成功 webhook 将以如下格式返回:
Body
{
"webhook_type": "airforce_payroll.balance.status_change",
"key": "81da8afb-e1b2-4215-8093-c4b5feab8a9f",
"event_datetime": "2023-05-28T08:43:29Z",
"status": "processed",
"data": {
"military_unit": "Aeronáutica Brasileira",
"military_branch": "IAE",
"category": "Ativo",
"name": "João da Silva",
"document_number": "12345678901",
"registration_code": "ABC123",
"balance": "15000.00",
"birth_date": "1980-01-01",
"grant_date": "2005-03-15",
"allowed_installment_numbers": 24
}
}
成功响应体参数
| 字段 | 类型 | 描述 |
|---|---|---|
webhook_type | string | Webhook 类型。 |
key | uuid | Webhook 的参考密钥。此处指 balance_key |
event_datetime | string | Webhook 发送的日期和时间。 |
status | string | 薪资代扣额度查询状态。 |
data | json | 包含查询相关数据的字段。 |
data.military_unit | string | 军人在 eConsig 系统中注册所属的机构。 |
data.military_branch | string | 军人所在的军事机关/组织。 |
data.category | string | 军人类别。 |
data.name | string | 军人姓名。 |
data.document_number | string | 军人的 CPF。 |
data.registration_code | string | 军人的注册编号。 |
data.balance | string | 可用于办理代扣贷款的可用额度。 |
data.birth_date | string | 军人出生日期。 |
data.grant_date | string | 军人入职日期。 |
data.allowed_installment_numbers | string | 被查询军人可办理代扣贷款的最大分期数。 |
查询失败
失败 webhook 将以如下格式返回:
Body
{
"webhook_type": "airforce_payroll.balance.status_change",
"key": "81da8afb-e1b2-4215-8093-c4b5feab8a9f",
"event_datetime": "2023-05-28T08:43:29Z",
"status": "processed",
"data": {
"title": "insufficient_permission",
"description": "User Has insufficient permissions for this operation.",
"translation": "Usuario nao possui permissoes suficientes para essa operacao.",
"code": "ZP000329",
"extra_fields": {}
}
}
每种已映射的错误类型都有标题、代码及更详细的描述。如果尚未映射,将以相同格式返回,但标题为 unknown_response。除相同字段外,下表详细描述了返回的参数。
失败响应体参数
| 字段 | 类型 | 描述 |
|---|---|---|
data.title | string | 发生错误的标题。 |
data.description | string | 发生错误的英文详细描述。 |
data.translation | string | 错误描述的翻译。 |
data.code | string | 收到的错误代码。最后 3 位数字为 Zetra 收到的错误代码。(例如:ZP000329) |
data.extra_fields | json | 用于可能的额外属性的字段。 |
查询薪资代扣额度请求
如果合作方想了解已创建的 Balance 实体的进展,可以对其发起查询:
我们强烈建议使用 Webhook 作为借款人薪资代扣额度查询信息的参考依据。此功能将来可能被移除。
Request
Response
Body
{
"status": "processed",
"data": {
"military_unit": "Aeronáutica Brasileira",
"military_branch": "IAE",
"category": "Ativo",
"name": "João da Silva",
"document_number": "12345678901",
"registration_code": "ABC123",
"balance": "15000.00",
"birth_date": "1980-01-01",
"grant_date": "2005-03-15",
"allowed_installment_numbers": 24
}
}
4. 合同列表查询
在获得潜在借款人的 CPF、军人注册编号及Token 后,集成合作方可通过以下端点查询可供购买的军人合同列表:
Request
Request Body
{
"document_number": "45507529710",
"registration_code": "146254221",
"token": "abc1234"
}
CPF 应以文本格式填写,最多 11 个字符,不含"."、不含"-",并在左侧以零填充。注册编号也应以文本格式填写。
Request Body Params
| 字段 | 类型 | 描述 |
|---|---|---|
document_number | string | 军人的 CPF。 |
registration_code | string | 军人的注册编号。 |
token | string | 军人的密码。 |
Sincronous Response
Response Body
{
"portability_contracts_report_key": "3e41a8afb-e1b2-4215-8093-c4b5feab529c" ,
"status": "pending_search"
}
由于是异步操作,借款人合同列表查询数据将通过 webhook 返回。
Response Body Params
| 字 段 | 类型 | 描述 |
|---|---|---|
portability_contracts_report_key | string | 合同列表查询的标识密钥。 |
status | enum | 合同列表查询状态枚举值。 |
合同列表查询状态枚举值
| 枚举值 | 描述 |
|---|---|
pending_search | 合同列表查询待空军系统响应。 |
processed | 合同列表查询已处理。 |
状态 'processed' 仅表示合同列表查询请求已有效发送并处理,但不代表请求的成功或失败,相关信息将包含在通过 Webhook 发送的 payload 中,详见下文。
合同列表查询 Webhook
成功 webhook 将以如下格式返回:
Body
{
"webhook_type": "airforce_payroll.portability_contracts_report.status_change",
"key": "3e41a8afb-e1b2-4215-8093-c4b5feab529c",
"event_datetime": "2023-05-28T08:43:29Z",
"status": "processed",
"data": {
"document_number": "45507529710",
"contracts" : [
{
"econsig_id": "2361529",
"consignatory": "BANCO XPTO",
"contract_date": "2022-01-03T15:01:57Z",
"installment_amount": 10.0,
"number_of_installments": 5,
"number_of_paid_installments": 1,
"contract_status":"in_progress"
},
{
"econsig_id": "2361529",
"consignatory": "BANCO XPTO",
"contract_date": "2022-01-03T15:01:57Z",
"installment_amount": 10.0,
"number_of_installments": 5,
"number_of_paid_installments": 1,
"contract_status":"in_progress"
}
]
}
}
Response Body Params
| 字段 | 类型 | 描述 |
|---|---|---|
webhook_type | string | Webhook 类型。 |
key | uuid | Webhook 的参考密钥。此处指 balance_key |
event_datetime | string | Webhook 发送的日期和时间。 |
status | string | 薪资代扣额度查询状态。 |
data | json | 包含查询相关数据的字段。 |
data.document_number | string | 军人的 CPF。 |
data.contracts | array | 合同及其各自信息的列表。 |
data.contracts.econsig_id | string | Zetra 系统中合同的唯一标识符。 |
data.contracts.consignatory | string | 合同的代扣机构。 |
data.contracts.installment_amount | float | 分期付款金额。 |
data.contracts.number_of_installments | int | 合同的总分期数。 |
data.contracts.number_of_paid_installments | int | 截至当前有效期已支付的分期数。 |
data.contracts.contract_status | string | 合同状态。 |
合同可能的状态映射如下。
| 合同状态 | contract_status |
|---|---|
| "Aguard. Confirmação" | waiting_confirmation |
| "Suspensa Pelo Gestor." | suspend_by_manager |
| "Aguard. Liquidação" | waiting_closure |
| "Aguard. Liquidação Portabilidade" | waiting_portability_closure |
| "Aguard. Margem" | waiting_balance |
| "Encerrado por Exclusão" | closed_by_exclusion |
| "Aguard. Deferimento" | waiting_approval |
| "Indeferida" | rejected |
| "Deferida" | accepted |
| "Em Andamento" | in_progress |
| "Suspensa" | suspended |
| "Cancelada" | canceled |
| "Liquidada" | settled |
| "Concluído" | completed |
这些合同状态同样适用于内部合同的可能状态。
合同列表查询请求
如果合作方想了解合同列表查询的进展,可以对其发起查询:
我们强烈建议使用 Webhook 作为借款人合同列表信息的参考依据。此功能将来可能被移除。
Request
Response
Body
{
"status": "processed",
"data": {
"document_number": "45507529710",
"contracts" : [
{
"econsig_id": "2361529",
"consignatory": "BANCO XPTO",
"contract_date": "2022-01-03T15:01:57Z",
"installment_amount": 10.0,
"number_of_installments": 5,
"number_of_paid_installments": 1,
"contract_status":"in_progress"
},
{
"econsig_id": "2361529",
"consignatory": "BANCO XPTO",
"contract_date": "2022-01-03T15:01:57Z",
"installment_amount": 10.0,
"number_of_installments": 5,
"number_of_paid_installments": 1,
"contract_status":"in_progress"
}
]
}
}
5. 个人信贷操作模拟
首先需要计算清偿原始信贷操作所需的个人信贷操作金额。
原始债务的未偿余额应填写在 disbursed_amount 字段中。
操作必须以 1 期分期模拟,在 D0 放款,分期付款到期日为放款日(操作支付日)后第 D+5 个工作日。
Request
{
"borrower": {
"person_type": "natural"
},
"financial": {
"disbursed_amount": 80492.95,
"monthly_interest_rate": 0.03,
"credit_operation_type": "ccb",
"disbursement_date": "2023-03-17",
"issue_date": "2023-03-17",
"fine_configuration": {
"contract_fine_rate": 0,
"interest_base": "workdays",
"monthly_rate": 0
},
"interest_grace_period": 0,
"interest_type": "pre_price_days",
"number_of_installments": 1,
"principal_grace_period": 0,
"first_due_date_delay": 5
}
}
6. 空军薪资代扣信贷操作模拟
本次模拟中,各字段的值将按以下方式分配:
installment_face_value = 薪资代扣额度值
disbursement_date = 模拟时刻后的第 D+5 个工作日
due_balance = 个人信贷操作模拟中返回的第 1 期 total_amount
original_deadline = 个人信贷操作的总期限(天数)(5 天)
Request
{
"borrower": {
"person_type": "natural"
},
"financial": {
"first_due_date": "2023-06-10",
"installment_face_value": 100.0,
"disbursement_date": "2023-03-22",
"number_of_installments": 96,
"monthly_interest_rate": 0.0205,
"interest_type": "pre_price_days",
"fine_configuration": {
"monthly_rate": 0.01,
"interest_base": "calendar_days",
"contract_fine_rate": 0.02
},
"credit_operation_type": "ccb",
"interest_grace_period": 0,
"principal_grace_period": 0
},
"collaterals": [{
"collateral_type": "airforce_payroll"
}],
"refinanced_credit_operations": [
{
"due_balance": 1250.20,
"original_deadline": 120
}
]
}
模拟中返回的 data.final_disbursement_amount 字段将是支付给客户的找零金额。
查询个人信贷操作的分期金额
Request
DEBT-KEY 是操作创建响应中返回的密钥(/debt 的响应)