mylarge/cpssdk

cps联盟sdk

dev-master 2022-07-19 03:08 UTC

This package is auto-updated.

Last update: 2024-09-19 08:30:15 UTC


README

禁止直接将平台的SDK全部复制进来,所有类都必须整理为符合psr4加载规范的要求

SDK规范

此SDK包为各项目独立引用包,不要在其中写默认配置,如site('xxx_app_key')等。

  • 接口添加完后至少添加一个单元测试,作为用法示例

  • 各平台类的名字或命名空间,为了与其他原有项目区分,使用全拼,例如京东命名使用jingdong

  • 各平台客户端要继承 Mylarge\UnionSdk\SdkClient 抽象类,实现其中的execute方法,使用http请求的继承方法post、get,不能满足的可以直接使用GuzzleHttp包提供的方法

  • 一个接口对应一个请求类,同样要继承Mylarge\UnionSdk\Request类,不能满足的可以自定义一个基类,可参考其他平台对接示例

  • 各平台涉及到的appKey,key,appid,appSecret,client_id,client_secret accessToken,sessionKey等,统一使用 appKey,appSecret,accessToken,options

  • 客户端实例化时传入appKey,appSecret,options,全部为非必填,扩展配置可以使用options传入,详细处理逻辑可查看Mylarge\UnionSdk\SdkClient构造方法

接口调用示例

接口调用封装成统一的调用流程(视情况而定),如下,构造函数接收三个参数,第三个参数为数组,且可以覆盖类成员属性(扩展用)

// 创建联盟客户端
$client=JingdongClient::getInstance(self::$jdAppKey, self::$jdAppSecret,[]);
// 创建接口请求对象
$request = new UnionOpenStatisticsRedpacketQueryRequest();
// 设置对应的入参
$request->setKey('abcd');
// 执行请求返回结果
$response = $client->execute($request,self::$jdAccessToken);

execute执行完成后返回的数据是预期结果则正常返回数组,非预期则抛出UnionException异常,错误信息和数据可以加入异常类中获取

注意这里并不要求成功返回code为0,错误非0,主要用于发现联盟返回的未知异常信息,视具体的业务逻辑而定

  throw UnionException::build('联盟数据为空',1,['data'=>'aaaa']);

一个接口处理完成后,除了抛出 ParamException/UnionException 外,应该返回正常的结果(一个数组)

命令行工具

如果作为其他项目的依赖安装,可以使用以下命令生成或查看,尽量到本项目根目录下生成需要的接口请求类,然后打版本,更新SDK包时都可以使用

php ./vendor/bin/sdk

本项目使用

php sdk

查看指定平台的帮助详情

php sdk pdd -h

下面是已经支持自动生成SDK的平台命令行

拼多多文档

文档地址:https://open.pinduoduo.com/application/document/api?id=pdd.erp.order.sync
生成工具只是按默认规则下载官方文档相关数据,生成一个请求类,还需要人工检查测试参数必填项,返回值等

如果不存在则不会生成

php sdk pdd pdd.ddk.oauth.goods.search

强制覆盖生成

php sdk pdd pdd.ddk.oauth.goods.search -f=1

京东文档

文档地址 https://union.jd.com/openplatform/api
生成工具只是按默认规则下载官方文档相关数据,生成一个请求类,最后还需要人工测试参数必填项,返回值等

如果不存在则不会生成

php sdk jd jd.union.open.goods.bigfield.query

强制覆盖生成

php sdk jd jd.union.open.goods.bigfield.query -f=1