基址: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 | 金额 |
| status | paid |
| transaction_id | 交易号 |
| attach | 透传参数 |
| timestamp / nonce / sign | 使用你的 API Secret 验签(同上述算法) |
请在处理成功后返回任意内容;建议校验 sign 后再执行业务逻辑。