php实现支付宝接口
支付宝接口集成方法
在PHP中实现支付宝接口需要完成以下几个关键步骤。支付宝官方提供了多种接口类型,如即时到账、手机网站支付、APP支付等,以下以即时到账接口为例说明。
准备工作
注册支付宝企业账号并申请开通支付功能,获取商户ID(PID)和商户密钥(Key)。下载支付宝官方提供的SDK或API文档,通常包含alipay.config.php等配置文件。
配置参数 在项目中创建配置文件,填写支付宝的基本参数:

$alipay_config = [
'partner' => '2088xxxxxxxx', // 商户PID
'key' => 'xxxxxxxxxxxx', // 商户Key
'sign_type' => 'MD5',
'input_charset' => 'utf-8',
'transport' => 'http',
];
构建请求参数 创建支付请求时需组装订单数据,包括订单号、金额、商品名称等:
$parameter = [
"service" => "create_direct_pay_by_user",
"partner" => $alipay_config['partner'],
"payment_type" => 1,
"notify_url" => "http://yourdomain.com/notify.php", // 异步通知地址
"return_url" => "http://yourdomain.com/return.php", // 同步跳转地址
"out_trade_no" => uniqid(), // 商户订单号
"subject" => "测试商品",
"total_fee" => "0.01",
"body" => "商品描述",
];
生成签名 使用MD5或RSA对参数进行签名:

function buildRequestSign($params, $key) {
ksort($params);
$signStr = '';
foreach ($params as $k => $v) {
if ($v && $k != 'sign' && $k != 'sign_type') {
$signStr .= "$k=$v&";
}
}
return md5($signStr . $key);
}
$parameter['sign'] = buildRequestSign($parameter, $alipay_config['key']);
提交支付请求 将参数通过表单提交到支付宝网关:
function buildRequestForm($params, $gateway) {
$html = "<form id='alipaysubmit' action='{$gateway}' method='post'>";
foreach ($params as $key => $val) {
$html .= "<input type='hidden' name='{$key}' value='{$val}'/>";
}
$html .= "<input type='submit' value='确认支付'></form>";
$html .= "<script>document.forms['alipaysubmit'].submit();</script>";
return $html;
}
echo buildRequestForm($parameter, 'https://mapi.alipay.com/gateway.do');
处理异步通知
支付宝服务器会发送POST通知到notify_url,需验证签名和订单状态:
$verifyResult = verifyNotify($_POST);
if ($verifyResult && $_POST['trade_status'] == 'TRADE_SUCCESS') {
// 更新订单状态为已支付
file_put_contents('notify_log.txt', json_encode($_POST));
echo "success"; // 必须返回success以停止通知
}
注意事项
- 使用官方最新SDK避免安全漏洞,老版本MD5签名已逐步淘汰,推荐使用RSA2签名。
- 异步通知处理必须进行签名验证,防止伪造请求。
- 金额单位是元,需保留两位小数。
- 正式环境需启用HTTPS并隐藏商户敏感信息。
测试与调试
支付宝提供沙箱环境用于测试,配置参数需替换为沙箱账号的PID和Key。调试时可查看支付宝返回的$_GET或$_POST数据,重点关注trade_status和out_trade_no字段。






