1
官方服务接口
官方服务接口暂未上线,敬请期待
2
易支付兼容接口
兼容易支付、CodePay、VPay 等支付协议
2.1 概览
- 协议:EasyPay / CodePay / VPay 兼容协议
- 服务类型:仅支持
type=epay - 网关基址:
https://credit.linux.do/epay - 订单有效期:取系统配置
merchant_order_expire_minutes(平台端设置)
2.2 常见错误
不支持的请求类型:type仅允许epay签名验证失败:参与签名字段与请求体需一致,密钥直接拼接金额必须大于0/积分小数位数不能超过2位订单已过期:超出系统配置有效期订单不存在或已完成:订单号错误、已退回或已完成余额不足:余额退回时用户积分不足
2.3 对接流程
- 控制台创建 API Key,记录
pid、key,配置回调地址 - 按“签名算法”生成
sign,调用/pay/submit.php创建积分流转服务并跳转认证界面 - 可通过
/api.php轮询结果,或等待异步回调 - 退回服务时,携带同一
trade_no和原积分数量,调用积分退回接口 - 回调验签通过后返回
success完成闭环
2.4 鉴权与签名
2.4.1 API Key
pid:Client IDkey:Client Secret(妥善保管)notify_url:回调地址, 使用创建应用时设置的notify_url;请求体中的 notify_url 仅参与签名,不会覆盖创建应用时设置的 notify_url。
2.4.2 签名算法
- 取所有非空字段(排除
sign、sign_type字段) - 将上述字段按 ASCII 升序,依次拼成
k1=v1&k2=v2 - 在末尾追加应用密钥:
k1=v1&k2=v2{secret} - 整体进行 MD5,取小写十六进制作为
sign
payload="money=10&name=Test&out_trade_no=M20250101&pid=001&type=epay"
sign=$(echo -n "${payload}${SECRET}" | md5) # 输出小写2.5 积分流转服务
- 方法:POST
/pay/submit.php - 编码:
application/x-www-form-urlencoded - 成功:验签通过后,平台自动创建积分流转服务,并跳转到认证界面(Location=
https://credit.linux.do/paying?order_no=...) - 失败:返回 JSON
{"error_msg":"...", "data":null}
| 参数 | 必填 | 说明 |
|---|---|---|
| pid | 是 | Client ID |
| type | 是 | 固定 epay |
| out_trade_no | 否 | 业务单号,建议全局唯一 |
| name | 是 | 标题,最多 64 字符 |
| money | 是 | 积分数量,最多 2 位小数 |
| notify_url | 否 | 仅参与签名,不会覆盖创建应用时设置的 notify_url |
| return_url | 否 | 仅参与签名,不会覆盖创建应用时设置的 return_url |
| device | 否 | 终端标识,可选 |
| sign | 是 | 按“签名算法”生成 |
| sign_type | 否 | 固定 MD5 |
请求示例:
curl -X POST https://credit.linux.do/epay/pay/submit.php \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "pid=001" \
-d "type=epay" \
-d "out_trade_no=M20250101" \
-d "name=Test" \
-d "money=10" \
-d "sign=${SIGN}" \
-d "sign_type=MD5"2.6 订单查询
- 方法:GET
/api.php - 认证:
pid+key - 说明:
out_trade_no必填;act可传order,后端不强校验。
| 参数 | 必填 | 说明 |
|---|---|---|
| act | 否 | 可选字段,建议 order |
| pid | 是 | Client ID |
| key | 是 | Client Secret |
| out_trade_no | 是 | 业务单号 |
成功响应:
{
"code": 1,
"msg": "查询订单号成功!",
"trade_no": "M20250101",
"out_trade_no": "M20250101",
"type": "epay",
"pid": "001",
"addtime": "2025-01-01 12:00:00",
"endtime": "2025-01-01 12:01:30",
"name": "Test",
"money": "10",
"status": 1
}补充:status 1=成功,0=失败/处理中;不存在会返回 HTTP 404 且 {"code":-1,"msg":"服务不存在或已完成"}。
2.7 订单退款
- 方法:POST
/api.php - 编码:
application/json或application/x-www-form-urlencoded - 限制:仅支持对已成功的积分流转服务进行积分的全额退回
| 参数 | 必填 | 说明 |
|---|---|---|
| pid | 是 | Client ID |
| key | 是 | Client Secret |
| trade_no | 是 | 编号 |
| money | 是 | 必须等于原积分流转服务的积分数量 |
| out_trade_no | 否 | 业务单号(兼容) |
响应:
{ "code": 1, "msg": "退款成功" }常见失败:服务不存在/未认证、金额不合法(<=0 或小数超过 2 位)。
2.8 异步通知(认证成功)
- 触发:认证成功后;失败自动重试,最多 5 次(单次 30s 超时)
- 目标:创建应用时设置的 notify_url
- 方式:HTTP GET
| 参数 | 说明 |
|---|---|
| pid | Client ID |
| trade_no | 编号 |
| out_trade_no | 业务单号 |
| type | 固定 epay |
| name | 标题 |
| money | 积分数量,最多 2 位小数 |
| trade_status | 固定 TRADE_SUCCESS |
| sign_type | MD5 |
| sign | 按“签名算法”生成 |
应用需返回 HTTP 200 且响应体为 success(大小写不敏感),否则视为失败并继续重试。