Skip to content

API 接口文档

PAYZS 支付接口

简单易用的支付接口,支持微信、支付宝等多种支付方式

  • ✅ 稳定可靠
  • 🔒 安全加密
  • 📱 多端支持

💳 支付提交

请求方式: GET
接口地址: https://接口域名/pay.html

创建支付订单,用户完成支付后会自动跳转到指定页面。

📋 请求参数

参数名称类型必填说明
out_trade_nostring商户订单号,唯一标识
mch_uidinteger商户ID
total_feestring订单金额(单位:元)
pay_type_idinteger支付类型:1-微信支付,2-支付宝
mepay_typeinteger收款方式:2-个人收款码
return_typeinteger返回方式:1-跳转,2-JSON(默认1)
paramstring自定义参数,支付完成后原样返回
notify_urlstring异步通知地址
return_urlstring同步返回地址
signstring签名,拼接所有参数+商户密钥后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_uidinteger商户ID
out_trade_nostring商户订单号
transaction_idstring平台订单号(支付流水号)
total_feestring用户实际支付金额
mepay_totalinteger提交金额(如提交1元实际支付1.01元)
pay_typeinteger支付类型:1-微信支付,2-支付宝
paramstring自定义参数(原样返回)
statusstring订单状态:1-已支付,0-未付款
paytimestring支付完成时间
signstring签名验证(用于验证数据完整性)

💻 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协议接收异步通知
  • 处理业务逻辑时要注意异常处理,避免接口超时

支付助手-帮助文档