Getting Started
How to setup the AkashicPay SDK for use in your codebase
Installing
Install the package with
npm install @akashicpay/sdk
#or
yarn add @akashicpay/sdk
# Pre-Reqs
# Requires at least PHP 7.0 and either the gmp or bcmath extension
composer require akashic/akashic-pay
# In case of Maven
<dependencies>
<dependency>
<groupId>com.akashicpay</groupId>
<artifactId>AkashicPaySDK</artifactId>
<version>1.4.0</version>
</dependency>
</dependencies>
# In case of Gradle
dependencies {
implementation 'com.akashicpay:AkashicPaySDK:1.4.0'
}
$ dotnet add package AkashicPaySDK
Register
Testing
In development, omit key pair (L2Address
and PrivateKey
) in initialisation, in which case the SDK will create and use a new pair. Then copy them to the initialisation. After that contact our Tech Support to configure the callback URL. For example, in typescript:
import { AkashicPay, Environment } from "@akashicpay/sdk";
// production is the default environment.
// And in production, an otk must be specified
const akashicPay = await AkashicPay.build({
environment: Environment.Development,
});
// for security reasons, this would throw if the environment was production
// but you can use this in development to record and re-use your otk
const { l2Address, privateKey } = akashicPay.keyBackup;
console.log(
`my testing L2 address: ${l2Address} and private key: ${privateKey}`
);
Production
Build
This example configuration uses many optional build arguments, for illustration purposes.
import type { IHttpClient, ILogger } from "@akashicpay/sdk";
import { ACDevNode, ACNode, AkashicPay, Environment } from "@akashicpay/sdk";
import axios from "axios";
import pino from "pino";
import { Environment } from "@akashicpay/sdk/src";
// use whatever secret management tool you prefer to load the private key
// from your AkashicLink account. It should be of the form:
// `"0x2d99270559d7702eadd1c5a483d0a795566dc76c18ad9d426c932de41bfb78b7"`
// In development, each developer could have their own, or omit this (and
// the l2Address), in which case the SDK will create and use a new pair.
// you can instead use your Akashic Link account's 12-word phrase, using the
// `build()` argument `recoveryPhrase`
const privateKey = process.env.akashicKey;
// this is the address of your AkashicLink account. Of the form "AS1234..."
const l2Address = process.env.l2Address;
// in development, you will use our testnet and testnet L1 chains
const environment =
process.env.environment == "production"
? Environment.Production
: Environment.Development;
// you're strongly encouraged to pass an instance of your preferred logger
const logger: ILogger = pino({ name: "AkashicPaySDK" });
// optional, the SDK will try to find the fastest node if omitted
const targetNode =
environment == "development" ? ACNode.SingaporeDAI : ACDevNode.Singapore1;
// instantiate an SDK instance, ready to use
const akashicPay = await AkashicPay.build({
privateKey,
l2Address,
environment,
targetNode,
logger,
});
<?php
require "vendor/autoload.php";
use Akashic\AkashicPay;
use Akashic\Constants\Environment;
use Akashic\Constants\ACNode;
use Akashic\Constants\ACDevNode;
$akashicPay = new AkashicPay([
// in development, you will use our testnet and testnet L1 chains
'environment' => getenv('environment') === 'production' ? Environment::PRODUCTION : Environment::DEVELOPMENT,
// optional, the SDK will try to find the fastest node if omitted
'targetNode' => getenv('environment') === 'production' ? ACNode::SINGAPORE_1 : ACDevNode::SINGAPORE_1,
// use whatever secret management tool you prefer to load the private key
// from your AkashicLink account. It should be of the form:
// `"0x2d99270559d7702eadd1c5a483d0a795566dc76c18ad9d426c932de41bfb78b7"`
// In development, each developer could have their own, or omit this (and
// the l2Address), in which case the SDK will create and use a new pair.
// you can instead use your Akashic Link account's 12-word phrase, using the
// argument `recoveryPhrase`
'privateKey' => getenv('akashicKey'),
// this is the address of your AkashicLink account. Of the form "AS1234..."
'l2Address' => getenv('l2Address'),
]);
import com.akashicpay.constants.APEnvironment;
import com.akashicpay.model.ACOtk;
import com.akashicpay.sdk.IAPSdk;
public class Main {
public static void main(String[] args) throws Exception {
ACOtk otk = APSdkFactory.createOtkFromKeyPair("your_private_key", "your_l2_address");
APEnvironment environment =
System.getenv("environment").equals("production") ?
APEnvironment.Production : APEnvironment.Development;
IAPSdk sdk = APSdkFactory.createSDK(environment, otk);
}
}
using AkashicPaySDK;
using AkashicPaySDK.Constants;
namespace ApSdkTests;
public class Example
{
public static async Task Main(string[] args)
{
var environment =
Environment.GetEnvironmentVariable("environment") == "production" ?
APEnvironment.Production :
APEnvironment.Development;
var otk = ApSdkFactory.CreateOtkFromKeyPair("your_private_key", "your_l2Address");
var sdk = await ApSdkFactory.CreateSdk(environment, otk);
}
}
You are now ready to use AkashicPay! To learn more about the different functions, go to the next page. Continue reading for more details about advanced setup of AkashicPay and testing.
Testing
Then, to reuse the same otk in later testing (recommended), simply supply the otk during setup:
import { AkashicPay, Environment } from "@akashicpay/sdk";
const privateKey = process.env.akashicKey;
const l2Address = process.env.l2Address;
const akashicPay = await AkashicPay.build({
privateKey,
l2Address,
environment: Environment.Development,
});
// Now, e.g. create a wallet on the Tron Shasta testnet
const { address } = await akashicPay.getDepositAddress(
NetworkSymbol.Tron_Shasta,
"EndUser123"
);
<?php
require "vendor/autoload.php";
use Akashic\AkashicPay;
use Akashic\Constants\Environment;
use Akashic\Constants\NetworkSymbol;
// production is the default environment.
// And in production, an otk must be specified
$akashicPay = new AkashicPay([
'environment' => Environment::DEVELOPMENT,
'privateKey' => getenv('akashicKey'),
'l2Address' => getenv('l2Address'),
]);
// Now, e.g. create a wallet on the Tron Shasta testnet
$address = $akashicPay->getDepositAddress(NetworkSymbol::TRON_SHASTA, 'user123');
import com.akashicpay.constants.APEnvironment;
import com.akashicpay.model.ACOtk;
import com.akashicpay.model.APDepositAddressResult;
import com.akashicpay.model.APNetworkSymbol;
import com.akashicpay.sdk.IAPSdk;
public class Main {
public static void main(String[] args) throws Exception {
String l2Address = "your l2Address";
String privateKey = "your privateKey";
ACOtk otk = APSdkFactory.createOtkFromKeyPair(privateKey, l2Address);
IAPSdk sdk = APSdkFactory.createSDK(APEnvironment.Development, otk);
APDepositAddressResult trxDepositAddress =
sdk.getDepositAddress(APNetworkSymbol.TRX_SHASTA, "EndUser123");
}
}
using AkashicPaySDK;
using AkashicPaySDK.Constants;
using AkashicPaySDK.Model;
namespace ApSdkTests;
public class Example
{
public static async Task Main(string[] args)
{
var l2Address = "your l2Address";
var privateKey = "your privateKey";
var otk = ApSdkFactory.CreateOtkFromKeyPair(l2Address,privateKey);
var sdk = await ApSdkFactory.CreateSdk(APEnvironment.Development, otk);
var trxDepositAddress = await sdk.GetDepositAddressAsync(TronShastaNetworkSymbol.Value, "test005");
}
}
Faucet
Last updated
Was this helpful?