PAYMENT
02
易支付兼容接口
全日付兼容彩虹易支付(V1)协议,已对接易支付的商户可零改动切换。签名使用 MD5,签名规则见下方「MD5 签名算法」。V1
页面跳转支付(submit.php)
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 商户 ID | pid | 是 | Int | 1001 | |
| 支付方式 | type | 否 | String | alipay | 不传跳收银台 |
| 商户订单号 | out_trade_no | 是 | String | 20160806151343349 | |
| 异步通知地址 | notify_url | 是 | String | https://xxx/notify.php | |
| 跳转通知地址 | return_url | 是 | String | https://xxx/return.php | |
| 商品名称 | name | 是 | String | VIP会员 | |
| 商品金额 | money | 是 | String | 1.00 | |
| 业务扩展参数 | param | 否 | String | 支付后原样返回 | |
| 签名 | sign | 是 | String | MD5 签名 | |
| 签名类型 | sign_type | 是 | String | MD5 |
API 接口支付(mapi.php)
在 submit.php 参数基础上额外需要:
| 字段名 | 变量名 | 必填 | 描述 |
|---|---|---|---|
| 用户 IP | clientip | 是 | 用户发起支付的 IP |
| 设备类型 | device | 否 | pc/mobile/wechat/alipay 等,默认 pc |
返回参数
| 字段名 | 变量名 | 类型 | 描述 |
|---|---|---|---|
| 返回状态码 | code | Int | 1 为成功 |
| 返回信息 | msg | String | 失败原因 |
| 平台订单号 | trade_no | String | |
| 支付跳转 URL | payurl | String | 直接跳转支付 |
| 二维码链接 | qrcode | String | 生成二维码扫码支付 |
| 小程序 URL | urlscheme | String | JS 跳转发起小程序支付 |
说明:
payurl、qrcode、urlscheme 三个参数只会返回其中一个。
支付方式列表
| 调用值 | 描述 |
|---|---|
alipay | 支付宝 |
wxpay | 微信支付 |
qqpay | QQ 钱包 |
bank | 银联支付 |
jdpay | 京东支付 |
paypal | PayPal |
douyinpay | 抖音支付 |
SIGNATURE
04
MD5 签名算法
V1 易支付兼容接口使用 MD5 签名算法。V1
签名步骤
- 第一步:排序参数 —— 将所有参数按照参数名 ASCII 码从小到大排序(a-z)。
- 第二步:过滤参数 ——
sign、sign_type和空值不参与签名。 - 第三步:拼接字符串 —— 拼接成 URL 键值对格式
a=b&c=d&e=f,参数值不进行 URL 编码。 - 第四步:MD5 加密 —— 将拼接好的字符串与商户密钥
KEY拼接后取 MD5:sign = md5(拼接字符串 + KEY),结果为小写。
PHP 签名示例
function getSign($params, $key) {
ksort($params);
$str = '';
foreach ($params as $k => $v) {
if ($k == 'sign' || $k == 'sign_type' || $v === '' || $v === null) continue;
$str .= '&' . $k . '=' . $v;
}
$str = substr($str, 1);
return md5($str . $key);
}
说明:V1 接口的签名与验签均使用相同的 MD5 规则。具体代码可参考易支付 SDK。