Node.js SDK
For Node-based backends and actions that require your secret key
@moonpay/moonpay-node
A node package for MoonPay server-side functions. See the package here.
Setup
First, import the MoonPay
class.
import { MoonPay } from '@moonpay/moonpay-node`;
Set up the MoonPay
class with your secret key.
NEVER use your secret key in client side code
Load your secret key from an environment variable instead.
const moonPay = new MoonPay('sk_test_...');
Usage
Use the moonPay
instance to access our functions.
URL utilities
MoonPay URL utilities are namespaced under the .url
property.
Signing your URL
If you include the walletAddress
or walletAddresses
query param, you'll need to sign the URL.
const signature = moonPay.url.generateSignature(
'https://buy.moonpay.com/?apiKey=pk_test_123&walletAddress=...',
);
Or, return the signed URL, using the returnFullURL
option.
const signedURL = moonPay.url.generateSignature(
'https://buy.moonpay.com/?apiKey=pk_test_123&walletAddress=...',
{ returnFullURL: true },
);
Verifying a signature
Or, you can verify that a URL is correctly signed.
const isSignatureValid = moonPay.url.isSignatureValid(
'[...]/?apiKey=pk_test_123&signature=someSignature',
);
Generating a signed URL
You can also have us generate the full, signed URL, based on some input parameters.
const params = {
apiKey: 'pk_test_123',
baseCurrencyCode: 'GBP',
};
const url = moonPay.url.generate({ flow: 'buy', params });
Example
Here's an example of an Express endpoint that signs a URL query param.
import express from 'express'
import { MoonPay } from '@moonpay/moonpay-node';
const moonPay = new MoonPay('sk_test_...');
const app = express();
app.get('/moonpay_signature', (req, res) => {
const { url } = req.query;
const signature = moonPay.url.generateSignature(url);
res.send({ signature });
});
app.listen(3000, () =>
console.log('Listening on port 3000!'),
);
Then, make a GET
request to your endpoint from the client with a url
query param to get the signature.
Updated 11 months ago