bestlang / easysdk
支付宝官方 Alipay Easy SDK
Requires
- php: >=7.0
- ext-ctype: *
- ext-curl: *
- ext-dom: *
- ext-fileinfo: *
- ext-json: *
- ext-libxml: *
- ext-mbstring: *
- ext-openssl: *
- ext-simplexml: *
- ext-xmlwriter: *
- adbario/php-dot-notation: ^2.2
- alibabacloud/tea: ^3.1
- alibabacloud/tea-fileform: ^0.3.2
- danielstjules/stringy: ^3.1
- guzzlehttp/guzzle: >=6.3
- mtdowling/jmespath.php: ^2.4
- pimple/pimple: ^3.0
- psr/log: ^1.1
- songshenzong/support: ^2.0
- xin/container: ^2.0.1
Requires (Dev)
- phpunit/phpunit: ^7.5
README
欢迎使用 Alipay Easy SDK。
打造最好用的支付宝开放平台服务端SDK,Alipay Easy SDK让您享受极简编程体验,快速访问支付宝开放平台开放的各项核心能力。
设计理念
不同于原有的Alipay SDK通用而全面的设计理念,Alipay Easy SDK对开放能力的API进行了更加贴近高频场景的精心设计与裁剪,简化了服务端调用方式,让调用API像使用语言内置的函数一样简便。
同时,您也不必担心面向高频场景提炼的API可能无法完全契合自己的个性化场景,Alipay Easy SDK支持灵活的动态扩展方式,同样可以满足低频参数、低频API的使用需求。
Alipay Easy SDK提供了与能力地图相对应的代码组织结构,让开发者可以快速找到不同能力对应的API。
Alipay Easy SDK主要目标是提升开发者在服务端集成支付宝开放平台开放的各类核心能力的效率。
化繁为简
- Alipay Easy SDK 😃
Factory.Payment.Common().create("Iphone6 16G", "202003019443", "0.10", "2088002656718920");
- Alipay SDK 😕
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest(); AlipayTradeCreateModel model = new AlipayTradeCreateModel(); model.setSubject("Iphone6 16G"); model.setOutTradeNo("202003019443"); model.setTotalAmount("0.10"); model.setBuyerId("2088002656718920"); ... request.setBizModel(model); ... alipayClient.execute(request);
如何切换
-
无论是Alipay Easy SDK还是Alipay SDK,本质都是发送HTTP请求访问Open API网关,所以只需将原来通过Alipay SDK调用Open API的代码,替换为Alipay Easy SDK中对应API的调用即可。Alipay Easy SDK和Alipay SDK并无冲突,可以共存。
-
如果您所需对接的开放平台能力,Alipay Easy SDK尚未提炼出API支持(已支持的API列表),您可以通过通用接口完成调用。
-
我们会持续挖掘高频场景,不断丰富Alipay Easy SDK支持的API,让您在绝大多数常见场景下,都能享受Alipay Easy SDK带来的便捷。
技术特点
纯语言开发
所有Alipay Easy SDK的具体编程语言的实现,均只采用纯编程语言进行开发,不引入任何重量级框架,减少潜在的框架冲突,让SDK可以自由集成进任何代码环境中。
结构清晰
我们按照能力类别和场景类别对API进行了归类,结构更加清晰,一目了然。
更多信息请参见API组织规范。
参数精简
Alipay Easy SDK对每个API都精心打磨,剔除了Open API
中不常用的可选参数,减少普通用户的无效选择,提升开发效率。
灵活扩展
开发者可以通过Fluent风格的API链式调用,在为高频场景打造的API基础上,不断扩展自己的个性化场景需求。
// 通过调用agent方法,扩展支持ISV代调用场景 Factory.Payment.FaceToFace().agent("ca34ea491e7146cc87d25fca24c4cD11").preCreate(...) // 通过调用optional方法,扩展支持个性化可选参数 Factory.Payment.FaceToFace().optional("extend_params", extendParams).preCreate(...) // 多种扩展可灵活搭配,不同扩展方法功能详细说明请前往各语言主页中的“快速开始-扩展调用”栏目中查看 Factory.Payment.FaceToFace() .agent(...) .optionalArgs(...) .auth(...) .asyncNotify(...) .preCreate(...)
测试/示例完备
每个API都有对应的单元测试进行覆盖,良好的单元测试天生就是最好的示例。
同时您也可以前往API Doc查看每个API的详细使用说明。
注:单元测试中使用到的私钥均进行了脱敏处理,会导致单元测试无法直接执行。您可以自行更改单元测试项目中的
TestAccout类
和privateKey.json
文件中的相关账号与私钥配置后再执行单元测试。
多语言
Alipay Easy SDK基于阿里集团研发的Tea DSL
工具链进行架构,通过DSL中间语言定义API模型,再基于DSL语言自动生成不同编程语言(Java、C#、PHP、TS等)实现的SDK,极大地提升了SDK能力的扩展效率和适用范围,同时也保证了相同的Easy API
在不同语言生态中体验的一致性。
API模型的Tea DSL描述可以进入tea目录查看。
Tea DSL相关介绍和编写规范正在筹划开放中,后续您也可以参与Tea DSL的编写贡献更多优秀的
Easy API
模型,而无需关心多语言问题。
快速集成
各语言SDK均会在各自的中央仓库(Maven、NuGet、Composer、NPM etc.)中同步发布,让您使用各语言主流依赖管理工具即可一键安装集成SDK。
语言支持情况
Alipay Easy SDK首发暂只支持Java
、C#
、PHP
编程语言,更多编程语言支持正在积极新增中,敬请期待。
各语言具体的使用说明和详细介绍请点击如下链接进入各语言主目录查看。
API组织规范
在Alipay Easy SDK中,API的引用路径与能力地图的组织层次一致,遵循如下规范
Factory.能力类别.场景类别.接口方法名称( ... )
比如,如果您想要使用能力地图中营销能力
下的模板消息
场景中的小程序发送模板消息
,只需按如下形式编写调用代码即可(不同编程语言的连接符号可能不同)。
Factory.Marketing.TemplateMessage().send( ... )
其中,接口方法名称通常是对其依赖的OpenAPI功能的一个最简概况,接口方法的出入参与OpenAPI中同名参数含义一致,可参照OpenAPI相关参数的使用说明。
Alipay Easy SDK将致力于保持良好的API命名,以符合开发者的编程直觉。
已支持的API列表
注:更多高频场景的API持续更新中,敬请期待。
您还可以前往API Doc查看每个API的详细使用说明。
变更日志
每个版本的详细更改记录在变更日志中。
版本号最末一位修订号的增加(比如从
1.0.0
升级为1.0.1
),意味着SDK的功能没有发生任何变化,仅仅是修复了部分Bug。该类升级可能不会记录在变更日志中。
版本号中间一位次版本号的增加(比如从
1.0.0
升级为1.1.0
),意味着SDK的功能发生了可向下兼容的新增或修改。
版本号首位主版本号的增加(比如从
1.0.0
升级为2.0.0
),意味着SDK的功能可能发生了不向下兼容的较大调整,升级主版本号后请注意做好相关的回归测试工作。
相关
许可证
交流与技术支持
不管您在使用Alipay Easy SDK的过程中遇到任何问题,欢迎在当前 GitHub 提交 Issues。
您也可以使用钉钉扫描下方二维码,与更多开发者和支付宝工程师共同交流。