Appearance
API 接口文档
PAYZS 支付接口
简单易用的支付接口,支持微信、支付宝等多种支付方式
- ✅ 稳定可靠
- 🔒 安全加密
- 📱 多端支持
💳 支付提交
请求方式: GET
接口地址: https://接口域名/pay.html
创建支付订单,用户完成支付后会自动跳转到指定页面。
📋 请求参数
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
out_trade_no | string | 是 | 商户订单号,唯一标识 |
mch_uid | integer | 是 | 商户ID |
total_fee | string | 是 | 订单金额(单位:元) |
pay_type_id | integer | 是 | 支付类型:1-微信支付,2-支付宝 |
mepay_type | integer | 是 | 收款方式:2-个人收款码 |
return_type | integer | 否 | 返回方式:1-跳转,2-JSON(默认1) |
param | string | 否 | 自定义参数,支付完成后原样返回 |
notify_url | string | 是 | 异步通知地址 |
return_url | string | 是 | 同步返回地址 |
sign | string | 是 | 签名,拼接所有参数+商户密钥后MD5加密 |
💻 PHP 示例代码
php
<?php
// 商户配置信息
$mch_id = '18888'; // 商户ID
$mch_key = '7YjIS0TQwuOImHj30NwUoFlEj27Qqjd4'; // 通讯密钥
// 构造支付参数
$data = array(
"mch_uid" => $mch_id, // 商户ID
"out_trade_no" => time(), // 订单号(唯一标识)
"pay_type_id" => $_POST['pay_id'], // 支付类型:1-微信,2-支付宝
"total_fee" => $_POST['total'], // 支付金额
"param" => $_POST['param'], // 自定义参数
"notify_url" => 'https://接口域名/demo/notify_url.php', // 异步通知地址
"return_url" => 'https://接口域名/demo/return_url.php', // 同步返回地址
"mepay_type" => $_POST['mepay'], // 收款方式:2-个人收款码
);
// 参数排序
ksort($data);
reset($data);
// 生成签名
$sign = '';
$urls = '';
foreach ($data AS $key => $val) {
if ($val == '' || $key == 'sign') continue;
if ($sign != '') {
$sign .= "&";
$urls .= "&";
}
$sign .= "$key=$val";
$urls .= "$key=" . urlencode($val);
}
// 生成最终请求URL
$query = $urls . '&sign=' . md5($sign . $mch_key);
$url = "https://接口域名/pay.html?{$query}";
// 跳转到支付页面
header("Location:{$url}");
?>
代码说明
- 订单号: 建议使用时间戳或UUID确保唯一性
- 签名验证: 所有参数按字母顺序排序后拼接,最后加上商户密钥进行MD5加密
- 参数编码: URL参数值需要进行URL编码处理
- 安全提醒: 请妥善保管商户密钥,不要在前端暴露
🔔 异步通知
请求方式: POST
通知地址: 支付提交的 notify_url
参数网址
支付完成后,系统会向您提供的异步通知地址发送POST请求,通知支付结果。
重要提醒
异步通知可能会重复发送,请确保您的接口具有幂等性处理。
📋 返回参数
参数名称 | 类型 | 说明 |
---|---|---|
mch_uid | integer | 商户ID |
out_trade_no | string | 商户订单号 |
transaction_id | string | 平台订单号(支付流水号) |
total_fee | string | 用户实际支付金额 |
mepay_total | integer | 提交金额(如提交1元实际支付1.01元) |
pay_type | integer | 支付类型:1-微信支付,2-支付宝 |
param | string | 自定义参数(原样返回) |
status | string | 订单状态:1-已支付,0-未付款 |
paytime | string | 支付完成时间 |
sign | string | 签名验证(用于验证数据完整性) |
💻 PHP 异步通知处理示例
php
<?php
// 商户密钥(请替换为您的实际密钥)
$mch_key = "6YjIS0TQwuOImHj30NwUoFlEj27Qqjd4";
// 参数排序
ksort($_POST);
reset($_POST);
// 生成签名
$sign = '';
foreach ($_POST AS $key => $val) {
if ($val == '' || $key == 'sign') continue;
if ($sign) $sign .= '&';
$sign .= "$key=$val";
}
// 验证签名和订单状态
if (!$_POST['transaction_id'] ||
md5($sign . $mch_key) != $_POST['sign'] ||
$_POST['status'] != '1') {
// 验证失败,返回fail让系统继续补单
exit('fail');
} else {
// 验证成功,处理业务逻辑
$out_trade_no = $_POST['out_trade_no']; // 商户订单号
$mepay_total = (float)$_POST['mepay_total']; // 提交金额
$total_fee = (float)$_POST['total_fee']; // 实际支付金额
$param = $_POST['param']; // 自定义参数
$transaction_id = $_POST['transaction_id']; // 平台流水号
$paytime = $_POST['paytime']; // 支付时间
// ========== 这里写您的业务逻辑 ==========
// 例如:更新订单状态、给用户充值、发送通知等
// 示例:记录支付日志
$log_data = [
'order_no' => $out_trade_no,
'transaction_id' => $transaction_id,
'amount' => $total_fee,
'pay_time' => $paytime,
'param' => $param
];
// file_put_contents('payment.log', json_encode($log_data) . "\n", FILE_APPEND);
// ========== 业务逻辑处理完毕 ==========
// 返回success告知系统处理成功
exit('success');
}
?>
处理说明
- 签名验证: 必须验证签名确保数据来源的合法性
- 状态检查: 只有status=1的订单才是支付成功
- 幂等处理: 建议根据订单号检查是否已处理,避免重复处理
- 返回结果: 处理成功返回'success',失败返回'fail'
- 日志记录: 建议记录支付日志便于问题排查
安全提醒
- 异步通知接口必须验证签名,确保数据安全
- 建议使用HTTPS协议接收异步通知
- 处理业务逻辑时要注意异常处理,避免接口超时