---
name: company-pay-epay-integration
description: 将 NewAPI、Sub2API 或自定义网站接入公司支付台的易支付 V1 接口，实现下单、验签、幂等入账和订单查询；也用于排查签名及回调地址错误。
---

# 公司支付台对接

服务根地址：https://pay.strcpy.cn

先读取 [完整接口文档](https://pay.strcpy.cn/docs/integration.md)，按实际接口字段和错误处理实现。人类可阅读 [对接文档页面](https://pay.strcpy.cn/docs)。本 Skill 无需后台登录；不提供网站凭据。

## 接入步骤

1. 获取接入网站的 PID、商户 KEY、实际通知与返回地址。KEY 保存在服务端配置，支付宝私钥不用于易支付签名。
2. NewAPI 使用其易支付配置；Sub2API 选择 EasyPay，通道 ID 留空。服务地址填根地址，后台登记实际回调路径。不同版本的 NewAPI 充值返回路径可能不同。
3. 自定义网站使用 `/mapi.php` 表单下单并跳转到 `payurl`，或 `/submit.php` 跳转下单。支持 `/xpay/epay/` 前缀。先在隔离测试中验证，真实付款按用户明确安排执行。
4. 异步通知验签、核对 PID / 订单号 / 整数分金额 / 支付类型 / 交易状态，在事务内幂等入账；提交成功后返回 HTTP 200、纯文本 `success`。
5. 下单超时先用原网站订单号查询 `/api.php`，避免重复创建业务订单。查单只返回当前 PID 的已记录付款状态。

## 不可省略的协议规则

- 下单签名：表单解码一次，排除一级 `sign`、`sign_type` 与空字符串值，其他一级字段全部按字段名升序拼接 `k=v&k=v`，末尾直接追加商户 KEY，对 UTF-8 计算 MD5 小写十六进制。生成签名后再做表单编码。
- 一级新增字段自动签名；URL、JSON、N 层嵌套数据作为完整字符串，不能递归展开或再解码。不要用固定字段白名单验签。
- 重复一级参数拒绝；POST 下单只用 form，不混入 URL 查询参数。内层 `&保留字段=` 取值冲突会被拒绝，详见完整文档。
- 回调登记值不带查询参数；实际请求中的协议、域名、端口和路径必须匹配。允许 HTTP / HTTPS，通知需公网可达。
- 商品名最长 127 个 UTF-8 字节；网站订单号为 1–64 个英文字母、数字、下划线或短横线。金额为元的字符串，业务金额用整数分。
- `trade_no` 是网关订单号，不是支付宝交易号。支付链接、前端跳转与 `status=success` 不证明已支付。
- `/api.php` 使用 `act=order`、`pid`、`key` 和订单号直接校验凭据。读取 `code`；HTTP 200 不代表业务成功。`status=1` 才表示已记录付款，退款待核对为 `code=-1`。
- 付款与通知状态独立；通知失败不允许再次入账。重复合法通知返回 `success`，写入失败不得返回 `success`。本协议不发起退款，也不发送退款扣回通知。

## 验收

验证有效下单、金额和签名篡改被拒绝、未知一级字段正确签名、嵌套返回参数保留、回调路径匹配、重复通知只入账一次、超时后原订单查询、已支付但通知失败仍显示已支付。示例凭据仅供隔离测试；不要把 KEY 放进浏览器脚本、日志或公开文档。

完成后报告接入地址、配置字段、已验证流程与仍需实际付款验收的项目，不把本地签名成功或生成链接当作付款成功。
