小艾易支付小艾易支付开发文档
首页 商户登录 注册商户

接入小艾易支付

免签约、即时到账。支持支付宝、微信支付、QQ 钱包,提供「页面跳转」和「API 接口」两种接入方式,最快 5 分钟跑通第一笔订单。

MD5 签名GET / POSTUTF-8金额单位:元

01快速开始

注册商户并通过审核后,在「商户中心 → 商户信息」里拿到两个值:

名称说明示例
商户 ID(pid)数字编号,用来标识你的账户10001
商户密钥(key)32 位字符串,只能放在服务端,用于签名a1b2c3d4e5f6...
密钥等同于密码,不要写进前端 JS / 小程序 / APP 包体里,否则别人可以伪造你的订单。

接口地址

用途地址
页面跳转支付https://pay.kutyar.cn/submit.php
API 接口支付https://pay.kutyar.cn/mapi.php
订单 / 结算查询https://pay.kutyar.cn/api.php?act=query

支付方式 type 取值:alipay 支付宝、wxpay 微信支付、qqpay QQ 钱包。

02签名规则

所有接口都要带 sign,算法固定为 MD5 小写 32 位:

  • 把除 sign、sign_type 以外的参数按 参数名 ASCII 升序排序;
  • 跳过空值,拼成 k1=v1&k2=v2&k3=v3(末尾不带 &);
  • 在末尾直接接上商户密钥,做 MD5,取小写。
// PHP 示例
ksort($param);
$str = '';
foreach ($param as $k => $v) {
    if ($k != 'sign' && $k != 'sign_type' && $v != '') {
        $str .= $k . '=' . $v . '&';
    }
}
$str  = rtrim($str, '&');
$sign = md5($str . $MERCHANT_KEY);

以 pid=10001, type=alipay, money=1.00, out_trade_no=T20261026001、密钥 testkey 为例:

待签名串:money=1.00&out_trade_no=T20261026001&pid=10001&type=alipay
sign = md5("money=1.00&out_trade_no=T20261026001&pid=10001&type=alipaytestkey")
金额一定要传两位小数的字符串(1.00,不要写 1),否则签名会对不上。

03页面跳转支付 推荐

浏览器直接跳转到 submit.php(GET 或 POST 都行),用户会看到收银台页面并完成支付。

参数必填说明
pid是商户 ID
type是alipay / wxpay / qqpay
out_trade_no是你的订单号,同一订单号不要重复提交
notify_url是异步通知地址,必须是公网可访问的完整 URL
return_url是支付完成后用户跳回的页面
name是商品名称,最长 127 字节
money是金额,单位元,两位小数
sitename否站点名称,显示在收银台
param否自定义参数,通知时会原样带回
sign是签名
sign_type是固定 MD5
<!-- 最简单的接入方式:拼好参数直接跳转 -->
https://pay.kutyar.cn/submit.php
  ?pid=10001
  &type=alipay
  &out_trade_no=T20261026001
  &notify_url=https://your.site/pay/notify
  &return_url=https://your.site/pay/return
  &name=VIP会员
  &money=1.00
  &sign=xxxx
  &sign_type=MD5

04API 接口支付

参数与页面跳转一致,另外多两个可选参数;返回 JSON,适合在 App、小程序里自己渲染收银台。

参数必填说明
clientip否用户真实 IP,风控用
device否pc(默认)/ mobile / wechat / alipay / qq

成功时返回:

{
  "code": 1,
  "trade_no": "2026102614301277123",
  "payurl": "https://qr.alipay.com/xxx",   // 部分通道返回
  "qrcode": "https://pay.kutyar.cn/qrcode/xxx"
}

失败时 code 为负数,msg 是原因:

{ "code": -1, "msg": "签名校验失败,请返回重试!" }
拿到 payurl 后自己生成二维码或跳转即可;如果是网页环境,直接跳 payurl 也行。

05异步通知(notify_url)

用户支付成功后,平台会以 GET 方式请求你填的 notify_url,参数如下:

参数说明
pid商户 ID
trade_no平台订单号
out_trade_no你的订单号
type支付方式名称
name商品名称
money实际支付金额
trade_status固定 TRADE_SUCCESS
param下单时传的自定义参数(可选)
sign / sign_type签名,规则同上

处理要求

  • 先验签,签名不对直接返回失败;
  • 幂等:同一 out_trade_no 可能收到多次通知,处理过就不要再发货;
  • 校验金额与订单号是否与本地一致,防止伪造;
  • 处理成功输出纯文本 success(不要带 HTML),否则平台会重复通知。
// notify.php 示例
$key  = '你的商户密钥';
$sign = $_GET['sign'];
unset($_GET['sign'], $_GET['sign_type']);
ksort($_GET);
$str = urldecode(http_build_query($_GET));
if (md5($str . $key) !== $sign) { exit('fail'); }

if ($_GET['trade_status'] === 'TRADE_SUCCESS') {
    // TODO: 校验订单号/金额 → 标记已支付 → 发货
}
echo 'success';

06同步跳转(return_url)

支付完成后浏览器会跳回 return_url,参数与异步通知相同。这一跳只用于展示「支付成功」页面,不要在这里发货——用户可能直接关掉页面。

07订单查询

服务端查询商户状态与订单量(不需要签名,用密钥字段鉴权):

GET https://pay.kutyar.cn/api.php?act=query&pid=10001&key=你的密钥
{
  "code": 1,
  "pid": 10001,
  "active": 1,
  "money": "128.50",
  "orders": 26,
  "orders_today": 3,
  "orders_lastday": 5
}

结算记录查询用 act=settle,参数相同。

08常见错误

提示原因 / 处理
签名校验失败参数顺序、空值过滤、金额格式(要两位小数)任一处不一致;确认密钥正确
订单号格式不正确只允许字母、数字、. _ - |
该订单已完成支付同一 out_trade_no 不要重复下单,换新订单号
该域名不可发起支付去商户中心「授权域名」里把 notify_url 的域名加白
商户已封禁 / 未通过审核联系客服处理
最小/最大支付金额超出平台单笔限额,改金额
还有问题?点右下角客服或到「商户中心 → 帮助」提交工单,附上订单号和请求参数,处理更快。