Configure Map3 Supercharge SDK with the required fields or customize it to make it your own.
const supercharge = initMap3Supercharge({
anonKey: '<YOUR_MAP3_ANON_KEY>',
userId: '<YOUR_END_USER_ID>' // a user identifier (like an UUID)
});
Required Fields
anonKey
anonKeyGenerated via the console. Anon keys are public and can be safely used and exposed in a browser environment. They encode your organization ID and a role (anon). Anon key allows read access, but not write. They are required.
userId
userIdA unique identifier for the active user. An email, uuid, or any other unique identifier is required.
const supercharge = initMap3Supercharge({
userId: '[email protected]'
});
The above configuration is only using the two required fields anonKey and generateDepositAddress. To see all the required and optional fields review the Config Interface
Getting your Anon Key
- Go to https://console.map3.xyz
- Create your account
- Set up an organization
- Visit https://console.map3.xyz/tokens
callbacks
handleAuthorizeTransaction (optional)
handleAuthorizeTransaction (optional)An optional callback that gets called before the user is allowed to submit a transaction via their wallet.
// checkIfAuthorizedToTransact is implemented by your system
const supercharge = initMap3Supercharge({
options: {
callbacks: {
handleAuthorizeTransaction: async (fromAddress, networkCode, amount) => {
// perform some async check on your backend
const isAuthorizedToTransact = await checkIfAuthorizedToTransact(
fromAddress,
networkCode,
amount
);
return isAuthorizedToTransact;
},
},
},
});
handleOrderFeeCalculation (optional)
handleOrderFeeCalculation (optional)You may charge your users fixed fees and/or variable fees. You may also want to provide them a message. We'll send you the asset symbol, networkCode, and amount selected. And you must respond with fixedFee|| variableFee|| message
const supercharge = initMap3Supercharge({
options: {
callbacks: {
handleOrderFeeCalculation: (
asset: string,
networkCode: string,
amount: string
) => {
const { fixedFee, message, variableFee } = doFeeCalculation(
asset,
networkCode,
amount
);
return {
fixedFee: fixedFee,
message: message,
variableFee: variableFee
}
},
},
},
});
onAddressRequested (optional)
onAddressRequested (optional)This function returns the deposit address for the user's wallet for the asset and network they've selected. Map3 Supercharge SDK does not generate wallet addresses on behalf of your users.
// fetchDepositAddressForUser is implemented by your system
const activeUserId = 'active-user-id';
const supercharge = initMap3Supercharge({
options: {
callbacks: {
onAddressRequested: async (asset, networkCode) => {
const address = await fetchDepositAddressForUser(
asset,
networkCode,
activeUserId
);
return { address };
},
},
},
});
onClose (optional)
onClose (optional)onExpire (optional)
onExpire (optional)onFailure (optional)
onFailure (optional)onSuccess (optional)
onSuccess (optional)onOrderCreated (optional)
onOrderCreated (optional)Called once your end-user has confirmed intention to deposit via one of our merchant integrations.
const supercharge = initMap3Supercharge({
options: {
callbacks: {
onOrderCreated: async (orderId: string, type: string) => {
saveOrderInDb(orderId, type);
},
},
},
});
selection
address (optional)
address (optional)The address of the ERC-20 token for the user to deposit. Must be used with networkCode or defaults to undefined.
const supercharge = initMap3Supercharge({
options: {
selection: {
address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
networkCode: 'ethereum',
},
},
});
amount (optional)
amount (optional)The amount of crypto in minor units you require the user to deposit.
const supercharge = initMap3Supercharge({
options: {
selection: {
amount: '10050000000', // 100.5 BTC
networkCode: 'bitcoin',
},
},
});
networkCode is required
When using
amount, you must specify at least anetworkCode, otherwise we will fallback toamountasundefined. You can also specifynetworkCodeandaddress(if depositing an ERC-20 asset).
assetId (optional)
assetId (optional)If you know the Map3 assetId (e.g fe2bf2f8-3ddc-4ccc-8f34-8fdd9be03884 USDC on Polygon) you can pass in the assetId and skip directly to payment method selection. If you have more questions about the Map3 assetId please review Metadata Documentation.
const supercharge = initMap3Supercharge({
options: {
selection: {
assetId: 'fe2bf2f8-3ddc-4ccc-8f34-8fdd9be03884',
},
},
});
fiat (optional)
fiat (optional)Fiat currency of your user's preference. Default value is USD.
networkCode (optional)
networkCode (optional)If the user wants to deposit the native token (e.g Ether on Ethereum) you can pass in a networkCode to skip asset and network selection and jump directly to payment method selection.
const supercharge = initMap3Supercharge({
options: {
selection: {
networkCode: 'ethereum',
},
},
});
networkCode and address (optional)
networkCode and address (optional)You may not know the Map3 assetId but still want to skip directly to payment method selection. You can do this by passing in a networkCode and address. The following example will preselect USDC on Polygon.
const supercharge = initMap3Supercharge({
options: {
selection: {
address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',
networkCode: 'polygon',
},
},
});
paymentMethod(optional)
paymentMethod(optional)Pass in binance-pay or show-address payment methods to auto-select that method for your user.
style
appName (optional)
appName (optional)colors (optional)
colors (optional)Change the primary and accent colors.
const supercharge = initMap3Supercharge({
options: {
style: {
colors: {
accent: '#dfff86',
primary: '#0e1523',
},
},
},
});
embed (optional)
embed (optional)Instead of the SDK opening in a modal (default) you can choose to embed it directly inside an element in your app.
const supercharge = initMap3Supercharge({
options: {
style: {
embed: {
height: '500px',
id: 'supercharge-goes-here',
width: '320px',
},
},
},
});
theme (optional)
theme (optional)light or dark mode is supported. light by default.
Config Interface
interface Map3InitConfig {
anonKey: string;
options?: {
callbacks?: {
handleAuthorizeTransaction?: (
fromAddress: string,
networkCode: string,
amount: string
) => Promise<Boolean>;
handleOrderFeeCalculation?: (
asset: string,
networkCode: string,
amount: string
) => Promise<{
fixedFee?: number;
message?: string;
variableFee?: number;
}>;
onAddressRequested?: (
asset: string,
networkCode: string
) =>
| Promise<{ address: string; memo?: string }>
| { address: string; memo?: string };
onClose?: () => void;
onExpire?: () => void;
onFailure?: (
error: string,
networkCode: string,
address?: string
) => void;
onOrderCreated?: (orderId: string, type: string) => void;
onSuccess?: (
txHash: string,
networkCode: string,
address?: string
) => void;
};
selection?: {
address?: string;
amount?: string;
assetId?: string;
expiration?: string | number;
fiat?: string;
networkCode?: string;
paymentMethod?: 'binance-pay';
rate?: number;
shortcutAmounts?: number[];
};
style?: {
appName?: string;
colors?: {
accent?: string;
primary?: string;
};
embed?: {
height?: string;
id?: string;
width?: string;
};
locale?: 'en' | 'es';
theme?: 'dark' | 'light';
};
};
userId: string;
}
