Cek Kuota

API Payment
  1. Ini adalah API untuk mengetahui kuota pelatihan bagi DP
  2. API ini dapat digunakan baik sebelum, maupun setelah pembelian
  3. DP dapat menunjukan quota atau kapasitas kelas pada detail pelatihan di aplikasi DP, sesuai requirement DP sendiri

Request

1curl --location --request POST 'https://api.prakerja.go.id/api/v1/integration/payment/quota-schedule' \
2--header 'Content-Type: application/json' \
3--header 'client_code: CLIENT_CODE' \
4--header 'signature: SIGNATURE' \
5--header 'timestamp: TIMESTAMP_UNIX_IN_SECONDS' \
6--data-raw '{
7  "schedule_code":"SCHEDULE_CODE",
8  "course_code":"COURSE_CODE"
9}'
Endpoint Path
Method
POST
Header
KeyValue
Content-Typeapplication/json
client_codeUnique Client ID yang disediakan Prakerja ke DP / LP.
Prakerja akan menyediakan credential yaitu kombinasi client_code dan sign_key ke DP / LP.
signatureSignature dibuat dari raw_signature yang di-hashing menggunakan algoritma HMAC-SHA1 dengan sign_key yang disediakan Prakerja ke DP / LP
timestamp

Format nilai waktu dalam satuan detik yang digunakan saat melakukan hit API

Contoh 1698289216 = 26-10-2023 10:00:16 WIB = 2023-10-26T10:00:16+07:00

Body (Payload)
FieldTypeDescription
course_codestring, requiredID Pelatihan yang akan dibeli
schedule_codestring, requiredKode jadwal pelatihan

Response

Success Response

Response 200 OK

1{
2  "success": true,
3  "message": "OK",
4  "data": {
5      "schedule_code": "9d683f80404811ed",
6      "course_code": "lkpis_1_9d680615-4048-11e",
7      "quota": 999980
8  }
9}

Response Detail

FieldTypeDescription
successbooleanStatus hit API,
  • true : sukses
  • false : gagal
messagestringDeskripsi status hit API
data.course_codestringID Pelatihan yang akan dibeli
data.schedule_codestringKode jadwal pelatihan
data.quotaintegerKuota yang tersedia
Error Response
  • Termasuk juga list error general response
  • Response 400 Bad Request course_code dan atau schedule_code kosong
    1{
    2  "code": "ERRPLT40036",
    3  "message": "Gagal cek kuota, kode pelatihan dan kode jadwal harus diisi.",
    4  "success": false
    5}
  • Response 400 Bad Request course_code tidak valid atau DP tidak menjual pelatihan tersebut
    1{
    2  "code": "ERRPLT40013",
    3  "message": "Pelatihan tidak tersedia.",
    4  "success": false
    5}
  • Response 400 Bad Request schedule_code tidak valid atau tidak ada
    1{
    2  "code": "ERRSCH4006",
    3  "message": "Jadwal tidak ditemukan.",
    4  "success": false
    5}
  • Response 400 Bad Request course_code dan schedule_code tidak cocok
    1{
    2  "code": "ERRPLT40037",
    3  "message": "Jadwal pelatihan dan kode pelatihan tidak sesuai.",
    4  "success": false
    5}
  • Response 400 Bad Request Jadwal pelatihan tidak aktif
    1{
    2  "code": "ERRPLT40035",
    3  "message": "Gagal cek kuota, jadwal pelatihan tidak aktif.",
    4  "success": false
    5}
  • Response 400 Bad Request Pelatihan tidak aktif
    1{
    2  "code": "ERRPPA40025",
    3  "message": "Pelatihan tidak aktif.",
    4  "success": false
    5}
Try this API
 
Example Code
1// Generated by Prakerja Generator
2// for complete documentation please visit https://developer.prakerja.go.id
3
4const crypto = require('crypto-js');
5const axios = require('axios');
6
7const client_code = ''; // provided by Prakerja
8const timestamp = Math.round((new Date()).getTime() / 1000); // generate current timestamp
9const method = 'POST'; // API Method
10const endpoint = '/api/v1/integration/payment/quota-schedule'; // API Redeem Status Endpoint
11
12const data = {};
13
14const input = client_code + timestamp + method + endpoint + JSON.stringify(data); // create signature input
15const sign_key = ''; // provided by Prakerja
16
17const signature = crypto.HmacSHA1(input, sign_key).toString(crypto.enc.Hex); // generate signature
18
19axios({
20method: 'post',
21url: 'https://testapi123.prakerja.go.id' + endpoint,
22headers: {
23  'Content-Type': 'application/json',
24  'client_code': client_code,
25  'signature': signature,
26  'timestamp': timestamp,
27},
28data
29})
30.then((response) => {
31console.log(response.data)
32})
33.catch((error) => {
34console.log(error.response.data)
35});
1<?php
2// Generated by Prakerja Generator
3// for complete documentation please visit https://developer.prakerja.go.id
4
5$client_code = ''; // provided by Prakerja
6$timestamp = time(); // generate current timestamp
7$method = 'POST'; // API Method
8$endpoint = '/api/v1/integration/payment/quota-schedule'; // API Redeem Status Endpoint
9
10$data = [];
11
12$input = $client_code . $timestamp . $method . $endpoint . json_encode($data); // create signature input
13$sign_key = ''; // provided by Prakerja
14
15$signature = hash_hmac('sha1', $input, $sign_key); // generate signature
16
17$headers = [
18'Content-Type: application/json',
19'client_code: ' . $client_code,
20'signature: ' . $signature,
21'timestamp: ' . $timestamp,
22];
23
24$ch = curl_init();
25curl_setopt($ch, CURLOPT_URL,            'https://testapi123.prakerja.go.id' . $endpoint );
26curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
27curl_setopt($ch, CURLOPT_POST,           1);
28curl_setopt($ch, CURLOPT_HTTPHEADER,     $headers); 
29curl_setopt($ch, CURLOPT_POSTFIELDS,     json_encode($data));
30$result = curl_exec($ch);
31curl_close ($ch);
32
33print_r("result: ");
34print_r($result);
1# Generated by Prakerja Generator
2# for complete documentation please visit https://developer.prakerja.go.id
3
4from hashlib import sha1
5import hmac
6import time
7import json
8import requests
9
10client_code = '' # provided by Prakerja
11timestamp = str(int(time.time())) # generate current timestamp
12method = 'POST' # API Method
13endpoint = '/api/v1/integration/payment/quota-schedule' # API Redeem Status Endpoint
14
15data = {}
16
17# create signature input
18input = client_code + timestamp + method + endpoint + json.dumps(data, separators=(',', ':'))
19
20sign_key = '' # provided by Prakerja
21
22# generate signature
23signature = hmac.new(sign_key.encode("utf-8"), input.encode("utf-8"), sha1).hexdigest()
24
25headers = {
26'Content-Type': 'application/json',
27'client_code': client_code,
28'signature': signature,
29'timestamp': timestamp
30}
31
32result = requests.post(
33'https://testapi123.prakerja.go.id' + endpoint,
34headers=headers,
35data=json.dumps(data)
36)
37
38print('result: ')
39print(result.text)
1# Generated by Prakerja Generator
2# for complete documentation please visit https://developer.prakerja.go.id
3
4require 'base64'
5require 'cgi'
6require 'openssl'
7require 'net/http'
8require 'uri'
9require 'json'
10
11client_code = '' # provided by Prakerja
12timestamp = String(Time.now.to_i) # generate current timestamp
13method = 'POST' # API Method
14endpoint = '/api/v1/integration/payment/quota-schedule' # API Redeem Status Endpoint
15
16data = {}
17
18# create signature input
19input = client_code + timestamp + method + endpoint + JSON.generate(data, quirks_mode: true)
20
21key = '' # provided by Prakerja
22
23signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new('sha1'), key.encode("ASCII"), input.encode("ASCII"))
24
25uri = URI.parse('https://testapi123.prakerja.go.id' + endpoint)
26request = Net::HTTP::Post.new(uri)
27request.content_type = "application/json"
28request.body = JSON.generate(data, quirks_mode: true)
29request['Client_code'] = client_code
30request['Signature'] = signature
31request['Timestamp'] = timestamp
32
33req_options = {
34use_ssl: uri.scheme == "https",
35}
36
37result = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
38http.request(request)
39end
40
41# result.code
42# result.body
43puts 'result: ' + result.body