This guide explains the technical specifications of JSAPIs that is available to be called from your application's frontend.
Integrate SDK
-
Include the gpContainer SDK in Your Codebase
To use the SDK, add the following<script src="https://gwk.gopayapi.com/sdk/stable/gp-container.min.js"></script>
-
Invoking SDK Methods
To call any JSAPI from the SDK, use the following format:window.gpContainer.call(className, methodName, params, successCallback, failureCallback, timeout);
Supported JSAPIs
GPLocation (need to change all openlinks)
API | Function | Requires Consent |
---|---|---|
GPLocation.getLocation | Obtain user's device location | yes |
GPMiniAppAuth
API | Function | Requires Consent |
---|---|---|
GPMiniAppAuth.getAuthCode | Get an auth code used to identify the current user session | No |
GPNavigator
API | Function | Requires Consent |
---|---|---|
GPNavigator.launchDeeplink | Open a third-party app or page using a custom deeplink | No |
GPNavigator.launchUri | Open a browser or in-app page using a universal or web URI | No |
GP
API | Function | Requires Consent |
---|---|---|
GP.launchPayment | Automatically redirect users to the GoPay app to complete the payment, then return them to your Mini App. | No |
Version History
Version | Description | Date |
---|---|---|
0.4.0 | Initial Release for V1 (Deprecated) | 10/07/25 |
1.0.0 | Initial Release for V4 | 18/07/25 |
JSAPIs Specification (v1.0.0)
Note
- Data will be null in case of success = false, and vice versa.
- Error will be null in case of success = true, and vice versa.
Get Location
Sample Request:
var params = {
// Specify whether to obtain a high-precision location.
enable_high_accuracy: true
};
window.gpContainer.call(
"GPLocation",
"getLocation",
params,
function(response) {
console.log('success:', response);
},
function(error) {
console.log('error:', error);
}
);
Sample Response: (error codes)
{
"success": true,
"data": {
"coords": {
"longitude": 77.5946,
"latitude": 12.9716,
"time": 12
}
},
"ret": "GP_SUCCESS"
}
{
"success": false,
"error_code": "",
"error_type": "JS_BRIDGE_ERROR",
"error_message": "",
"ret": "GP_EXCEPTION"
}
Get Auth Code
Sample Request:
window.gpContainer.call(
"GPMiniAppAuth",
"getAuthCode",
{},
function(response) {
console.log('success:', response);
},
function(error) {
console.log('error:', error);
}
);
Sample Response: (error codes)
{
"success": true,
"data": {
authCode: "GBNURP5WyBIqXiGxKv2cO8Qj4CyS0qZrRK5O4e8ehdnHpowG6k5pkj2SsF7BqGIF"
},
"ret": "GP_SUCCESS"
}
{
"success": false,
"error_code": "",
"error_type": "JS_BRIDGE_ERROR",
"error_message": "",
"ret": "GP_EXCEPTION"
}
Launch Deeplink
Sample Request:
var params = {
deeplink: "gopay://..."
};
window.gpContainer.call(
"GPNavigator",
"launchDeeplink",
params,
function(response) {
console.log('success:', response);
},
function(error) {
console.log('error:', error);
}
);
Sample Response: (error codes)
{
success: true,
"ret": "GP_SUCCESS"
}
{
"success": false,
"error_code": "300",
"error_type": "JS_BRIDGE_ERROR",
"error_message": "Permission denied",
"ret": "GP_EXCEPTION"
}
Launch Payment
Sample Request:
var params = {
deeplink: "gopay://..."
};
window.gpContainer.call(
"GP",
"launchPayment",
params,
function(response) {
console.log('success:', response);
},
function(error) {
console.log('error:', error);
}
);
Sample Response: (error codes)
{
success: true,
data: {
status: "success"
},
"ret": "GP_SUCCESS"
}
{
"success": false,
"error_code": "300",
"error_type": "JS_BRIDGE_ERROR",
"error_message": "Permission denied",
"ret": "GP_EXCEPTION"
}
Status | Description |
---|---|
success | User have successfully paid the transaction |
failed | User cancelled the transaction |
pending | There's an error processing the transaction |
cancelled | User goes back to the miniapp without completing or cancelling the payment |
Launch Uri
Sample Request:
var params = {
uri: "string"
};
window.gpContainer.call(
"GPNavigator",
"launchUri",
params,
function(response) {
console.log('success:', response);
},
function(error) {
console.log('error:', error);
}
);
Sample Response: (error codes)
{
"success": true,
"ret": "GP_SUCCESS"
}
{
"success": false,
"error_code": "",
"error_type": "JS_BRIDGE_ERROR",
"error_message": "",
"ret": "GP_EXCEPTION"
}
Error Codes
Category:
Category | Code | Description |
---|---|---|
Platform Error | 1xx | Platform-related errors, such as opening gopay deeplink while you're testing on the web |
Miniapp Error | 2xx | Such as method invocation error calling openDeeplink with a wrong deeplink format |
Permission Error | 3xx | Permission-related error, such as getting user location but the user does not give the permission |
Device related Error | 4xx | Returned on device-related error such as network error |
Superapp Error | 5xx | Error from the superapp side (imagine this as server error) |
Error Code List:
Codes | Description | Happens When |
---|---|---|
100 | Method not supported error | The miniapp is calling a method that's not supported on the platform. |
200 | Incomplete parameter error | The method call have incomplete parameters |
201 | Invalid type error | The method call have invalid parameters. E.g. providing int while the required type is string |
202 | Parameter data error | The parameters being called is not supported by gopay. E.g. calling open deeplink with non-gopay deeplink |
203 | Miniapp not registered | The miniapp you're developing is not registered inside gopay system |
300 | No permission error | Miniapp does not have access to the method being called |
400 | Device not supported | The resource being requested is not supported by the device |
401 | Network Error | Internet related problem such as slow or disconnected internet |
500 | Superapp error | Superapp related error. Happens if there's an internal error in gopay while a resource is requested |