xsolla
Version:
A Node.js client for working with the Xsolla Merchant API
125 lines (104 loc) • 3.09 kB
Markdown
# Xsolla Node Client
A Node.js client for the [Xsolla API](https://developers.xsolla.com/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:
```bash
npm install xsolla
```
## Usage
Initialize Xsolla:
```js
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
```js
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`](#the-project-model) model.
#### Get a project:
```js
const project = await client.projects.get({ project_id: 123456 })
```
Returns a promise for a [`Project`](#the-project-model) model.
#### Fetch all projects
```js
const projects = client.projects.all();
```
Returns a promise for an array of [`Project`](#the-project-model) models.
### The Project Model
The Project model is an instance of a project that you've either [created](#create-a-project) or
[fetched](#get-a-project)
#### Create a payment token
You can create payment tokens directly from a Project model.
(Obtained by either `Xsolla.projects.get()` or `Xsolla.projects.create()`)
```js
const { token } = await project.createPaymentToken({
user: {
id: {
value: '47',
}
},
settings: {
mode: 'sandbox',
},
purchase: {
checkout: {
amount: 13.37,
currency: 'USD',
}
}
});
```
#### Create a payment link
```js
const url = await project.createPaymentUrl({
user: {
id: {
value: '47',
}
},
settings: {
mode: 'sandbox',
},
purchase: {
checkout: {
amount: 13.37,
currency: 'USD',
}
}
});
```
#### Update a project
```js
const updatedProject = await project.update({
name: ["Some other Xsolla project name"],
});
```
Returns a promise for an updated [`Project`](#the-project-model) model.
#### Validate an incoming webhook
```js
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()`](/src/Models/Project.ts#L58) method throws an
[`XsollaException`](/src/Exception/XsollaException.ts) for unauthorized requests.
## License
This repository is licensed under the ISC license.
Copyright (c) 2019, Jørgen Vatle.