协议规则
请求数据格式:
application/x-www-form-urlencoded返回数据格式:
JSON签名算法:
MD5字符编码:
UTF-8
页面跳转支付
该接口适用于前端页面发起支付,支持 Form 表单跳转或 URL 拼接跳转。
接口地址:https://域名/submit.php请求方式:POST 或 GET(推荐 POST,降低劫持、屏蔽风险)
请求参数
表格
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 商户 ID | pid | 是 | Int | 1001 | 商户编号 |
| 支付方式 | type | 否 | String | alipay | 支付渠道;不传则跳转统一收银台 |
| 商户订单号 | out_trade_no | 是 | String | 20160806151343349 | 商户本地订单编号 |
| 异步通知地址 | notify_url | 是 | String | http://www.pay.com/notify_url.php | 服务器异步回调地址 |
| 页面跳转地址 | return_url | 是 | String | http://www.pay.com/return_url.php | 用户支付完成后页面跳转地址 |
| 商品名称 | name | 是 | String | VIP 会员 | 超过 127 字节自动截断 |
| 商品金额 | money | 是 | String | 1.00 | 金额单位:元,保留 2 位小数 |
| 业务扩展参数 | param | 否 | String | 自定义参数,支付回调原样返回,无则留空 | |
| 签名字符串 | sign | 是 | String | 202cb962ac59075b964b07152d234b70 | 签名结果 |
| 签名类型 | sign_type | 是 | String | MD5 | 固定 MD5 |
API 接口支付
后端服务端调用接口,返回支付跳转链接、二维码链接或小程序唤起地址。
接口地址:https://域名/mapi.php请求方式:POST
请求参数
表格
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 商户 ID | pid | 是 | Int | 1001 | 商户编号 |
| 支付方式 | type | 是 | String | alipay | 支付渠道 |
| 商户订单号 | out_trade_no | 是 | String | 20160806151343349 | 商户本地订单编号 |
| 异步通知地址 | notify_url | 是 | String | http://www.pay.com/notify_url.php | 服务器异步回调地址 |
| 页面跳转地址 | return_url | 否 | String | http://www.pay.com/return_url.php | 支付完成页面跳转地址 |
| 商品名称 | name | 是 | String | VIP 会员 | 超过 127 字节自动截断 |
| 商品金额 | money | 是 | String | 1.00 | 金额单位:元,保留 2 位小数 |
| 用户 IP 地址 | clientip | 是 | String | 192.168.1.100 | 用户客户端 IP |
| 设备类型 | device | 否 | String | pc | 读取 UA 识别,不传默认 pc |
| 业务扩展参数 | param | 否 | String | 自定义参数,回调原样返回,无则留空 | |
| 签名字符串 | sign | 是 | String | 202cb962ac59075b964b07152d234b70 | 签名结果 |
| 签名类型 | sign_type | 是 | String | MD5 | 固定 MD5 |
接口返回 JSON
表格
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|
| 返回状态码 | code | Int | 1 | 1 = 成功,其他为失败 |
| 返回信息 | msg | String | 失败时返回错误说明 | |
| 平台订单号 | trade_no | String | 20160806151343349 | 平台生成订单号 |
| 支付跳转链接 | payurl | String | https://xxx | 存在此字段直接跳转支付 |
| 二维码链接 | qrcode | String | weixin://xxx | 存在此字段生成二维码 |
| 小程序跳转地址 | urlscheme | String | weixin://dl/business/?ticket=xxx | JS 唤起微信小程序支付 |
备注:payurl、qrcode、urlscheme 同一请求只会返回其中一个字段
支付结果通知
通知分为两类:服务器异步通知notify_url、前端页面跳转通知return_url请求方式:GET
回调参数
表格
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 商户 ID | pid | 是 | Int | 1001 | 商户编号 |
| 平台订单号 | trade_no | 是 | String | 20160806151343349021 | 聚合平台订单号 |
| 商户订单号 | out_trade_no | 是 | String | 20160806151343349 | 商户本地订单号 |
| 支付方式 | type | 是 | String | alipay | 支付渠道 |
| 商品名称 | name | 是 | String | VIP 会员 | 商品标题 |
| 商品金额 | money | 是 | String | 1.00 | 支付金额 |
| 支付状态 | trade_status | 是 | String | TRADE_SUCCESS | 仅TRADE_SUCCESS代表支付成功 |
| 业务扩展参数 | param | 否 | String | 自定义回传参数 | |
| 签名字符串 | sign | 是 | String | 202cb962ac59075b964b07152d234b70 | 签名校验串 |
| 签名类型 | sign_type | 是 | String | MD5 | 固定 MD5 |
重要:收到异步通知,业务处理完成后,页面直接输出字符串 success,代表接收成功。
MD5 签名算法
将待签名全部参数,按照参数名 ASCII 码升序 (a-z)排序;
sign、sign_type、空值参数不参与签名排序后拼接为 URL 键值对格式:
a=b&c=d&e=f,参数值不要 URL 编码将拼接字符串末尾拼接商户密钥 KEY,执行 MD5,结果转为小写。公式:
sign = md5(参数串 + KEY)
提示:
+代表字符串拼接,不是文本加号字符
签名示例、各语言 Demo 代码,可以前往【软件下载】获取 SDK。
渠道与设备枚举
支付方式列表
表格
| 调用值 | 描述 |
|---|---|
| alipay | 支付宝 |
| wxpay | 微信支付 |
| qqpay | QQ 钱包 |
设备类型列表
表格
| 调用值 | 描述 |
|---|---|
| pc | 电脑浏览器 |
| mobile | 手机浏览器 |
| 手机 QQ 内置浏览器 | |
| 微信内置浏览器 | |
| alipay | 支付宝客户端 |
| jump | 仅返回支付跳转 URL |
API:查询商户信息
接口地址:https://域名/api.php?act=query&pid={商户ID}&key={商户密钥}
请求参数
表格
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 操作类型 | act | 是 | String | query | 固定值 query |
| 商户 ID | pid | 是 | Int | 1001 | 商户编号 |
| 商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | 商户密钥 |
返回结果
表格
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|
| 返回状态码 | code | Int | 1 | 1 成功,其他失败 |
| 商户 ID | pid | Int | 1001 | 商户编号 |
| 商户密钥 | key | String(32) | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | 密钥串 |
| 商户状态 | active | Int | 1 | 1 正常,0 封禁 |
| 商户余额 | money | String | 0.00 | 账户余额 |
| 结算方式 | type | Int | 1 | 1 支付宝,2 微信,3QQ,4 银行卡 |
| 结算账号 | account | String | admin@pay.com | 收款结算账号 |
| 结算姓名 | username | String | 张三 | 结算实名 |
| 订单总数 | orders | Int | 30 | 历史订单总量 |
| 今日订单 | order_today | Int | 15 | 当日订单数量 |
| 昨日订单 | order_lastday | Int | 15 | 昨日订单数量 |
API:查询单个订单
接口地址:https://域名/api.php?act=order&pid={商户ID}&key={商户密钥}&out_trade_no={商户订单号}
请求参数
表格
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 操作类型 | act | 是 | String | order | 固定值 order |
| 商户 ID | pid | 是 | Int | 1001 | 商户编号 |
| 商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | 商户密钥 |
| 平台订单号 | trade_no | 选填 | String | 20160806151343312 | 平台订单号 |
| 商户订单号 | out_trade_no | 选填 | String | 20160806151343349 | 商户本地订单号 |
提示:
trade_no、out_trade_no二选一即可;两个同时传入,优先使用平台订单号trade_no
返回结果
表格
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|
| 返回状态码 | code | Int | 1 | 1 成功,其他失败 |
| 返回信息 | msg | String | 查询订单号成功! | 提示文本 |
| 平台订单号 | trade_no | String | 2016080622555342651 | 平台订单编号 |
| 商户订单号 | out_trade_no | String | 20160806151343349 | 商户本地订单号 |
| 第三方订单号 | api_trade_no | String | 20160806151343349 | 微信 / 支付宝原始单号 |
| 支付方式 | type | String | alipay | 支付渠道 |
| 商户 ID | pid | Int | 1001 | 商户编号 |
| 创建订单时间 | addtime | String | 2016-08-06 22:55:52 | 下单时间 |
| 交易完成时间 | endtime | String | 2016-08-06 22:55:52 | 支付完成时间 |
| 商品名称 | name | String | VIP 会员 | 商品标题 |
| 商品金额 | money | String | 1.00 | 订单金额 |
| 支付状态 | status | Int | 0 | 1 支付成功,0 未支付 |
| 业务扩展参数 | param | String | 自定义回传参数 | |
| 付款账号 | buyer | String | 付款方账号 |
API:批量查询订单
接口地址:https://域名/api.php?act=orders&pid={商户ID}&key={商户密钥}
请求参数
表格
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 操作类型 | act | 是 | String | orders | 固定值 orders |
| 商户 ID | pid | 是 | Int | 1001 | 商户编号 |
| 商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | 商户密钥 |
| 查询条数 | limit | 否 | Int | 20 | 最大 50 条 |
| 页码 | page | 否 | Int | 1 | 分页页码 |
返回结果
表格
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|
| 返回状态码 | code | Int | 1 | 1 成功,其他失败 |
| 返回信息 | msg | String | 查询结算记录成功! | 提示文本 |
| 订单列表 | data | Array | 订单数组,数组内结构参考【查询单个订单】 |




