开发者文档

探索棱镜风控系统的API接口、SDK和集成方案,快速实现系统对接与二次开发

开发概述

棱镜风控系统提供全面的API接口和SDK,帮助开发者快速集成风控功能到现有业务系统中。通过简单的接口调用,您可以实现风险评估、规则查询、事件监控等功能。

开发前提

  • 已注册棱镜风控系统账号并创建应用
  • 已获取API访问密钥(Access Key和Secret Key)
  • 了解RESTful API基本概念和使用方法

开发流程

1

创建应用并获取密钥

2

阅读API文档了解接口

3

集成SDK或调用API

4

测试并上线

API 简介

棱镜风控系统API采用RESTful设计风格,支持JSON格式的数据交换,通过标准的HTTP方法实现资源的操作。所有API端点均通过HTTPS协议提供服务,确保数据传输安全。

API 基础信息

  • 基础URL: https://api.prismrisk.com/v1
  • 格式: JSON
  • 编码: UTF-8
  • 请求方法: GET, POST, PUT, DELETE

状态码说明

  • 200: 请求成功
  • 400: 请求参数错误
  • 401: 认证失败
  • 500: 服务器错误

API 调用限制

为保证服务稳定性,API调用存在一定的频率限制:

  • 免费版:每秒最多5次请求
  • 企业版:每秒最多50次请求
  • 定制版:可根据需求调整限制

认证授权

棱镜风控系统API采用Access Key和Secret Key进行身份验证。所有API请求(除获取密钥外)都需要包含有效的身份验证信息。

获取访问密钥

  1. 登录棱镜风控系统管理后台
  2. 进入"开发者中心" -> "API密钥管理"
  3. 点击"创建密钥"按钮,生成Access Key和Secret Key
  4. 妥善保存您的密钥,Secret Key仅显示一次

请求签名方法

每次API请求都需要生成签名,签名算法如下:

1. 拼接请求参数(按参数名ASCII排序)
2. 拼接请求方法、URL、时间戳和参数
3. 使用Secret Key对拼接字符串进行HMAC-SHA256加密
4. 将加密结果进行Base64编码,得到签名
5. 将签名作为X-Signature头传递

请求头示例

Authorization: PRISM {AccessKey}
X-Timestamp: 1620000000000
X-Signature: a4f5g6h7j8k9l0...

示例代码

以下是不同编程语言调用棱镜风控API的示例代码:

Python

import requests
import hmac
import base64
import time
from hashlib import sha256

# 配置信息
access_key = "your_access_key"
secret_key = "your_secret_key"
url = "https://api.prismrisk.com/v1/risk/evaluate"

# 生成签名
timestamp = str(int(time.time() * 1000))
params = {
    "user_id": "123456",
    "action": "login",
    "ip": "192.168.1.1"
}

# 生成待签名字符串
sorted_params = sorted(params.items(), key=lambda x: x[0])
param_str = "&".join([f"{k}={v}" for k, v in sorted_params])
sign_str = f"POST\n{url}\n{timestamp}\n{param_str}"

# 计算签名
signature = base64.b64encode(hmac.new(
    secret_key.encode(), 
    sign_str.encode(), 
    sha256
).digest()).decode()

# 发送请求
headers = {
    "Authorization": f"PRISM {access_key}",
    "X-Timestamp": timestamp,
    "X-Signature": signature,
    "Content-Type": "application/json"
}

response = requests.post(url, json=params, headers=headers)
print(response.json())

Java

import java.util.*;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
import java.net.URI;
import org.apache.http.client.fluent.Request;
import org.apache.http.entity.ContentType;

public class PrismRiskExample {
    private static final String ACCESS_KEY = "your_access_key";
    private static final String SECRET_KEY = "your_secret_key";
    private static final String API_URL = "https://api.prismrisk.com/v1/risk/evaluate";
    
    public static void main(String[] args) throws Exception {
        // 准备参数
        Map params = new HashMap<>();
        params.put("user_id", "123456");
        params.put("action", "login");
        params.put("ip", "192.168.1.1");
        
        // 生成时间戳
        long timestamp = System.currentTimeMillis();
        
        // 生成签名
        String signature = generateSignature("POST", API_URL, timestamp, params);
        
        // 构建请求头
        String jsonBody = "{\"user_id\":\"123456\",\"action\":\"login\",\"ip\":\"192.168.1.1\"}";
        
        // 发送请求
        String response = Request.Post(API_URL)
            .addHeader("Authorization", "PRISM " + ACCESS_KEY)
            .addHeader("X-Timestamp", String.valueOf(timestamp))
            .addHeader("X-Signature", signature)
            .bodyString(jsonBody, ContentType.APPLICATION_JSON)
            .execute()
            .returnContent()
            .asString();
            
        System.out.println(response);
    }
    
    private static String generateSignature(String method, String url, long timestamp, Map params) throws Exception {
        // 排序参数
        List paramList = new ArrayList<>();
        for (Map.Entry entry : params.entrySet()) {
            paramList.add(entry.getKey() + "=" + entry.getValue());
        }
        Collections.sort(paramList);
        String paramStr = String.join("&", paramList);
        
        // 构建待签名字符串
        String signStr = method + "\n" + url + "\n" + timestamp + "\n" + paramStr;
        
        // 计算HMAC-SHA256签名
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(new SecretKeySpec(SECRET_KEY.getBytes(), "HmacSHA256"));
        byte[] signatureBytes = mac.doFinal(signStr.getBytes());
        
        // Base64编码
        return Base64.getEncoder().encodeToString(signatureBytes);
    }
}

申请免费演示

填写以下信息,我们的专业顾问将在24小时内与您联系,为您提供定制化的演示方案

需要开发支持?

如果在集成过程中遇到问题,欢迎联系我们的技术支持团队