V1 API 对接文档
MD5 签名接口(submit.php / mapi.php)。RSA 签名请查看 V2 开发文档。
商户 ID 与密钥 需登录后在商户中心 · API 对接查看;V2 还需生成商户 RSA 密钥对。
平台 RSA 公钥(验签 V2 响应与 V2 异步通知):
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoscte24jxeynbfwLHlLwP/OhFvcnYFw4YvC/j5WJSWUEgYIJANuXKNF+utykCylCEK5pl9o27FCtozPDux9jDvEBdoJveJc6/k5/MIAh0UBjzivjtoZ2PhWwrFLnentbjV7lhlVao9BrqLp5t5XaIyhDHlywoRwOtKlKr2HN77hWirZC2tCcTlpdfrHX/yHcTz/cwMMF7j1LCA3loPjsH0q0DkFcVX3GuXkTkGvkEMhDw2f5hFDthjPHzbQ2TQAxketwaV+zwM4nOHOxOqqsG6HyOwGc13Qv0Py5ycs2fzn62M5CuPASLJx/e1/ZITPvKpQY4a8+5AdzxQ5FzaaZJQIDAQAB
V1 页面跳转支付(MD5)
请求地址: https://pay.xiaoil.com/submit.php
请求方式: POST / GET
| 参数 | 说明 | 必填 |
|---|---|---|
| pid | 商户ID | 是 |
| type | 支付方式 alipay / wxpay / qqpay | 否 |
| out_trade_no | 商户订单号 | 是 |
| notify_url | 异步通知地址 | 是 |
| return_url | 同步跳转地址 | 是 |
| name | 商品名称 | 是 |
| money | 金额(元) | 是 |
| param | 自定义参数,回调原样返回 | 否 |
| sign | MD5 签名 | 是 |
| sign_type | 固定值 MD5 | 是 |
V1 API 支付(MD5)· mapi.php
请求地址: https://pay.xiaoil.com/mapi.php
请求方式: POST
返回 JSON:code=1,含 payurl / qrcode / urlscheme / html 之一(V1 格式,无平台 RSA 签名)。
| 参数 | 说明 | 必填 |
|---|---|---|
| pid | 商户ID | 是 |
| type | 支付方式 alipay / wxpay / qqpay | 是(scan 除外) |
| out_trade_no | 商户订单号 | 是 |
| notify_url | 异步通知地址 | 是 |
| return_url | 同步跳转(可选) | 否 |
| name | 商品名称 | 是 |
| money | 金额(元) | 是 |
| clientip | 用户 IP | 是 |
| device | pc / mobile / qq / wechat / alipay / app | 否 |
| method | web / jump / jsapi / scan | 否 |
| sign | MD5 签名 | 是 |
| sign_type | 固定值 MD5 | 是 |
V2 接口(RSA)
V2 统一下单、查单、签名规则等请查看独立开发文档:
地址:/doc/index.php?page=index(统一下单 /api/pay/create,订单查询 /api/pay/query)
签名算法(V1 MD5)
1. 参数按 ASCII 排序
2. 拼接 key=value& 格式(空值和 sign、sign_type 不参与)
3. 去掉末尾 & 后,直接拼接商户密钥 key
4. 对结果做 MD5,得到 sign
异步通知
支付成功后,系统会向 notify_url 发起 GET 请求,携带订单号、金额、签名等参数。
商户服务器校验签名后处理业务,并返回纯文本 success,否则系统将按策略重试通知。
查询接口
V1(MD5,GET): https://pay.xiaoil.com/api.php?act=order&pid=...&key=...&out_trade_no=...
V2 查单见 V2 开发文档 · 订单查询。
PHP 示例
$pid = "1000";
$key = "your_merchant_key";
$data = [
"pid" => $pid,
"type" => "alipay",
"out_trade_no" => date("YmdHis") . rand(1000, 9999),
"notify_url" => "https://your.site/notify.php",
"return_url" => "https://your.site/return.php",
"name" => "测试商品",
"money" => "0.01",
];
ksort($data);
$signStr = "";
foreach ($data as $k => $v) {
if ($v !== "" && $k !== "sign" && $k !== "sign_type") {
$signStr .= $k . "=" . $v . "&";
}
}
$data["sign"] = md5(rtrim($signStr, "&") . $key);
$data["sign_type"] = "MD5";
// POST 到 https://pay.xiaoil.com/submit.php