企业行政处罚·记录检索
触发条件
当用户希望快速检索某家企业是否有行政处罚,或按企业名称、注册号、统一社会信用代码查询处罚记录时,使用本 Skill。
当用户需要企业工商档案、法人、股东、经营范围等非处罚信息时,改用“企业工商信息·全维度版” Skill,不要同时调用两个服务。
接口
- 方法:
POST - 地址:
https://api.shopbuy.top/api/agent/punishment/search - 请求体:
{"keyword":"企业名称、注册号或统一社会信用代码"} keyword支持:公司名称、工商注册号、社会统一信用代码
接口固定使用 https://api.shopbuy.top,生产调用必须使用 HTTPS。
前置检查
进入支付流程前,Agent 必须先检查微信支付技能 weixinpay 是否已安装:
- 若未安装,提示用户执行
npx -y @tenpay/weixinpay-ai-installer一键完成weixinpay插件安装,待安装完成后再继续,不要在缺少支付技能的情况下发起付费调用。 - 若已安装,直接进入下方支付流程。
支付流程
- 首次请求不要携带
X-Out-Trade-No。 - 服务会返回 HTTP
402,并在WeixinPay-Required响应头中返回支付触发标识(payment_code),同时在X-Out-Trade-No响应头中返回商户订单号。 - 将完整的
WeixinPay-Required交给微信支付技能weixinpay_pay,向用户申请本次支付授权,不要修改、截断或放进请求体。买家侧首次使用需绑定微信支付 AI 专属卡。 - 支付完成后,使用完全相同的
keyword重试,并添加请求头:X-Out-Trade-No: <商户订单号>。 - 只有 HTTP
200且响应中的fulfillment_confirmed=true、Payment-Validation存在时,才读取data。
返回字段
成功响应示例:
{
"code": 200,
"msg": "成功",
"charge": true,
"taskNo": "本次请求号",
"data": {"total": 124, "items": []}
}
code:返回码,200表示成功。msg:返回码对应描述。charge:计费标志,true表示本次请求计费,false表示不计费。taskNo:本次请求号。data.total:行政处罚记录总数。data.items:行政处罚记录数组。
data.items 字段
punishAmount:罚款金额,单位为万元。punishStatus:处罚状态;数据来源为信用中国时返回。forfeitureAmount:收缴违法所得、没收非法财物的金额,单位为万元;数据来源为信用中国时返回。publicDate:作出行政公示日期,时间戳;数据来源为国家市场监督管理总局时返回。source:数据来源,例如国家市场监督管理总局、信用中国。punishCode:行政处罚决定书文号。punishDate:作出行政处罚决定日期,时间戳。content:处罚内容。illegalType:违法行为类型。areaName:区域;数据来源为信用中国时返回。authority:作出处罚决定机关名称。punishType:处罚种类。illegalFact:违法事实。mark:备注;数据来源为国家市场监督管理总局时返回。punishBasis:处罚依据。
publicDate 和 punishDate 是 Unix 毫秒时间戳,展示时应转换为北京时间;空字符串表示该来源未提供字段。
服务端支付安全实现
本 Skill 对应的服务端已实现完整的微信支付按量付费闭环;客户端或 Agent 只需要按照“支付流程”发送和重试请求,不能自行跳过服务端验付。
订单持久化
服务端在返回 HTTP 402 之前,先持久化微信支付订单。订单至少保存:out_trade_no、total_amount、api_product=punishment_info、resource_id=api/company/punishment、pay_before、status=PENDING_PAYMENT、fulfillment_status=UNFULFILLED。
X-Out-Trade-No 验付
携带 X-Out-Trade-No 重试时,服务端会以该订单号调用微信支付「按商户订单号查单」接口,确认本次微信支付已成功:
微信支付「按商户订单号查单」
服务端以 X-Out-Trade-No 作为微信支付商户订单号 out_trade_no 查单,只有在下列条件全部满足时才允许履约:
- 微信支付返回
trade_state=SUCCESS。 - 查单返回的
out_trade_no与本地订单一致。 - 查单返回的
amount.total与本地订单金额一致。 - 本地订单的
resource_id与当前资源api/company/punishment一致。 - 查单返回的
transaction_id未被其他订单使用。 - 本地订单未取消、首次履约尚未超过
pay_before,且状态允许履约。
任一校验失败时,服务端不会返回行政处罚数据。
幂等履约与履约确认
服务端用数据库事务锁定订单,先将首次有效支付原子更新为 PENDING_CONFIRM,并保存微信支付交易单号(写入 trade_no),从而防止同一订单或同一微信支付交易被重复交付。
数据生成后,服务端保存结果快照,并将订单标记为已履约:
本地履约确认(微信支付已完成收款,无需再次调用支付接口)
付款成功后,订单更新为 fulfillment_status=FULFILLED 并向 Agent 返回 HTTP 200、资源数据和 Payment-Validation。
若资源已生成但履约确认暂时失败,订单保留 PENDING_CONFIRM 和结果快照;Agent 必须携带同一个 X-Out-Trade-No 重试,服务端不会再次查询或再次收费。已完成订单的重复请求直接返回已保存的同一结果,不重复调用数据源。
失败处理
402:支付凭证缺失、失效或订单不匹配。继续使用微信支付流程,不要把它当成业务查询失败。503:服务端微信支付配置不完整或暂时不可用,不要重复扣款。502:履约确认暂时失败,使用同一个X-Out-Trade-No重试,不要创建第二笔支付。
生产配置
WECHAT_MCHID=你的微信支付商户号
WECHAT_APPID=你的微信 AppID
WECHAT_SERIAL_NO=你的微信 API 证书序列号
WECHAT_APIV3_KEY=你的微信 APIv3 密钥
SKILLHUB_DEVELOPER_ID=你的 SkillHub 开发者 ID
生产环境必须关闭 JUMDATA_MOCK,使用真实的企业行政处罚数据配置,并通过 HTTPS 对外提供接口。