Mixin-Network SDK for PHP, modify from ExinOne/laravel-mixin-sdk
Switch branches/tags
Nothing to show
Clone or download

readme.md

Mixin-SDK-PHP


Mixin-Network SDK for PHP, modify from ExinOne/laravel-mixin-sdk

Requirement

  1. Composer
  2. PHP >= 7.0

Installation

$ composer require exinone/mixin-sdk-php -vvv

Use

Example

// Configuration file format
$config0 = [
    'mixin_id'      => '7000101633',
    'client_id'     => '982afd4e-92dd-4430-98cf-d308442ea04d',
    'client_secret' => 'b0a9adf1b358501b1fb6065c6292b09dbc675d5734225f86e0ec14a71d0fd38a',
    'pin'           => '125334',
    'pin_token'     => 'RzgyepFhLbMx+zLw6ogYzZ5k+kmlo8gQ2f4+1uwGMi1HgvMexGdFdeny0ffuBl7gXgPqi1GpUDPWPNrgAIjwGIFu+rHSre1G7JA5ET6tgIYoC+OI2dF0PmNK0qtkjK+qpGpSCt8nFbTfgyHjFENAp4hLZEIhuhzSPPmkkhXGlAU=',
    'session_id'    => '8a70b414-bdef-46f3-9738-186c1095da61',
    'private_key'   => <<<EOF
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCZAkpYA7eH38GbzIX653dxBAEanrSSdYbzQYIV/kKbULYSB43X
5hWfCFpNJ6FoIUjHAzrNyqJMvSS6LwAA+R4w5GYv8en1Ga1blKbziCMvZsRJ65bP
F2cPbPQUYNWZpZRsyFlMZCjVVytA1a+HWba5FzGBXiEEzd5BVo9truxGKQIDAQAB
AoGBAJHpVj4ipUWEgtvxKR9A1m1G9UqOaAJ2409cfBI/GwOD72y4GXL2rk2vKHYF
Qe3MN9vY353aC/YENV77bRSAfGF+lAuw3hQOFfMvKfRUmVaB5V4kEaF1+z9jPHwh
QcSpqyAsMClEnyMxbNrFih4tQGlGUydHI3xv1wK+53MjncwBAkEA98GvzldsLW7E
dhwXLba3KN/GvLZLcljLyHjctUxCU8EywD73UM1lJuayWvYdLfzFe0p9cDjvS8Gx
sbYg3eE2qQJBAJ4ZkqVbdCAyUBpjaIO9QzxsL77zCgayrQTvWv0QQgJputO7S2rs
i/iCmt1bZ3IAnfVnDUJfAaxSL6VU1T6Fw4ECQQCtUvrCx7YOMqeOWSh9+o04MxS9
gGpXnHcz0BnXW3orTcVLaMFr7cUN6eZsbDENswAUuI/4qlv+C4tcX6Wuk5fBAkA+
EggzB37GDTrJwXGNF0dId6kfLMgo7QlkwJxWcoWX8O66pfPsHMavYIdwlKw+Y+Og
Lz9TaX18rB+sp2u5SkcBAkBIsC/AJNhf1xILLAkkpycJ7rc864Y1JbmKk+I5fXid
vA4vKPqu2ZnD0O4YbGmciuTRPgeJqAt8bbHq/xOfL0lE
-----END RSA PRIVATE KEY-----
EOF
            ,  //import your private_key
];

$mixinSdk = new \ExinOne\MixinSDK\MixinSDK();
// use setConfig method to save config
$mixinSdk->setConfig('myConfig-A',$config0);
$mixinSdk->setConfig('myConfig-B',$config1);
// then you can
$mixinSdk->use('myConfig-A')->user()->readProfile();

//-------
// Or more simple way, using the 'use' method , chained with other methods
$mixinSdk->use('myConfig-A',$config)->user()->readProfile();
// then you can
$mixinSdk->use('myConfig-A')->user()->readProfile();

Run

code description module Mixin Network Docs
MixinSDK::pin()->updatePin($oldPin, $pin) Update Pin code Pin link
MixinSDK::pin()->verifyPin($pin) Verify Pin code Pin link
--- -- --
MixinSDK::user()->readProfile() Read self profile User link
MixinSDK::user()->updateProfile(string $full_name, string $avatar_base64 = '') Update user’s profile. User link
MixinSDK::user()->updatePreferences(string $receive_message_source, string $accept_conversation_source) Update user’s preferences. User link
MixinSDK::user()->rotateQRCode() Rotate user’s code_id. User link
MixinSDK::user()->readFriends() Get user’s friends. User link
--- -- --
MixinSDK::wallet()->createAddress(string $asset_id, string $public_key, $pin, $label, bool $isEOS = false) Create an address for withdrawal Wallet link
MixinSDK::wallet()->readAddresses(string $assetId) Read addresses by asset ID. Wallet link
MixinSDK::wallet()->readAddress(string $addressId) Read an address by ID. Wallet link
MixinSDK::wallet()->deleteAddress(string $addressId, $pin) Delete an address by ID. Wallet link
MixinSDK::wallet()->readAssets() Read user’s all assets. Wallet link
MixinSDK::wallet()->readAsset(string $assetId) Read asset by ID. Wallet link
MixinSDK::wallet()->deposit(string $assetId) Gant an asset’s deposit address Wallet link
MixinSDK::wallet()->withdrawal(string $addressId, $amount, $pin, $memo = '', $tracd_id = null) Get assets out of Mixin Network Wallet link
MixinSDK::wallet()->transfer(string $assetId, string $opponentId, $pin, $amount, $memo = '', $tracd_id = null) Transfer of assets between Mixin Network users. Wallet link
MixinSDK::wallet()->verifyPayment(string $asset_id, string $opponent_id, $amount, string $trace_id) Verify a transfer Wallet link
MixinSDK::wallet()->readTransfer(string $traceId) Read transfer by trace ID. Wallet link
MixinSDK::wallet()->readAssetFee(string $assetId) Read transfer fee Wallet null
MixinSDK::wallet()->readUserSnapshots($limit = null, string $offset = null, string $asset = '', string $order = 'DESC') Get user's all snapshots. Wallet link
MixinSDK::wallet()->readUserSnapshot(string $snapshotId) Get user's a snapshots by ID. Wallet link
MixinSDK::wallet()->searchAssets(string $snapshotId) search assets Wallet link
--- -- --
MixinSDK::network()->readUser(string $userId) Get user’s information by ID. Network link
MixinSDK::network()->readUsers(array $userIds) Get users information by IDs. Network link
MixinSDK::network()->searchUser($item) Search user by ID. Network link
MixinSDK::network()->readNetworkAsset(string $assetId) Read public asset information by ID from Mixin Network. Network link
MixinSDK::network()->readNetworkSnapshots($limit = null, string $offset = null, string $asset = '', string $order = 'DESC') Read public snapshots of Mixin Network. Network link
MixinSDK::network()->readNetworkSnapshot(string $snapshotId) Read public snapshots of Mixin Network by ID. Network link
MixinSDK::network()->createUser($fullName) Create a new Mixin Network user Network link
MixinSDK::network()->externalTransactions(string $asset = null, string $public_key = null, $limit = null, string $offset = null, string $account_name = null) Read external transactions Network link
MixinSDK::network()->createAttachments() Create an attachment upload address. Network link
MixinSDK::network()->mixinNetworkChainsSyncStatus() Get Mixin Network Chains Synchronize status Network null
MixinSDK::network()->topAsset() Read top valuable assets of Mixin Network. Network link
MixinSDK::network()->requestAccessToken(string $code) use code request access token Network link
MixinSDK::network()->accessTokenGetInfo(string $access_token) use access token get info Network link
--- -- --
MixinSDK::getOauthUrl($client_id, string $scope) Get Oauth Url other link
MixinSDK::getConfig($configGroupName='') read config other null

Exceptions

If MixinNetwork response with an error,An Exception ExinOne\MixinSDK\Exceptions\MixinNetworkRequestException will be thrown. Developers need to capture and handle this exception.

try {
    // If the transfer fails here, an error will be thrown.
    $mixinSdk->wallet()->transfer($asset_id, $opponent_id, $pin, $amount, $memo);
} catch (MixinNetworkRequestException $e) {
    // Here errCode and errMessage are the same as MixinNetwork, refer to the following link.
    $errCode    = $e->getCode();
    $errMessage = $e->getMessage();
    ...
} catch (\Throwable $e) {
    ...
}

MixinNetwork Error Codes

Other Exceptions

class description
ExinOne\MixinSDK\Exceptions\MixinNetworkRequestException Api request fail
ExinOne\MixinSDK\Exceptions\NotFoundConfigException not found config set
ExinOne\MixinSDK\Exceptions\LoadPrivateKeyException private Key error
ExinOne\MixinSDK\Exceptions\ClassNotFoundException class not found

WARNING

  1. You can config iterator in the following way. The iterator is used when a PIN is encrypted. Generally, iterator should not be modified. If you want ot modify this variable, be sure to know what you are doing. More details on iterator

    $iterator = [time()];
    // if use it by $mixinSdk->pin()->updatePin($oldPin,$pin),
    // $iterator need have two element (count($iterator) == 2)
    $mixinSdk->wallet()->setIterator($iterator)->transfer($asset_id, $opponent_id, $pin, $amount, $memo);
    // By default, microtime(true) * 100000 is used as iterator
  2. Setting Http Request timeout

    $mixinSdk->wallet()->setTimeout(10)->transfer($asset_id, $opponent_id, $pin, $amount, $memo);
    // The default timeout is 20 s
  3. Get raw Recponse content

    $mixinSdk->wallet()->setRaw(true)->transfer($asset_id, $opponent_id, $pin, $amount, $memo);
    // Return MixinNetwork raw Response content

Alternatives

[exinone/laravel-mixin-sdk]

[zamseam/mixin]

LICENSE

MIT