Node SDK
For Node based backends
@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 almost 2 years ago
