💶 支付结果通知

GET 服务器异步通知(notify_url)、页面跳转通知(return_url)

请求参数

字段名
参数名
必填
类型
示例值
描述
商户ID
pid
必填
Int
1000
商户ID
订单号
trade_no
必填
String
20160806151343349021
平台订单号
商户订单号
out_trade_no
必填
String
20160806151343349
商户系统内部的订单号
支付方式
type
必填
String
alipay
支付方式:alipay:支付宝,qqpay:QQ钱包,wxpay:微信支付,rmbpay:数字人民币
商品名称
name
必填
String
一个奥利奥
商品名称
商品金额
money
必填
String
1.00
商品金额
支付状态
trade_status
必填
String
TRADE_SUCCESS
只有TRADE_SUCCESS是成功
签名字符串
sign
必填
String
202cb962ac59075b964b07152d234b70
签名字符串,签名算法与支付宝签名算法相同
签名类型
sign_type
必填
String
MD5
默认为MD5

示例

<?php
if($_POST){
    $data=$_POST;
}else{
    $data=$_GET;
}
ksort($data); //排序post参数
reset($data); //内部指针指向数组中的第一个元素
$zzcode_key = "这里改成您的KEY"; //这是您的密钥
$sign = '';//初始化
foreach ($data AS $key => $val) { //遍历POST参数
    if ($val == '' || $key == 'sign' || $key == "sign_type" ) continue; //跳过这些不参数签名
    if ($sign) $sign .= '&'; //第一个字符串签名不加& 其他加&连接起来参数
    $sign .= "$key=$val"; //拼接为url参数形式
}
if (md5($sign.$zzcode_key) !== $data['sign']) { //不合法的数据
    exit('fail');  //验证失败
} else { //合法的数据
    //业务处理
    $money = (float)$data['money']; //付款金额
    $trade_no = $data['trade_no']; //订单号
    $out_trade_no = $data['out_trade_no']; //商户订单号
    exit('success'); //返回成功
}
?>

🛡️ V免签接口 · 支付结果通知

GET 服务器异步通知(notifyUrl)、页面跳转通知(returnUrl)

通知参数

与易支付通知并存,按 V免签 固定顺序签名。订单收款后系统以 GET 请求商户 notifyUrl,参数如下:

字段名
参数名
必填
类型
示例值
描述
商户订单号
payId
必填
String
20260619001
商户订单号(下单时传入)
透传参数
param
必填
String
vip123
下单透传,原样回传(无则为空)
支付方式
type
必填
Int
1
1微信 2支付宝 3QQ 4数字人民币
订单金额
price
必填
String
1.00
下单时的原始金额
实付金额
reallyPrice
必填
String
1.00
实际收款金额(监控端通道可能微调)
签名字符串
sign
必填
String
202cb962ac59075b964b07152d234b70
MD5签名,见签名算法

签名算法

通知参数按 固定顺序 payId → param → type → price → reallyPrice 拼接,末尾追加通讯密钥,取 MD5 小写:

sign = md5(payId . param . type . price . reallyPrice . 密钥)

注意:V免签为固定顺序拼接(区别于易支付字典序),param 为空时按空串参与。

成功响应

商户验签通过并完成自身业务后,须向系统输出纯字符串 success成功判定:响应内容包含 success 即视为通知成功(与易支付一致),否则系统判定通知失败并按规则重试。

同步跳转 returnUrl 的参数、签名与异步通知完全一致,仅响应要求不同(同步无需输出 success)。

示例

<?php
\$data = \$_GET; //通知以 GET 方式送达
\$key  = '您的通讯密钥'; //同易支付密钥
//固定顺序签名(注意:与易支付字典序不同)
\$sign = md5(\$data['payId'].\$data['param'].\$data['type'].\$data['price'].\$data['reallyPrice'].\$key);
if (\$sign !== \$data['sign']) {
    exit('fail'); //验签失败
}
//验签通过,处理业务
\$payId       = \$data['payId'];        //商户订单号
\$reallyPrice = \$data['reallyPrice'];  //实付金额
exit('success'); //必须输出 success,否则系统会重试
?>