Skip to content

๐Ÿ’Ž A Node.js client for working with the Xsolla Merchant API.

License

Notifications You must be signed in to change notification settings

JorgenVatle/xsolla

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Xsolla Node Client

A Node.js client for the Xsolla API. Written in TypeScript to provide you with all the type checking and auto-completion convenience supported by most modern JS IDEs. ๐Ÿ‘Œ

Installation

Pull in the package with npm:

npm install xsolla

Usage

Initialize Xsolla:

const Xsolla = require('xsolla').default;

const client = new Xsolla({
    merchantId: 123456,
    apiKey: 'abc123',
})

Projects

The Xsolla client exposes a projects property that can be used to create, update and read projects attached to your merchant account.

Create a project

client.projects.create({
    name: ["My brand new Xsolla project"],
    url: 'https://example.com',
}).then((project) => console.log('Created new project', project));

Returns a promise for a Project model.

Get a project:

const project = await client.projects.get({ project_id: 123456 })

Returns a promise for a Project model.

Fetch all projects

const projects = client.projects.all();

Returns a promise for an array of Project models.

The Project Model

The Project model is an instance of a project that you've either created or fetched

Create a payment token

You can create payment tokens directly from a Project model. (Obtained by either Xsolla.projects.get() or Xsolla.projects.create())

const { token } = await project.createPaymentToken({
    user: {
        id: {
            value: '47',
        }
    },
    
    settings: {
        mode: 'sandbox',
    },
   
    purchase: {
        checkout: {
            amount: 13.37,
            currency: 'USD',
        }
    }
});

Create a payment link

const url = await project.createPaymentUrl({
    user: {
         id: {
             value: '47',
         }
     },
     
     settings: {
         mode: 'sandbox',
     },
    
     purchase: {
         checkout: {
             amount: 13.37,
             currency: 'USD',
         }
     }
});

Update a project

const updatedProject = await project.update({
    name: ["Some other Xsolla project name"],
});

Returns a promise for an updated Project model.

Validate an incoming webhook

app.post('/webhooks/xsolla', (req, res) => {
    try {
        project.validateWebhookRequest(req.getHeader('authorization'), req.rawBody);   
    } catch (xsollaException) {
        res.send(xsollaException.jsonResponse());
        res.status(xsollaException.httpResponseCode).end();
    }
});

Project's validateWebhookRequest() method throws an XsollaException for unauthorized requests.

License

This repository is licensed under the ISC license.

Copyright (c) 2019, Jรธrgen Vatle.

About

๐Ÿ’Ž A Node.js client for working with the Xsolla Merchant API.

Resources

License

Stars

Watchers

Forks

Packages

No packages published