Reference
A function that is used to fetch session token that is generated from the API that is used to wrap the ratio
/v1/clients/session
(documentation here)This is an
async
function.The Ratio API uses client authentication which requires a
client_id
and client_secret
. It is highly recommended to implement this call in a secure API backend. This will prevent the need of shipping the clientSecret
with the client application.const fetchSessionToken = async () => {
try {
let sessionTokenResponse = await fetch(
'https://your.api.com/clients/session',
{
method: 'POST',
body: JSON.stringify({
signingAddress: walletAddress,
depositAddress: walletAddress,
signingNetwork: walletNetwork,
}),
}
);
let data = await sessionTokenResponse.json();
return data.id;
} catch (e) {
console.error(e);
}
return null;
};
<RatioButton
fetchSessionToken={async () => {
return await fetchSessionToken();
}}/>
TYPE | REQUIRED |
---|---|
function | Yes |
Function that accepts a string which contains the
challenge
that is returned from the Ratio /v1/auth/cryptoWallet:start
call (documentation here)This is an
async
function that should return a promise. This will allow such asynchronous activities such as a biometrics check to happen during signing. Example using Web3.js library
<RatioButton
signingCallback={async (challenge: string) => {
let sign = web3.eth.accounts.sign(challenge, privateKey);
return Promise.resolve(sign.signature);
}}/>
TYPE | REQUIRED |
---|---|
function | Yes |
An optional string that allows you to change the text that is displayed on the
RatioButton
Default value: "Buy Crypto"
TYPE | REQUIRED |
---|---|
string | No |
An option string that allows you to change the text that is displayed when the
RatioButton
is loading during log inDefault value: "Connecting..."
TYPE | REQUIRED |
---|---|
string | No |
export interface RatioUser {
id: string;
createTime: string;
updateTime: string;
firstName: string;
middleName: string;
lastName: string;
email: string;
country: string;
phone: string;
nationality: string;
occupation: string;
kyc: Kyc;
connectedBankAccounts: BankAccount[];
}
export interface OrderStatus {
data: {userId: string, activity: ActivityItem};
status: 'success' | 'failure';
error: OrderError;
}
export interface OrderError {
errorId: string;
message: string;
statusCode: number;
}
export interface ActivityItem {
id: string;
createTime: string;
updateTime: string;
fiat: ActivityItemFiat;
crypto: ActivityItemCrypto;
metadata: any;
}
export interface ActivityItemFiat {
status: ActivityItemStatus;
currency: FiatCurrency;
amount: string;
direction: Direction;
fundingMethod: FundingMethod;
bankAccount: BankAccount;
}
export enum ActivityItemStatus {
PENDING = 'PENDING',
COMPLETED = 'COMPLETED',
FAILED = 'FAILED'
}
export enum FiatCurrency {
USD = 'USD'
}
export enum Direction {
CREDIT = 'CREDIT',
DEBIT = 'DEBIT'
}
export enum FundingMethod {
ACH_ORIGINATED_STANDARD = 'ACH_ORIGINATED_STANDARD',
ACH_ORIGINATED_INSTANT = 'ACH_ORIGINATED_INSTANT',
ACH_RECEIVED = 'ACH_RECEIVED'
}
export interface BankAccount {
id: string;
createTime: string;
updateTime: string;
name: string;
mask: string;
linkStatus: LinkStatus;
verificationStatus: VerificationStatus;
}
export enum LinkStatus {
INACTIVE = 'INACTIVE',
ACTIVE = 'ACTIVE',
LOGIN_REQUIRED = 'LOGIN_REQUIRED'
}
export enum VerificationStatus {
IN_REVIEW = 'IN_REVIEW',
APPROVED = 'APPROVED',
DECLINED = 'DECLINED'
}
export interface ActivityItemCrypto {
status: ActivityItemStatus;
currency: string;
wallet: Wallet;
direction: Direction;
amount: string;
price: string;
fee: string;
transactionHash: string;
}
export interface Wallet {
id: string;
address: string;
createTime: string;
name: string;
network: string;
updateTime: string;
}
Last modified 2mo ago