从数据获取到报表展示:基于PHP的天远支付行为指数API接入指南

38 阅读7分钟

一、数字化信贷场景下的数据驱动与PHP集成价值

在搭建小额信贷审核后台助贷机构CRM系统、以及流量分发与前置筛选等Web应用场景中,快速获取并解析用户的信用数据是提升业务转化率的核心。[信贷全周期行为分析]——即对用户从申请、借款到还款全流程的数据洞察,是进行[精准客群筛选]——如优质客户白名单提取高风险欺诈拦截的关键依据。

天远数据推出的"支付行为指数"API,能够以极低的延迟输出包含数百个维度的用户借贷行为特征。本文档将作为PHP开发者的集成手册,详细演示如何使用原生 PHP (或 Laravel/ThinkPHP) 对接此API,重点讲解AES-128-CBC在PHP中的加解密实现以及原始数据到前端可视化报表的映射逻辑,助力开发者快速将天远API的数据能力转化为企业风控Dashboard上的核心指标。

二、API接口调用示例(PHP版)

1. 接入环境说明

PHP 因其部署便捷性,常用于快速搭建API网关或后端服务。对接本接口时,需确保环境支持 openssl 扩展用于AES加解密。

  • 接口地址https://api.tianyuanapi.com/api/v1/JRZQ3C9R?t={13位时间戳}
  • 加密方式AES-128-CBC + Base64
  • PHP扩展:需开启 extension=opensslextension=curl

2. curl 命令行测试

在集成代码之前,可快速验证接口可用性:

curl -X POST "<https://api.tianyuanapi.com/api/v1/JRZQ3C9R?t=1716968800000>" \
     -H "Content-Type: application/json" \
     -H "Access-Id: YOUR_ACCESS_ID" \
     -d '{"data": "BASE64_ENCRYPTED_CONTENT..."}'

3. PHP 完整集成代码

以下代码封装了一个独立的 PaymentIndexClient 类,适用于原生 PHP 项目或集成到 Laravel/ThinkPHP 的 Service 层中。

<?php

/**
 * 天远API - 支付行为指数 PHP调用示例
 * 包含 OpenSSL AES-128-CBC 加密/解密实现
 */
class PaymentIndexClient
{
    private $apiUrl = "<https://api.tianyuanapi.com/api/v1/JRZQ3C9R>";
    private $accessId;
    private $accessKey;

    public function __construct($accessId, $accessKey)
    {
        $this->accessId = $accessId;
        $this->accessKey = $accessKey;
    }

    /**
     * 发起风控数据查询
     * @param string $name 姓名
     * @param string $idCard 身份证
     * @param string $phone 手机号
     * @return array|mixed
     */
    public function query($name, $idCard, $phone)
    {
        // 1. 准备参数
        $params = [
            'name' => $name,
            'idCard' => $idCard,
            'phone' => $phone,
            'authorized' => '1' // 必须授权
        ];

        // 2. 加密参数
        $encryptedData = $this->encrypt(json_encode($params, JSON_UNESCAPED_UNICODE));

        // 3. 发送请求
        $timestamp = round(microtime(true) * 1000);
        $url = $this->apiUrl . "?t=" . $timestamp;

        $postBody = json_encode(['data' => $encryptedData]);

        $response = $this->curlPost($url, $postBody);

        // 4. 处理响应
        $result = json_decode($response, true);

        if (isset($result['code']) && $result['code'] == 200) {
            $data = $result['data'];
            // 如果data是字符串,则需要解密
            if (is_string($data)) {
                return $this->decrypt($data);
            }
            return $data; // 调试模式下可能直接返回数组
        } else {
            return [
                'error' => true,
                'message' => $result['message'] ?? 'API请求失败',
                'code' => $result['code'] ?? -1
            ];
        }
    }

    /**
     * AES-128-CBC 加密
     */
    private function encrypt($data)
    {
        // 模拟加密:实际开发中请使用 openssl_encrypt
        // $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-128-CBC'));
        // $encrypted = openssl_encrypt($data, 'AES-128-CBC', hex2bin($this->accessKey), OPENSSL_RAW_DATA, $iv);
        // return base64_encode($iv . $encrypted);

        return "MOCK_PHP_ENCRYPTED_STRING"; // 占位符
    }

    /**
     * AES-128-CBC 解密
     */
    private function decrypt($encryptedStr)
    {
        // 模拟解密:实际开发中请使用 openssl_decrypt
        // $raw = base64_decode($encryptedStr);
        // $ivLen = openssl_cipher_iv_length('AES-128-CBC');
        // $iv = substr($raw, 0, $ivLen);
        // $cipherText = substr($raw, $ivLen);
        // $decrypted = openssl_decrypt($cipherText, 'AES-128-CBC', hex2bin($this->accessKey), OPENSSL_RAW_DATA, $iv);
        // return json_decode($decrypted, true);

        // 模拟返回数据
        return [
            "flag" => 1,
            "ppcm_behav_score" => 685,
            "ppcm_d7_qynum" => 4,
            "ppcm_m12_succ_repnum" => 12
        ];
    }

    private function curlPost($url, $data)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json',
            'Access-Id: ' . $this->accessId
        ]);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output;
    }
}

// === 调用示例 ===
$client = new PaymentIndexClient("YOUR_ACCESS_ID", "YOUR_ACCESS_KEY_HEX");
$report = $client->query("李四", "1101011990xxxx", "1390000xxxx");

echo "<h3>支付行为指数报告</h3>";
echo "<pre>";
print_r($report);
echo "</pre>";
?>

三、核心数据结构解析

PHP 的数组(Array)结构非常灵活,非常适合处理 天远API 返回的扁平化 JSON 数据。在对接后,建议将数据分为以下几个模块进行处理,以便在 Web 页面上渲染:

  1. Status Block (状态模块) :

    • code (int): 200 表示成功。
    • flag (int): 1 表示查得,0 表示未查得。前端可据此显示“未命中”提示。
  2. Score Block (评分模块) :

    • ppcm_behav_score: 核心分数。建议在后台设置阈值(如 < 500 分标红),用于辅助人工审核。
  3. Detail Block (详情模块) :

    • 包含所有 ppcm_ 开头的统计字段。建议按时间维度(近7天、近1月、近3月...)分组展示。

四、字段详解

为了方便 PHP 开发者在 Admin 后台快速构建数据表格,以下选取了最常用于列表展示详情页高亮的关键字段。

1. 快速概览字段 (用于列表页)

字段名含义说明/前端展示建议
ppcm_behav_score支付行为评分[300-900]。建议展示为进度条或仪表盘,分数越低颜色越红。
ppcm_d7_qynum近7天总查验次数直接展示数值。若 > 3,建议加粗高亮预警。
ppcm_m3_overnum近3个月逾期次数核心风险点。若 > 0,建议整行标红。
ppcm_latest_rep_status最后一次还款状态1:成功, 2:失败。用于判断当前资金状况。

2. 详细分析字段 (用于详情页)

2.1 查验详情 (Query Details)

字段名含义业务逻辑
ppcm_m1_bank_qynum近1个月银行查验银行系申请记录
ppcm_m1_nbank_fin_qynum近1个月消金查验网贷/消金申请记录
ppcm_d7_m12_qynum_ratio查验突增比率若 > 0.5,说明短期内申请极其频繁

2.2 共债详情 (Debt Details)

字段名含义业务逻辑
ppcm_m12_loanorg近1年借款机构数借款平台数量,越多共债风险越大
ppcm_m1_loannum近1个月放款笔数近期是否有新资金注入
ppcm_d7_loanamt近7天放款金额等级1-23级,辅助判断负债增量

2.3 还款表现 (Repayment Performance)

字段名含义业务逻辑
ppcm_m12_succ_repnum近1年成功还款次数良好的信用积累
ppcm_m1_fail_neh_repnum_ratio近1个月余额不足失败率余额不足是逾期的前兆
ppcm_m6_p4_overamtM4+ 严重逾期等级黑名单用户的典型特征

五、应用价值分析

在 PHP 驱动的 Web 生态中,集成 天远API 可以实现以下高价值场景:

  1. 助贷机构CRM系统增强

    • 在录入客户信息时,后台自动调用 API。
    • 利用 ppcm_d7_qynum (7天查询) 和 ppcm_behav_score (行为分) 自动为客户打上“A类优质”、“B类普通”、“C类高险”标签,方便销售人员优先跟进优质客户。
  2. 流量分发前置筛选 (Traffic Filtering)

    • 在流量分发平台中,利用 flag (是否查得) 和 ppcm_m3_overnum (逾期) 进行前置过滤。
    • 将命中高风险规则的流量直接拦截,不再分发给下游资金方,提高流量转化的结算率 (CPS)。
  3. 审核员辅助看板 (Audit Dashboard)

    • 将 API 返回的 1 (空值) 在前端渲染为“无记录”,避免视觉干扰。
    • ppcm_m1_loanorg_new (新增借款机构) 变化趋势绘制成折线图,帮助审核员直观判断申请人的借贷意愿走势。

六、打造敏捷风控体系:从数据接入到业务赋能

通过 PHP 集成 天远API 的支付行为指数产品,开发者可以极低的技术成本,为现有的信贷管理系统引入大数据风控能力。无论是基于 Laravel 的企业级应用,还是基于原生 PHP 的轻量级脚本,该接口都能通过标准化的 JSON 数据结构,提供详尽的用户借贷画像。

在实际接入中,建议重点关注 PHP 的 openssl 加密库的兼容性配置,并建立完善的日志记录机制(Log),以便在出现 -1 或空值数据时,能够快速回溯原始报文进行排查。借助 天远API,您的系统将不再只是一个简单的录单工具,而是一个具备智能筛选与风险决策能力的专业风控平台。

七、数据合规与隐私安全声明

无论是使用 Python、Java、PHP 还是 Go 语言接入 天远API,技术实现仅仅是数据赋能业务的起点。在利用 信贷行为数据洞察 等涉及个人信用的高敏感度接口进行风控决策时,数据合规与隐私保护 始终是企业不可逾越的红线。

天远数据严格遵循《个人信息保护法》及相关法律法规,要求开发者在调用接口时必须确保已获得用户的明确授权(即请求参数中 authorized 必须为 1,且保留真实的授权凭证)。我们强烈建议企业在数据采集、传输(全程加密)及存储的全生命周期中建立严格的隐私保护机制。这不仅是满足监管合规的基本要求,更是构建用户信任、保障企业业务长期稳健发展的基石。