yijin/easysdk

此软件包已被废弃,不再维护。未建议替代软件包。

支付宝官方 Alipay Easy SDK-适配SWOOLE

1.0.1 2021-06-09 09:18 UTC

This package is auto-updated.

Last update: 2021-10-09 10:05:56 UTC


README

Latest Stable Version FOSSA Status

基于 Alipay Easy SDK for PHP 魔改的版本,主要是去除单例,防止swoole协程环境下数据混淆。

Alipay Easy SDK for PHP 让您无需复杂的编程即可访问支付宝开放平台提供的各项常用功能,SDK可以自动帮助您满足能力调用过程中所需的证书校验、加签、验签、发送HTTP请求等非功能性要求。

以下向您介绍Alipay Easy SDK for PHP 的基本设计理念和使用方法。

设计理念

与原有的Alipay SDK通用全面的设计理念不同,Alipay Easy SDK 对开放能力的 API 进行了更加贴近高频场景的精心设计与裁剪,简化了服务端调用方式,让调用 API 像使用语言内置的函数一样简便。

Alipay Easy SDK 提供了与 能力地图 对应的代码组织结构,让开发者可以快速找到不同能力对应的 API。

Alipay Easy SDK 的主要目标是提高开发者集成支付宝开放平台各类核心能力的效率。

环境要求

  1. Alipay Easy SDK for PHP 需要 PHP 7.0 或更高版本。

  2. 在使用 Alipay Easy SDK for PHP 之前,您需要先前往 支付宝开发平台-开发者中心 完成开发者接入的一些准备工作,包括创建应用、为应用添加功能包、设置应用的接口加签方式等。

  3. 准备工作完成后,注意保存如下信息,后续将作为使用 SDK 的输入。

  • 加签模式为公钥证书模式时(推荐)

AppId应用的私钥应用公钥证书文件支付宝公钥证书文件支付宝根证书文件

  • 加签模式为公钥模式时

AppId应用的私钥支付宝公钥

安装依赖

通过 Composer 在线安装依赖(推荐)

composer require alipaysdk/easysdk:^2.2

本地手动集成依赖(适用于自己修改源码后的本地重新打包安装)

  1. 在本机安装配置 Composer 工具。
  2. 在本 README.md 所在目录下,执行 composer install,下载 SDK 依赖。
  3. 依赖文件会下载到 vendor 目录下。

快速使用

以下代码示例向您展示了使用 Alipay Easy SDK for PHP 调用一个 API 的 3 个主要步骤:

  1. 设置参数(全局只需设置一次)。
  2. 发起 API 调用。
  3. 处理响应或异常。
<?php

require 'vendor/autoload.php';
use Alipay\EasySDKSwoole\Kernel\Factory;
use Alipay\EasySDKSwoole\Kernel\Util\ResponseChecker;
use Alipay\EasySDKSwoole\Kernel\Config;

//1. 设置参数(全局只需设置一次)
Factory::setOptions(getOptions());

try {
    //2. 发起API调用(以支付能力下的统一收单交易创建接口为例)
    $result = Factory::payment()->common()->create("iPhone6 16G", "20200326235526001", "88.88", "2088002656718920");
    $responseChecker = new ResponseChecker();
    //3. 处理响应或异常
    if ($responseChecker->success($result)) {
        echo "调用成功". PHP_EOL;
    } else {
        echo "调用失败,原因:". $result->msg.",".$result->subMsg.PHP_EOL;
    }
} catch (Exception $e) {
    echo "调用失败,". $e->getMessage(). PHP_EOL;;
}

function getOptions()
{
    $options = new Config();
    $options->protocol = 'https';
    $options->gatewayHost = 'openapi.alipay.com';
    $options->signType = 'RSA2';
    
    $options->appId = '<-- 请填写您的AppId,例如:2019022663440152 -->';
    
    // 为避免私钥随源码泄露,推荐从文件中读取私钥字符串而不是写入源码中
    $options->merchantPrivateKey = '<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->';
    
    $options->alipayCertPath = '<-- 请填写您的支付宝公钥证书文件路径,例如:/foo/alipayCertPublicKey_RSA2.crt -->';
    $options->alipayRootCertPath = '<-- 请填写您的支付宝根证书文件路径,例如:/foo/alipayRootCert.crt" -->';
    $options->merchantCertPath = '<-- 请填写您的应用公钥证书文件路径,例如:/foo/appCertPublicKey_2019051064521003.crt -->';
    
    //注:如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可
    // $options->alipayPublicKey = '<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->';

    //可设置异步通知接收服务地址(可选)
    $options->notifyUrl = "<-- 请填写您的支付类接口异步通知接收服务地址,例如:https://www.test.com/callback -->";
    
    //可设置AES密钥,调用AES加解密相关接口时需要(可选)
    $options->encryptKey = "<-- 请填写您的AES密钥,例如:aa4BtZ4tspm2wnXLb1ThQA== -->";



    return $options;
}

扩展调用

ISV代调用

Factory::payment()->faceToFace()
    // 调用agent扩展方法,设置app_auth_token,完成ISV代调用
    ->agent("ca34ea491e7146cc87d25fca24c4cD11")
    ->preCreate("Apple iPhone11 128G", "2234567890", "5799.00");

设置独立的异步通知地址

Factory::payment()->faceToFace()
    // 调用asyncNotify扩展方法,可以为每此API调用,设置独立的异步通知地址
    // 此处设置的异步通知地址的优先级高于全局Config中配置的异步通知地址
    ->asyncNotify("https://www.test.com/callback")
    ->preCreate("Apple iPhone11 128G", "2234567890", "5799.00");

设置可选业务参数

$goodDetail = array(
            "goods_id" => "apple-01",
            "goods_name" => "iPhone6 16G",
            "quantity" => 1,
            "price" => "5799"
        );
        $goodsDetail[0] = $goodDetail;

Factory::payment()->faceToFace()
    // 调用optional扩展方法,完成可选业务参数(biz_content下的可选字段)的设置
    ->optional("seller_id", "2088102146225135")
    ->optional("discountable_amount", "8.88")
    ->optional("goods_detail", $goodsDetail)
    ->preCreate("Apple iPhone11 128G", "2234567890", "5799.00");


$optionalArgs = array(
            "timeout_express" => "10m",
            "body" => "Iphone6 16G"
        );

Factory::payment()->faceToFace()
    // 也可以调用batchOptional扩展方法,批量设置可选业务参数(biz_content下的可选字段)
    ->batchOptional($optionalArgs)
    ->preCreate("Apple iPhone11 128G", "2234567890", "5799.00");

多种扩展灵活组合

// 多种扩展方式可灵活组装(对扩展方法的调用顺序没有要求)
Factory::payment()->faceToFace()
    ->agent("ca34ea491e7146cc87d25fca24c4cD11")
    ->asyncNotify("https://www.test.com/callback")
    ->optional("seller_id", "2088102146225135")
    ->preCreate("Apple iPhone11 128G", "2234567890", "5799.00");

API 组织规范

在 Alipay Easy SDK 中,API 的引用路径与能力地图的组织层次一致,遵循如下规范

Factory::能力名称()->场景名称()->接口方法名称( ... )

例如,如果您想要使用 能力地图营销能力 下的 模板消息 场景中的 小程序发送模板消息,只需按如下形式编写调用代码即可(不同编程语言的连接符号可能不同)。

Factory::marketing()->templateMessage()->send( ... )

其中,接口方法名称通常是对其依赖的 OpenAPI 功能的一个最简概括,接口方法的出入参与 OpenAPI 中同名参数含义一致,可参照 OpenAPI 相关参数的使用说明。

Alipay Easy SDK 将致力于保持良好的 API 命名,以符合开发者的编程直觉。

已支持的 API 列表

能力类别 场景类别 接口方法名称 调用的 OpenAPI 名称
Base OAuth getToken alipay.system.oauth.token
Base OAuth refreshToken alipay.system.oauth.token
Base Qrcode create alipay.open.app.qrcode.create
Base Image upload alipay.offline.material.image.upload
Base Video upload alipay.offline.material.image.upload
Member Identification init alipay.user.certify.open.initialize
Member Identification certify 支付宝用户认证开放认证
Member Identification 查询 支付宝用户认证开放查询
支付 通用 create alipay.trade.create
支付 通用 查询 alipay.trade.query
支付 通用 退款 alipay.trade.refund
支付 通用 关闭 alipay.trade.close
支付 通用 取消 alipay.trade.cancel
支付 通用 查询退款 alipay.trade.fastpay.refund.query
支付 通用 下载账单 alipay.data.dataservice.bill.downloadurl.query
支付 通用 验证通知 -
支付 花呗 create alipay.trade.create
支付 面对面支付 支付 alipay.trade.pay
支付 面对面支付 预创建 alipay.trade.precreate
支付 App 支付 alipay.trade.app.pay
支付 页面 支付 alipay.trade.page.pay
支付 Wap 支付 alipay.trade.wap.pay
安全 文本风险 检测 alipay.security.risk.content.detect
营销 通过 创建模板 alipay.pass.template.add
营销 通过 更新模板 alipay.pass.template.update
营销 通过 添加实例 alipay.pass.instance.add
营销 通过 更新实例 alipay.pass.instance.update
营销 模板消息 发送 alipay.open.app.mini.templatemessage.send
营销 开放生活 创建图文内容 alipay.open.public.message.content.create
营销 开放生活 修改图文内容 alipay.open.public.message.content.modify
营销 开放生活 发送文本 alipay.open.public.message.total.send
营销 开放生活 发送图文 alipay.open.public.message.total.send
营销 开放生活 发送单条消息 alipay.open.public.message.single.send
营销 开放生活 撤回消息 alipay.open.public.life.msg.recall
营销 开放生活 设置行业 alipay.open.public.template.message.industry.modify
营销 开放生活 获取行业 alipay.open.public.setting.category.query
工具 AES 解密 -
工具 AES 加密 -
工具 通用 执行 -
工具 通用 sdkExecute -
工具 通用 fileExecute -

注:更多高频场景的API持续更新中,敬请期待。

文档

API文档

支付宝Easy SDK