异步通知
支付成功后,平台会以 GET 方式请求商户提交订单时传入的 notify_url,携带以下参数:
| 参数 | 说明 |
|---|---|
| pid | 商户 ID |
| trade_no | 平台订单号 |
| out_trade_no | 商户订单号 |
| type | 支付方式 |
| name | 商品名称 |
| money | 订单金额 |
| trade_status | 固定为 TRADE_SUCCESS |
| param | 下单时传入的扩展参数 |
| sign / sign_type | 签名与签名类型 |
处理要求
- 验签通过后,务必判断订单状态与金额是否一致,再执行发货等业务;
- 处理成功后在响应体直接输出
success(不含任何 HTML); - 未收到 success 时平台会按 1、3、20 分钟等间隔重试通知;
- 同一订单可能收到多次通知,请做幂等处理。
// 通知处理示例
$params = $_GET;
$sign = $params['sign']; unset($params['sign'], $params['sign_type']);
ksort($params);
if (md5(urldecode(http_build_query($params)) . $merchantKey) !== $sign) exit('fail');
if ($params['trade_status'] === 'TRADE_SUCCESS') {
// TODO: 校验金额、幂等更新订单
}
echo 'success';