tp6对接支付宝支付需使用easysdk,封装初始化、pc/h5支付请求及异步通知验签,配置从环境变量读取,私钥去头尾换行,notify_url须https且无参,验签通过后仅trade_success/finished才更新订单,并返回纯文本"success"。

TP6 接口实现支付宝支付,核心是调用官方 SDK 封装支付请求、处理回调,并确保密钥安全与参数合规。不依赖模板渲染,专注 API 返回支付跳转链接或二维码数据,适合前后端分离项目。
安装与初始化 SDK
推荐使用 EasySDK(官方维护)而非旧版 AOP,避免手动管理签名和请求构造:
- 执行命令安装:
composer require alipay/easysdk - 在
app/aliPay/Service/PayService.php中封装初始化逻辑,集中管理配置项(app_id、private_key、alipay_public_key、notify_url等) - 配置建议从环境变量或配置文件读取,避免硬编码;私钥内容需去除头尾标记(
-----BEGIN RSA PRIVATE KEY-----)和换行,合并为单行字符串
生成 PC 或 H5 支付参数
根据终端类型选择接口:
- PC 网页支付:用
AlipayTradePagePayRequest,返回跳转 URL,前端重定向即可 - H5 手机网页支付:用
AlipayTradeWapPayRequest,同样返回 URL,但支付宝会自动识别设备并唤起 APP 或 H5 支付页 -
biz_content必须包含out_trade_no(唯一订单号)、total_amount(单位:元,最多两位小数)、subject(商品标题),可选body、timeout_express(如"30m") - 注意:
notify_url必须是公网可访问的 HTTPS 地址,且不能带参数;return_url可用于同步跳转展示结果,非必需
异步通知验签与订单处理
这是支付成败的关键环节,必须严格校验:
- 接收 POST 数据后,先用
$aop->rsaCheckV1($_POST, null, 'RSA2')验证签名有效性(EasySDK 提供对应方法) - 仅当
trade_status为TRADE_SUCCESS或TRADE_FINISHED时才更新订单状态为“已支付” - 通知接口必须返回字符串
"success"(纯文本,无空格、无 HTML),否则支付宝会重复推送 - 建议加数据库写锁或幂等判断(如查订单是否已处理),防止重复通知导致多次发货或扣款
沙箱环境调试要点
上线前务必在沙箱完成全流程测试:
- 登录 支付宝开放平台 → 进入「开发者中心」→「沙箱环境」,获取沙箱
app_id、商户私钥、支付宝公钥 - 沙箱账号含买家与卖家,用买家账号扫码或跳转后输入密码完成模拟支付
- 异步通知地址用内网穿透工具(如 ngrok)映射本地接口,或部署测试服务器验证回调可达性
- 查看沙箱交易记录和通知日志,比对时间戳、sign、biz_content 是否一致,快速定位验签失败原因











