能力概述
调用企业三要素验证接口,传入企业名称、统一社会信用代码和法人姓名,校验三要素是否与工商信息一致,并返回具体不一致项。
- Endpoint:
GET https://app-bo4w33bsdqm9-api-Aa2PZnjE80BL-gateway.appmiaoda.com/company_three/get - 认证方式: platform_managed(密钥由平台注入,读取
INTEGRATIONS_API_KEY) - Content-Type:
application/json;charset=UTF-8 - 响应格式: JSON
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
companyName |
string | 是 | 公司名称 |
creditNo |
string | 是 | 统一社会信用代码 |
legalPerson |
string | 是 | 法人姓名 |
响应字段说明
成功响应(success: true, code: 200):
| 字段路径 | 类型 | 说明 |
|---|---|---|
success |
boolean | 请求成功标识,true 为成功 |
code |
number | 状态码,成功为 200 |
msg |
string | 状态描述 |
data.order_no |
string | 订单号 |
data.result |
number | 验证结果码(见下表) |
data.desc |
string | 结果描述 |
result 结果对照表:
| result | 说明 |
|---|---|
| 0 | 一致 |
| 1 | 企业名称不一致 |
| 2 | 社会统一信用代码不一致 |
| 3 | 法人名称不一致 |
| 9 | 不一致 |
失败响应(success: false):
| 字段路径 | 类型 | 说明 |
|---|---|---|
success |
boolean | false |
code |
number | 错误状态码(如 400) |
msg |
string | 错误描述(如"入参错误") |
data |
object | 空对象 {} |
响应示例
{
"msg": "成功",
"success": true,
"code": 200,
"data": {
"order_no": "426621381069965596",
"result": 0,
"desc": "一致"
}
}
生成期用法(Agent 直接调用)
const apiKey = process.env["INTEGRATIONS_API_KEY"]!; // platform_managed 密钥由平台注入
interface CompanyThreeFactorResult {
order_no: string;
result: number;
desc: string;
}
/**
* 验证企业三要素(企业名称、统一社会信用代码、法人姓名)是否与工商信息一致。
* @param companyName - 公司名称
* @param creditNo - 统一社会信用代码
* @param legalPerson - 法人姓名
* @returns 验证结果,含 result 码和描述
*/
async function verifyCompanyThreeFactors(
companyName: string,
creditNo: string,
legalPerson: string
): Promise<CompanyThreeFactorResult> {
const params = new URLSearchParams({ companyName, creditNo, legalPerson });
const response = await fetch(
`https://app-bo4w33bsdqm9-api-Aa2PZnjE80BL-gateway.appmiaoda.com/company_three/get?${params.toString()}`,
{
method: "GET",
headers: {
"Content-Type": "application/json;charset=UTF-8",
"X-Gateway-Authorization": `Bearer ${apiKey}`,
},
}
);
if (!response.ok) throw new Error(`HTTP error: ${response.status}`);
const json = await response.json();
if (!json.success || json.code !== 200) {
throw new Error(`API error ${json.code}: ${json.msg}`);
}
return json.data;
}
// 示例调用
const result = await verifyCompanyThreeFactors(
"示例公司",
"91110000000000000X",
"张三"
);
console.log(`验证结果: ${result.result} - ${result.desc}`);
// result === 0 表示三要素一致
生成后用法(应用内通过 Edge Function 调用)
Edge Function
// edge-functions/company-three-factor-auth.ts
import { serve } from "https://deno.land/std/http/server.ts";
serve(async (req: Request): Promise<Response> => {
if (req.method !== "POST") {
return new Response("Method Not Allowed", { status: 405 });
}
// --- 解析客户端请求 ---
let companyName: string;
let creditNo: string;
let legalPerson: string;
try {
const body = await req.json();
companyName = body.companyName;
creditNo = body.creditNo;
legalPerson = body.legalPerson;
if (!companyName) throw new Error("Missing companyName");
if (!creditNo) throw new Error("Missing creditNo");
if (!legalPerson) throw new Error("Missing legalPerson");
} catch {
return new Response(JSON.stringify({ error: "Invalid request body" }), {
status: 400,
headers: { "Content-Type": "application/json" },
});
}
// --- 注入平台密钥(严禁暴露给客户端)---
const apiKey = Deno.env.get("INTEGRATIONS_API_KEY");
if (!apiKey) {
return new Response(JSON.stringify({ error: "Server configuration error" }), {
status: 500,
headers: { "Content-Type": "application/json" },
});
}
// --- 调用上游接口 ---
const params = new URLSearchParams({ companyName, creditNo, legalPerson });
const upstream = await fetch(
`https://app-bo4w33bsdqm9-api-Aa2PZnjE80BL-gateway.appmiaoda.com/company_three/get?${params.toString()}`,
{
method: "GET",
headers: {
"Content-Type": "application/json;charset=UTF-8",
"X-Gateway-Authorization": `Bearer ${apiKey}`,
},
}
);
// 透传配额/余额错误
if (upstream.status === 429 || upstream.status === 402) {
const errText = await upstream.text();
return new Response(errText, {
status: upstream.status,
headers: { "Content-Type": "application/json" },
});
}
if (!upstream.ok) {
return new Response(
JSON.stringify({ error: `Upstream error: ${upstream.status}` }),
{ status: 502, headers: { "Content-Type": "application/json" } }
);
}
const data = await upstream.json();
return new Response(JSON.stringify(data), {
status: 200,
headers: { "Content-Type": "application/json" },
});
});
前端调用代码
Web 和 MiniProgram 均可使用 supabase client 调用,响应为标准 JSON,无平台差异。
推荐方式(supabase client 可用时):
interface CompanyThreeFactorResult {
order_no: string;
result: number;
desc: string;
}
/**
* 通过 Edge Function 验证企业三要素。
* @param companyName - 公司名称
* @param creditNo - 统一社会信用代码
* @param legalPerson - 法人姓名
* @returns 验证结果,含 result 码和描述
*/
async function verifyCompanyThreeFactors(
companyName: string,
creditNo: string,
legalPerson: string
): Promise<CompanyThreeFactorResult> {
const { data, error } = await supabase.functions.invoke("company-three-factor-auth", {
body: { companyName, creditNo, legalPerson },
});
if (error) throw error;
if (!data.success || data.code !== 200) {
throw new Error(`API 错误 ${data.code}:${data.msg}`);
}
return data.data;
}
备用方式(无法使用 supabase client 时):
/**
* 通过原生 fetch 调用企业三要素 Edge Function。
* @param companyName - 公司名称
* @param creditNo - 统一社会信用代码
* @param legalPerson - 法人姓名
* @returns 验证结果,含 result 码和描述
*/
async function verifyCompanyThreeFactors(
companyName: string,
creditNo: string,
legalPerson: string
): Promise<CompanyThreeFactorResult> {
const res = await fetch(
`${import.meta.env.VITE_SUPABASE_URL}/functions/v1/company-three-factor-auth`,
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ companyName, creditNo, legalPerson }),
}
);
if (res.status === 429) {
const err = await res.json();
throw new Error(`配额已用尽:${err.message ?? res.statusText}`);
}
if (res.status === 402) {
const err = await res.json();
throw new Error(`余额不足:${err.message ?? res.statusText}`);
}
if (!res.ok) throw new Error(`请求失败:${res.status}`);
const json = await res.json();
if (!json.success || json.code !== 200) {
throw new Error(`API 错误 ${json.code}:${json.msg}`);
}
return json.data;
}
注意事项
- 密钥安全:
INTEGRATIONS_API_KEY仅可在 Edge Function 服务端读取,严禁暴露到前端。 - 错误处理:务必处理 429(配额超限)和 402(余额不足)两种错误状态码。
- 计费:每次调用按次计费,折扣价 ¥3.75 / 次(原价 ¥4.50 / 次),避免不必要的重复调用。
- 结果判断:
data.result === 0表示三要素完全一致;其他值表示具体哪项不一致,详见 result 对照表。 - 必填参数:
companyName、creditNo、legalPerson三个参数均为必填,任一缺失将返回 400 入参错误。 - Plugin ID:
a7c30985-2084-4205-9dbd-9d84238e0b3f - API ID:
api-Aa2PZnjE80BL - third_part_domain:
app-bo4w33bsdqm9-api-Aa2PZnjE80BL-gateway.appmiaoda.com