{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"3d844579-396e-4efa-ab05-51eada77cfa9","name":"Lapakgaming - Reseller - API doc","description":"# General Information\n\n- Development end point [https://dev.lapakgaming.com](https://)\n    \n- Production end point [https://www.lapakgaming.com](https://)\n    \n- Please ensure you check all example request in the API\n    \n- Response in JSON\n    \n    - { code:string, data:Object }\n        \n\n---\n\n**Supported API**\n\n- Get Categories\n    \n- Get Products\n    \n- Get All Products\n    \n- Get Reseller Deposit Balance\n    \n- Create Order\n    \n- Check Order Status\n    \n- Get Best Product List\n    \n- Get Best Product by Group Product\n    \n- Get FX Rate\n    \n- Test Order Callback _(Order Status)_\n    \n- Test Product Callback _(Price & Status Changes)_\n    \n\n**HTTP Codes**\n\n- Http 200 OK\n    \n- Http 401 Unauthorized (Invalid API Key / Ip Address)\n    \n- Http 429 Too Many Requests\n    \n- Http 500 Internal server error\n    \n\n**Status Codes**\n\n- SUCCESS\n    \n- UNAUTHORIZED\n    \n- PRODUCT_NOT_FOUND\n    \n- PRODUCT_EMPTY\n    \n- PROVIDER_NOT_FOUND\n    \n- PRICE_NOT_MATCH\n    \n- PROVIDER_INACTIVE\n    \n- TID_NOT_FOUND\n    \n- USER_ID_CONTAIN_SPACE\n    \n- STOCK_NOT_FOUND\n    \n- USER_ID_EMPTY\n    \n- INSUFFICIENT_BALANCE\n    \n- SYSTEM_ERROR\n    \n- UNKNOWN_ERROR\n    \n- NOT_ALLOWED\n    \n\n---\n\n**Version History**\n\n| **Version** | **Date** | **Description** |\n| --- | --- | --- |\n| 1.6 | 7 April 2026 | Added `end_user_ip_address` in API Order. This field is mandatory for any purchase of games under Hoyoverse publisher. E.g: Genshin Impact, Zenless Zone Zero, etc. |\n| 1.5 | 5 May 2025 | Add Get FX Rate endpoint |\n| 1.4 | 29 July 2024 | Add response attribute `category_code` on Get All Products API |\n| 1.3 | 12 July 2024 | Added parameter override_callback_url to API Order |\n| 1.2 | 26 June 2024 | Added Authentication Technical Flow  <br>  <br>Added Product Sync Flow  <br>  <br>Added Create Order & Update Order Status Flow  <br>  <br>Updated Create order scenario, webhook setup, and rate limit section |\n| 1.1 | 13 May 2024 | Add Get List Best Product endpoint  <br>  <br>Add Get Best Product by Group Product endpoint  <br>  <br>Add support for order by best product via API Order with group_product & country_code parameter |\n| 1.0 | 2 August 2023 | Initial version |\n\n---\n\n# Authentication\n\nPrerequisite\n\n- Whitelisted IP Address\n    \n- API _**SECRET_KEY**_ for Authorization using Bearer Token\n    \n\nAuthentication Flow\n\n<img src=\"https://content.pstmn.io/0042b5c3-078e-476e-9c76-2e854eb447a7/U2NyZWVuc2hvdCAyMDI0LTA2LTE5IGF0IDE1LjI5LjQ2LnBuZw==\">\n\n---\n\n# Product Sync Flow\n\nTo sync product data from lapakgaming to your server, you can follow the flows below :\n\n- **Initialize Using Category API & Product API or Initialize using All Product API (Choose one)**\n    \n\n<img src=\"https://content.pstmn.io/76632d80-50a1-42d9-a37e-04dc9ecf2f82/c3dpbWxhbmVzLWI3MWJiNWQxNDllZTcwNTUzMDI2MTk2YjM3OTI1ZDhkLnBuZw==\">\n\n<img src=\"https://content.pstmn.io/21afa5cc-82ac-45dc-a3b1-6248ea9bf13c/c3dpbWxhbmVzLWM2MzMzZjIxMDU3YTI0OGEwZWIzZmIwNTg4NTcyYTg2LnBuZw==\">\n\n- **Syncrhonize your Product Data using Webhook/Callback from Lapakgaming**\n    \n\n<img src=\"https://content.pstmn.io/b72fd0a9-4442-44f6-8665-f0412d665030/c3dpbWxhbmVzLTYwZmU3ZDk0ZTgzYjE2ZmExY2Y1YzFjNmU0OTRkZjY2LnBuZw==\">\n\n---\n\n# Create Order Flow\n\nTo create new transaction (order) in lapakgaming, please follow these guidelines :\n\n- **Create Order Flow**\n    \n\n<img src=\"https://content.pstmn.io/90372de1-62b6-49ea-a106-41785003effb/U2NyZWVuc2hvdCAyMDI0LTA2LTI2IGF0IDE0LjM3LjQ4LnBuZw==\">\n\n- **Update Transaction Status Flow**  \n    You can use webhook/callback mechanism for near realtime status updates\n    \n\n<img src=\"https://content.pstmn.io/44209e85-e639-4dd2-bc5c-4db302f3ca98/U2NyZWVuc2hvdCAyMDI0LTA2LTI2IGF0IDE0LjQ3LjE3LnBuZw==\">\n\nnotes:\n\n- It's recommended to use both webhook and cron mechanism so you can make sure your transactions statuses are always up-to-date, just in case you don't receive the callback (because of errors, network issue, firewall, etc)\n    \n- Please make sure to setup your webhook/Callback URL properly to be able to receive the callback from lapakgaming\n    \n\n---\n\n# Testing Create Order Scenario\n\nTo test specific use cases when creating order, you can use some product_code below in your create order payload when hitting our API (development environment only)\n\n- **SUCCESS**  \n    `product_code : ML78_8-S2`\n    \n- **SUCCESS** (for voucher)  \n    `product_code : VCGS330-S22`\n    \n- **PRICE_NOT_MATCH**  \n    `product_code : ML78_8-S2`  \n    `price : 999999`\n    \n- **PRODUCT_NOT_FOUND**  \n    `product_code : ASD`\n    \n- **PRODUCT_EMPTY**  \n    `product_code : ML156_16-S42`\n    \n- **PROVIDER_NOT_FOUND**  \n    `product_code : ML234_23-S2`\n    \n- **PROVIDER_INACTIVE**  \n    `product_code : ML625_81-S2`\n    \n- **INSUFFICIENT_BALANCE**  \n    `product_code : ML7740_1548-S42`\n    \n- **SUCCESS** with pending order  \n    `product_code : ML4649_883-S42`\n    \n\n---\n\n# Webhook/Callback URL Setup\n\nCurrently we support 2 types of webhook or callback :\n\n- **Product Callback**  \n    Triggered whenever there are new products, price changes, or status changes in lapakgaming.\n    \n- **Order Callback**  \n    Triggered upon the completion of your order/transaction. This is to notify reseller the final status for their order.\n    \n\nIf you want to receive a callback for any product changes of your order final status, you can follow these steps:\n\n1. Open [https://www.lapakgaming.com/profile](https://)\n    \n2. Setup callback URLs in this picture. The valid URL callback should follow this schema: `https://www./` [e.g: <code>https://www.example.com/api-callback</code>](https://)\n    \n3. Upon receiving a callback from us **we expect you to return HTTP status 200**\n    \n\n<img src=\"https://content.pstmn.io/b8cbeb85-ee86-404d-b6df-ed9b367ba429/U2NyZWVuc2hvdCAyMDI0LTA2LTE5IGF0IDE1LjQ1LjE1LnBuZw==\">\n\n\\*Note:\n\n1. Currently Lapakgaming will only send a callback when the transaction status are all successful or all failed (refunded).\n    \n2. If user has filled in the callback URL on the profile page, the transaction status update will be sent to the user via the callback URL. However, if user wants to override the callback for specific transactions, they need to fill in the override_callback_url parameter in the API Order.\n    \n\n---\n\n# Trigger Manual Callback\n\nIf you did not receive the callback after some times, you can also trigger the callback manually by following these steps:\n\n1. Go to [https://www.lapakgaming.com/reseller/order/history](https://)\n    \n2. Click the phone logo in the `Aksi` column\n    \n3. Click confirm and submit\n    \n\n<img src=\"https://content.pstmn.io/582824ef-13c9-4595-b747-fc5feda75def/aW1hZ2UgKDEyKS5wbmc=\">\n\n---\n\n# Rate limit\n\nIs there a limit to the number of requests an user can send?\n\n- Yes, 500 requests / 10 seconds for all API globally by Source IP Address, 50 requests / 10 seconds for Get Products endpoint.\n    \n\n---","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"5668891","collectionId":"3d844579-396e-4efa-ab05-51eada77cfa9","publishedId":"2s9XxvTujb","public":true,"publicUrl":"https://documenter-api.postman.tech/view/5668891/2s9XxvTujb","privateUrl":"https://go.postman.co/documentation/5668891-3d844579-396e-4efa-ab05-51eada77cfa9","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.11.4","publishDate":"2023-08-02T03:53:47.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/2s9XxvTujb"}