码支付API开发文档 · 下单查询回调通知签名算法接口手册

码支付官方API接口文档提供完整的RESTful接入指南, 包含统一下单接口、订单状态查询接口、退款申请接口、异步回调通知机制、 签名验证算法等详细技术说明, 并附PHP、Java、Python、Node.js多语言对接示例代码供开发者参考。

1. 接入基础说明

所有 API 请求均通过 HTTPS 协议以 POST 方式提交至统一网关入口, 请求参数与返回数据均采用标准 JSON 格式进行编码传输。 商户接入前需在控制台创建应用并获取 appid 与 appsecret 密钥对。

网关地址 https://api.mapay.example.com/v1/
请求方式 POST / GET(部分接口)
Content-Type application/x-www-form-urlencoded 或 application/json
字符编码 UTF-8
签名算法 MD5 或 HMAC-SHA256
响应格式 JSON { code, msg, data }

2. 接口签名算法

为确保接口调用安全,所有请求必须携带 sign 签名参数, 签名生成需遵循以下标准步骤以避免签名校验失败。

  1. 将所有请求参数(除 sign 本身)按参数名 ASCII 码从小到大排序(字典序);
  2. 使用 URL 键值对的格式(即 key1=value1&key2=value2…)拼接成字符串 stringA;
  3. 在 stringA 最后拼接上 &key=AppSecret 得到 stringSignTemp 字符串;
  4. 对 stringSignTemp 进行 MD5/HMAC-SHA256 运算,并将得到的字符串所有字符转换为大写,即 sign 值。
PHP 示例
// 签名函数示例
function generateSign($params, $appSecret) {
    ksort($params);
    $str = http_build_query($params) . '&key=' . $appSecret;
    return strtoupper(md5($str));
}

// 参数示例
$params = [
    'appid'     => 'MP20240001',
    'out_trade_no' => 'O202407311530001',
    'total_fee' => '19800',
    'body'      => 'VIP会员开通'
];
$sign = generateSign($params, 'YOUR_APP_SECRET');

3. 统一下单接口

POST/pay/unifiedorder

商户通过该接口创建支付订单,平台会根据支付类型参数返回对应的支付二维码链接或跳转地址。 建议订单号在商户系统内保证全局唯一性。

请求参数
字段名 类型 必填 长度 说明
appid string 32 商户应用ID,控制台创建应用后分配
out_trade_no string 64 商户订单号,系统内须唯一
total_fee int - 订单金额,单位为,不得为0
body string 128 商品标题或简单描述
pay_type string 16 支付方式:wxpay/alipay/qqpay
notify_url string 256 支付成功后异步回调通知地址
return_url string 256 电脑端支付后同步跳转地址
attach string 128 附加数据,回调时原样返回
nonce_str string 32 随机字符串,防重放攻击
sign string 32/64 按签名算法生成的签名字符串
响应示例
JSON
{
    "code": 1,
    "msg": "下单成功",
    "data": {
        "appid": "MP20240001",
        "out_trade_no": "O202407311530001",
        "trade_no": "MP20240731000012345",
        "total_fee": 19800,
        "pay_type": "wxpay",
        "code_url": "weixin://wxpay/bizpayurl?pr=AbCdEf123",
        "qr_code": "https://api.mapay.com/qrcode/xxxx.png",
        "pay_url": "https://pay.mapay.com/h5/xxxx",
        "expire_time": 1722411000,
        "nonce_str": "a8b9c0d1e2f3",
        "sign": "A1B2C3D4E5F67890123456789ABCDEF0"
    }
}

4. 订单查询接口

POST/pay/orderquery

该接口用于主动查询指定订单的实时支付状态, 建议配合回调通知机制作为兜底查询,避免因网络抖动导致的回调延迟或丢失。

字段名 类型 必填 说明
appid string 商户应用ID
out_trade_no string 二选一 商户订单号,与trade_no二选一
trade_no string 二选一 平台订单号,与out_trade_no二选一
nonce_str string 随机字符串
sign string 签名

7. 异步回调通知

订单支付成功后,码支付服务器会通过 POST 方式将支付结果主动推送到商户在下单时传入的 notify_url 地址。 商户接收后需完成验签与业务逻辑处理,并返回特定字符串应答。

字段名 类型 说明
appid string 商户应用ID
out_trade_no string 商户订单号
trade_no string 码支付平台订单号
pay_type string 支付方式:wxpay/alipay
total_fee int 订单金额(单位:分)
pay_fee int 实际付款金额(单位:分)
transaction_id string 微信/支付宝官方交易流水号
pay_time int 用户付款完成时间戳(秒)
attach string 下单时传入的附加数据,原样返回
status int 订单状态:1=支付成功 2=已关闭 3=已退款
nonce_str string 随机字符串
sign string 签名,商户需用相同算法校验

⚠️ 处理要求:商户回调接口接收到通知后,校验成功必须原样返回字符串 success,否则平台会按重试策略重复推送,最多10次。 请务必做好幂等性处理,避免同一订单重复发货。

8. 返回状态码说明

状态码 含义 常见原因与处理建议
1 接口调用成功 正常处理返回的 data 数据
0 通用失败 检查 msg 字段具体错误提示排查
1001 参数缺失 对照文档检查必填参数是否已全部传递
1002 签名错误 核对签名算法步骤、AppSecret 是否正确,注意字符编码
1003 appid无效 检查应用ID是否正确、应用状态是否正常启用
1004 订单不存在 订单号是否错误,或是否为跨应用查询
1005 订单已过期 用户未在规定时间内完成付款,需重新下单
1006 通道维护中 当前支付通道临时维护,请稍后重试或切换备用通道
1007 IP白名单拦截 在控制台将您的服务器出口IP加入白名单
1008 请求过于频繁 触发限流策略,请降低调用频率或联系客服调高阈值