跳到主要内容

订单

在向您的客户或卖家交付/发货产品或释放信用额度之前,您应将订单数据发送到我们的 API,以便我们向您返回关于欺诈的建议。发送的数据必须是最终数据,不会被更改,这一点非常重要。这对于保证以下两点至关重要:

  • 反欺诈数据库中的数据一致性
  • 真实的风险评估

分析过程包括在相应端点发送一个 Order,并等待响应。有四种可能的结果,通过 analysis_status 标志返回:

结果描述
自动批准建议批准该订单
自动拒绝建议拒绝该订单
转人工分析我们的规则或模型对决策不够自信,决定将此订单转交人工分析
人工批准人工分析后,分析师选择批准该订单
人工拒绝人工分析后,分析师选择拒绝该订单
待处理查询耗时超出预期,该订单已进入自动分析队列,将通过 Webhook 返回结果
未分析查询以分析标志为 false 发送,或这是仅用于生成警报的分析,这意味着我们的系统不应在 Order 响应中返回建议
注意

如果您的业务模式有需要,QI Tech 的引擎可以配置为不将任何订单转人工分析,也不转至待处理状态。这样,您的用户可以立即收到交易确认。

状态动态

检索 Order 类型对象时,状态均可查看。除状态外,还会返回修改历史记录以供将来查询。这些修改被称为 events,包含新状态以及修改日期。

状态动态 - payment_status

订单的 payment_status 状态表示与该订单相关的支付情况,即交易是否被有效批准、是否被取消或是否收到欺诈退款。以下支付状态可用:

  • open
  • not_authorized
  • authorized
  • captured
  • cancelled
  • chargeback
注意

向 QI Tech 发送支付状态至关重要,因为它被用作我们模型训练的基础。对于退款情况,正确发送 reason_code 非常重要,如下文所述。

状态动态 - analysis_status

analysis_status 表示欺诈引擎决策的状态,其状态机非常简单:

  • created
  • automatically_approved
  • automatically_reproved
  • in_manual_analysis
  • manually_approved
  • manually_reproved
  • pending
  • not_analyzed

对象定义

Request Body
{
"id": "12345678",
"is_one_dollar_auth": false,
"seller": {
"id": "COD",
"name": "Restaurante do Aeroporto de Congonhas",
"type": "legal_person",
"document_number": "00.000.000/0001-00",
"email": "seller@gmail.com",
"registration_date": "2019-12-20T15:23:12-03:00",
"url": "https://www.qitech.com.br",
"phone": {
"international_dial_code": "1",
"area_code": "11",
"number": "999999999",
"type": "mobile",
"validated": true
},
"address": {
"street": "Rua do Exemplo",
"neighborhood": "Bairro do Teste",
"city": "Aparecida de Goiânia",
"number": "1000",
"uf": "GO",
"complement": "Térreo",
"postal_code": "00000-000",
"country": "BRA"
}
},
"payment": {
"total_amount": 10000,
"shipping_amount": 500,
"currency": "BRL",
"is_recurrence": false,
"transactions": [{
"id": "124234",
"amount": 8000,
"bin": "123456",
"last_4": "1234",
"cardholder_name": "JOHN SAMPLE",
"card_fingerprint": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"expiration_date": "2020-11",
"installments": 6,
"processor": "stone",
"payment_type": "credit",
"status": "not_authorized"
}]
},
"shipping": {
"name": "Mary Sample",
"gender": "female",
"document_number": "000.000.000-00",
"birthdate": "1990-01-02",
"email": "test@sample.com",
"address": {
"street": "Rua do Exemplo, 123",
"neighborhood": "Bairro do Teste",
"city": "Aparecida de Goiânia",
"number": "1000",
"uf": "GO",
"complement": "",
"postal_code": "00000-000",
"country": "BRA"
},
"phone": {
"international_dial_code": "1",
"area_code": "11",
"number": "999999999",
"type": "mobile",
"validated": true
},
"scheduled_date": "2020-01-10",
"shipping_method": "regular"
},
"customer": {
"id": "5ce7fab5-8165-44a5-9b89-bb2d6d61e4f4",
"name": "Mary Sample",
"gender": "female",
"document_number": "000.000.000-00",
"registration_date": "2019-12-20T15:23:12-03:00",
"email": "test@sample.com",
"birthdate": "1990-01-02",
"address": {
"street": "Rua do Exemplo, 123",
"neighborhood": "Bairro do Teste",
"city": "Aparecida de Goiânia",
"number": "1000",
"uf": "GO",
"complement": "",
"postal_code": "00000-000",
"country": "BRA"
},
"phone": {
"international_dial_code": "1",
"area_code": "11",
"number": "999999999",
"type": "mobile",
"validated": true
}
},
"device": {
"session_id": "595c46c1-b8c2-449d-8a86-6aeba2e5b0da",
"platform": "android",
"browser": "chrome",
"ip": "243.178.100.37"
},
"products": [{
"product_code": "latte-machiatto-30",
"name": "Latte Machiatto 30cl",
"description": "Latte Machiatto 30cl para levar, leite integral",
"sku": "1234",
"quantity": 2,
"unit_cost": 5000
}],
"order_date": "2020-01-03T15:35:12.454-03:00"
}

一个订单的所有信息交换均使用以下对象定义。在某些情况下,为便于实现并减少各方之间的数据流,某些信息可能会被省略。

名称类型描述
idstring客户系统中的订单标识符。
此值对于每个订单必须唯一(必填)
is_one_dollar_auth布尔值如果这是仅用于验证卡片的交易,使用此标志发送 true(必填)
sellerSeller 对象完成销售的商店数据。在 MarketPlace 中,是卖家数据。在应用程序中,是取货店铺的数据(必填)
paymentPayment 对象订单支付数据(必填)
customerCustomer 对象客户/用户数据(必填)
shippingShipping 对象订单配送数据——适用于实体配送产品的情况
deviceDevice 对象下单所用设备/浏览器数据
productsProduct 数组购买的商品(必填)
order_date日期时间下单日期和时间(必填)

发送订单

Request Body
  {
"id": "12345",
...
}
Response Body
  {
"id": "12345",
"analysis_status": "automatically_approved"
}

要对订单进行评估,只需将 Order 类型对象发送到以下端点:

POST https://api.caas.qitech.app/card_order/order

更新订单状态

Request Body
{
"transaction_status": "chargeback"
}

为确保规则和人工智能模型的持续优化,必须通知系统交易何时被授权、捕获、取消或收到退款。为此,需要使用 PUT 方法,并正常进行认证:

PUT https://api.caas.qitech.app/card_order/order/12345678/transaction/124234

transaction_status 的枚举值如下:opennot_authorizedauthorizedcapturedcancelledchargeback

检索订单

要检索特定订单,只需发出 GET 请求。返回的结果是该订单的最新 JSON。如果该标识符未与任何对象关联,则返回 HTTP Status 404。

GET https://api.caas.qitech.app/card_order/order/12345678

curl "https://api.caas.qitech.app/card_order/order/12345678"
-H "Authorization: EXAMPLE_API_KEY"

上述命令返回代表 CardOrder 对象的 JSON。

搜索 CardOrders

Response Body
[
{
"id": "12345",
...
},
{
"id": "12345",
...
}
]

返回代表 CardOrder 对象列表的 JSON。

如需搜索 CardOrder,可以使用带查询参数的 GET 请求。返回的结果是代表 CardOrders 列表的 JSON。如果未找到符合发送参数的对象,则返回 HTTP Status 200,响应体中包含空列表。

GET https://api.caas.qitech.app/card_order/order?initial_date=2019-10-01&final_date=2019-10-05&page_number=2&page_rows=20

以下参数可用于搜索 CardOrder 对象:

参数默认值描述
initial_datenull根据 order_date 字段应返回的最早日期
final_datenull根据 order_date 字段应返回的最晚日期
page_number1所需结果页码
page_rows50一次查询返回的最大对象数