订单码支付demo在哪里下载,GitHub项目是否为支付宝官方
结论
https://github.com/alipay/alipay-sdk-php-all 属于 GitHub 的 alipay 组织,可以作为支付宝官方发布的 PHP SDK 源码使用。但这是完整的 SDK 仓库,并非专门为“订单码支付”整理的业务 Demo。
手机网站支付 Demo 中缺少 AopCertification.php,通常是因为 Demo 携带的 SDK 版本较旧,或者经过精简。不要只把新仓库中的几个缺失文件复制到旧 Demo,否则仍可能遇到类依赖、签名逻辑或接口版本不一致等问题。建议整体替换 SDK,同时保留已经验证可用的业务配置和支付调用代码。
为什么手机网站支付 Demo 中没有该文件
手机网站支付 Demo 通常由两部分组成:
- 手机网站支付的业务示例代码;
- Demo 发布时配套的 PHP SDK。
Demo 中附带的 SDK 不一定完整,也不会随支付宝 SDK 仓库自动更新。如果订单码支付文档基于较新的 SDK 编写,就可能引用旧 Demo 中没有的文件,例如:
require_once '../aop/AopCertification.php';
这并不表示手机网站支付与订单码支付不能共用 PHP SDK。问题在于项目中的 SDK 版本与参考文档不匹配。
推荐处理方式
1. 从官方入口确认仓库
使用该仓库前,先核对以下信息:
- 仓库是否确实位于
alipay组织下; - 支付宝开放平台的相关文档是否链接到该仓库;
- 仓库说明、许可证和发布记录是否完整;
- 避免使用第三方 Fork、网盘压缩包或来源不明的修改版本。
仓库位于官方组织下,也不代表所有历史分支都适用于当前接口。最终应以支付宝开放平台当前文档指定的 SDK、接口和签名方式为准。
2. 整体引入 SDK
下载完整仓库后,尽量保留 SDK 原有的目录结构,例如:
project/
├── app/
│ └── order_pay.php
└── alipay-sdk/
├── aop/
│ ├── AopClient.php
│ ├── AopCertification.php
│ └── request/
└── ...
加载文件时使用明确的绝对路径,避免脚本执行目录变化后相对路径失效:
<?php
require_once __DIR__ . '/../alipay-sdk/aop/AopClient.php';
require_once __DIR__ . '/../alipay-sdk/aop/AopCertification.php';
如果 SDK 提供统一入口文件或 Composer 自动加载配置,优先使用对应的入口或自动加载机制,不要在业务代码中逐个加载内部类。
项目已经通过 Composer 管理依赖时,通常可以这样加载:
<?php
require_once __DIR__ . '/../vendor/autoload.php';
具体包名和安装命令以支付宝开放平台当前文档或仓库 README 为准,不要参照其他支付产品的示例自行猜测。
3. 迁移已有配置
整体更换 SDK 后,原手机网站支付项目中的业务参数可以保留,但需要重新核对:
<?php
$aop = new AopClient();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = '你的应用 APPID';
$aop->rsaPrivateKey = '应用私钥';
$aop->alipayrsaPublicKey = '支付宝公钥';
$aop->signType = 'RSA2';
$aop->format = 'json';
$aop->charset = 'UTF-8';
这段代码只展示常见的配置结构。实际属性名称和赋值方式必须与下载的 SDK 版本一致。
还需要确认:
appId属于当前接入的支付宝应用;- 应用私钥与开放平台上传的应用公钥配套;
alipayrsaPublicKey填写的是支付宝公钥,不是应用公钥;- 沙箱网关与正式环境网关没有混用;
- 应用已经签约并开通订单码支付所需的能力。
4. 使用文档对应的请求类
支付调用应采用订单码支付文档指定的 API 和请求类。不同产品可能使用不同的请求类,不能因为业务含义相近,就直接套用手机网站支付的请求对象。
基本调用结构如下:
<?php
$request = new 文档指定的Request类();
$request->setBizContent(json_encode([
// 按订单码支付文档填写业务参数
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
$response = $aop->execute($request);
这里没有直接写出具体的 API 类名和业务参数,因为“订单码支付”在不同文档版本或产品方案中可能对应不同接口。请以商户当前签约产品页面提供的接口名称为准,以免误用其他扫码或当面付接口。
不建议只补一个文件
把 AopCertification.php 直接复制到旧版 SDK 中,可能引发以下问题:
- 该文件依赖的其他类仍然缺失;
- 新旧版本的命名空间或目录结构不同;
AopClient与认证相关类的方法签名不一致;- 签名、证书或公钥模式的处理逻辑不匹配;
- 后续升级时难以确认代码来源和版本。
如果必须继续使用旧 SDK,应先查看文档是否提供兼容旧版本的调用方式,不要根据报错逐个补文件。
排查加载失败
更换 SDK 后,如果仍提示找不到文件,可以先检查实际路径:
<?php
$sdkFile = __DIR__ . '/../alipay-sdk/aop/AopCertification.php';
if (!is_file($sdkFile)) {
throw new RuntimeException('SDK 文件不存在:' . $sdkFile);
}
require_once $sdkFile;
Linux 环境区分文件名大小写,名称必须完全一致。例如:
AopCertification.php
不能写成:
aopCertification.php
还要确认 ../ 是按当前脚本位置解析,还是按运行时工作目录解析。使用 __DIR__ 通常更可靠。
注意事项
- 不要把手机网站支付 Demo 当成完整 SDK;
- 不要混用多个版本的
aop目录; - 不要通过修改 SDK 内部的签名和验签代码来绕过错误;
- 不要将私钥、应用证书和配置文件提交到 GitHub;
- 正式上线前,分别验证下单、支付结果查询、异步通知验签和重复通知处理;
- 如果文档要求使用证书模式,需要完整配置应用公钥证书、支付宝公钥证书和支付宝根证书,不能只添加
AopCertification.php。
可以使用该仓库中的完整 SDK,但应整体接入,并确保 SDK 版本、订单码支付文档和应用签约能力互相匹配。
备注:内容仅供参考。
