vrobin/alipay-sdk

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

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

v1.5.0 2020-04-23 05:00 UTC

This package is auto-updated.

Last update: 2024-04-23 13:44:44 UTC


README

原项目部更新了,fork过来

更新官方SDK,支持公钥证书加密,支持AES加密,支持PHP7.2

原项目

主要目的

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

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

小试牛刀

如何使用

  1. Composer 安装。

    composer require vrobin/alipay-sdk
  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. 使用AES加密 ( 某些接口默认强制开启AES加密,无需额外设置 )

    $aop->encryptKey = 'AES秘钥';
    $request = new \Alipay\Request\AlipaySystemOauthTokenRequest(['needNeedEncrypt'=>true]);

    单独解密 ( 如小程序获取用户手机号 )

    $decrypt_string = \Alipay\AopEncrypt::decrypt('秘文','秘钥');
  7. 更多实例,请移步 examples 目录。

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

注意事项

  • 请不要依赖任何在官方 SDK 内被标注为 private 的属性,它们可能已在迭代中被修改或废弃。
  • 请不要依赖任何在官方 API 文档内被标注为 已废弃 的特性,它们可能已在迭代中被废弃或移除。
  • 本 SDK 已移除所有编码转换特性;请确保执行上传文件请求时,文件编码为 UTF-8 而非 GBK

实用工具

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

其它资源

已知 Issue

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

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

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

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

感谢

感想

最后,一点感想。

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

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

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

68747470733a2f2f692e6c6f6c692e6e65742f323031382f30372f32342f356235366464613736623262612e706e67