商户 API 接口文档

基址:http://pay.ingu.cn/api/v1 | 所有接口均为 POST,返回 JSON。

一、鉴权方式

每个请求需携带以下参数,并使用你的 API Secret 签名:

参数说明
appkey你的 API Key(后台获取)
timestamp当前 Unix 时间戳(秒),有效期 5 分钟,用于防重放
nonce随机字符串,5 分钟内不可重复
sign签名,见下方算法

签名算法:将除 sign 外的所有参数按参数名 ASCII 升序排列,拼接为 key=value&key=value,末尾直接拼接 API_SECRET(无连接符),取 MD5 32 位小写。

<?php
function sign($params, $secret){
    unset($params['sign']);
    ksort($params);
    $arg = '';
    foreach ($params as $k => $v) {
        if ($v === '' || $v === null) continue;
        $arg .= ($arg ? '&' : '')."$k=$v";
    }
    return md5($arg . $secret);
}

二、创建支付订单

POST http://pay.ingu.cn/api/v1/order/create

参数必填说明
out_trade_no是商户订单号,字母数字及 _-*,最长 32 位
name是商品名称,最长 128 字符
money是金额(元),如 9.90
type否wechat / alipay / unionpay / auto(默认 auto)
notify_url否支付成功异步通知地址(缺省用商户默认)
return_url否支付后跳转地址
attach否透传参数,回调原样返回

请求示例:

curl -X POST "http://pay.ingu.cn/api/v1/order/create" \
  -d "appkey=ingu_xxx" \
  -d "timestamp=1700000000" \
  -d "nonce=abc123" \
  -d "sign=md5签名值" \
  -d "out_trade_no=ORDER_001" \
  -d "name=会员充值" \
  -d "money=9.90" \
  -d "type=wechat"

返回示例:

{
  "code": 0,
  "msg": "success",
  "data": {
    "order_no": "20261026...",
    "trade_order_id": "ORDER_001",
    "amount": "9.90",
    "type": "wechat",
    "status": "pending",
    "pay_url": "https://api.xunhupay.com/...",
    "qr_url": "https://api.xunhupay.com/.../qrcode"
  }
}

PC 端可展示 qr_url 二维码或 pay_url 跳转链接;手机端直接跳转 pay_url 即可。

三、查询订单

POST http://pay.ingu.cn/api/v1/order/query

参数必填说明
out_trade_no是商户订单号

返回 data.status:pending(待支付)/ paid(已支付)。

四、关闭订单

POST http://pay.ingu.cn/api/v1/order/close

参数必填说明
out_trade_no是商户订单号(仅未支付可关闭)

五、商户异步通知(平台 → 你的服务器)

订单支付成功后,平台以 表单 POST 方式请求你的 notify_url,字段如下:

参数说明
trade_order_id商户订单号
order_no平台订单号
amount金额
statuspaid
transaction_id交易号
attach透传参数
timestamp / nonce / sign使用你的 API Secret 验签(同上述算法)

请在处理成功后返回任意内容;建议校验 sign 后再执行业务逻辑。