MixinNetwork SDK for Laravel, based on ExinOne/mixin-sdk-php
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config
src
tests
.gitignore
LICENSE
composer.json
helpers.php
readme-cn.md
readme.md

readme.md

Laravel-Mixin-SDK


MixinNetwork SDK for Laravel 5

Requirement

  1. Laravel >= 5.1
  2. Composer
  3. PHP >= 7.0

Installation

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

Configuration

  1. Add the provider and facade in config/app.php, Laravel 5.5+ supports package discovery automatically, you should skip this step.
'providers' => [
    ...
    ExinOne\MixinSDK\MixinSDKServiceProvider::class,
],
'aliases' => [
    ...
    'MixinSDK' => ExinOne\MixinSDK\Facades\MixinSDK::class,
]
  1. Publish configuration
$ php artisan vendor:publish --provider="ExinOne\MixinSDK\MixinSDKServiceProvider"
  1. You can configure it with any of methods below.
    1. Edit config/mixin-sdk.php and .env :

      // account information
      'keys'    => [
      // default use is config
          'default' => [
              'mixin_id'      => env('MIXIN_SDK_MIXIN_ID'),
              'client_id'     => env('MIXIN_SDK_CLIENT_ID'),
              'client_secret' => env('MIXIN_SDK_CLIENT_SECRET'),
              'pin'           => env('MIXIN_SDK_PIN'),
              'pin_token'     => env('MIXIN_SDK_PIN_TOKEN'),
              'session_id'    => env('MIXIN_SDK_SESSION_ID'),
              'private_key'   => '',  //import your private_key
          ],
          'myConfig-A'=>[
              ...
          ]
      ],

      these configurations will be automatically loaded.

      // then you can
      MixinSDK::user()->readProfile();
      // or
      MixinSDK::use('myConfig-A')->user()->readProfile();

      If you don't want your private key stored in the VCS,refer to link

    2. else you can call it as follows:

      // 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();
    3. You can also use your own way packing them up in your project to make it easy to switch configs.

Use

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. Get raw Recponse content

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

Alternatives

[exinone/mixin-sdk-php]

[zamseam/mixin]

LICENSE

MIT