accsm / reseller-api-sdk
accsmaster经销商API的SDK
Requires
- php: >=7.3
- ext-curl: *
- ext-fileinfo: *
- ext-json: *
This package is auto-updated.
Last update: 2024-09-30 01:52:23 UTC
README
Markdown输出
Accsmaster SDK
这是官方的Accsmaster经销商SDK。它开箱即用,覆盖所有端点,并具有与API完全交互的功能。此SDK可以直接用于开发,或作为您自己的SDK的参考。
目录
安装
通过composer安装:composer require accsm/reseller-api-sdk
手动安装
- 下载存档
- 解压并将ResellerSDK添加到您的项目中
- 从命名空间中移除Accsm,并将路径指向您放置ResellerSDK文件夹的位置,并添加您的命名空间
入门
此SDK中只有4个文件
- src/ResellerSDK/ResellerSDK.php - 包含所有核心代码和逻辑
- index.php - 用于演示的文件(您可以删除它)
- callback_example.php - 用于演示的文件(您可以删除它)
让我们从我们的第一个也是唯一的ResellerSDK
类开始。
- 首先,我们需要创建一个新的对象。
require 'src\ResellerSDK\ResellerSDK.php'; // and/or use Accsm\ResellerSDK\ResellerSDK; $api = new ResellerSDK();
- 然后使用电子邮件和密码进行身份验证,检查我们的凭据是否正确,然后将认证数据中的令牌和用户密钥存储到您的数据库、文件、配置等中。
$authData = $api->auth('email@email.com', 'pass'); if (empty($success)) { throw new Exception('Wrong credentials'); } $bearerToken = $authData['bearerToken']; $userSecret = $authData['userSecret']; // Store $userSecret & $bearerToken // ...
- 然后我们可以使用此对象进行API请求!您可以在方法部分中看到所有方法列表。
$categories = $api->categories(); $offers = $api->offers(['product_id' => 4]); $user = $api->user();
- 下次您创建该类的对象时,只需简单地将bearer令牌和用户密钥传递到构造函数中即可。
$api = new ResellerSDK('token', 'secret');
订单状态
- 1: 新的
- 2: 进行中
- 3: 完成
- 4: 已取消
- 5: 待定
- 6: 已退款
- 7: 付款不足
方法
所有方法列表
-
$api->auth(string $email, string $password): ?array
-
$api->refresh(): ?string
-
$api->invalidate(): bool
-
$api->uesr(): array
-
$api->categories(): array
-
$api->offers(array $filters): array
-
$api->orders(): array
-
$api->order(string $orderNumber): array
-
$api->buy(string $type, array $data)
-
$api->getToken(): string
-
$api->getSecret(): string
-
$api->setToken(string $token): $this
-
$api->setSecret(string $secret): $this
身份验证
认证
端点: https://accsmaster.com/api/v1/user/login
方法: $api->auth(string $email, string $password)
参数: string $email, string $password
返回: ?array ['bearerToken' => 'token', 'userSecret' => 'secret']
或 null
此方法
- 在'user/login'端点上尝试身份验证。
- 将
存储到对象中。
强烈建议将令牌存储到数据库、文件或其他方式中,而不是每次请求时都使用此方法。
刷新
端点: https://accsmaster.com/api/v1/user/refresh
方法: $api->refresh();
返回: string(新令牌)或 null
此方法
- 刷新令牌。
- 用新的令牌替换对象中的旧令牌。
无效化
端点: https://accsmaster.com/api/v1/user/invalidate
方法: $api->refresh();
返回: bool (验证是否成功)
此方法
- 验证并从对象中删除令牌。
对象
构造
参数: string $bearerToken = '', string $userSecret = ''
$api = new \Accsm\ResellerSDK\ResellerSDK($bearerToken, $userSecret);
获取令牌
方法: $api->getToken()
返回: string (对象中的令牌)
此方法
- 从对象中获取承载令牌。
获取密钥
方法: $api->getSecret()
返回: string (对象中的密钥)
此方法
- 从对象中获取用户密钥。
设置令牌
方法: $api->setToken(string $token)
参数: string $token
返回: $this
此方法
- 将承载令牌设置到对象中。
设置密钥
方法: $api->setSecret(string $secret)
参数: string $secret
返回: $this
此方法
- 将用户密钥设置到对象中。
数据
用户
端点: https://accsmaster.com/api/v1/user
方法: $api->user();
返回: array (当前用户)
此方法
- 返回当前用户。
优惠
端点: https://accsmaster.com/api/v1/offers
方法: $api->offers(array $data);
参数: 可选: [category_id => int, product_id => int, discount => bool]
返回: array (优惠)
此方法
- 返回带有筛选器的优惠。
优惠
端点: https://accsmaster.com/api/v1/offer
方法: $api->offer(int $id);
参数: int $id
返回: array (优惠)
此方法
- 通过ID返回优惠。
类别
端点: https://accsmaster.com/api/v1/categories
方法: $api->categories();
返回: array (所有分类)
此方法
- 返回所有分类。
订单
端点: https://accsmaster.com/api/v1/orders
方法: $api->orders();
返回: array (用户订单)
此方法
- 返回所有用户订单。
订单
端点: https://accsmaster.com/api/v1/order
方法: $api->order(string $orderNumber);
参数: string $orderNumber
返回: array (用户订单)
此方法
- 通过其 'order_number' 返回订单。
购买
端点: https://accsmaster.com/api/v1/buy
方法: $api->buy(string $type, array $data);
返回: array (用户订单)
此方法
- 创建订单并执行网站上简单订单创建会执行的所有操作。
类型参数
$type
选项
'offer'
'review'
'install'
'offer'
类型 $data
参数
- quantity: 必需|int
- offer_id: 必需|int
- callback_url: 可选|string
- sandbox: 可选|bool
'review'
类型 $data
参数
- quantity: 必需|int
- offer_id: 必需|int
- url: 必需|string
- reviews_array: 可选|array
- reviews: 可选|string
- file: 可选|types:txt,doc,csv|max_size:6020
- callback_url: 可选|string
- sandbox: 可选|bool
'install'
类型 $data
参数
- quantity: 必需|int
- offer_id: 必需|int
- app_link: 必需|string
- app_id: 必需
- days: 必需|int
- country: 必需|array
- reviews: 可选|string
- file: 可选|types:txt,doc,csv|max_size:6020
- callback_url: 可选|string
- sandbox: 可选|bool
如果 'file'
、'reviews'
或 'reviews_array'
为空,则将自动生成评论。建议您编写自己的评论。
在 $data
中的参数解释:
'file'
: 以文件形式发送评论。它们将手动审核。示例:$data['file'] = realpath('') . '\' . 'test_data.txt;
'reviews'
: 评论应以 \n 分隔。示例:$data['reviews'] = 'review1 \n review2 \n review3';
'reviews_array'
:新索引中的每个评论。示例:$data['reviews_array'] = ['review1', 'review2', ...]
'url'
:写评论的网址'app_link'
:安装的网址'days'
:在以下时间段内分散安装'country'
:ISO国家代码(US、RU、UA等)'sandbox'
:沙盒模式以进行测试订单。$data['sandbox'] = 1;
用于测试订单。'callback_url'
:发送订单数据的您的url端点。
回调
如果在购买方法中提供callback_url,Accsmaster将在订单更新时向您发送订单数据。
$response = [ 'number' => 'order_number', 'status' => 'status_id', 'total' => 'price', 'secret_key' => 'secret_key' 'download_link' - 'link' // if needed ];
调用您的端点(您的callback_url)将始终包含签名头。这将使您确信调用来自Accsmaster。要检查是否有效,您需要使用以下代码对请求数据进行哈希处理
- 使用以下代码使用您的用户密钥对请求数据进行哈希处理
function signCallbackData(string $secret, array $data) { ksort($data); $string = ''; foreach($data as $value) { if (in_array(gettype($value), ['array', 'object', 'NULL']) ){ continue; } if(is_bool($value) && $value){ $string .= 1; } else { $string .= $value; } } return hash_hmac('sha512', strtolower($string), $secret); }
- 然后,将生成的哈希与签名头进行比较
$json = file_get_contents('php://input'); $data = json_decode($json); $headers = getallheaders(); $secret = 'my_secret'; $testSignature = signCallbackData($secret, $data); $signature = $headers['Signature']; if (!hash_equals($signature, $testSignature)) { // Error, wrong signature die; } // Process data // ...