accsm/reseller-api-sdk

此包的最新版本(v1.0.0)没有可用的许可证信息。

accsmaster经销商API的SDK

v1.0.0 2023-06-30 16:56 UTC

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

手动安装

  1. 下载存档
  2. 解压并将ResellerSDK添加到您的项目中
  3. 从命名空间中移除Accsm,并将路径指向您放置ResellerSDK文件夹的位置,并添加您的命名空间

入门

此SDK中只有4个文件

  • src/ResellerSDK/ResellerSDK.php - 包含所有核心代码和逻辑
  • index.php - 用于演示的文件(您可以删除它)
  • callback_example.php - 用于演示的文件(您可以删除它)

让我们从我们的第一个也是唯一的ResellerSDK类开始。

  1. 首先,我们需要创建一个新的对象。
require 'src\ResellerSDK\ResellerSDK.php';
// and/or
use Accsm\ResellerSDK\ResellerSDK;

$api = new ResellerSDK();
  1. 然后使用电子邮件和密码进行身份验证,检查我们的凭据是否正确,然后将认证数据中的令牌和用户密钥存储到您的数据库、文件、配置等中。
$authData = $api->auth('email@email.com', 'pass');

if (empty($success)) {
    throw new Exception('Wrong credentials');
}

$bearerToken = $authData['bearerToken'];
$userSecret = $authData['userSecret'];

// Store $userSecret & $bearerToken
// ...
  1. 然后我们可以使用此对象进行API请求!您可以在方法部分中看到所有方法列表。
$categories = $api->categories();
$offers = $api->offers(['product_id' => 4]);
$user = $api->user();
  1. 下次您创建该类的对象时,只需简单地将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

此方法

  1. 在'user/login'端点上尝试身份验证。
  2. 存储到对象中。

强烈建议将令牌存储到数据库、文件或其他方式中,而不是每次请求时都使用此方法。

刷新

端点: https://accsmaster.com/api/v1/user/refresh
方法: $api->refresh();
返回: string(新令牌)或 null

此方法

  1. 刷新令牌。
  2. 用新的令牌替换对象中的旧令牌。

无效化

端点: https://accsmaster.com/api/v1/user/invalidate
方法: $api->refresh();
返回: bool (验证是否成功)

此方法

  1. 验证并从对象中删除令牌。

对象

构造

参数: string $bearerToken = '', string $userSecret = ''

$api = new \Accsm\ResellerSDK\ResellerSDK($bearerToken, $userSecret);

获取令牌

方法: $api->getToken()
返回: string (对象中的令牌)

此方法

  1. 从对象中获取承载令牌。

获取密钥

方法: $api->getSecret()
返回: string (对象中的密钥)

此方法

  1. 从对象中获取用户密钥。

设置令牌

方法: $api->setToken(string $token)
参数: string $token 返回: $this

此方法

  1. 将承载令牌设置到对象中。

设置密钥

方法: $api->setSecret(string $secret)
参数: string $secret 返回: $this

此方法

  1. 将用户密钥设置到对象中。

数据

用户

端点: https://accsmaster.com/api/v1/user
方法: $api->user();
返回: array (当前用户)

此方法

  1. 返回当前用户。

优惠

端点: https://accsmaster.com/api/v1/offers
方法: $api->offers(array $data);
参数: 可选: [category_id => int, product_id => int, discount => bool]
返回: array (优惠)

此方法

  1. 返回带有筛选器的优惠。

优惠

端点: https://accsmaster.com/api/v1/offer
方法: $api->offer(int $id);
参数: int $id
返回: array (优惠)

此方法

  1. 通过ID返回优惠。

类别

端点: https://accsmaster.com/api/v1/categories
方法: $api->categories();
返回: array (所有分类)

此方法

  1. 返回所有分类。

订单

端点: https://accsmaster.com/api/v1/orders
方法: $api->orders();
返回: array (用户订单)

此方法

  1. 返回所有用户订单。

订单

端点: https://accsmaster.com/api/v1/order
方法: $api->order(string $orderNumber);
参数: string $orderNumber
返回: array (用户订单)

此方法

  1. 通过其 'order_number' 返回订单。

购买

端点: https://accsmaster.com/api/v1/buy
方法: $api->buy(string $type, array $data);
返回: array (用户订单)

此方法

  1. 创建订单并执行网站上简单订单创建会执行的所有操作。

类型参数

$type 选项

  1. 'offer'
  2. 'review'
  3. '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。要检查是否有效,您需要使用以下代码对请求数据进行哈希处理

  1. 使用以下代码使用您的用户密钥对请求数据进行哈希处理
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);
}
  1. 然后,将生成的哈希与签名头进行比较
$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
// ...