同步操作将从 DEPRECATED/alipay-sdk-php 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
支付宝开放平台(又称:蚂蚁金服开放平台)第三方 PHP SDK,基于官方 3.3.0 版本。
❤️ 本项目 GitHub / Gitee(码云),目前已在公司产品应用,运行在数百台客户服务器内。
官方 SDK | 本 SDK | 链接 |
---|---|---|
无 Composer 集成,自动加载依赖第三方 PHP 框架 lotusphp
|
集成 | |
代码不严谨,各种 Warning | 持续构建,Notice 也不放过 | |
零单元测试 | 99% 测试覆盖率 | |
代码风格、命名风格鱼龙混杂 | PSR1 + PSR2 | |
弃用特性残留 | 已根据官方文档移除 | |
奇葩测试文件残留 | 已移除 | 讨论帖 |
几乎零 PHPDoc | 持续补充中 | 对比图 |
请求类居然没有抽象基类或接口 | 抽象基类,公共方法统一化 | AbstractAlipayRequest |
异常和错误处理不统一 | 所有错误都将以异常的形式抛出,确保返回数据可靠 | Exceptions |
需手动根据接口名拼接请求类名 | 请求类工厂,根据 API 名直接创建请求类 | AlipayRequestFactory |
耦合度高,难以升级或替换 | 几乎完全解耦,任意替换签名 / 密钥 / 响应 甚至 HTTP 客户端 | AopClient |
lotusphp
依赖。PSR-1
、PSR-2
。已弃用
特性。UTF-8
。目前,开源圈内已有不少质量不错的支付宝「支付」相关扩展包;而支付宝「小程序」推出不久,目前仍处于公测阶段。此项目的初衷并不是 Yet another
,而是填补小程序 API 的空缺,文档和示例也将会有所侧重。
Composer 安装。
composer require wi1dcard/alipay-sdk
Composer 中国镜像近期处于维护状态;若无法安装,建议使用原版 Packagist 或使用 Laravel-China 镜像。
创建 AlipayKeyPair
实例。
$keyPair = \Alipay\Key\AlipayKeyPair::create(
'应用私钥',
'支付宝公钥',
);
AlipayKeyPair
用于存储应用私钥、支付宝公钥;两份密钥将分别用于与支付宝服务器通信时,生成请求签名、验证响应签名等。
创建 AopClient
实例。
$aop = new \Alipay\AopClient('APP_ID', $keyPair);
AopClient
通常情况需要贯穿整条业务,除非你需要在同一套代码内处理多个商户号/小程序,否则只需要在初始化阶段创建一次即可。
根据业务需要,创建 AlipayRequest
实例。
$request = \Alipay\AlipayRequestFactory::create('点号连接的API名称', [
'请求参数名' => '对应参数值',
// ...
]);
另外,你也可以不使用请求类工厂,就像官方文档那样,手动创建请求类。
例如:
$request = new \Alipay\Request\AlipaySystemOauthTokenRequest();
$request->setCode('authcode');
发送请求,获得响应数据。
$result = $aop->execute($request)->getData();
所有错误(包括但不限于网络通信异常、数据格式异常、支付宝服务器返回的错误)都会被转换为异常,请注意捕捉。
更多实例,请移步 examples
目录。
最后,官方 SDK 内 AopClient::pageExecute()
被分离为 pageExecuteUrl
和 pageExecuteForm
。
AopClient::sdkExecute()
和 AopClient::execute()
方法名保持不变,参数和返回值有所改动。
private
的属性,它们可能已在迭代中被修改或废弃。已废弃
的特性,它们可能已在迭代中被废弃或移除。UTF-8
而非 GBK
。OpenSSL 在 Win32 平台需要配置 openssl.cnf
路径,参见 OpenSSL 安装 - PHP 手册。
在本 SDK 内,也可通过自定义 $configargs
参数来自定义此文件路径,而不需要配置环境变量;参见 examples/keys/generate.php。
目前已知以下方法依赖于此配置文件:
AlipayKeyPair::generate()
AlipayPrivateKey::toString()
最后,一点感想。
作为一个名不见经传的小白,不敢妄言阿里的工程师技术欠佳;但可以确定的是,官方提供的 PHP SDK 绝对不是用心之作。
做开放平台,对待第三方开发者是这样的态度,怎能做到与微信比肩?
硬广,欢迎关注我们的产品:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。