Integrate your backend with the Mavis Store API for basic integration
Overview
To enable the basic integration with Mavis Store, implement the API endpoints listed in this document in your backend.
Prerequisites
- Complete the steps in Register as a merchant.
- If you intend to list on-chain items, deploy your smart contract to Ronin and implement the minting logic in your backend to mint the NFT once Mavis Store calls the deliver paid order endpoint.
Steps
Step 1. Generate an API key
- Go to Mavis Store CMS sandbox or production, and log in with your Sky Mavis Account used for merchant registration.
- Click Store Settings > Settings, then scroll down to the Set up your API key section.
- Create a new API key and use it to authenticate requests from Mavis Store.
Step 2. Implement API endpoints
Deliver paid order
POST https://{merchant-server.hostname}/deliver-items
After the user makes payment for the order, Mavis Store sends a receipt to your server, allowing your game to distribute the items to the user. If the item is an NFT, then when you receive a receipt from Mavis Store, your backend server must handle NFT minting and transfer the NFT to the user's address.
The user_id
parameter in the request body is the Ronin address of the buyer. For off-chain items, the user_id
is the in-game ID of the user.
If the API returns a status code different from 200
or times out, Mavis Store will retry the request up to three times at 1 second, 5 minutes, and 15 minutes intervals.
The request body is in the JSON format.
POST https://example-merchant.com/deliver-items
Content-Type: application/json
X-API-KEY: "{YOUR_API_KEY}"
{
"user_id": "1eda5fc0-76e1-6de4-8449-b3a0fde29125"
"order_code": "order_007",
"created_at": "2024-01-11T05:46:08Z",
"payment_method": "ronin",
"transaction": {
"type": "purchase",
"code": "f7a3e5d1-4c8a-4e4b-9e8d-6e7f8a9b0c1d",
"external_id": "0x043cdf980d3eaedf48b3058c42e9eacc3ff467662b8525071568eb583c26facb",
"price": {
"currency": "RON",
"amount": "20000000000000000000",
"decimals": "18",
"token_address": "0xe514d9deb7966c8be0ca922de8a064264ea6bcd4"
},
"created_at": "2024-01-11T05:55:24Z"
},
"items": [
{
"sku": "gems_welcome",
"quantity": "2",
"tx_hash": "merchant_tx_hash",
"price": {
"currency": "RON",
"amount": "5000000000000000000",
"decimals": "18",
"token_address": "0xe514d9deb7966c8be0ca922de8a064264ea6bcd4"
}
},
{
"sku": "gems_001",
"quantity": "5",
"tx_hash": "merchant_tx_hash",
"price": {
"currency": "RON",
"amount": "2000000000000000000",
"decimals": "18",
"token_address": "0xe514d9deb7966c8be0ca922de8a064264ea6bcd4"
}
}
]
}
For more information about these parameters, see Mavis Store API reference.
For a successful response, return a 200
HTTP status code along with a confirmation message.
Example response:
{
"message": "success"
}
Verify user
GET https://<merchant-server.hostname>/user?user_id={user_id}
- For on-chain items like NFTs, implementing this endpoint is not required. Sky Mavis handles user verification when the buyer provides their Ronin Wallet address at the storefront to purchase the on-chain item.
- For off-chain items, you need to implement this endpoint. Mavis Store sends an API request to your server to verify the user's identity.
Whether an item is on-chain or off-chain is defined during item creation in the Mavis Store CMS. For more information, see Add items.
Mavis Store needs to verify the user's identity before creating an order. Two user verification methods exist:
- User's Sky Mavis Account: if your game uses the Sky Mavis Account service for player authentication, you can choose to verify the user's identity through this service. In this case, the user ID is the UUID specified in the their account management dashboard, such as
1eda5fc0-76e1-6de4-8449-b3a0fde29125
. - In-game user ID: if your game uses its own authentication system, you can let the player provide their identity by entering their in-game user ID.
The following example shows a user verification request:
GET https://example-merchant.com/user?user_id=1eda5fc0-76e1-6de4-8449-b3a0fde29125
Content-Type: application/json
X-API-KEY: "{YOUR_API_KEY}"
For a successful response, return a 200
HTTP status code along with the same user ID and the user's profile name.
Example response:
{
"user_id": "1eda5fc0-76e1-6de4-8449-b3a0fde29125",
"name": "Lunacian"
}
Step 3. Implement error handling
To handle errors related to item validation to order delivery, return the HTTP status codes listed in Mavis Store API reference.
For example, if the user doesn't exist, return a 404
HTTP status code along with an error message.
HTTP/1.1 404 USER_NOT_EXISTS
{
"code": "USER_NOT_EXISTS",
"message": "The user does not exist"
}
Step 4. Save the endpoints in Mavis Store CMS
After setting up the API endpoints, save them in your store settings in the Mavis Store CMS.
- Go to Store Settings > Settings in the Mavis Store CMS.
- Paste the endpoint URL in the Deliver items field.
- If you also implemented the Verify user endpoint, paste the URL in the User profile field.
- Click Update.