nizerin/alipay-sdk

There is no license information available for the latest version (1.0.0) of this package.

支付宝(蚂蚁金服)开放平台第三方 PHP SDK,基于官方 3.3.1 版本。

1.0.0 2019-05-25 06:53 UTC

This package is auto-updated.

Last update: 2024-10-24 15:06:42 UTC


README

🐜 支付宝开放平台(又称:蚂蚁金服开放平台)第三方 PHP SDK,基于官方 3.3.1 版本。

❤️ 本项目 GitHub ,目前已在公司产品应用,运行在数百台客户服务器内。

🎉 百度小程序第三方 PHP SDK

为什么不用官方

主要目的

  • 集成 Composer。
  • 降低 PHP 依赖至 5.4。
  • 移除官方 SDK 内 lotusphp 依赖。
  • 整理代码风格使其符合 PSR-1PSR-2
  • 增加单元测试。
  • 兼容 PHP 7.2,替换 MCrypt 为 OpenSSL
  • 移除官方 API 文档内 已弃用 特性。
  • 移除难以拓展的调试、日志等特性,以便于集成第三方框架和扩展包。
  • 移除编码转换特性,统一使用 UTF-8
  • 其它优化,持续进行中 ...

目前,开源圈内已有不少质量不错的支付宝「支付」相关扩展包;而支付宝「小程序」推出不久,目前仍处于公测阶段。此项目的初衷并不是 Yet another,而是填补小程序 API 的空缺,文档和示例也将会有所侧重。

小试牛刀

如何使用

  1. Composer 安装。

    composer require nizerin/alipay-sdk:

    Composer 中国镜像近期处于维护状态;若无法安装,建议使用原版 Packagist 或使用 Laravel-China 镜像

  2. 创建 AlipayKeyPair 实例。

    $keyPair = \Alipay\Key\AlipayKeyPair::create(
        '应用私钥',
        '支付宝公钥',
    );

    AlipayKeyPair 用于存储应用私钥、支付宝公钥;两份密钥将分别用于与支付宝服务器通信时,生成请求签名、验证响应签名等。

  3. 创建 AopClient 实例。

    $aop = new \Alipay\AopClient('APP_ID', $keyPair);

    AopClient 通常情况会贯穿整条业务,除非你须要在同一套代码内处理多个商户号/小程序,否则只需在初始化阶段创建一次即可。

  4. 根据业务需要,创建 AlipayRequest 实例。

    $request = (new \Alipay\AlipayRequestFactory)->create('点号连接的API名称', [
        '请求参数名' => '对应参数值',
        // ...
    ]);

    另外,你也可以不使用请求类工厂,就像官方文档那样,手动创建请求类。

    例如:

    $request = new \Alipay\Request\AlipaySystemOauthTokenRequest();
    $request->setCode('authcode');
  5. 发送请求,获得响应数据。

    $result = $aop->execute($request)->getData();

    所有错误(包括但不限于网络通信异常、数据格式异常、支付宝服务器返回的错误)都会被转换为异常,请注意捕捉。

  6. 更多实例,请移步 examples 目录。

    最后,官方 SDK 内 AopClient::pageExecute() 被分离为 pageExecuteUrlpageExecuteFormAopClient::sdkExecute()AopClient::execute() 方法名保持不变,参数和返回值有所改动。

注意事项

  • 请不要依赖任何在官方 SDK 内被标注为 private 的属性,它们可能已在迭代中被修改或废弃。
  • 请不要依赖任何在官方 API 文档内被标注为 已废弃 的特性,它们可能已在迭代中被废弃或移除。
  • 本 SDK 只适用于目前正在开发或即将开始开发的项目;由于将会采取相对激进的态度开发,所以请勿尝试将原有代码迁移至本 SDK。
  • 本 SDK 已移除所有编码转换特性;请确保执行上传文件请求时,文件编码为 UTF-8 而非 GBK

实用工具

可执行文件位于 bin 目录下,点此查看 详细说明

其它资源

已知 Issue

OpenSSL 在 Win32 平台需要配置 openssl.cnf 路径,参见 OpenSSL 安装 - PHP 手册

在本 SDK 内,也可通过自定义 $configargs 参数来自定义此文件路径,而不需要配置环境变量;参见 examples/keys/generate.php

目前已知以下方法依赖于此配置文件:

  • 生成密钥对:AlipayKeyPair::generate()
  • 将私钥资源转换为字符串:AlipayPrivateKey::toString()

感谢

感想

最后,一点感想。

作为一个名不见经传的小白,不敢妄言阿里的工程师技术欠佳;但可以确定的是,官方提供的 PHP SDK 绝对不是用心之作。

做开放平台,对待第三方开发者是这样的态度,怎能做到与微信比肩?

硬广,欢迎关注我们的产品: