ePay V2 接口文档整理
1. 协议规则
| 项目 | 值 |
|---|
| 请求数据格式 | application/x-www-form-urlencoded |
| 返回数据格式 | JSON |
| 签名算法 | SHA256WithRSA |
| 字符编码 | UTF-8 |
2. V2 升级说明
- V2 全面使用 RSA 签名,V1 保留 MD5 签名。
- V2 改用新的接口地址,支持退款、代付等能力。
- V2 增加
timestamp 参数和返回值,用于时间戳校验。
3. RSA 密钥对
- 在商户后台的 API 信息页面生成商户 RSA 密钥对。
- 商户需要妥善保管私钥。
- 对接时通常会同时使用平台公钥和商户私钥。
4. 签名规则
4.1 请求签名
- 取所有非空参数。
- 排除
sign、sign_type。 - 排除数组、文件、二进制等非普通字段。
- 按参数名 ASCII 升序排序。
- 以
k=v&k2=v2... 的方式拼接原文。 - 使用商户私钥进行
SHA256WithRSA 签名。
4.2 验签规则
- 按相同规则整理原文。
- 使用平台公钥验证签名。
- 请求和响应都应做签名校验。
5. 支付方式列表
| 调用值 | 描述 |
|---|
alipay | 支付宝 |
wxpay | 微信支付 |
qqpay | QQ 钱包 |
6. 设备类型列表
| 调用值 | 描述 |
|---|
pc | 电脑浏览器 |
mobile | 手机浏览器 |
qq | 手机 QQ 内浏览器 |
wechat | 微信内浏览器 |
alipay | 支付宝客户端 |
7. 接口总览
| 入口 | 说明 |
|---|
submit.php / /api/pay/submit | 页面跳转支付 |
/api/pay/create | API 创建订单 |
/api/pay/query | 查询订单 |
/api/pay/notify | 支付结果通知 |
/api/pay/refund | 退款 |
/api/pay/refundquery | 退款查询 |
/api/pay/close | 关闭订单 |
/api/merchant/info | 查询商户信息 |
/api/merchant/orders | 查询商户订单 |
/api/transfer/submit | 提交转账 |
/api/transfer/query | 查询转账 |
/api/transfer/balance | 查询转账余额 |
8. 页面跳转支付
8.1 接口说明
- URL:
http://www.pay.com/api/pay/submit - 用途:前台页面跳转支付
- 请求方式:
POST type 可不传,不传时进入收银台
8.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 支付方式 | 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会员 | 商品名称 |
| 商品金额 | money | 是 | String | 1.00 | 单位:元 |
| 业务扩展参数 | param | 否 | String | | 支付后原样返回 |
| 渠道ID | channel_id | 否 | String | 1001 | 指定支付渠道 |
| 时间戳 | timestamp | 是 | String | 1713660000 | 用于时间校验 |
| 签名字符串 | sign | 是 | String | ... | 签名结果 |
| 签名类型 | sign_type | 是 | String | RSA | 签名类型 |
9. API 创建订单
9.1 接口说明
- URL:
http://www.pay.com/api/pay/create - 用途:服务器端统一创建订单
- 请求方式:
POST
9.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 接口类型 | method | 是 | String | web | web、h5、jump、jsapi、app、scan、mini、mp |
| 设备类型 | device | 否 | String | pc | pc、mobile、qq、wechat、alipay |
| 支付方式 | 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会员 | 商品名称 |
| 商品金额 | money | 是 | String | 1.00 | 单位:元 |
| 用户IP地址 | clientip | 否 | String | 127.0.0.1 | 用户发起支付的 IP |
| 业务扩展参数 | param | 否 | String | | 支付后原样返回 |
| 授权码 | auth_code | 否 | String | | JSAPI / 刷脸类场景使用 |
| 微信 OpenID | openid / sub_openid / wx_openid | 否 | String | | 微信 JSAPI/公众号支付身份 |
| 微信小程序 OpenID | mini_openid | 否 | String | | 微信小程序支付身份 |
| 支付宝用户 ID | buyer_id / buyer_open_id | 否 | String | | 支付宝 JSAPI/小程序支付身份 |
| 应用 ID | sub_appid / op_app_id | 否 | String | | 服务商或代调用场景应用 ID |
| 渠道ID | channel_id | 否 | String | 1001 | 指定通道 |
| 时间戳 | timestamp | 是 | String | 1713660000 | 用于时间校验 |
| 签名字符串 | sign | 是 | String | ... | 签名结果 |
| 签名类型 | sign_type | 是 | String | RSA | 签名类型 |
9.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 0 | 0 为成功,其它值为失败 |
| 返回信息 | msg | String | success | 提示信息 |
| 平台订单号 | trade_no | String | 2016080622555342651 | 易支付订单号 |
| 返回类型 | pay_type | String | qrcode | 返回内容类型 |
| 支付内容 | pay_info | Mixed | | 跳转链接、二维码内容或 JSAPI 参数 |
| 时间戳 | timestamp | String | 1713660000 | 返回时间戳 |
| 签名字符串 | sign | String | ... | 签名结果 |
| 签名类型 | sign_type | String | RSA | 签名类型 |
9.4 pay_type 说明
| 值 | 说明 |
|---|
jump | 跳转链接 |
html | HTML 片段 |
qrcode | 二维码内容 |
urlscheme | 小程序 URL Scheme |
jsapi | JSAPI 参数 |
app | APP 调起参数 |
scan | 扫码支付结果信息 |
identity | 需要先跳转身份承接页获取 openid、mini_openid 或 buyer_id |
9.5 MPAY 身份授权扩展
当前 MPAY 实现中,V2 创建订单如果路由到需要用户身份的产品,例如微信公众号、微信小程序、支付宝小程序,但请求没有传 openid、mini_openid、buyer_id 等字段,会返回身份承接地址:
{
"code": 0,
"msg": "identity_required",
"trade_no": "",
"pay_type": "identity",
"pay_info": "http://example.com/cashier/identity/xxx",
"identity_required": 1,
"identity_url": "http://example.com/cashier/identity/xxx",
"resume_token": "xxx",
"timestamp": "1778810000",
"sign": "...",
"sign_type": "RSA"
}
调用方收到 identity_required=1 后,应跳转 identity_url。页面跳转支付 /api/pay/submit 遇到身份缺失时会直接重定向到该承接页。
10. 订单查询
10.1 接口说明
- URL:
http://www.pay.com/api/pay/query - 请求方式:
POST
10.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 平台订单号 | trade_no | 二选一 | String | 2016080622555342651 | 易支付订单号 |
| 商户订单号 | out_trade_no | 二选一 | String | 20160806151343349 | 商户系统内部订单号 |
| 时间戳 | timestamp | 是 | String | 1713660000 | 用于时间校验 |
| 签名字符串 | sign | 是 | String | ... | 签名结果 |
| 签名类型 | sign_type | 是 | String | RSA | 签名类型 |
10.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 0 | 0 为成功,其它值为失败 |
| 返回信息 | msg | String | success | 提示信息 |
| 平台订单号 | trade_no | String | | 平台订单号 |
| 商户订单号 | out_trade_no | String | | 商户订单号 |
| 第三方订单号 | api_trade_no | String | | 渠道订单号 |
| 支付方式 | type | String | alipay | 支付方式 |
| 支付状态 | status | Int | 1 | 0 未支付,1 已支付,2 已退款,3 已冻结,4 预授权 |
| 商户ID | pid | Int | 1001 | 商户ID |
| 创建时间 | addtime | String | 2016-08-06 22:55:52 | 创建时间 |
| 完成时间 | endtime | String | 2016-08-06 22:55:52 | 完成时间 |
| 商品名称 | name | String | VIP会员 | 商品名称 |
| 商品金额 | money | String | 1.00 | 商品金额 |
| 退款金额 | refundmoney | String | 0.00 | 已退款金额 |
| 业务扩展参数 | param | String | | 扩展参数 |
| 支付者账号 | buyer | String | | 支付者账号 |
| 用户IP | clientip | String | | 下单 IP |
| 时间戳 | timestamp | String | 1713660000 | 返回时间戳 |
| 签名字符串 | sign | String | ... | 签名结果 |
| 签名类型 | sign_type | String | RSA | 签名类型 |
11. 支付通知
11.1 通知类型
- 异步通知:
notify_url - 页面跳转通知:
return_url
11.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 平台订单号 | trade_no | 是 | String | 2016080622555342651 | 易支付订单号 |
| 商户订单号 | out_trade_no | 是 | String | 20160806151343349 | 商户系统内部订单号 |
| 支付方式 | type | 是 | String | alipay | 支付方式 |
| 支付状态 | trade_status | 是 | String | TRADE_SUCCESS | 成功状态固定为该值 |
| 创建时间 | addtime | 否 | String | 2016-08-06 22:55:52 | 创建时间 |
| 完成时间 | endtime | 否 | String | 2016-08-06 22:55:52 | 完成时间 |
| 商品名称 | name | 是 | String | VIP会员 | 商品名称 |
| 商品金额 | money | 是 | String | 1.00 | 商品金额 |
| 业务扩展参数 | param | 否 | String | | 业务参数 |
| 支付者账号 | buyer | 否 | String | | 支付者账号 |
| 时间戳 | timestamp | 是 | String | 1713660000 | 用于时间校验 |
| 签名字符串 | sign | 是 | String | ... | 签名结果 |
| 签名类型 | sign_type | 是 | String | RSA | 签名类型 |
11.3 回调响应
- 收到异步通知后,返回
success - 通知时要校验签名,并确认
trade_status == TRADE_SUCCESS
12. 退款
12.1 接口说明
- URL:
http://www.pay.com/api/pay/refund - 请求方式:
POST
12.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 平台订单号 | trade_no | 二选一 | String | 2016080622555342651 | 易支付订单号 |
| 商户订单号 | out_trade_no | 二选一 | String | 20160806151343349 | 商户系统内部订单号 |
| 退款金额 | money | 是 | String | 1.50 | 退款金额 |
| 商户退款单号 | out_refund_no | 否 | String | R202604210001 | 商户侧退款流水号 |
| 时间戳 | timestamp | 是 | String | 1713660000 | 用于时间校验 |
| 签名字符串 | sign | 是 | String | ... | 签名结果 |
| 签名类型 | sign_type | 是 | String | RSA | 签名类型 |
12.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 0 | 0 为成功,其它值为失败 |
| 返回信息 | msg | String | success | 提示信息 |
| 退款单号 | refund_no | String | 202604210001 | 平台退款单号 |
| 商户退款单号 | out_refund_no | String | R202604210001 | 商户退款单号 |
| 平台订单号 | trade_no | String | 2016080622555342651 | 易支付订单号 |
| 退款金额 | money | String | 1.50 | 退款金额 |
| 已退金额 | reducemoney | String | 1.50 | 累计退款金额 |
| 时间戳 | timestamp | String | 1713660000 | 返回时间戳 |
| 签名字符串 | sign | String | ... | 签名结果 |
| 签名类型 | sign_type | String | RSA | 签名类型 |
13. 退款查询
13.1 接口说明
- URL:
http://www.pay.com/api/pay/refundquery - 请求方式:
POST
13.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 退款单号 | refund_no | 二选一 | String | 202604210001 | 平台退款单号 |
| 商户退款单号 | out_refund_no | 二选一 | String | R202604210001 | 商户退款单号 |
| 时间戳 | timestamp | 是 | String | 1713660000 | 用于时间校验 |
| 签名字符串 | sign | 是 | String | ... | 签名结果 |
| 签名类型 | sign_type | 是 | String | RSA | 签名类型 |
13.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 0 | 0 为成功,其它值为失败 |
| 返回信息 | msg | String | success | 提示信息 |
| 退款单号 | refund_no | String | 202604210001 | 平台退款单号 |
| 商户退款单号 | out_refund_no | String | R202604210001 | 商户退款单号 |
| 平台订单号 | trade_no | String | 2016080622555342651 | 易支付订单号 |
| 商户订单号 | out_trade_no | String | 20160806151343349 | 商户订单号 |
| 退款金额 | money | String | 1.50 | 退款金额 |
| 已退金额 | reducemoney | String | 1.50 | 累计退款金额 |
| 退款状态 | status | Int | 1 | 0 失败,1 成功 |
| 创建时间 | addtime | String | 2016-08-06 22:55:52 | 创建时间 |
| 时间戳 | timestamp | String | 1713660000 | 返回时间戳 |
| 签名字符串 | sign | String | ... | 签名结果 |
| 签名类型 | sign_type | String | RSA | 签名类型 |
14. 关闭订单
14.1 接口说明
- URL:
http://www.pay.com/api/pay/close - 请求方式:
POST - 仅支持部分支付插件
14.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 平台订单号 | trade_no | 二选一 | String | 2016080622555342651 | 易支付订单号 |
| 商户订单号 | out_trade_no | 二选一 | String | 20160806151343349 | 商户订单号 |
| 时间戳 | timestamp | 是 | String | 1713660000 | 用于时间校验 |
| 签名字符串 | sign | 是 | String | ... | 签名结果 |
| 签名类型 | sign_type | 是 | String | RSA | 签名类型 |
14.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 0 | 0 为成功,其它值为失败 |
| 返回信息 | msg | String | success | 提示信息 |
| 时间戳 | timestamp | String | 1713660000 | 返回时间戳 |
| 签名字符串 | sign | String | ... | 签名结果 |
| 签名类型 | sign_type | String | RSA | 签名类型 |
15. 商户信息
15.1 接口说明
- URL:
http://www.pay.com/api/merchant/info - 请求方式:
POST
15.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 时间戳 | timestamp | 是 | String | 1713660000 | 用于时间校验 |
| 签名字符串 | sign | 是 | String | ... | 签名结果 |
| 签名类型 | sign_type | 是 | String | RSA | 签名类型 |
15.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 0 | 0 为成功,其它值为失败 |
| 返回信息 | msg | String | success | 提示信息 |
| 商户ID | pid | Int | 1001 | 商户ID |
| 商户状态 | status | Int | 1 | 商户状态 |
| 支付状态 | pay_status | Int | 1 | 支付开关 |
| 结算状态 | settle_status | Int | 1 | 结算开关 |
| 商户余额 | money | String | 0.00 | 可用余额 |
| 结算类型 | settle_type | Int | 1 | 1 支付宝,2 微信,3 QQ,4 银行卡 |
| 结算账号 | settle_account | String | admin@pay.com | 结算账号 |
| 结算姓名 | settle_name | String | 张三 | 结算姓名 |
| 订单总数 | order_num | Int | 30 | 订单总数 |
| 今日订单 | order_num_today | Int | 15 | 今日订单数量 |
| 昨日订单 | order_num_lastday | Int | 15 | 昨日订单数量 |
| 今日交易额 | order_money_today | String | 100.00 | 今日交易金额 |
| 昨日交易额 | order_money_lastday | String | 90.00 | 昨日交易金额 |
| 时间戳 | timestamp | String | 1713660000 | 返回时间戳 |
| 签名字符串 | sign | String | ... | 签名结果 |
| 签名类型 | sign_type | String | RSA | 签名类型 |
16. 商户订单
16.1 接口说明
- URL:
http://www.pay.com/api/merchant/orders - 请求方式:
POST
16.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 偏移量 | offset | 否 | Int | 0 | 起始偏移 |
| 数量 | limit | 否 | Int | 20 | 返回条数 |
| 状态 | status | 否 | Int | 1 | 订单状态筛选 |
| 时间戳 | timestamp | 是 | String | 1713660000 | 用于时间校验 |
| 签名字符串 | sign | 是 | String | ... | 签名结果 |
| 签名类型 | sign_type | 是 | String | RSA | 签名类型 |
16.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 0 | 0 为成功,其它值为失败 |
| 返回信息 | msg | String | success | 提示信息 |
| 订单数据 | data | Array | 订单列表 | 订单数组 |
| 时间戳 | timestamp | String | 1713660000 | 返回时间戳 |
| 签名字符串 | sign | String | ... | 签名结果 |
| 签名类型 | sign_type | String | RSA | 签名类型 |
17. 转账提交
17.1 接口说明
- URL:
http://www.pay.com/api/transfer/submit - 请求方式:
POST
17.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 转账类型 | type | 是 | String | alipay | alipay、wxpay、qqpay、bank |
| 收款账号 | account | 是 | String | admin@pay.com | 收款账号 |
| 收款姓名 | name | 是 | String | 张三 | 收款姓名 |
| 金额 | money | 是 | String | 1.00 | 转账金额 |
| 备注 | remark | 否 | String | 测试转账 | 转账备注 |
| 商户转账单号 | out_biz_no | 否 | String | T202604210001 | 商户侧流水号 |
| 书签 ID | bookid | 否 | String | 1 | 账本或预设项标识 |
| 时间戳 | timestamp | 是 | String | 1713660000 | 用于时间校验 |
| 签名字符串 | sign | 是 | String | ... | 签名结果 |
| 签名类型 | sign_type | 是 | String | RSA | 签名类型 |
17.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 0 | 0 为成功,其它值为失败 |
| 返回信息 | msg | String | success | 提示信息 |
| 转账状态 | status | Int | 0 | 0 待处理,后续查询 |
| 平台业务号 | biz_no | String | 202604210001 | 平台转账业务号 |
| 商户转账单号 | out_biz_no | String | T202604210001 | 商户侧流水号 |
| 订单号 | orderid | String | 202604210001 | 平台订单号 |
| 支付时间 | paydate | String | 2016-08-06 22:55:52 | 完成时间 |
| 手续费 | cost_money | String | 0.10 | 扣除费用 |
| 时间戳 | timestamp | String | 1713660000 | 返回时间戳 |
| 签名字符串 | sign | String | ... | 签名结果 |
| 签名类型 | sign_type | String | RSA | 签名类型 |
18. 转账查询
18.1 接口说明
- URL:
http://www.pay.com/api/transfer/query - 请求方式:
POST
18.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 平台业务号 | biz_no | 二选一 | String | 202604210001 | 平台转账业务号 |
| 商户转账单号 | out_biz_no | 二选一 | String | T202604210001 | 商户侧流水号 |
| 时间戳 | timestamp | 是 | String | 1713660000 | 用于时间校验 |
| 签名字符串 | sign | 是 | String | ... | 签名结果 |
| 签名类型 | sign_type | 是 | String | RSA | 签名类型 |
18.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 0 | 0 为成功,其它值为失败 |
| 返回信息 | msg | String | success | 提示信息 |
| 转账状态 | status | Int | 1 | 0 处理中,1 成功,2 失败 |
| 错误信息 | errmsg | String | | 失败原因 |
| 平台业务号 | biz_no | String | 202604210001 | 平台转账业务号 |
| 商户转账单号 | out_biz_no | String | T202604210001 | 商户侧流水号 |
| 订单号 | orderid | String | 202604210001 | 平台订单号 |
| 支付时间 | paydate | String | 2016-08-06 22:55:52 | 完成时间 |
| 金额 | amount | String | 1.00 | 转账金额 |
| 手续费 | cost_money | String | 0.10 | 扣除费用 |
| 备注 | remark | String | 测试转账 | 备注信息 |
| 时间戳 | timestamp | String | 1713660000 | 返回时间戳 |
| 签名字符串 | sign | String | ... | 签名结果 |
| 签名类型 | sign_type | String | RSA | 签名类型 |
19. 转账余额
19.1 接口说明
- URL:
http://www.pay.com/api/transfer/balance - 请求方式:
POST
19.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 时间戳 | timestamp | 是 | String | 1713660000 | 用于时间校验 |
| 签名字符串 | sign | 是 | String | ... | 签名结果 |
| 签名类型 | sign_type | 是 | String | RSA | 签名类型 |
19.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 0 | 0 为成功,其它值为失败 |
| 返回信息 | msg | String | success | 提示信息 |
| 可用余额 | available_money | String | 100.00 | 可转账余额 |
| 转账费率 | transfer_rate | String | 0.01 | 转账费率 |
| 时间戳 | timestamp | String | 1713660000 | 返回时间戳 |
| 签名字符串 | sign | String | ... | 签名结果 |
| 签名类型 | sign_type | String | RSA | 签名类型 |
ePay V1 接口文档整理
1. 协议规则
| 项目 | 值 |
|---|
| 请求数据格式 | application/x-www-form-urlencoded |
| 返回数据格式 | JSON |
| 签名算法 | MD5 |
| 字符编码 | UTF-8 |
2. 接口总览
| 入口 | 说明 |
|---|
submit.php | 页面跳转支付 |
mapi.php | API 接口支付 |
api.php?act=query | 查询商户信息 |
api.php?act=settle | 查询结算记录 |
api.php?act=order | 查询单个订单 |
api.php?act=orders | 批量查询订单 |
api.php?act=refund | 提交订单退款 |
3. 页面跳转支付
3.1 接口说明
- 用途:用户前台直接发起支付
- 常见调用方式:
form 表单提交,或拼成跳转链接 - URL:
http://www.pay.com/submit.php - 请求方式:
POST 或 GET - 推荐方式:
POST type 不传时,默认进入收银台流程
3.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 支付方式 | 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 |
3.3 说明
notify_url 用于异步通知return_url 用于支付完成后的前端跳转param 会在支付完成后原样返回
4. API 接口支付
4.1 接口说明
- 用途:服务器后端发起支付请求
- URL:
http://www.pay.com/mapi.php - 请求方式:
POST - 响应通常返回跳转链接、二维码链接或小程序跳转链接中的一种
4.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 支付方式 | 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 |
| 授权码 | auth_code | 否 | String | | 付款码支付或上游授权码 |
| 微信 OpenID | openid / sub_openid / wx_openid | 否 | String | | 微信 JSAPI/公众号支付身份 |
| 微信小程序 OpenID | mini_openid | 否 | String | | 微信小程序支付身份 |
| 支付宝用户 ID | buyer_id / buyer_open_id | 否 | String | | 支付宝 JSAPI/小程序支付身份 |
| 应用 ID | sub_appid / op_app_id | 否 | String | | 服务商或代调用场景应用 ID |
| 业务扩展参数 | param | 否 | String | 没有请留空 | 支付后原样返回 |
| 签名字符串 | sign | 是 | String | 202cb962ac59075b964b07152d234b70 | 签名结果 |
| 签名类型 | sign_type | 是 | String | MD5 | 默认为 MD5 |
4.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 1 | 1 为成功,其它值为失败 |
| 返回信息 | msg | String | | 失败时返回原因 |
| 订单号 | trade_no | String | 20160806151343349 | 支付订单号 |
| 支付跳转url | payurl | String | /pay/wxpay/202010903/ | 直接跳转该 URL 支付 |
| 二维码链接 | qrcode | String | weixin://wxpay/bizpayurl?pr=04IPMKM | 按链接生成二维码 |
| 小程序跳转url | urlscheme | String | weixin://dl/business/?ticket=xxx | 使用 JS 跳转该 URL |
4.4 说明
payurl、qrcode、urlscheme 三者只会返回其中一个device 和支付方式会影响最终返回值类型- 返回值为 JSON,由调用方自行决定跳转、展示二维码或拉起小程序
4.5 MPAY 身份授权扩展
当前 MPAY 实现中,V1 API 支付如果路由到需要用户身份的产品,例如微信公众号、微信小程序、支付宝小程序,但请求没有传 openid、mini_openid、buyer_id 等字段,会返回身份承接地址:
{
"code": 1,
"msg": "需要用户授权",
"trade_no": "",
"payurl": "http://example.com/cashier/identity/xxx",
"url": "http://example.com/cashier/identity/xxx",
"identity_required": 1,
"resume_token": "xxx"
}
调用方收到 identity_required=1 后,应让用户跳转 payurl 或 url 完成授权流程。V1 页面跳转支付 /submit.php 遇到身份缺失时会直接重定向到该承接页。
5. 支付结果通知
5.1 通知类型
- 服务器异步通知:
notify_url - 页面跳转通知:
return_url
5.2 请求方式
5.3 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 易支付订单号 | 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 |
5.4 回调响应
- 收到异步通知后,需返回
success - 页面跳转通知主要用于前端展示,不代表后台最终确认逻辑
6. MD5 签名算法
- 将发送或接收到的所有参数按照参数名 ASCII 码从小到大排序。
sign、sign_type 和空值不参与签名。- 将排序后的参数拼接成
a=b&c=d&e=f 的形式,参数值不要进行 URL 编码。 - 将拼接字符串与商户密钥
KEY 进行 MD5 加密,得到签名。
sign = md5(a=b&c=d&e=f + KEY)
说明:
+ 代表字符串拼接,不是字符本身- MD5 结果为小写
- 具体示例以 SDK 为准
7. 支付方式列表
| 调用值 | 描述 |
|---|
alipay | 支付宝 |
wxpay | 微信支付 |
qqpay | QQ 钱包 |
8. 设备类型列表
| 调用值 | 描述 |
|---|
pc | 电脑浏览器 |
mobile | 手机浏览器 |
qq | 手机 QQ 内浏览器 |
wechat | 微信内浏览器 |
alipay | 支付宝客户端 |
jump | 仅返回支付跳转 URL |
9. [API]查询商户信息
9.1 接口说明
- URL:
http://www.pay.com/api.php?act=query&pid={商户ID}&key={商户密钥} - 操作类型:
query
9.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 操作类型 | act | 是 | String | query | 固定值 |
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | 商户密钥 |
9.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 1 | 1 为成功,其它值为失败 |
| 商户ID | pid | Int | 1001 | 商户ID |
| 商户密钥 | key | String(32) | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | 商户密钥 |
| 商户状态 | active | Int | 1 | 1 为正常,0 为封禁 |
| 商户余额 | money | String | 0.00 | 商户所拥有的余额 |
| 结算方式 | type | Int | 1 | 1:支付宝,2:微信,3:QQ,4:银行卡 |
| 结算账号 | account | String | admin@pay.com | 结算账号 |
| 结算姓名 | username | String | 张三 | 结算姓名 |
| 订单总数 | orders | Int | 30 | 订单总数统计 |
| 今日订单 | order_today | Int | 15 | 今日订单数量 |
| 昨日订单 | order_lastday | Int | 15 | 昨日订单数量 |
10. [API]查询结算记录
10.1 接口说明
- URL:
http://www.pay.com/api.php?act=settle&pid={商户ID}&key={商户密钥} - 操作类型:
settle
10.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 操作类型 | act | 是 | String | settle | 固定值 |
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | 商户密钥 |
10.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 1 | 1 为成功,其它值为失败 |
| 返回信息 | msg | String | 查询结算记录成功! | 提示信息 |
| 结算记录 | data | Array | 结算记录列表 | 结算记录数组 |
原版文档对 data 内部结构只给出“结算记录列表”的说明,没有展开逐字段定义。
11. [API]查询单个订单
11.1 接口说明
- URL:
http://www.pay.com/api.php?act=order&pid={商户ID}&key={商户密钥}&out_trade_no={商户订单号} - 操作类型:
order
11.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 操作类型 | act | 是 | String | order | 固定值 |
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | 商户密钥 |
| 系统订单号 | trade_no | 选择 | String | 20160806151343312 | 平台订单号 |
| 商户订单号 | out_trade_no | 选择 | String | 20160806151343349 | 商户自定义订单号 |
说明:
trade_no 和 out_trade_no 二选一即可- 如果都传入,以
trade_no 为准
11.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | 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 | 发起支付的商户ID |
| 创建订单时间 | 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 | | 默认留空 |
12. [API]批量查询订单
12.1 接口说明
- URL:
http://www.pay.com/api.php?act=orders&pid={商户ID}&key={商户密钥} - 操作类型:
orders
12.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 操作类型 | act | 是 | String | orders | 固定值 |
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | 商户密钥 |
| 查询订单数量 | limit | 否 | Int | 20 | 返回订单数量,最大 50 |
| 页码 | page | 否 | Int | 1 | 当前查询页码 |
12.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 1 | 1 为成功,其它值为失败 |
| 返回信息 | msg | String | 查询结算记录成功! | 提示信息 |
| 订单列表 | data | Array | 订单列表 | 订单数组 |
data 中每一项与“查询单个订单”返回结构基本一致。
13. [API]提交订单退款
13.1 接口说明
- 需要先在商户后台开启订单退款 API 接口开关
- URL:
http://www.pay.com/api.php?act=refund - 请求方式:
POST
13.2 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|
| 商户ID | pid | 是 | Int | 1001 | 商户ID |
| 商户密钥 | key | 是 | String | 89unJUB8HZ54Hj7x4nUj56HN4nUzUJ8i | 商户密钥 |
| 易支付订单号 | trade_no | 特殊可选 | String | 20160806151343349021 | 平台订单号 |
| 商户订单号 | out_trade_no | 特殊可选 | String | 20160806151343349 | 下单时传入的商户订单号 |
| 退款金额 | money | 是 | String | 1.50 | 少数通道需要与原订单金额一致 |
说明:
trade_no 和 out_trade_no 不能同时为空- 如果都传了,以
trade_no 为准
13.3 返回结果
| 字段名 | 变量名 | 类型 | 示例值 | 描述 |
|---|
| 返回状态码 | code | Int | 1 | 1 为成功,其它值为失败 |
| 返回信息 | msg | String | 退款成功 | 提示信息 |